HALBERT هو مشروع Node.js صغير، من المفترض أن يعمل على Raspberry Pi . لقد تم تصميمه ليكون قابلاً للاستهلاك بسهولة باستخدام وحدات بسيطة وسهلة الكتابة. الاسم عبارة عن مزيج من كمبيوتر HAL-9000 من عام 2001: رحلة فضائية والاسم النمطي للخادم الشخصي ألبرت .
يتمتع هالبرت بالميزات التالية:
للبدء، قم بتنزيل 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 - هذا هو ملف التكوين. تم توثيق ميزاته هنا. يقوم هذا الملف بتخزين التكوين الرئيسي للنظام نفسه وأيضًا جميع وحداته.
الوحدات/ - هذا هو المجلد حيث يمكنك وضع الوحدات النمطية الخاصة بك. يمكنك إما إنشائها بنفسك أو تنزيلها من مصادر أخرى.
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"
}
}
}
قريباً
الوحدات هي المصدر الأساسي للمنطق لهالبرت. هناك العديد من الوحدات المضمنة، مما يوفر الوظيفة الأساسية. لكن الغرض الرئيسي من هذا النظام هو أن يتمكن المستخدمون من إنشاء وحداتهم الخاصة ومشاركتها.
قم بإنشاء مجلد جديد باسم الوحدة المطلوبة (يجب أن يكون صغيرًا وبدون مسافات). داخل هذا المجلد، قم بإنشاء ملف Index.js. وستكون هذه نقطة الدخول الخاصة بك. سيبدو ملف Index.js المعياري كما يلي:
module . exports = function ( builder ) {
// Your Code in here
} ;
كائن الإنشاء عبارة عن أداة مساعدة تتيح لك الوصول إلى الأنظمة الأساسية مثل عناصر واجهة المستخدم أو مسارات واجهة برمجة التطبيقات أو الإجراءات أو المشغلات.
يتكون المنشئ من عدة كائنات فرعية مختلفة.
يمكّنك هذا المنشئ من إنشاء ملحقات لتستخدمها Apple's Home Kit. نظرًا لأن Halbert ينشر HomeKit-Bridge، يمكنك جعل الأشياء التي تقوم ببنائها قابلة للتحكم عبر تطبيق iOS Home.
createAccessory(name, id)
-> Accessory
إنشاء ملحق وإعادته. إذا كنت تريد معرفة كيفية العمل بشكل أكبر مع هذه الكائنات الملحقة، فراجع HAP-NodeJS.
getAccessories()
-> Array
احصل على قائمة بالملحقات المسجلة لهذه الوحدة.
يمكّنك هذا المنشئ من إنشاء إجراءات لاستخدامها بواسطة وحدات وعناصر واجهة مستخدم أخرى وما إلى ذلك. ويمكنك سلسلة هذه الاستدعاءات.
createAction(actionId)
-> ActionBuilder
قم بإنشاء إجراءات باستخدام المعرف المقدم.
setMeta(name, sentence)
-> ActionBuilder
قم بتعيين البيانات التعريفية للإجراء. وهذا يعني عنوان الإجراء والجملة. يجب أن يتناسب جزء الجملة مع الجملة " إذا كان المشغل، فعندئذٍ [X] ".
setCallback()
-> ActionBuilder
قم بتعيين رد الاتصال لاستدعاء الإجراء. سيتم توفير رد الاتصال مع وسيطة input
. على سبيل المثال
. setCallback ( function ( input ) {
console . log ( input . temperature ) ;
} ) ;
getActions()
-> Array
احصل على قائمة بإجراءات هذه الوحدة.
تم تنسيق الكود باستخدام أجمل JLongster.