Artikel sebelumnya menyebabkan diskusi yang cukup panas, dan keadaan ini meyakinkan saya tentang perlunya melanjutkan apa yang kita sebut "berbagi pengalaman." Jadi, kami menetapkan fakta bahwa setelah munculnya sumber energi alternatif di rumah, terutama pengumpul surya, saya ingin mengukur parameter yang menyertai pekerjaan mereka. Misalnya, untuk melihat bagaimana perubahan suhu pendingin surya, apakah air di boiler terlalu panas, dll. Jelas bahwa pengukuran sesuatu itu sendiri dan bahkan transmisi informasi ini ke tempat konsumsi (telemetri) tidak meningkatkan kenyamanan atau keamanan, jadi segera item pada kendali jarak jauh dari berbagai aktuator ditambahkan ke "TK". Pada artikel ini saya tidak akan memberikan daftar kode, detail semua solusi teknis hingga detail terkecil. Tujuan saya adalah untuk menunjukkan alur pemikiran dan solusi teknis yang diadopsi, serta hasilnya. Siapa pun yang ingin mengikuti jalan yang sama masih harus menyelesaikan banyak masalah sendiri.
Penyimpangan liris sedikit.Pada 2010, bersama dengan inverter / baterai, sistem pengontrol-alarm GSM universal dari perusahaan Rusia RADS Electronics muncul di rumah. Perangkat universal yang luar biasa ini digunakan selain fungsi alarm dengan peringatan GSM, juga untuk mengontrol cahaya di ruang tamu, dan, yang paling penting, untuk mengontrol ketel listrik. Jadi saya belajar cara mengontrol suhu, menjaga suhu, dan juga menghangatkan rumah terlebih dahulu, sebelum kedatangan, lama sekali. Kenyamanan sistem semacam itu cukup jelas. Namun, kemampuan pengontrol terbatas, sehingga "TK" baru awalnya meletakkan dasar untuk menciptakan sistem paralel, bahkan dengan fungsi yang berulang sebagian dan, tentu saja, dengan akses ke informasi dari sensor dan kontrol melalui Internet.
Jadi persyaratan awal tampak:
- Ukur suhu di semua 8 nozel boiler dan 2 nozel boiler.
- Ukur suhu dan kelembaban di ruang ketel tempat peralatan dipasang.
- Ukur suhu dan kelembaban udara di luar. Untuk suatu hari menerapkan kontrol pemanasan yang bergantung pada cuaca.
- Dorong ketel listrik sambil mempertahankan sistem yang lama. Ketel tiga tahap, dengan penyesuaian suhu pemanasan dan umpan balik pada suhu pendingin. Namun, untuk tujuan remote control, cukup untuk menyalakan / mematikan langkah pemanasan.
- Kelola pemanas boiler.
- Letakkan kabel minimum. Tidak begitu banyak sehingga tidak repot, tetapi karena dekorasi di rumah sudah dilakukan.
- Memiliki antarmuka yang nyaman untuk mengelola dan bekerja dengan pembacaan sensor. Antarmuka harus dapat diakses di perangkat seluler.
Dan satu lagi penyimpangan kecil.
Dalam foto - generator dengan starter listrik. Untuk start-up musim dingin saya harus meletakkan aki mobil dan charger. Dan gunakan minyak sintetis.
Semua dalam 2010 yang sama, generator bensin menetap di garasi. Dan segera pengendali start otomatis ditambahkan, dibuat secara independen berdasarkan mikrokontroler Arduino. Pengontrol tidak hanya terlihat pada keberadaan jaringan 220V, tetapi juga pada sinyal dari inverter tentang pelepasan baterai, dan inverter itu sendiri memberikan input otomatis dari generator. Secara keseluruhan, dimungkinkan untuk menerapkan algoritma kontrol generator yang cukup cerdas. Secara umum, tidak ada rasa takut menggunakan mikrokontroler, baik dalam arti menghubungkan perangkat dan dalam arti pemrograman. Di masa lalu, saya banyak memprogram dalam C / C ++.
Persyaratannya, secara umum, sederhana, jika tidak sepele. Ada ribuan cara berbeda untuk mengimplementasikannya. Dan itulah sebabnya landasan adalah pilihan arsitektur dan tumpukan teknologi di mana sistem baru akan dibangun. Pendekatan sistematis adalah apa yang penting di sini, pemahaman bahwa solusi teknis individu harus dihubungkan satu sama lain, pemahaman bahwa sistem pasti akan berkembang lebih jauh, seperti yang telah terjadi dengan sistem catu daya di rumah. Dan juga penting untuk memahami kemampuan Anda sendiri. Karena itu, saya harus google, mengambil "bantuan dari audiens" dan "memanggil teman".
Dalam foto Arduino Nano dan nRF24L01 + dengan antena
Saya mulai melihat dari sistem yang didasarkan pada standar Z-Wave yang banyak digunakan, ini sangat memengaruhi keputusan lebih lanjut, meskipun Z-Wave pada awalnya dibuang. Karena Z-Wave adalah pilihan yang jelas untuk persyaratan yang dekat dengan tambang, penting untuk memahami mengapa itu dijatuhkan. Pertama, tentu saja, biaya satu sensor. Dan saya hanya perlu mengukur suhu pada boiler pada 8 titik, setiap titik menghasilkan 3000+ rubel. Kedua, faktor bentuk sensor standar, yang tidak memungkinkan penggunaannya pada nozel boiler. Ketiga, terbatasnya pilihan sistem kontrol dan akses jarak jauh, yang semuanya juga milik (Anda harus membaca: "terbatas") dan dibayar. Namun, gagasan tentang jaringan yang mengatur diri sendiri dengan kemungkinan komunikasi peer-to-peer (asosiasi) sensor-aktuator dan manajemen server-klien terpusat sangat menarik. Atas saran seorang teman, ia melanjutkan proyek yang menarik , yang awalnya tampak seperti perpanjangan fungsi sistem Z-Wave berdasarkan pengontrol Vera, tetapi menggunakan pendekatan DIY. Proyek ini menggunakan transceiver nirkabel Arduino, 2.4GHz nRF24L01 + dan perpustakaan yang sesuai. Semua bersama adalah apa yang dibutuhkan untuk persyaratan saya. Menggunakan Arduino membuka kemungkinan otomatisasi rumah yang hampir tak terbatas untuk mendapatkan uang, urutan besarnya (!) Lebih kecil daripada dalam kasus Z-Wave. Penting juga bahwa Arduino adalah platform yang sangat stabil. Pengendali start-otomatis generator, setelah dipasang di Arduino, telah bekerja dengan sempurna selama 7 tahun. Mengingat pengalaman pengembangan, penyolderan dan pemrograman, saya berhenti pada proyek ini.
Dan bahkan berlanjut. Dalam kode itu, saya sepenuhnya menolak untuk mengikat ke Vera. Sebagai gantinya, ia memilih salah satu pengontrol perangkat lunak yang direkomendasikan oleh penulis perpustakaan mysensors. Setelah mempelajari forum dan situs produsen, ia menjadi proyek open source openHAB . Faktor penentu, selain keterbukaan, lintas platform, bahasa aturan yang kuat, keberadaan klien seluler, adalah properti yang dinyatakan sebagai berikut: “agnostik vendor dan teknologi”. Inilah yang dibutuhkan oleh spesialis TI yang berpikiran sistem: kemungkinan memperluas sistem di masa depan, menggunakan komponen dari berbagai produsen dan standar, sementara yang paling cocok untuk tujuan tertentu. Yaitu Sejak awal ada pemahaman bahwa tidak semuanya perlu dilakukan pada Arduino dan tidak semuanya mungkin dalam batas-batas Z-Wave. Pada saat yang sama, saya memutuskan untuk mematuhi logika manajemen terpusat, yang untuk awalnya cukup alami. Yaitu pada perangkat terminal yang dirakit di Arduino, akan ada logika bisnis minimal: menyalakan / mematikan lampu dari sakelar mekanis konvensional antik yang hanya menjadi sensor, membaca dan mengubah informasi dari sensor parameter fisik, mengirimkan data ke server, menerima dan menjalankan perintah dari server. Saya tidak merencanakan interaksi langsung antara node jaringan perangkat. Semua logika manajemen bisnis nyata didasarkan pada aturan openHAB. Sekarang ada hal-hal kecil yang tersisa - pilih platform perangkat keras dan sistem operasi untuk bagian server, untuk openHAB.
Banyak penggemar DIY di bawah openHAB memilih Raspberry Pi. Dan ini adalah solusi hebat, ekonomis, kompak dan tenang. Namun, bagi saya keliru membatasi diri dalam kekuatan komputasi, karena saya segera memutuskan untuk menggunakan server masa depan sebagai perangkat multifungsi, misalnya, saya ingin menggunakan pusat media Kodi di atasnya dan, mungkin, di masa depan, sesuatu yang lain, misalnya, perekam video perangkat lunak. Ke depan, saya akan mengatakan bahwa pada akhirnya, Kodi terintegrasi dengan rumah pintar, ketika video dimulai, lampu padam, ketika berhenti, itu menyala. Dan DVR juga muncul dan terintegrasi. Pada saat yang sama, saya tidak memiliki persyaratan khusus untuk komponen multimedia, cukup bahwa server memiliki HDMI dan S / PDIF. Secara umum, pada musim gugur 2015, pilihan jatuh pada nettop tanpa kipas dari Hystou (lihat di AliExpress): Intel Core i7, 8GB, 256GB SSD, 8 port USB, termasuk 4 3.0, 2 LAN, WiFi, 2 HDMI, S / PDIF, Pembaca kartu secara umum, semua yang Anda butuhkan untuk kebahagiaan kotak-DIY. Dia kemudian biaya sekitar 24 tr. Saya tidak pernah menyesali pilihannya, meskipun saya harus mengatakan bahwa WiFi tidak terlalu stabil untuknya. Tapi, pengalaman yang mengikuti semua ini dengan percaya diri mengatakan: di mana pun Anda bisa meletakkan kabel - kabel awam. Saluran radio, apa pun standar dan frekuensinya (WiFi, Z-Wave, 433 MHz, 869 MHz, 2,4 GHz, dll.) Selalu lebih buruk daripada kabel. Oleh karena itu, nettop akhirnya terhubung ke kabel LAN rumah. Dan beberapa sistem yang berbeda memilihnya.
Sedangkan untuk OS untuk server, saya akan merekomendasikan stabilitas dan prediktabilitas. Distribusi Linux dengan komunitas besar memiliki properti ini. Saya lebih akrab dengan Ubuntu. Meskipun, berkat cross-platform, semuanya bisa dilakukan di Windows.
Jadi, arsitektur dan tumpukan dipilih. Kami bertindak.
Tugas 1. Pilih sensor dan aktuator. Suhu cairan pendingin dan air akan diukur pada nozel boiler dan boiler. Untuk melakukan ini, kami mengambil sensor 1-kawat DS18B20 di dalam selungkup yang tertutup logam, yang mudah dipasang langsung di nozel, dari luar. Dan pipa itu sendiri dengan sensor di atasnya ditutupi dengan insulasi busa untuk pipa. Ketika ada banyak sensor serupa, bus 1-kawat sangat nyaman. Untuk mengukur suhu dan kelembaban udara di ruang ketel dan di jalan, kami memilih DHT22, hanya karena ini adalah pilihan standar DIY. Kelola ketel secara terpisah dengan langkah-langkah - menggunakan relai mekanis lima volt konvensional, juga akrab dengan switchboard DIY. Penting untuk dicatat bahwa relay ini terhubung secara paralel dengan saklar panggung pada boiler, dan bukan relay SEPULUH, yang dikendalikan oleh otomatisasi boiler. Semua periferal yang dipilih dapat diprogram secara langsung tanpa seni, seperti relay, misalnya, atau memiliki perpustakaan yang sesuai untuk Arduino, seperti 1-kawat / DS18B20 / DHT22. Tidak ada komplikasi.
Dalam foto tersebut, ketel 300l. Dapat dilihat bahwa kabel hitam dengan sensor di ujung mendekati setiap pipa cabang, mereka digabungkan dalam kotak putih dan kabel putih 1-kawat yang umum digunakan untuk controller.
Tugas 2. Bertukar data dan perintah dengan openHAB. Saya harus mengotak-atik sedikit, karena dengan openHAB saya belum "pada Anda". Arsitektur mysensors menyiratkan adanya gateway (gateway) untuk menghubungkan ke pengontrol pusat / server, mis. ke openHAB.
Gateway itu sendiri adalah pengontrol terpisah secara fisik pada Arduino / nRF24L01 + dan dapat dihubungkan ke server melalui LAN / WiFi atau Serial. Karena saya berada di awal jalur, saya memilih Serial dan menempatkan gateway di sebelah server. Gateway digunakan untuk merutekan pesan yang dikirim ke jaringan mysensors melalui gateway dan berkomunikasi langsung dengan pengontrol pusat, openHAB. Pesan Mysensor adalah format tetap dan mudah diurai. Kami menambah Serial mengikat OpenHAB untuk menghubungkan gateway melalui USB dan menulis aturan untuk mem-parsing pesan dari perangkat di jaringan mysensors yang diterima melalui USB dari gateway. Aturan openHAB yang mem-parsing pesan didasarkan pada kode yang ditemukan di forum mysensors. Selanjutnya, kita menulis aturan untuk aktuator - relai kontrol boiler, pemanas boiler, lampu, dll.
Foto menunjukkan gateway, kotak cokelat kecil dengan antena di speaker audio.
Tentang openHABopenHAB - solusi terbuka, berkembang dengan bantuan komunitas dengan mengembangkan binding untuk perangkat tertentu yang akan berinteraksi dengan openHAB. Misalnya, untuk berinteraksi dengan perangkat melalui USB ada Serial yang mengikat. Demikian pula untuk perangkat atau protokol lain, misalnya Modbus, NTP, HTTP, Squeezebox, Kodi / XBMC, Z-Wave, ZigBee, Nest dan sebagainya. Saya sendiri berpartisipasi dalam pengembangan sebagai pengikat modbus aktif.
Ketika saya sibuk menghubungkan gateway ke server openHAB, saya memutuskan untuk menyelesaikan kode gateway (dan gateway itu sendiri), diambil dari mysensors.org dan menambahkannya sensor suhu dan kelembaban DHT22 dan sensor tekanan atmosfer BMP180, dan pada saat yang sama saya menemukan kode sumber untuk memprediksi cuaca dari dinamika atmosfer. tekanan. Semua pengukuran dan prediksi ini diteruskan ke openHAB.
Di foto, gateway ada di dalam. Pada kabel putih adalah DHT22, papan dengan pin gratis adalah Arduino, kanan bawah adalah nRF24L01 + dan BMP180.
Tugas 3. Antarmuka dan akses jarak jauh. openHAB adalah sistem yang sepenuhnya dapat disesuaikan, termasuk tata letak antarmuka. Dan markup ini disatukan, baik untuk akses biasa melalui browser, dan melalui aplikasi seluler. Markup universal, tentu saja, mungkin tidak ideal, tetapi terlihat bagus di smartphone, dan ini penting. Masih harus diputuskan bagaimana mengakses server openHAB di luar jaringan lokal. Pertama, Anda dapat (dan yang paling penting, secara opsional) menggunakan cloud myopenhab.org. Server openHAB terhubung langsung ke cloud menggunakan penjilidan khusus. Solusi ini adalah yang paling sederhana dan menyediakan fungsionalitas manajemen sistem penuh, kecuali untuk transfer video dari kamera IP. Kedua, bagi mereka yang tidak suka awan, dan saya milik mereka, ada cara biasa untuk akses jarak jauh, misalnya, kombinasi VPN + VNC, dll. Saya tidak akan mengungkapkan rincian untuk alasan yang jelas, terutama karena masalah ini tidak secara langsung berhubungan dengan topik artikel. Saya hanya mencatat bahwa klien seluler openHAB memiliki konfigurasi untuk dua alamat. Ini pergi ke yang pertama jika melihat server openHAB di alamat ini, ke yang kedua - jika tidak. Ini adalah fitur antarmuka yang sangat nyaman. Misalnya, Anda dapat menentukan cloud sebagai alamat kedua dan kemudian openHAB selalu tersedia tanpa manipulasi tambahan dengan koneksi VPN. Atau tentukan alamat virtual yang diperoleh dengan menggunakan solusi VPN apa pun. Atau yang lainnya.
Layar beranda antarmuka | Menggulir ke bawah layar mulai | Item menu yang dibuka "Ringan" |
---|
 |  |  |
Markup memungkinkan Anda untuk melakukan pemformatan bersyarat, misalnya, menyorot suhu merah ketika melebihi nilai yang ditentukan dalam markup. Beberapa item ditampilkan saat ditekan, misalnya, "Pemanasan", "Cahaya", "Sirene", dll.
Itu saja. Kami mengambil besi solder, lalu keyboard pada gilirannya. Dan lambat laun versi pertama dari sistem tersebut terbentuk. Seperti yang Anda tahu, nafsu makan datang bersamaan dengan makan. Akibatnya, sensor baru dan bahkan pengendali baru ditambahkan ke versi pertama sistem, misalnya, untuk mengotomatisasi rumah tamu. Akibatnya, pada tahap pertama, sebuah sistem diperkenalkan bahwa:
- Mengukur suhu di 16 titik.
- Mengukur kelembaban pada 4 titik.
- Mengukur tegangan jaringan 220V di pintu masuk rumah, ke stabilizer.
- Mengukur cahaya sekitar. Penerangan digunakan untuk menyalakan lampu secara otomatis.
- Mengukur tekanan atmosfer dan membuat prediksi cuaca pada dinamika tekanan.
- Mendeteksi pergerakan di beberapa titik.
- Mengontrol seluruh dunia di wisma. Sakelar berubah menjadi sensor.
- Menggerakkan sirene.
- Secara terpisah mengontrol 3 tahap ketel listrik, menjaga fungsi sistem lama. Ini mengontrol pemanas boiler.
- Memeriksa keberadaan voltase pada boiler dan elemen pemanas boiler, dan juga membaca fakta tentang dimasukkannya elemen pemanas boiler. Ini penting, karena, pertama, boiler memiliki umpan balik pada suhu pendingin dan dapat mematikan elemen pemanas itu sendiri, dan kedua, relay pembatas beban dua tahap dipasang di panel, yang memutuskan boiler dan boiler secara seri jika ambang batas untuk konsumsi di rumah terlampaui. Data ini selanjutnya akan digunakan dalam algoritma rumah pintar. Tetapi pada tahap ini saya tidak tahu persis bagaimana, hanya merasa bahwa mereka akan dibutuhkan.
- Membaca fakta menghidupkan dan mematikan pompa sirkuit surya.

- Membuat grafik suhu untuk minggu, hari dan jam.
- Mengirim pemberitahuan push tentang berbagai acara. Peristiwa dapat hampir semua, misalnya, gerakan di teras, suhu melebihi ambang batas yang telah ditentukan, kehilangan / penampilan listrik, dll. Peringatan SMS juga telah dibuat.
- Sistem lama tetap terpisah secara fisik dan logis dari yang baru, meskipun sensor yang sama sebagian digunakan kembali dalam yang baru. Sistem lama mempertahankan fungsi keamanan dan sistem pemantauan / pemantauan cadangan.
Foto menunjukkan peralatan listrik rumah tamu. Kotak dengan antena adalah pengontrol, putaran "mesin cuci" adalah sirene, di antara mereka adalah sensor DHT22, di bawah perisai ada sensor gerak, di sebelah kiri ada unit catu daya 12V yang tidak pernah terputus.
Contoh pengoperasian sistemSetiap 30 detik, pengontrol mengumpulkan sensor suhu. Dalam hal terjadi perubahan dalam pembacaan atau atas permintaan dari server, mengirim data ke gateway secara terpisah untuk setiap sensor. Gateway menerima data dan mengirimkannya melalui USB ke openHAB. Dalam openHAB, aturan dipicu, pesan diuraikan, nilai suhu yang sesuai ditugaskan ke item yang sesuai (konsep dasar openHAB). Aturan dihasilkan yang dikonfigurasi untuk mengubah item ini. Jika ada reaksi yang diberikan oleh logika, misalnya, "jika suhu telah turun di bawah tingkat tertentu", tindakan dilakukan, misalnya, "nyalakan pemanas boiler". Perintah ini dikirim melalui USB ke gateway. Gateway mengirim perintah melalui radio ke controller, controller menerima perintah dan menyalakan relay yang sesuai. Mengembalikan konfirmasi penerimaan perintah. Sesuatu seperti ini terlihat seperti skema umum interaksi komponen sistem.
Hasilnya Tujuan awal tercapai dan bahkan lebih. Suhu diukur dan divisualisasikan pada grafik dan antarmuka. Menurut hasil pengamatan, menjadi jelas bahwa suhu air panas tidak pernah naik di atas 55 derajat, dan pendingin di sirkuit surya - 60, Anda tidak perlu khawatir tentang kepanasan. Dapat dilihat bahwa suhu udara di ruang ketel terkadang melebihi 30 derajat dan Anda perlu menginstal pendingin udara. Menjadi nyaman untuk mengontrol pemanasan, cukup sentuh sakelar virtual di layar smartphone. Selanjutnya . , , . , . . «», .
. , 24.. , Raspberry Pi 2500. Arduino AliExpress 200, (nRF24L01+, ) . – . - , . Yaitu .
, ., . — 11.05.2018. , 49 . 38, 35 . . . . 
. , , . , , C++, Arduino, . , openHAB. , – . . - , , . «». , , . . – . .