Ada beberapa artikel tentang lingkungan pemrograman seperti Node-RED di Internet berbahasa Rusia . Artikel ini akan mengungkap rahasia tirai tentang produk ini dan menunjukkan, menggunakan contoh membuat algoritma kontrol pencahayaan untuk sensor gerak, betapa sederhananya menggunakan Node-RED untuk mengimplementasikan berbagai skenario dan aturan untuk mengotomatisasi rumah pintar dalam bentuk grafik sepenuhnya tanpa menulis kode apa pun.
Apa itu Node-RED?
IBM, seperti perusahaan-perusahaan besar lainnya, sedang mencoba menemukan ceruk pasarnya di Internet yang sedang berkembang. Ini biasanya terkait dengan rilis aplikasi dan produk open-source untuk mempopulerkan platform berbayar mereka. Misalnya, di IBM, platform berbayar adalah Bluemix.Node-RED adalah gagasan open-source dari IBM dan, karena hanya tertulis di situs, itu adalah alat yang berfungsi untuk menghubungkan perangkat keras, API, dan layanan dengan cara baru dan menarik.Metode-metode ini didasarkan pada penggunaan jalur komunikasi grafis di mana pesan dikirim antara node. Dengan demikian, Anda dapat menghubungkan berbagai blok hanya dengan mouse tanpa menggunakan pemrograman.Pengembangan di Node-RED dilakukan melalui browser biasa, kernel itu sendiri dapat dijalankan di berbagai platform - PC, RPi, cloud, dll.Node-RED untuk rumah pintar
Saya memutuskan untuk mencoba Node-RED untuk menulis skrip dan aturan untuk rumah pintar. Yaitu, untuk otomatisasi. Koneksi dengan berbagai aktuator, layanan web, dan sensor dibuat di OpenHAB. Mengapa saya memutuskan untuk tidak melakukan otomatisasi di sana? Beberapa alasan:- Dalam OpenHAB, skrip dan aturan ditulis dalam bahasa mereka sendiri. Saya tidak ingin mempelajarinya hanya untuk satu aplikasi.- Men-debug aturan itu sendiri secara praktis tidak mungkin - jika aturan itu tidak berfungsi, sulit untuk mengetahui mengapa- Saya ingin aturan saya tidak tergantung pada perangkat keras, saluran komunikasi, platform, dan perangkat lunak itu sendiri untuk berkomunikasi dengan perangkat. Sehingga saya dapat dengan mudah beralih ke platform UD lain, misalnya Domoticz, MajorDomo, FHEM dan membawa aturan saya, dan tidak menulis ulang di bawah platform UD yang baru.Kontrol Pencahayaan dengan sensor gerak dan cahaya
Jadi mari kita mulai. Sebenarnya tugas aslinya sederhana dan sepele:Saya telah mengontrol titik LED untuk penerangan di koridor. Saya ingin cahaya menyala saat bergerak dan mati setelah 10 detik.Mari kita sedikit menyulitkan tugas:- Lampu harus menyala hanya ketika gelap di luar- Intensitas cahaya harus tergantung pada waktu - sampai jam 9 malam cahaya harus menyala dengan intensitas penuh, dan setelah itu hanya sebesar 10% sebagai cahaya latar.Sensor, pemain, dll besi
Protokol dan opsi komunikasi dengan sensor dan aktuator saya tidak akan jelaskan di sini. Cukuplah untuk mengatakan bahwa di rumah pintar saya semua protokol ini dikurangi menjadi satu - MQTT, dan melalui itu komunikasi dengan Node-RED sudah terjadi.Jadi sensor dan aktuator apa yang saya miliki?1. Sensor gerak. Menerbitkan pesan OPEN ke topik / myhome / state / Hall_motion ketika mendeteksi gerakan dan TUTUP jika tidak ada gerakan selama 2 detik.2. Sensor cahaya. Ini mengukur kecerahan penerangan jalan di kisaran 0-1000 Lux. Ini menerbitkan pesan sekali per menit dalam topik / myhome / state / Lumin_Hall dengan tingkat cahaya saat ini.3. Kontrol lampu LED redup. Berlangganan ke topik / myhome / command / Light_Hall / state. Jika Anda menulis 0 di sana - lampu akan mati. 100 - menyala pada kecerahan maksimum. 1-99 - akan mengubah intensitas cahaya. Untuk penerangan malam hari, intensitas cukup 1.Deskripsi Aliran dalam Node-RED
Diasumsikan bahwa Anda telah menginstal Node-RED. Jika tidak, ikuti tautan di atas dan instal opsi apa pun yang nyaman bagi Anda - di komputer, Raspberry, clowd, dll. Dalam kasus saya, Node-RED diinstal pada RPi2 (menurut saya, itu bahkan datang dengan Raspbian, jadi tidak ada yang perlu diinstal sama sekali). Alur ini tidak memerlukan instalasi pustaka tambahan apa pun.Input dan output
Pertama-tama, kami membuat input dan output yang diperlukan untuk algoritma kami. Ini akan menjadi klien MQTT yang berlangganan topik yang relevan. Kami seret dari pustaka di sebelah kiri dan sesuaikan.Catatan: Nama blok yang ditampilkan dapat diubah dalam pengaturannya.Untuk sensor cahaya, buat simpul Sensor Cahaya Hall dari Input MQTT:
Dalam konfigurasinya, cukup untuk mendaftarkan alamat dan topik broker MQTT.
Broker saya berputar di platform yang sama, jadi tinggalkan saja localhost.Kami membuat simpul Hall Motion Sensor untuk sensor gerak:
Semuanya sama untuk itu, cukup tetapkan topik lain / myhome / state / Hall_motion.
Karena Anda dapat melihat alamat dan parameter broker, simpul ini telah mengambil alih dari yang sebelumnya, sehingga Anda tidak perlu memasukkannya di yang baru.Tetap menambahkan Output MQTT untuk membuat output untuk dimmer LED. Seret dan lepaskan Output MQTT dan menyebutnya Hall Light Dimmer.
Dalam parameter, sekali lagi, Anda hanya perlu menentukan topik yang diinginkan, ke mana pesan untuk mengontrol dimmer akan dikirim - / myhome / command / Light_Hall / state
Akibatnya, kami mendapat tiga node untuk Flow kami.
Tidak ada salahnya untuk menguji fungsionalitasnya. Itu mudah.Kami menghubungkan output Debug ke blok Input.
Dan hubungkan Input Inject ke blok output.
Dalam pengaturan simpul ini, Anda perlu mengubah muatan ke tingkat kecerahan lampu yang diinginkan. Sebagai contoh, dalam hal ini adalah 100.
Kita dapat membuat beberapa blok Inject identik dengan copy-paste, mengubah kecerahan, dan menghubungkannya ke output seperti ini:
Itu juga akan berhasil. Sudah waktunya untuk memeriksa. Kami mengklik tombol Deploy:
Di bawah node MQTT, Anda akan melihat pesan kecil:
Ini berarti bahwa mereka terhubung ke broker MQTT. Jika semuanya berjalan sesuai rencana, maka di tab debug kanan Anda akan melihat pesan dari sensor, dan jika Anda mengklik persegi panjang di sebelah kiri node Inject, intensitas cahaya dari lampu yang terhubung ke dimmer akan berubah. Jika semuanya berfungsi, Anda bisa melangkah lebih jauh.Sirkuit Kontrol Pencahayaan Sensor Gerak
Untuk kesederhanaan, saya akan merujuk ke blok yang saling berhubungan sebagai rantai. Pertama-tama, mari kita coba membuat sirkuit sederhana yang menyalakan cahaya oleh sensor gerak dan mematikannya setelah beberapa waktu. Untuk melakukan ini, menurut konsep Node-RED, kita memerlukan pesan dari sensor gerak untuk mencapai redup melalui blok tertentu dan memiliki teks tertentu. Pertama, kita akan berurusan dengan masuknya cahaya.Pertama-tama, kami memilih dari semua pesan dari sensor gerak pesan dengan teks OPEN - ini berarti bahwa gerakan telah muncul. Untuk melakukan ini, gunakan blok sakelar. Hubungkan ke output dari blok Sensor Gerak Hall yang telah kita buat.
Kami akan mengkonfigurasinya sehingga blok hanya menghasilkan pesan dengan teks OPEN
Seperti yang Anda lihat dari gambar, blok akan membandingkan muatan dengan teks BUKA dan mengirim pesan ke keluaran jika teksnya cocok.Dimmer kami mengharuskan pesan dengan kecerahan yang diperlukan 0 ... 100 menjadi input untuk itu. Dia tidak akan mengerti teks BUKA. Oleh karena itu, kami menggunakan blok Ubah untuk mengubah teks pesan.
Dalam pengaturan blok ini, tuliskan perubahan yang diperlukan - payload pesan kita ubah menjadi 100 - intensitas pencahayaan yang dibutuhkan.Dan akhirnya, kami menghubungkan semuanya ke input dimmer kami:
Jika Anda memulai sirkuit ini, Anda dapat memastikan bahwa itu berfungsi - lampu akan menyala saat bergerak. Tetap memastikan bahwa itu juga mati.Untuk melakukan ini, gunakan unit Pemicu dan hubungkan ke output dari sensor gerak.
Blok pemicu memungkinkan Anda untuk menghasilkan pesan yang tertunda, dan juga dapat direset oleh pesan tertentu. Mari kita
konfigurasikan seperti ini: Pengaturan ini berarti bahwa ketika pesan pertama tiba, pemicu tidak mengirim apa pun, tetapi memulai jeda waktu 8 detik dan setelah itu mengirim pesan dengan teks 0. Selain itu, pemicu diatur ulang jika menerima input dengan teks OPEN. Apa artinya ini dalam kasus kami?Misalkan sensor gerak menampilkan pesan OPEN. Pesan ini akan mengembalikan pelatuk ke kondisi semula tanpa reaksi apa pun. Kemudian setelah beberapa waktu, sensor gerak akan mengeluarkan pesan TUTUP. Pesan ini akan memulai waktu tunda dan 8 detik setelah itu pemicu akan menampilkan pesan 0.Jika selama waktu ini penundaan, pesan OPEN tiba lagi, pemicunya akan kembali ke keadaan semula dan akan menunggu pesan berikutnya (yang secara logis akan DITUTUP). Dalam hal ini, pemicu tidak akan menampilkan pesan apa pun.Yaitu, dengan cara ini kami membuat timer yang akan membantu kami mematikan lampu secara otomatis setelah pencahayaan yang diberikan. Jika kita mengingat deskripsi sensor gerak, menjadi jelas mengapa 8 detik diatur di sini, dan tidak 10 - 2 detik ditambahkan karena kecepatan rana sensor gerak itu sendiri.Masih menghubungkan output pemicu ke dimmer dan Anda dapat memulai rangkaian untuk verifikasi.
Saya perhatikan bahwa untuk kesederhanaan saya memposting tangkapan layar dari rantai yang sudah di-debug. Anda dapat menggantung blok dengan rantai Debug Anda untuk memahami cara kerjanya, dan rantai Anda mungkin terlihat seperti ini:
Dan tidak ada yang perlu dikhawatirkan.Dan Anda dapat melakukannya seperti ini: Secara
umum, dengan mengeklik segi empat di sebelah kiri blok Suntik, Anda dapat men-debug rangkaian tanpa besi sama sekali - pada laptop Anda selama perjalanan di kereta bawah tanah atau bahkan tablet.Sirkuit hidup / mati tergantung pada kecerahan penerangan jalan
Sekarang kita perlu memastikan bahwa lampu tidak menyala jika jalan terlalu terang. Untuk melakukan ini, kita perlu menambahkan rantai lain dan sedikit mengubah rantai utama untuk memperhitungkan faktor ini.Pertama, ambil blok sakelar yang sudah kita ketahui dan hubungkan ke output sensor cahaya.
Kami akan mengkonfigurasi unit ini sehingga mengirim pesan dari sensor cahaya ke salah satu output, tergantung pada pencahayaan saat ini.
Kondisi di atas berarti bahwa jika iluminasi kurang dari 10 lux, pesan akan dikirim ke output 1. Jika tidak, itu akan pergi ke output 2. Jangan lupa bahwa Anda perlu memilih
Opsi sehingga pesan diarahkan hanya ke salah satu output.Berdasarkan prinsip operasi, ternyata secara logis bahwa jika pesan muncul pada output pertama (atas), kita perlu mengaktifkan deteksi gerakan, dan jika pada yang kedua, maka matikan.Di sini, tentu saja, 1000 dan 1 metode dimungkinkan, yang paling sederhana adalah dengan hanya memblokir pesan untuk menyalakan cahaya dari sensor gerak jika cahaya di luar. Kami menyadarinya.Perlu dicatat bahwa di Node-RED, mesin eksekusi diimplementasikan berdasarkan pesan. Yaitu tidak ada pesan - tidak ada peristiwa, tidak ada reaksi. Ini membebankan spesifik tertentu dalam hal pesan yang berbeda tiba secara serempak, yaitu pada titik waktu yang berbeda. Misalnya, dalam hal ini, pesan dari sensor cahaya tidak sinkron dengan pesan dari sensor gerak. Oleh karena itu, untuk memperhitungkan efek sensor cahaya, kita perlu mengingat informasi yang ada dalam pesannya dan kemudian menerapkannya pada saat berikutnya pesan datang dari sensor gerak.Dalam hal ini, konteks datang ke penyelamatan - bidang di mana Anda dapat menyimpan informasi selama eksekusi alur. Konteksnya bersifat global dalam kaitannya dengan seluruh lingkungan, atau lokal untuk aliran tertentu, atau umumnya hanya untuk blok tertentu.Dalam kasus kami, kami akan menggunakan konteks lokal untuk aliran ini. Yaitu variabel akan terlihat oleh semua blok dalam aliran ini. Mari kita buat blok perubahan dan hubungkan ke output pertama dari Light Threshold Detector.
Seperti yang kita ingat, pesan muncul pada output ini jika sensor cahaya melaporkan bahwa penerangan jalan kurang dari 10 Lux. Pertimbangkan konfigurasi blok perubahan.
Dalam hal ini, kami menggunakan aturan Set untuk mengatur variabel flow.Light_enabled ke Ya. Dengan demikian, kami menetapkan nilai ke variabel global, yang dapat kami gunakan di blok lain.Dengan cara yang sama, buat blok perubahan kedua dan hubungkan ke output kedua.
Konfigurasinya adalah sebagai berikut:
Untuk mengetahui apakah detektor seperti itu bekerja dengan benar, kita dapat membuat rangkaian sederhana dengan blok Suntikan dan Debug.
Pada saat yang sama, dalam pengaturan blok Inject, kami menunjukkan bahwa ia harus memberikan setiap detik nilai dari variabel flow. Cahaya_enabled
Maka hasil sensor cahaya dapat dengan mudah dilihat di tab Debug.
Sirkuit on / off lampu umum untuk sensor cahaya akan terlihat seperti ini
Sekarang, untuk mempertimbangkan efek ini sirkuit kontrol sensor gerak, sudah cukup bagi kita untuk memasukkan blok saklar ke sirkuit jalur untuk menyalakan lampu.
Dan aturlah sehingga melompati pesan dari sensor gerak hanya jika aliran variabel global kita.Light_enabled diatur ke Ya - yaitu. di luar gelap.
Selesai! Sekarang aliran kami terlihat seperti ini:
Mengubah kecerahan lampu tergantung pada waktu
Hanya ada sedikit yang tersisa. Kami ingin mengubah intensitas lampu LED. Yaitu jika gelap dengan kita, tetapi waktunya sebelum jam 9 malam, lampu harus menyala dengan kekuatan penuh. Tapi setelah sembilan - hanya pada daya rendah, seperti iluminasi malam.Untuk melakukan ini, buat blok Suntik:
Ini dapat dikonfigurasi sehingga menampilkan pesan pada waktu tertentu. Atur pada pukul 21:00 setiap hari.
Pada saat yang sama, kami mencatat bahwa itu akan mengeluarkan pesan dengan nilai 1. Ini akan menjadi intensitas cahaya latar yang kami inginkan dalam mode malam. Untuk menggunakan nilai ini di sirkuit kontrol cahaya, kami menggunakan trik yang sama dengan variabel global. Buat perubahan: blok
dan konfigurasikan sehingga aliran variabel.Light_Brightness diberi nilai dari pesan.
Untuk mengembalikan kecerahan awal di pagi hari, buat blok injeksi kedua, yang akan dieksekusi pukul 6 pagi dan berikan nilai kecerahan 100. Hubungkan di sana.
Dengan demikian, variabel flow. Light_brightness akan diberi nilai 1 setiap malam pada jam 9, dan nilai 100 setiap pagi pada jam 6. Tetap hanya menerapkan ini di sirkuit utama. Untuk melakukan ini, kita sudah memiliki blok Penyesuaian Kecerahan Cahaya:
Untuk itu kita hanya perlu mengubah pengaturan sehingga tidak menetapkan konstanta, tetapi nilai dari variabel flow.Light_brightness.
Hasil akhir
Aliran terakhir, dibersihkan dari blok debugging, terlihat rapi dan bersih. Saat membuat, kami hanya menggunakan blok bangunan dari instalasi Node-RED. Situs flows.nodered.org , namun, ada lebih dari 800 unit tambahan dan perpustakaan yang memungkinkan Anda untuk menambahkan banyak hal yang berbeda.
Bagi mereka yang tertarik untuk mengulangi algoritma ini, saya memposting aliran yang saya gunakan untuk debugging:
Serta kode json-nya, yang dapat dengan mudah diimpor ke versi Node-RED dan diuji.[{"id":"5afd41b4.d61318","type":"switch","z":"2384634b.17767c","name":"Movement detected?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"OPEN","vt":"str"}],"checkall":"false","outputs":1,"x":562,"y":285,"wires":[["381b0d6d.a0bd7a"]]},{"id":"35bac8e.57dd5b8","type":"trigger","z":"2384634b.17767c","op1":"5","op2":"0","op1type":"nul","op2type":"val","duration":"8","extend":false,"units":"s","reset":"OPEN","name":"Switch off delay","x":750,"y":373,"wires":[["e995e130.1e2118","af1f191f.498098"]]},{"id":"d85623d1.29b058","type":"change","z":"2384634b.17767c","name":"Light Brightness Adjustment","rules":[{"t":"set","p":"payload","pt":"msg","to":"Light_brightness","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1013.9999389648438,"y":284.63330078125,"wires":[["e995e130.1e2118","af1f191f.498098"]]},{"id":"934ff922.ca34f","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"OPEN","payloadType":"str","repeat":"","crontab":"","once":false,"x":258.5,"y":408,"wires":[["5afd41b4.d61318"]]},{"id":"ea0e2e99.52a6f8","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"CLOSED","payloadType":"str","repeat":"","crontab":"","once":false,"x":269,"y":459,"wires":[["35bac8e.57dd5b8","5afd41b4.d61318"]]},{"id":"4187db59.93c2dc","type":"mqtt in","z":"2384634b.17767c","name":"Hall Light Sensor","topic":"/myhome/state/Lumin_Hall","qos":"2","broker":"bfc8eee2.a46c9","x":243,"y":146,"wires":[["c94e7c4.849f48"]]},{"id":"c94e7c4.849f48","type":"switch","z":"2384634b.17767c","name":"Light Threshold Selector","property":"payload","propertyType":"msg","rules":[{"t":"lt","v":"10","vt":"num"},{"t":"else"}],"checkall":"false","outputs":2,"x":517.3333129882812,"y":145.7166748046875,"wires":[["48e6a07a.962798"],["ca8b6623.f11c7"]]},{"id":"381b0d6d.a0bd7a","type":"switch","z":"2384634b.17767c","name":"Light Enabled?","property":"Light_enabled","propertyType":"flow","rules":[{"t":"eq","v":"Yes","vt":"str"}],"checkall":"true","outputs":1,"x":775.5,"y":285,"wires":[["d85623d1.29b058"]]},{"id":"48e6a07a.962798","type":"change","z":"2384634b.17767c","name":"Enable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"Yes","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":822,"y":109,"wires":[[]]},{"id":"ca8b6623.f11c7","type":"change","z":"2384634b.17767c","name":"Disable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"No","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":824.6666259765625,"y":177.51666259765625,"wires":[[]]},{"id":"b6ea27c1.c33cd","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"Light_enabled","payloadType":"flow","repeat":"1","crontab":"","once":false,"x":330.5,"y":678,"wires":[["db66aec8.b3abc"]]},{"id":"db66aec8.b3abc","type":"debug","z":"2384634b.17767c","name":"Light_enabled","active":false,"console":"false","complete":"payload","x":670.5,"y":679,"wires":[]},{"id":"fa4b50b8.e6e0f","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"5","payloadType":"num","repeat":"","crontab":"","once":false,"x":233.5,"y":212,"wires":[["c94e7c4.849f48"]]},{"id":"e7b1a39.f9e596","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"100","payloadType":"num","repeat":"","crontab":"","once":false,"x":235,"y":266,"wires":[["c94e7c4.849f48"]]},{"id":"4b2f3c6f.de9aac","type":"mqtt in","z":"2384634b.17767c","name":"Hall Motion Sensor","topic":"/myhome/state/Hall_motion","qos":"2","broker":"87b370d1.dd497","x":247,"y":334,"wires":[["5afd41b4.d61318","35bac8e.57dd5b8"]]},{"id":"e995e130.1e2118","type":"mqtt out","z":"2384634b.17767c","name":"Hall Light Dimmer ","topic":"/myhome/command/Light_Hall/state","qos":"0","retain":"true","broker":"87b370d1.dd497","x":1310,"y":315,"wires":[]},{"id":"781e72a7.3c0abc","type":"inject","z":"2384634b.17767c","name":"Reduce Brightness at 21:00","topic":"Night Brightness","payload":"1","payloadType":"str","repeat":"","crontab":"00 21 * * *","once":false,"x":339,"y":517,"wires":[["adbf1e2e.3f5ae"]]},{"id":"aa444315.a48ad8","type":"inject","z":"2384634b.17767c","name":"Normal Brightness at 6:00","topic":"Night Brightness","payload":"50","payloadType":"num","repeat":"","crontab":"00 6 * * *","once":false,"x":349.6666259765625,"y":604.683349609375,"wires":[["adbf1e2e.3f5ae"]]},{"id":"adbf1e2e.3f5ae","type":"change","z":"2384634b.17767c","name":"Light Brightness Adjustment","rules":[{"t":"set","p":"Light_brightness","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":692,"y":554,"wires":[[]]},{"id":"af1f191f.498098","type":"debug","z":"2384634b.17767c","name":"","active":true,"console":"false","complete":"false","x":1303.5,"y":429,"wires":[]},{"id":"bfc8eee2.a46c9","type":"mqtt-broker","z":"2384634b.17767c","broker":"localhost","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""},{"id":"87b370d1.dd497","type":"mqtt-broker","z":"2384634b.17767c","broker":"localhost","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""}]
Ringkasan
Pada artikel ini saya mencoba menunjukkan dan mengatakan betapa mudahnya menerapkan algoritma otomatisasi rumah sehari-hari di lingkungan Node-RED. Saya juga mencoba untuk menunjukkan keuntungan utama dari lingkungan pemrograman ini, seperti:- representasi grafis logis dari koneksi dan fungsi- kemudahan pemrograman dan kemudahan debugging skrip pengguna- perangkat keras dan kemandirian platform dari algoritma yang dihasilkan - skrip ini akan bekerja sama baiknya dengan OpenHAB, dan dengan ioBroker dan dengan platform rumah pintar lainnya yang mendukung protokol MQTT.- Kemudahan pertukaran algoritme siap pakai antara pengguna berkat kode JSON Copy-Tempel dan keberadaan platform online untuk pertukaran solusi yang sukses.Node-RED dapat melakukan lebih banyak hal, misalnya, menerima cuaca dari Internet, mengirim pemberitahuan ke Twitter, atau bekerja dengan termostat Nest. Dan atas dasar ini, Anda dapat membuat banyak algoritma otomatisasi yang menarik dan berguna lainnya. Tetapi ini adalah topik untuk artikel-artikel berikut.