HALBERT 是一個小型 Node.js 項目,應該在Raspberry Pi上運行。它被設計為使用簡單且易於編寫的模組來輕鬆擴展。這個名稱是《2001:太空漫遊》中的HAL-9000電腦和典型管家名字Albert的組合。
哈爾伯特具有以下特點:
首先,從 npm 下載 Halbert-CLI
npm install -g halbert-cli
或使用紗線。
yarn global add halbert-cli
然後,使用建立一個新的 HALBERT 實例。這將建立一個具有給定名稱的新資料夾,然後建立預設檔案和資料夾。
halbert new < directory-name >
然後您可以將該目錄變更為新建立的目錄。之後,您可以使用halbert start
啟動系統。 (如果npm install
過程失敗,您可能需要在開始之前手動執行此操作。 )
cd < directory-name >
halbert start
當您建立新的 HALBERT 實例時,您會得到與此類似的資料夾結構:
your-directory
halbert.config.json
modules/
node_modules/
package.json
persist
halbert.config.json - 這是設定檔。它的功能記錄在此處。此檔案儲存系統本身的主要配置以及所有模組。
module/ - 這是您可以放置自己的模組的資料夾。您可以自己創建它們,也可以從其他來源下載它們。
node_modules/ - 您的 NPM 模組資料夾。
package.json - 您的 package.json 檔案。用於安裝halbert-core。
persist/ - 用於儲存系統啟動後持續存在的資料。
這是範例配置的樣子:
{
"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"
}
}
}
即將推出
模組是 Halbert 邏輯的主要來源。有多個內建模組,提供基本功能。但該系統的主要目的是讓使用者可以創建和共享自己的模組。
使用所需的模組名稱建立一個新資料夾(應為小寫且不含空格)。在該資料夾中,建立一個 index.js 檔案。這將是您的切入點。樣板 index.js 檔案如下所示:
module . exports = function ( builder ) {
// Your Code in here
} ;
建構器物件是一個實用程序,可讓您存取底層系統,例如小部件、API 路由、操作或觸發器。
Builder 由多個不同的子物件組成。
該構建器使您能夠創建供 Apple Home Kit 使用的配件。由於 Halbert 部署了 HomeKit-Bridge,因此您可以透過 iOS Home 應用程式使您正在建立的東西變得可控。
createAccessory(name, id)
-> Accessory
建立配件並將其退回。如果您想了解如何進一步使用這些附件對象,請參閱 HAP-NodeJS。
getAccessories()
-> Array
取得此模組已註冊配件的清單。
此建構器使您能夠建立供其他模組、小部件等使用的操作。
createAction(actionId)
-> ActionBuilder
使用提供的 id 建立操作。
setMeta(name, sentence)
-> ActionBuilder
設定操作的元數據。這意味著動作標題和句子。句子部分應適合句子「如果觸發,則 [X] 」。
setCallback()
-> ActionBuilder
設定操作調用的回調。回調將提供一個input
參數。例如
. setCallback ( function ( input ) {
console . log ( input . temperature ) ;
} ) ;
getActions()
-> Array
取得此模組的操作清單。
程式碼使用 JLongster 的 prettier 進行格式化。