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 进行格式化。