Kisah tentang bagaimana saya mengotomatisasi apartemen menggunakan Node-RED. Bagian I

Selama setahun terakhir, saya telah mengumpulkan dan mengatur otomatisasi untuk sebuah apartemen kecil di dekat jalan yang sibuk. Pada artikel ini saya akan berbicara tentang solusi yang digunakan dalam sistem iklim, pencahayaan, multimedia dan perangkat lunak.



Apa yang ingin saya lakukan


  1. Matikan air otomatis jika terjadi keadaan darurat.
  2. Matikan ventilasi jika terjadi kebakaran.
  3. Laporkan darurat.
  4. ( , , , ).
  5. (, ).
  6. .
  7. ( , , «» ).


Ada beberapa sistem dasar untuk mengelola otomasi rumah. Ada solusi berbayar dan gratis - semuanya tergantung pada platform. Ini dapat berupa FPGA (programmable logic integrated circuit), pengontrol dalam bentuk faktor router, serta hanya perangkat lunak.

Awalnya, saya menganggap pengontrol FIBARO Home Center 2 yang telah selesai sebagai hub utama. Meski antarmuka ada yang cantik dan ada banyak pengaturan, tetapi perangkat kerasnya ternyata lemah. Firmware, dilihat dari ulasannya, terkadang bermasalah. Jenis protokol lain cukup sulit untuk dihubungkan.

Dari opsi gratis, saya meninjau OpenHUB dan Home Assistant.. OpenHUB tampaknya terlalu dimuat dan sulit untuk diperluas: misalnya, sulit untuk menambahkan modul Z-Wave baru jika tidak ada dalam konfigurasi OpenHUB. Home Assistant mudah diperluas, tetapi pada saat integrasi, otomatisasi hanya dapat ditulis dalam YAML, yang sulit untuk di-debug dan dirawat. Integrasi dengan Z-Wave di Home Assistant telah menimbulkan pertanyaan. Karena itu, saya memilih analog gratis lain, yang akan saya bahas nanti. Saya memilih

Node-RED sebagai solusi backend, karena ia menyediakan banyak integrasi yang sudah jadi dengan protokol yang berbeda, gratis dan memungkinkan Anda untuk menulis logika otomatisasi langsung dalam JavaScript di browser tanpa kompilasi ulang. Dengan itu, cukup debug skrip menggunakan debug dan injeksi.

Jendela Editing Node-RED Script
Jendela Editing Node-RED Script

Node-RED menggunakan NodeJS di bawah tenda, sehingga sisa pengikatan juga tertulis di situ. Node-RED hanyalah editor skrip dan integrator dari berbagai protokol. Bagian depan kontrol - seperti, misalnya, di Asisten Rumah - hilang. Ada beberapa plugin yang menambah kemampuan untuk mengontrol perangkat dari browser, tetapi mereka tidak terlalu mudah untuk mengkonfigurasi dan memerlukan penulisan kode front-end juga di browser ( node-red-dashboard ).

Setiap Aliran di sistem saya otonom dan semua komunikasi antara Arus yang berbeda terjadi melalui bus MQTT . Saya juga dapat memindahkan Flow yang dimuat ke server terpisah untuk pemrosesan terdistribusi.

Protokol komunikasi dengan perangkat akhir


Apartemen saya tidak terlalu besar, dan terutama tidak ada tempat untuk menempatkan unit switching, jadi saya memutuskan untuk menggunakan modul nirkabel.

Sistem menggunakan relay kontrol tersembunyi untuk meninggalkan tombol fisik dalam seri yang sama dengan outlet. Tombol fisik diperlukan untuk kontrol langsung dan jika terjadi kegagalan pengontrol pusat. Saya memilih antara sistem nirkabel Z-Wave dan ZigBee.

Pada saat integrasi sistem, teknologi Z-Wave memiliki koleksi perangkat yang paling lengkap. Di berbagai negara, Z-Wave menggunakan frekuensi operasi yang berbeda, di Rusia Anda dapat secara resmi menggunakan frekuensi 869 MHz. Karena saya membeli sebagian besar sensor di Rusia, saya memutuskan untuk menggunakan frekuensi resmi untuk seluruh sistem.

Selain Z-Wave, sistem ini menggunakan modul BroadLink IR dan Modbus TCP.

Untuk mengintegrasikan Z-Wave ke Node-RED, saya memilih perpustakaan OpenZWave C ++ dan node-red-contrib-openzwave . Event Processing Z-Wave untuk mengintegrasikan Modbus menggunakan node-red-the contrib-modbus , manajemen BroadLink - node-red-the contrib-broadlink-control .

Penanganan Acara Z-Wave




Basis data


Saya memilih MongoDB sebagai basis data utama: pembacaan saat ini dari sensor dan perangkat akhir ditulis di sana, ia juga menyimpan kode IR untuk AC dan multimedia.

InfluxDB digunakan sebagai basis untuk menyimpan deret waktu. Menurut data ini, Anda dapat melihat grafik kelembaban, suhu, membangun pengelompokan apa pun. Pembacaan suhu di luar ruangan selama sebulan




Paling depan


Saya memutuskan untuk menulis bagian depan sendiri untuk mencapai fleksibilitas sistem maksimum. Saat bekerja dengan Dashboard, dua sistem tambahan digunakan:

  • Server MQTT berdasarkan aedes ;
  • server otorisasi.

Server otorisasi mengeluarkan token JWT dengan login dan kata sandi, atau dengan menjadi milik jaringan lokal, setelah itu server MQTT memeriksa token ini setiap kali ia mengirim atau menerima pesan untuk sistem front-end.

Ujung depan ditulis dalam ReactJS, dan MQTT melalui WebSockets ( MQTT.JS ) digunakan sebagai protokol komunikasi server . Sebagai kondisi, MobX digunakan. TypeScript juga digunakan, dan semuanya mengkompilasi webpack.

Aplikasi terdiri dari dua halaman:

Dashboard
Panel Dashboard

Z-Wave-
Administration dari perangkat Z-Wave

Pada panel administrasi, Anda dapat menambah dan menghapus perangkat, mengkonfigurasi parameter dan asosiasi mereka.

FGD212
Pengaturan Dimmer FGD212

Pada halaman Dashboard, Anda dapat menambahkan halaman baru dan menggabungkan widget perangkat sesuka Anda.

Dari sudut pandang perangkat lunak, masing-masing perangkat adalah modul terpisah, yang dimasukkan ke dalam sistem melalui antarmuka (Jenis naskah). Ini memberikan ekstensibilitas yang cukup mudah dan integrasi perangkat baru yang mudah di Dashboard.

Peralatan


Sebagai pengontrol, saya menggunakan Intel NUC NUC7PJYH tempat Ubuntu Server digunakan. Untuk komunikasi dengan jaringan Z-Wave, saya memilih USB stick Z-Wave.Me .

Sebagai remote utama untuk rumah pintar, tablet Android digunakan, yang saya pesan di Alibaba.com . Dan tablet datang langsung dari pabrik: dengan dudukan Vesa, daya PoE dan steker listrik (bukan USB). Tablet ini ditenagai oleh catu daya 12V yang terletak di rel DIN di kabinet kontrol. Tidak ada baterai di tablet, sehingga tidak muncul dengan opsi dengan pengisian konstan.

Saya memesan tablet sesuai dengan spesifikasi saya.


Remote Control

Sistem iklim


Untuk menjaga iklim yang nyaman, sistem menggunakan:

  • Lantai pemanas listrik di tiga zona.
  • AC tempat tinggal.
  • Ventilasi sentral.
  • Pelembab.
  • Pemanas sentral.

Ventilasi


Karena rumah ini terletak di sebelah jalan raya yang sibuk dan saya tidak ingin membuka jendela sama sekali, saya menggunakan sistem ventilasi.

,
Debu hitam di jendela, terakumulasi dalam waktu sekitar tiga bulan,

Mempelajari berbagai solusi untuk masalah ventilasi tanpa membuka jendela, saya membuat daftar pendek dari tiga opsi:

  • Pemasangan nafas di setiap kamar.
  • Pemasangan unit luar dan kabel saluran pada dinding eksternal.
  • Sistem ventilasi pusat.

Breathers langsung ditolak, karena mereka harus diletakkan di setiap kamar dan, menurut pendapat saya, mereka cukup berisik untuk pertukaran udara normal. Salah satu kondisi penting bagi saya adalah tingkat kebisingan yang rendah dan kemampuan untuk dengan cepat ventilasi ruangan. Ketika menggunakan pernafasan, blok dengan filter dan kipas digantung langsung di dinding di dalam ruangan, yang mengambil ruang tambahan di apartemen.

Banyak pemasang menawarkan untuk memasang unit ventilasi eksternal atau memasang persediaan ke balkon. Tapi saya tidak punya balkon, dan unit eksternal di dinding akan terlihat agak tebal. Mengingat bahwa dua unit dari AC sudah tergantung di dinding, desain seperti itu tidak akan melewati persetujuan. Karena itu, saya memilih sistem ventilasi sentral.

Karena ruang apartemen terbatas dan tidak ada keinginan untuk menurunkan langit-langit di seluruh apartemen, aliran masuk dipasang di koridor, di mana langit-langit diturunkan, dan input dibuat dari kamar anak-anak.


Input ventilasi

Lubang dengan diameter 160 mm dibor di dinding luar menggunakan bor berlian dan galvanis dengan pemanggang eksternal. Pipa saluran masuk diisolasi dengan isolasi K-flex. Kemudian pipa melewati dinding dapur dan memasuki unit ventilasi utama.

Breezart 550 lux
Breezart 550 lux unit ventilasi dan unit untuk filter opsional

Unit ventilasi dipilih oleh Breezart . Saat memilih, saya memperhitungkan biaya pemasangan, dimensi, dan kemampuan untuk terhubung ke sistem otomasi. Unit ini memiliki kapasitas maksimum 550 m³ per jam:
Sistem ini memiliki kipas yang tenang dengan 10 kecepatan dan pemanas udara listrik. Katup elektromekanis dipasang di pintu masuk, yang menutup ketika unit dimatikan sehingga udara dingin tidak berjalan di sekitar apartemen. Di sisi elektronik, instalasi menyediakan tiga port Modbus, sensor suhu dan sensor tekanan untuk menentukan apakah filter kotor. Termasuk dengan instalasi adalah filter kasar G4.


Filter kasar setelah enam bulan penggunaan

. Filter kasar tersumbat 70% setelah setahun digunakan, tetapi jika dilihat dari sensor CO₂, ventilasi tidak lagi ditarik pada kecepatan rendah. Sampai 20 Desember - filter tersumbat, setelah 20 Desember - filter baru, kecepatannya sama

20  —  ,  20  —  ,


Setelah instalasi ventilasi, ada filter F7 yang bagus. Menggunakan filter yang lebih baik, seperti HEPA, untuk situasi saya, saya menganggapnya tidak tepat: mereka akan tersumbat dengan cepat dan instalasi tidak akan dapat mendorong mereka. Selain itu, pabrikan tidak merekomendasikan melebihi penurunan tekanan di filter, karena ini akan menambah beban pada kipas dan kotoran dari filter mungkin mulai berhembus ke dalam ruangan.


Setelah filter halus, dua regulator aliran udara mekanis dipasang, diikuti oleh beberapa saluran udara fleksibel SONODEC ke kamar-kamar. Jenis saluran ini dipilih agar tidak menempatkan muffler besar dan pada saat yang sama menghilangkan kebisingan instalasi. Setelah menutup langit-langit, sistem ventilasi dapat didengar hanya dimulai pada kecepatan 8 (440 m³ per jam) dan hanya dari koridor. Di outlet ventilasi ada kisi-kisi yang dapat disesuaikan dalam dua arah.


Sistem ventilasi yang terpasang di plafon


Keluaran ventilasi ke salah satu kamar

Remote control dari kit terhubung ke salah satu port Modbus, dan server Modbus TCP HF2211 ke yang kedua.

Modbus RTU — Modbus TCP converter HF2211
Modbus RTU - Modbus TCP converter HF2211

Server ini memungkinkan Anda untuk terhubung ke jaringan internal melalui Wi-Fi atau Ethernet, di satu sisi, dan ke perangkat Modbus RTU di sisi lain. Kemudian di atasnya Anda dapat meningkatkan server dengan pengaturan yang diperlukan dan sudah mengakses unit ventilasi melalui jaringan. Instalasi disurvei setiap 300 ms: kesalahan dan checksum diperiksa dan hanya setelah itu diizinkan untuk menulis beberapa data ke register. Komunikasi dengan instalasi terjadi melalui plugin node-red-contrib-modbus . Skema menerima dan mengirim parameter dari unit ventilasi melalui modbus Skema menerima dan mengirim parameter dari unit ventilasi melalui modbus Situs web pabrikan memiliki referensi terperinci tentang register modbus dan deskripsi umum

modbus


modbus


untuk pemasangan ini, tetapi Anda perlu memeriksa versi pengontrol dan firmware. Unit ventilasi dikontrol secara otomatis oleh waktu dan oleh sensor CO₂ MH-Z19b. Otomatisasi ventilasi aliran Ventilasi aliran otomasi Sensor CO₂ portabel, dirakit berdasarkan sensor MH-Z19b, dua baterai 18650, ESP32 dan IRF520 MOSFET (untuk memutuskan daya dari sensor selama tidur pengontrol). Bacaan CO for selama satu bulan, puncak ke 1800 PPM - tamu datang dengan penyertaan ventilasi berikutnya pada putaran yang lebih tinggi.Tergantung pada kecepatan pemasangan, suhu udara masuk yang nyaman diatur, yang memanaskan pemanas udara.

Flow


Flow




CO₂  ,   1800 PPM —




Pada kecepatan yang lebih tinggi, diperlukan suhu yang lebih tinggi - jika tidak, aliran udara dingin akan terasa. Agar tidak mengkonsumsi banyak listrik di musim dingin, ketika lebih dingin di luar −7 ° C, pemasangan dibatasi hingga kecepatan ketiga. Pada malam hari, pemasangan terbatas pada kecepatan keempat. Jika tidak ada orang di rumah, sistem secara otomatis beralih ke kecepatan pertama. Pada perintah "Liburan", shutdown total terjadi.

Ada mode pra-pemanasan setelah liburan, mengudara dengan kecepatan penuh dan transisi ke kecepatan pertama pada penghitung waktu. Jika sistem memiliki sensor CO₂, maka kontrol kecepatan tambahan dimungkinkan sesuai dengan batasan global.

Pengkondisian


Sistem ini memiliki beberapa AC dengan mode pendinginan dan pemanasan. Ada ide untuk menempatkan AC sentral, tetapi semua sistem terlalu besar dan tidak memberikan kesempatan untuk mengatur suhu di setiap kamar. Sayangnya, AC saya hanya dikontrol oleh IR. Jadi saya membeli panel kontrol Broadlink RM Mini3.

Broadlink RM Mini3
Broadlink RM Mini3

Jika Anda menggunakan aplikasi asli, maka remote ini akan terhubung ke server Cina, sehingga semua perintah konfigurasi dan manajemen dikirim langsung dari Node-RED menggunakan modul node-red-contrib-broadlink-control-link .

Karena saya tidak menemukan kode IR bersih untuk pendingin udara, dan remote control mentransmisikan seluruh negara (revolusi, mode, suhu) - semua keadaan yang memungkinkan untuk pemanasan dan pendinginan disalin dari remote AC menggunakan Broadlink ke database. Tidak ada perintah bersih untuk mengaktifkan atau menonaktifkan.

Tapi saya menemukan cara menggunakan AC dan mematikan timer. Saya mengaturnya selama 10 detik dan menyalinnya ke database. Sekarang, ketika dinyalakan, perintah untuk menghidupkan oleh timer dikirimkan terlebih dahulu, dan kemudian perintah untuk mengatur mode seiring dengan suhu. Kontrol pendingin udara




Skrip memeriksa cuaca di luar dan, jika nilainya dapat diterima (lebih dari -7 ° C), AC akan dihidupkan untuk pemanasan atau pendinginan, tergantung pada waktu dan suhu kamar. Sensor suhu membaca satu jam sekali.

Jika semua orang meninggalkan rumah, AC dimatikan. Jika tidak ada orang di sana dan suhunya terlalu tinggi atau rendah, tetapi baterai pemanas belum dinyalakan, maka pendinginan atau pemanasan selama 15 menit dilakukan setiap jam untuk menjaga iklim dalam ruangan. Skenario Manajemen Pendingin Udara

Skenario Manajemen Pendingin Udara


Pemanas lantai


Sistem ini memiliki tiga sirkuit untuk pemanasan lantai listrik. Mereka dikendalikan oleh tiga termostat HeatIt Z-Wave .

Panas Termostat
Thermostat HeatIt Thermostat

memungkinkan Anda untuk mengkonfigurasi parameter resistensi yang berbeda untuk berbagai jenis elemen pemanas, memiliki perlindungan anak, dua mode pemanasan tersimpan dan pengaturan kecil lainnya.

Di musim dingin, suhu lantai diatur pada 1 ° C lebih dari musim panas. Ketika tidak ada seorang pun di rumah, dan juga di malam hari, lantainya dimatikan untuk menghemat energi dan dinyalakan baik di pagi hari atau segera setelah seseorang pulang. Di kamar mandi, lantai menaikkan suhu, jika lampu menyala, pintu ditutup, ada gerakan sampai pintu ditutup dan kelembaban meningkat tajam. Setelah satu jam, lantai masuk ke kondisi sebelumnya atau mati (jika malam tiba).

Skenario kontrol di bawah lantai
Dipanaskan lantai manajemen naskah naskah dipanaskan manajemen lantai

Skenario kontrol di bawah lantai


Pemanas sentral


Karena Moskow tidak selalu mematikan atau mengatur pemanasan tepat waktu tergantung pada suhu di luar jendela, diputuskan untuk memasang termostat Danfoss Living Connect pada setiap baterai .

Thermostat Danfoss Living Connect
Thermostat Danfoss Living Connect

Thermostat ini ditenagai oleh dua baterai jari menggunakan protokol Z-Wave. Setahun telah berlalu sejak instalasi, tetapi baterai belum habis. Suhu maksimum yang diatur adalah 28 ° C. Karena sensor berada di sebelah baterai dan remote tidak terhubung, terkadang terletak.

Di musim panas, pengatur suhu selalu dalam posisi "terbuka" dan membuat penutupan lengkap setiap dua minggu sekali, sehingga stok tidak memburuk. Ketika Anda terhubung untuk pertama kalinya selama seminggu, sensor dikalibrasi (yang tidak benar-benar menyenangkan istri saya, karena baterainya benar-benar dimatikan secara berkala), tetapi setelah itu semuanya berfungsi sebagaimana mestinya. Sebelum dimulainya musim pemanasan, suhu luar rata-rata selama dua minggu diperiksa, dan jika suhu di bawah 10 ° C, termostat masuk ke mode pemanasan. Jika suhu di dalam ruangan lebih tinggi dari yang nyaman, termostat mengurangi suhunya atau benar-benar mematikan baterai.

Pelembab


Untuk melembabkan udara di apartemen, pelembap sentral dipertimbangkan. Ada dua jenis utama: uap dan tradisional. Pelembab uap membutuhkan banyak listrik untuk memanaskan air secara konstan. Kedua jenis humidifier mengalirkan banyak air ke saluran pembuangan sehingga tidak mekar. Perlu untuk melakukan perhitungan agar saluran tidak mekar dan mengalir. Ini juga layak mempertimbangkan bahwa pelembap pusat mahal dan memakan banyak ruang.

Saya memutuskan untuk menggunakan pelembab ultrasonik di setiap kamar. Mereka dengan cepat meningkatkan kelembaban, tetapi mereka membutuhkan air murni, lebih disukai setelah reverse osmosis. Kelembaban dapat diatur pada pelembap itu sendiri, atau dapat dikontrol menggunakan IR.


Contoh pengoperasian antarmuka

Pada bagian kedua artikel ini saya akan berbicara tentang pencahayaan, sistem multimedia dan sensor keamanan, dan juga merangkum penggunaan jangka panjang sistem.

All Articles