
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-clioder mit Garn.
yarn global add halbert-cliErstellen 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 startWenn 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) -> AccessoryErstellen 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() -> ArrayErhalten 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) -> ActionBuilderErstellen Sie eine Aktion mit der angegebenen ID.
setMeta(name, sentence) -> ActionBuilderLegen 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() -> ArrayRufen Sie eine Liste der Aktionen dieses Moduls ab.
Der Code ist mit JLongsters Prettier formatiert.