Menurut pendapat saya, salah satu kelemahan utama dari homebridge adalah kurangnya kemampuan untuk membuat skrip tingkat lanjut. Semua otomatisasi ditugaskan ke pusat rumah, yang dapat berupa iPad (terhubung ke pengisian daya), Apple TV atau HomePod. Tidak semua orang memiliki perangkat ini, selain itu, HomeKit memiliki otomatisasi yang sangat buruk. Situasi ini dapat
diperbaiki menggunakan
Node-Red . Artikel ini ditujukan untuk pengguna yang sudah
menginstal dan mengonfigurasi homebridge.

Secara singkat: Node-RED adalah alat untuk menghubungkan perangkat keras, API dan layanan online dengan membangun tautan antara berbagai node (blok).
Definisi di situs web resmi:Node-RED adalah alat pemrograman untuk pengkabelan bersama perangkat keras, API dan layanan online dengan cara baru dan menarik.
Ini menyediakan editor berbasis browser yang membuatnya mudah untuk menyatukan aliran menggunakan berbagai node di palet yang dapat digunakan untuk runtime dalam satu klik.
Pada Raspbian, ini dipasang:
sudo apt-get install nodered sudo systemctl enable nodered.service sudo service nodered start
Secara default, Node-Red berjalan pada port 1880.
Ada
perpustakaan besar modul dengan serangkaian blok berbagai fungsi. Tidak terhindar dan homebridge. Instal
simpul-red-contrib-homebridge-automation :
cd ~/.node-red npm install node-red-contrib-homebridge-automation sudo service nodered restart
Mari kita coba nyalakan bola lampu. Untuk melakukan ini, seret blok
fungsi hb-kontrol ,
fungsi (blok ini akan mengirim perintah untuk menghidupkan) dan
menyuntikkan (dalam kerangka artikel ini, hanya diperlukan untuk mengaktifkan skrip secara manual). Untuk pertama kalinya, untuk
blok hb, Anda perlu menentukan
PIN dan memperbarui daftar perangkat. Kemudian Anda dapat menambahkan blok yang diperlukan:

Sekarang, dengan mengklik tombol di blok
injeksi ,
lampu akan menyala. Selain
hb-contoll, ada juga blok
hb-event, hb-status dan hb-resume . Deskripsi terperinci dari blok dapat ditemukan di
repositori resmi.
Kode blok fungsi var ret_msg={}; ret_msg.payload = {}; ret_msg.payload.On = true; return ret_msg;
Blok
fungsi dirancang untuk memanipulasi data menggunakan fitur JavaScript. Blok menerima variabel
pesan bersama dengan parameter
payload , secara default, sebagian besar blok di Node-Red bekerja dengan parameter
payload .
Perlu berbicara tentang blok
Debug , dengan itu Anda dapat melihat output dari blok, sehingga Anda memahami apa kesalahannya jika ide Anda tidak berhasil.
Sekarang mari kita lakukan sesuatu yang menarik, misalnya, ubah status lampu setelah memutar
MagicCube 90 derajat. Dalam
artikel sebelumnya, saya menunjukkan cara berteman perangkat zigbee dengan homebridge. MagicCube, seperti perangkat zigbee lainnya, akan muncul di broker MQTT setelah dipasangkan.
Node-Red mendukung protokol MQTT di luar kotak. Tambahkan blok MQTT, tentukan alamat server dan kubus topik.

Sebuah kubus dapat mengirimkan status berikut:
goyang, bangun, jatuh, ketuk, geser, flip180, flip90, rotate_left dan rotate_rightTambahkan blok
sakelar untuk memisahkan satu keadaan dari keadaan lainnya. Tentukan
flip90 ,
goyang dan
ketuk kondisi di
saklar . Hubungkan output teratas ke
status hb untuk mendapatkan status bola lampu saat ini. Blok
status-hb terhubung ke blok
Nilai Terbalik pada dengan membalikkan keadaan, dan outputnya terhubung ke
kontrol-hb dan ketika kubus diputar, bohlam akan mengubah status hidup / mati. Seharusnya terlihat seperti ini:

Balikkan Pada Kode Nilai var ret_msg=msg; ret_msg.payload.On = !msg.payload.On; return ret_msg;
Flow dapat diimpor dari sini:
Mengalir [ { "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" } ]
Dengan demikian, dimungkinkan untuk "memahat" skema otomasi kompleks dari blok. Di
perpustakaan Anda dapat menemukan modul dengan set blok untuk tugas yang sama sekali berbeda, misalnya, untuk merekam kamera pengintai video atau bekerja dengan file dari kamera.
Pikiran PS keras-keras:Saya dihantui oleh pemikiran bahwa tidak peduli bagaimana teknologi berkembang, banyak yang masih sangat jauh dari otomasi kerja dan proses kehidupan yang dangkal melalui pemrograman. Saya sangat berharap bahwa dengan munculnya alat-alat seperti
Node-Red atau
Blockly , ambang masuk akan sangat berkurang. Setelah belajar bagaimana membangun sistem dari kubus di Node-Red yang sama, orang mungkin akan sampai ke blok
fungsi dan belajar JS dengan minat, dan kemudian semuanya akan terjadi dengan sendirinya.