Homebridge أتمتة مع عقدة الأحمر

في رأيي ، واحدة من العيوب الرئيسية لل homebridge هو عدم القدرة على إنشاء نصوص متقدمة. يتم تخصيص جميع الأتمتة إلى المركز المنزلي ، والذي يمكن أن يكون جهاز iPad (متصل بالشحن) أو Apple TV أو HomePod. ليس كل شخص لديه هذه الأجهزة ، بالإضافة إلى ذلك ، HomeKit لديه التشغيل الآلي سيئة للغاية. يمكن تصحيح هذا الموقف باستخدام Node-Red . هذه المقالة مخصصة للمستخدمين الذين قاموا بالفعل بتثبيت homebridge وتكوينه .



باختصار: Node-RED هي أداة لتوصيل الأجهزة ، واجهات برمجة التطبيقات والخدمات عبر الإنترنت من خلال بناء الروابط بين العقد المختلفة (الكتل).

التعريف على الموقع الرسمي:
Node-RED هي أداة برمجة لتوصيل الأجهزة والأجهزة وواجهات برمجة التطبيقات والخدمات عبر الإنترنت بطرق جديدة ومثيرة للاهتمام.
يوفر محررًا يستند إلى المستعرض يجعل من السهل ربط التدفقات معًا باستخدام مجموعة كبيرة من العقد في اللوحة التي يمكن نشرها في وقت التشغيل بنقرة واحدة.


على Raspbian ، يتم تثبيت هذا:

sudo apt-get install nodered sudo systemctl enable nodered.service sudo service nodered start 

افتراضيًا ، يتم تشغيل Node-Red على المنفذ 1880.

هناك مكتبة ضخمة من وحدات مع مجموعات من كتل من وظائف مختلفة. لا يدخر و homebridge. تثبيت أتمتة العقدة-أحمر-المساهمة- homebridge :

 cd ~/.node-red npm install node-red-contrib-homebridge-automation sudo service nodered restart 

دعونا نحاول تشغيل المصباح الكهربائي. للقيام بذلك ، اسحب عنصر التحكم hb- block ، (سترسل هذه الكتلة أمرًا لتشغيله) وحقن (ضمن إطار هذه المقالة ، من الضروري فقط تنشيط البرنامج النصي يدويًا). لأول مرة ، بالنسبة لبنات hb ، تحتاج إلى تحديد PIN وتحديث قائمة الأجهزة. ثم يمكنك إضافة الكتل اللازمة:



الآن ، من خلال النقر على الزر الموجود في كتلة الحقن ، يجب أن يضيء المصباح. بالإضافة إلى hb-contoll ، هناك أيضًا كتل hb-event و hb-status و hb-استئناف . يمكن العثور على وصف تفصيلي للكتل في المستودع الرسمي.

وظيفة رمز كتلة
 var ret_msg={}; ret_msg.payload = {}; ret_msg.payload.On = true; return ret_msg; 


تم تصميم كتلة الوظائف لمعالجة البيانات باستخدام ميزات JavaScript. تقبل الكتلة المتغير msg مع معلمة payload ، بشكل افتراضي ، تعمل معظم الكتل الموجودة في Node-Red مع معلمة payload .

يجدر الحديث عن كتلة Debug ، حيث يمكنك رؤية مخرجات الكتل ، بحيث تفهم ما هو الخطأ إذا لم تنجح فكرتك.

الآن دعونا نفعل شيئًا مثيرًا للاهتمام ، على سبيل المثال ، اجعل حالة تغيير الإضاءة بعد قلب 90 درجة من MagicCube . في مقالة سابقة ، أوضحت كيفية تكوين أصدقاء لأجهزة zigbee باستخدام homebridge. سيظهر MagicCube ، مثله مثل أجهزة zigbee الأخرى ، في وسيط MQTT بعد الاقتران.

يدعم Node-Red بروتوكول MQTT خارج المربع. أضف كتلة MQTT ، وحدد عنوان الخادم ومكعب الموضوع.



يمكن أن ينقل المكعب الحالات التالية:
اهتز ، استيقظ ، سقوط ، انقر فوق ، الشريحة ، flip180 ، flip90 ، rotate_left و rotate_right

إضافة كتلة التبديل لفصل دولة واحدة عن أخرى. حدد flip90 ، اهتز واضغط على الظروف في التبديل . قم بتوصيل الإخراج العلوي بالحالة hb للحصول على الحالة الحالية للمصباح. يتم توصيل كتلة الحالة hb بكتلة Invert On Value عن طريق قلب الحالة ، ويكون ناتجها متصلًا بـ hb-control وعندما يتم تدوير المكعب ، ستقوم المصباح بتغيير حالة التشغيل / الإيقاف. يجب أن يبدو شيء مثل هذا:



عكس رمز القيمة
 var ret_msg=msg; ret_msg.payload.On = !msg.payload.On; return ret_msg; 


يمكن استيراد التدفق من هنا:

تدفق
 [ { "id": "f0f31eb6.22f16", "type": "tab", "label": "Flow 1", "disabled": false, "info": "" }, { "id": "e0f72465.9e4fb8", "type": "mqtt in", "z": "f0f31eb6.22f16", "name": "", "topic": "zigbee2mqtt/0x00158d00010f0528", "qos": "2", "datatype": "auto", "broker": "8ec472b.e73e29", "x": 160, "y": 80, "wires": [ [ "43f74679.730588" ] ] }, { "id": "8539109.d872ff", "type": "debug", "z": "f0f31eb6.22f16", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "x": 670, "y": 60, "wires": [] }, { "id": "c5db7c5b.399f4", "type": "hb-status", "z": "f0f31eb6.22f16", "name": "Room1", "Homebridge": "HomeBridge", "Manufacturer": "YeeLight", "Service": "Lightbulb", "device": "HomeBridgeA1:23:AD:E3:CD:32YeeLightRoom100000043", "conf": "7948a496.505c2c", "x": 340, "y": 180, "wires": [ [ "9ef696d9.51a378" ] ] }, { "id": "43f74679.730588", "type": "switch", "z": "f0f31eb6.22f16", "name": "CubeActions", "property": "payload", "propertyType": "msg", "rules": [ { "t": "cont", "v": "flip90", "vt": "str" }, { "t": "cont", "v": "tap", "vt": "str" }, { "t": "cont", "v": "shake", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 3, "x": 150, "y": 240, "wires": [ [ "c5db7c5b.399f4" ], [], [] ] }, { "id": "f476dcba.a6511", "type": "hb-control", "z": "f0f31eb6.22f16", "name": "Room1", "Homebridge": "HomeBridge", "Manufacturer": "YeeLight", "Service": "Lightbulb", "device": "HomeBridgeA1:23:AD:E3:CD:32YeeLightRoom100000043", "conf": "7948a496.505c2c", "x": 700, "y": 180, "wires": [] }, { "id": "9ef696d9.51a378", "type": "function", "z": "f0f31eb6.22f16", "name": "Invert On Value", "func": "var ret_msg=msg;\nret_msg.payload.On = !msg.payload.On;\nreturn ret_msg;", "outputs": 1, "noerr": 0, "x": 520, "y": 180, "wires": [ [ "f476dcba.a6511" ] ] }, { "id": "8ec472b.e73e29", "type": "mqtt-broker", "z": "", "name": "mosquitto", "broker": "127.0.0.1", "port": "1883", "clientid": "", "usetls": false, "compatmode": true, "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "closeTopic": "", "closeQos": "0", "closePayload": "", "willTopic": "", "willQos": "0", "willPayload": "" }, { "id": "7948a496.505c2c", "type": "hb-conf", "z": "", "username": "111-11-111" } ] 


وبالتالي ، فمن الممكن "نحت" مخططات الأتمتة المعقدة من كتل. في المكتبة ، يمكنك العثور على وحدات تحتوي على مجموعات من الكتل للقيام بمهام مختلفة تمامًا ، على سبيل المثال ، لتسجيل كاميرات مراقبة الفيديو أو العمل مع ملفات من الكاميرات.

أفكار PS بصوت عالٍ:
أنا مسكون بالفكر أنه بغض النظر عن كيفية تطور التكنولوجيا ، لا يزال الكثيرون بعيدون عن أتمتة العمل والعمليات الحياتية من خلال البرمجة. آمل حقًا أنه مع ظهور أدوات مثل Node-Red أو Blockly ، ستنخفض عتبة الدخول إلى حد كبير. بعد أن تعلمت كيفية إنشاء نظام من مكعبات في Node-Red نفسه ، من المحتمل أن يصل الأشخاص إلى كتلة الوظائف ويتعلمون JS باهتمام ، وبعد ذلك سيحدث كل شيء بمفرده.

Source: https://habr.com/ru/post/ar462775/


All Articles