HALBERT est un petit projet Node.js, censé fonctionner sur le Raspberry Pi . Il est conçu pour être facilement extensible à l’aide de modules simples et faciles à écrire. Le nom est une combinaison de l'ordinateur HAL-9000 de 2001 : L'Odyssée de l'espace et du nom stéréotypé du majordome Albert .
Halbert a les caractéristiques suivantes :
Pour commencer, téléchargez Halbert-CLI depuis npm
npm install -g halbert-cli
ou en utilisant du fil.
yarn global add halbert-cli
Ensuite, créez une nouvelle instance HALBERT en utilisant. Cela créera un nouveau dossier avec le nom donné, puis créera des fichiers et des dossiers par défaut.
halbert new < directory-name >
Vous pouvez ensuite remplacer le répertoire par celui nouvellement créé. Après cela, vous pouvez démarrer le système en utilisant halbert start
. ( Si le processus npm install
échoue, vous devrez peut-être le faire manuellement avant de commencer. )
cd < directory-name >
halbert start
Lorsque vous créez une nouvelle instance HALBERT, vous obtenez une structure de dossiers ressemblant à ceci :
your-directory
halbert.config.json
modules/
node_modules/
package.json
persist
halbert.config.json - Ceci est le fichier de configuration. Ses fonctionnalités sont documentées ici. Ce fichier stocke la configuration principale du système lui-même mais aussi tous ses modules.
modules/ - C'est le dossier dans lequel vous pouvez placer vos propres modules. Vous pouvez soit les créer vous-même, soit les télécharger à partir d'autres sources.
node_modules/ - Votre dossier Modules NPM.
package.json - Votre fichier package.json. Utilisé pour installer le halbert-core.
persist/ - Utilisé pour stocker des données persistantes lors des lancements du système.
Voici à quoi ressemble un exemple de configuration :
{
"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"
}
}
}
À venir
Les modules sont la principale source de logique pour Halbert. Il existe plusieurs modules intégrés, offrant des fonctionnalités de base. Mais l'objectif principal de ce système est de permettre aux utilisateurs de créer et de partager leurs propres modules.
Créez un nouveau dossier avec le nom du module souhaité (il doit être en minuscules et sans espaces). Dans ce dossier, créez un fichier index.js. Ce sera votre point d'entrée. Un fichier standard index.js ressemblerait à ceci :
module . exports = function ( builder ) {
// Your Code in here
} ;
L'objet builder est un utilitaire qui vous donne accès aux systèmes sous-jacents tels que des widgets, des routes API, des actions ou des déclencheurs.
Le constructeur se compose de plusieurs sous-objets différents.
Ce constructeur vous permet de créer des accessoires à utiliser par le Home Kit d'Apple. Depuis que Halbert déploie un HomeKit-Bridge, vous pouvez rendre les éléments que vous construisez contrôlables via l'application iOS Home.
createAccessory(name, id)
-> Accessory
Créez un accessoire et retournez-le. Si vous souhaitez savoir comment travailler davantage avec ces objets accessoires, consultez HAP-NodeJS.
getAccessories()
-> Array
Obtenez une liste des accessoires enregistrés pour ce module.
Ce constructeur vous permet de créer des actions qui seront utilisées par d'autres modules, widgets, etc. Vous pouvez enchaîner ces appels.
createAction(actionId)
-> ActionBuilder
Créez une action avec l'identifiant fourni.
setMeta(name, sentence)
-> ActionBuilder
Définissez les métadonnées de l'action. Cela signifie le titre de l'action et la phrase. La partie de la phrase doit s'insérer dans la phrase « Si déclencheur, alors [X] ».
setCallback()
-> ActionBuilder
Définissez le rappel pour un appel à l’action. Le rappel sera fourni avec un argument input
. Par exemple
. setCallback ( function ( input ) {
console . log ( input . temperature ) ;
} ) ;
getActions()
-> Array
Obtenez une liste des actions de ce module.
Le code est formaté en utilisant le plus joli de JLongster.