HALBERT เป็นโครงการ Node.js เล็กๆ ที่ควรทำงานบน Raspberry Pi ได้รับการออกแบบมาให้ใช้จ่ายได้ง่ายโดยใช้โมดูลที่ง่ายและเขียนได้ง่าย ชื่อนี้เป็นการผสมผสานระหว่างคอมพิวเตอร์ HAL-9000 จากปี 2001: A Space Odyssey และชื่อพ่อบ้านแบบเหมารวม Albert
ฮัลเบิร์ตมีคุณสมบัติดังต่อไปนี้:
ในการเริ่มต้น ให้ดาวน์โหลด Halbert-CLI จาก npm
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 - นี่คือไฟล์ปรับแต่ง คุณลักษณะของมันถูกบันทึกไว้ที่นี่ ไฟล์นี้เก็บการกำหนดค่าหลักสำหรับระบบเอง แต่ยังรวมถึงโมดูลทั้งหมดด้วย
modules/ - นี่คือโฟลเดอร์ที่คุณสามารถใส่โมดูลของคุณเองได้ คุณสามารถสร้างเองหรือดาวน์โหลดจากแหล่งอื่นก็ได้
node_modules/ - โฟลเดอร์โมดูล NPM ของคุณ
package.json - ไฟล์ package.json ของคุณ ใช้ในการติดตั้งแกนกลาง
ยังคงมีอยู่/ - ใช้เพื่อจัดเก็บข้อมูลที่คงอยู่ตลอดการเปิดตัวระบบ
นี่คือตัวอย่างการกำหนดค่า:
{
"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 ประกอบด้วยออบเจ็กต์ย่อยที่แตกต่างกันหลายรายการ
เครื่องมือสร้างนี้ช่วยให้คุณสร้างอุปกรณ์เสริมที่จะใช้โดย Home Kit ของ Apple ได้ เนื่องจาก Halbert ใช้งาน HomeKit-Bridge คุณจึงสามารถควบคุมสิ่งต่างๆ ที่คุณกำลังสร้างได้ผ่านแอพ iOS Home
createAccessory(name, id)
-> Accessory
สร้างอุปกรณ์เสริมแล้วส่งคืน หากคุณต้องการทราบวิธีทำงานเพิ่มเติมกับ Accessory Objects เหล่านี้ โปรดดูที่ HAP-NodeJS
getAccessories()
-> Array
ดูรายการอุปกรณ์เสริมที่ลงทะเบียนของโมดูลนี้
ตัวสร้างนี้ช่วยให้คุณสร้างการดำเนินการที่จะใช้โดยโมดูล วิดเจ็ตอื่นๆ ฯลฯ คุณสามารถโยงการโทรเหล่านี้ได้
createAction(actionId)
-> ActionBuilder
สร้างการดำเนินการด้วยรหัสที่ให้มา
setMeta(name, sentence)
-> ActionBuilder
ตั้งค่าข้อมูลเมตาของการดำเนินการ นี่หมายถึงชื่อการดำเนินการและประโยค ส่วนของประโยคควรพอดีกับประโยค ' If trigger, then [X] '
setCallback()
-> ActionBuilder
ตั้งค่าการโทรกลับสำหรับการเรียกการดำเนินการ การโทรกลับจะมาพร้อมกับ input
- อาร์กิวเมนต์ เช่น
. setCallback ( function ( input ) {
console . log ( input . temperature ) ;
} ) ;
getActions()
-> Array
รับรายการการดำเนินการของโมดูลนี้
รหัสถูกจัดรูปแบบโดยใช้ JLongster สวยกว่า