HALBERT es un pequeño proyecto de Node.js, que se supone que se ejecuta en Raspberry Pi . Está diseñado para ser fácilmente prescindible mediante módulos que sean simples y fáciles de escribir. El nombre es una combinación de la computadora HAL-9000 de 2001: Odisea en el espacio y el estereotipado nombre del mayordomo Albert .
Halbert tiene las siguientes características:
Para comenzar, descargue Halbert-CLI desde npm
npm install -g halbert-cli
o usando hilo.
yarn global add halbert-cli
Luego, cree una nueva instancia HALBERT usando. Esto creará una nueva carpeta con el nombre indicado y luego creará archivos y carpetas predeterminados.
halbert new < directory-name >
Luego puede cambiar el directorio al recién creado. Después de eso, puede iniciar el sistema usando halbert start
. ( Si el proceso npm install
falló, es posible que tengas que hacerlo manualmente antes de comenzar).
cd < directory-name >
halbert start
Cuando crea una nueva instancia HALBERT, obtiene una estructura de carpetas similar a esta:
your-directory
halbert.config.json
modules/
node_modules/
package.json
persist
halbert.config.json : este es el archivo de configuración. Sus características están documentadas aquí. Este archivo almacena la configuración principal del sistema en sí, pero también de todos sus módulos.
módulos/ : esta es la carpeta donde puedes colocar tus propios módulos. Puedes crearlos tú mismo o descargarlos de otras fuentes.
node_modules/ - Su carpeta de módulos NPM.
package.json : su archivo package.json. Se utiliza para instalar el núcleo Halbert.
persist/ : se utiliza para almacenar datos que persisten durante los inicios del sistema.
Así es como se ve una configuración de ejemplo:
{
"device": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"weather": {
"openWeatherMapApiKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"server": {
"port": 3000,
"cacheTemplates": false
},
"modules": {
"switches": {
"gpio": {
"remote": 15
},
"available": [
{
"id": "desk-leds",
"name": "Desk LED",
"hotwords": ["desk led", "desk leds", "leds on the desk"],
"type": "remote",
"protocol": "intertechno",
"code": "A1"
},
{
"id": "desk-light",
"name": "Desk Light",
"hotwords": ["desk light", "desk lamp", "lamp on the desk", "light on the desk"],
"type": "remote",
"protocol": "intertechno",
"code": "A2"
}
]
},
"ifttt": {
"apiKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"webhookSecret": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}
Muy pronto
Los módulos son la principal fuente de lógica para Halbert. Hay múltiples módulos integrados que brindan funcionalidad básica. Pero el objetivo principal de este sistema es que los usuarios puedan crear y compartir sus propios módulos.
Cree una nueva carpeta con el nombre del módulo deseado (debe estar en minúsculas y sin espacios). Dentro de esa carpeta, cree un archivo index.js. Este será tu punto de entrada. Un archivo repetitivo index.js se vería así:
module . exports = function ( builder ) {
// Your Code in here
} ;
El objeto constructor es una utilidad que le brinda acceso a los sistemas subyacentes, como widgets, rutas API, acciones o activadores.
El Constructor consta de varios subobjetos diferentes.
Este constructor le permite crear accesorios para ser utilizados por el Home Kit de Apple. Dado que Halbert implementa un HomeKit-Bridge, puedes hacer que las cosas que estás construyendo sean controlables a través de la aplicación iOS Home.
createAccessory(name, id)
-> Accessory
Crea un accesorio y devuélvelo. Si desea saber cómo seguir trabajando con estos objetos accesorios, consulte HAP-NodeJS.
getAccessories()
-> Array
Obtenga una lista de los accesorios registrados de este módulo.
Este constructor le permite crear acciones para ser utilizadas por otros módulos, widgets, etc. Puede encadenar estas llamadas.
createAction(actionId)
-> ActionBuilder
Cree acciones con la identificación proporcionada.
setMeta(name, sentence)
-> ActionBuilder
Establece los metadatos de la acción. Esto significa el título de la Acción y la oración. La parte de la oración debe encajar en la oración ' Si se activa, entonces [X] '.
setCallback()
-> ActionBuilder
Configure la devolución de llamada para una llamada a la acción. La devolución de llamada se proporcionará con un argumento input
. P.ej
. setCallback ( function ( input ) {
console . log ( input . temperature ) ;
} ) ;
getActions()
-> Array
Obtenga una lista de las acciones de este módulo.
El Código está formateado usando el más bonito de JLongster.