HALBERT ist ein kleines Node.js-Projekt, das auf dem Raspberry Pi laufen soll. Es ist so konzipiert, dass es durch einfache und leicht zu schreibende Module leicht erweiterbar ist. Der Name ist eine Kombination aus dem Computer HAL-9000 aus 2001: Odyssee im Weltraum und dem stereotypen Butlernamen Albert .
Halbert hat die folgenden Funktionen:
Laden Sie zunächst die Halbert-CLI von npm herunter
npm install -g halbert-cli
oder mit Garn.
yarn global add halbert-cli
Erstellen Sie dann eine neue HALBERT-Instanz mit. Dadurch wird ein neuer Ordner mit dem angegebenen Namen erstellt und anschließend Standarddateien und -ordner erstellt.
halbert new < directory-name >
Anschließend können Sie das Verzeichnis in das neu erstellte ändern. Danach können Sie das System mit halbert start
starten. ( Wenn der npm install
fehlgeschlagen ist, müssen Sie dies möglicherweise vor dem Start manuell tun. )
cd < directory-name >
halbert start
Wenn Sie eine neue HALBERT-Instanz erstellen, erhalten Sie eine Ordnerstruktur, die dieser ähnelt:
your-directory
halbert.config.json
modules/
node_modules/
package.json
persist
halbert.config.json – Dies ist die Konfigurationsdatei. Seine Funktionen sind hier dokumentiert. Diese Datei speichert die Hauptkonfiguration für das System selbst, aber auch alle seine Module.
module/ – Dies ist der Ordner, in den Sie Ihre eigenen Module einfügen können. Sie können sie entweder selbst erstellen oder von anderen Quellen herunterladen.
node_modules/ – Ihr NPM-Modulordner.
package.json – Ihre package.json-Datei. Wird zur Installation des Hellebert-Kerns verwendet.
persist/ – Wird zum Speichern von Daten verwendet, die über Systemstarts hinweg bestehen bleiben.
So sieht eine Beispielkonfiguration aus:
{
"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"
}
}
}
Kommt bald
Module sind für Halbert die Hauptquelle der Logik. Es gibt mehrere integrierte Module, die grundlegende Funktionen bereitstellen. Der Hauptzweck dieses Systems besteht jedoch darin, dass Benutzer ihre eigenen Module erstellen und teilen können.
Erstellen Sie einen neuen Ordner mit dem gewünschten Modulnamen (er sollte Kleinbuchstaben und keine Leerzeichen enthalten). Erstellen Sie in diesem Ordner eine index.js-Datei. Dies wird Ihr Einstiegspunkt sein. Eine Boilerplate-Datei index.js würde so aussehen:
module . exports = function ( builder ) {
// Your Code in here
} ;
Das Builder-Objekt ist ein Dienstprogramm, das Ihnen Zugriff auf die zugrunde liegenden Systeme wie Widgets, API-Routen, Aktionen oder Trigger ermöglicht.
Der Builder besteht aus mehreren unterschiedlichen Unterobjekten.
Mit diesem Builder können Sie Zubehör für das Home Kit von Apple erstellen. Da Halbert eine HomeKit-Bridge einsetzt, können Sie die Dinge, die Sie bauen, über die iOS Home App steuerbar machen.
createAccessory(name, id)
-> Accessory
Erstellen Sie ein Accessoire und senden Sie es zurück. Wenn Sie wissen möchten, wie Sie mit diesen Zubehörobjekten weiter arbeiten können, lesen Sie HAP-NodeJS.
getAccessories()
-> Array
Erhalten Sie eine Liste des registrierten Zubehörs dieses Moduls.
Mit diesem Builder können Sie Aktionen erstellen, die von anderen Modulen, Widgets usw. verwendet werden. Sie können diese Aufrufe verketten.
createAction(actionId)
-> ActionBuilder
Erstellen Sie eine Aktion mit der angegebenen ID.
setMeta(name, sentence)
-> ActionBuilder
Legen Sie die Metadaten der Aktion fest. Gemeint sind der Aktionstitel und der Satz. Der Satzteil sollte in den Satz „ Wenn Auslöser, dann [X] “ passen.
setCallback()
-> ActionBuilder
Legen Sie den Rückruf für einen Aktionsaufruf fest. Der Rückruf wird mit einem input
versorgt. Z.B
. setCallback ( function ( input ) {
console . log ( input . temperature ) ;
} ) ;
getActions()
-> Array
Rufen Sie eine Liste der Aktionen dieses Moduls ab.
Der Code ist mit JLongsters Prettier formatiert.