Lytko bersatu

Beberapa waktu lalu kami memperkenalkan Anda termostat pintar. Artikel ini awalnya dimaksudkan sebagai demonstrasi firmware dan sistem kontrolnya. Namun untuk menjelaskan logika termostat dan apa yang kami terapkan, perlu diuraikan keseluruhan konsep secara keseluruhan.

Lytko bersatu

Tentang otomatisasi

Secara konvensional, semua otomatisasi dapat dibagi menjadi tiga kategori:
Kategori 1 β€” pisahkan perangkat β€œpintar”. Anda membeli bola lampu, teko, dll. dari berbagai produsen. Kelebihan: Setiap perangkat memperluas kemampuan dan meningkatkan kenyamanan. Kekurangan: Setiap pabrikan baru memerlukan aplikasinya sendiri. Protokol perangkat dari produsen berbeda seringkali tidak kompatibel satu sama lain.

Kategori 2 β€” pemasangan PC papan tunggal atau yang kompatibel dengan x86. Ini menghilangkan batasan pada daya komputasi, dan MajorDoMo atau distribusi server lainnya untuk mengelola rumah pintar diinstal pada mesin ini. Dengan demikian, perangkat dari sebagian besar produsen terhubung dalam satu ruang informasi. Itu. Server Anda sendiri untuk rumah pintar muncul. Kelebihan: kompatibilitas dalam satu pusat, yang memberikan peningkatan kemampuan manajemen. Kekurangan: jika server gagal, seluruh sistem kembali ke tahap 1, yaitu. menjadi terfragmentasi atau menjadi tidak berguna.

Kategori 3 - opsi paling keras. Pada tahap perbaikan, semua komunikasi diletakkan dan semua sistem diduplikasi. Kelebihan: semuanya dibawa ke kesempurnaan dan kemudian rumah menjadi benar-benar cerdas. Kekurangan: sangat mahal dibandingkan dengan kategori 1 dan 2, kebutuhan untuk memikirkan segala sesuatunya terlebih dahulu dan memperhitungkan setiap detail kecil.

Sebagian besar pengguna memilih opsi satu dan kemudian dengan lancar beralih ke opsi dua. Dan kemudian yang paling gigih mencapai opsi 3.

Tetapi ada opsi yang bisa disebut sistem terdistribusi: setiap perangkat akan menjadi server dan klien. Pada dasarnya, ini adalah upaya untuk mengambil dan menggabungkan opsi 1 dan opsi 2. Ambil semua kelebihannya dan hilangkan kekurangannya, untuk menemukan jalan tengah.

Mungkin seseorang akan mengatakan bahwa opsi ini telah dikembangkan. Namun keputusan-keputusan tersebut memiliki fokus yang sempit; untuk orang yang paham pemrograman. Tujuan kami adalah untuk menurunkan hambatan untuk masuk ke sistem terdistribusi tersebut, baik dalam bentuk perangkat akhir maupun dalam bentuk mengintegrasikan perangkat yang ada ke dalam sistem kami. Dalam kasus termostat, pengguna cukup melepas termostat lamanya, memasang termostat cerdas, dan menghubungkan sensor yang ada ke termostat tersebut. Tanpa langkah tambahan apa pun.

Mari kita lihat integrasi ke dalam sistem kita menggunakan sebuah contoh.

Bayangkan kita memiliki 8 modul Sonoff di jaringan kita. Untuk beberapa pengguna, kontrol melalui cloud Sonoff (kategori 1) sudah cukup. Beberapa akan mulai menggunakan firmware pihak ketiga dan dengan lancar berpindah ke kategori 2. Sebagian besar firmware pihak ketiga bekerja dengan prinsip yang sama: mentransfer data ke server MQTT. OpenHub, Majordomo, atau lainnya memiliki satu tujuan - untuk menyatukan perangkat yang berbeda ke dalam satu ruang informasi yang terletak di Internet atau di jaringan lokal. Oleh karena itu, kehadiran Server adalah suatu keharusan. Di sinilah masalah utama muncul - jika Server gagal, seluruh sistem berhenti bekerja secara mandiri. Untuk mencegah hal ini, sistem menjadi lebih kompleks, metode kontrol manual ditambahkan yang menduplikasi otomatisasi jika terjadi kegagalan Server.

Kami mengambil jalur berbeda, di mana setiap perangkat dapat mandiri. Dengan demikian, Server tidak memainkan peran yang menentukan, tetapi hanya memperluas fungsionalitas.

Mari kembali ke eksperimen pemikiran. Mari kita ambil lagi 8 modul Sonoff yang sama dan instal firmware Lytko di dalamnya. Semua firmware Lytko memiliki fungsi tersebut SSDP. SSDP adalah protokol jaringan berdasarkan rangkaian protokol Internet untuk periklanan dan penemuan layanan jaringan. Respons terhadap permintaan dapat berupa standar atau diperluas. Selain fungsi standar, kami menyertakan dalam jawaban ini pembuatan daftar perangkat di jaringan. Dengan demikian, perangkat itu sendiri akan menemukan satu sama lain, dan masing-masing perangkat akan memiliki daftar seperti itu. Contoh lembar SSDP:

"ssdpList": 
	{
		"id": 94967291,  
		"ip": "192.168.x.x",
                "type": "thermostat"
	}, 
	{
		"id": 94967282,
		"ip": "192.168.x.x",
                "type": "thermostat"
	}

Seperti yang dapat Anda lihat dari contoh, daftar tersebut mencakup id perangkat, alamat IP di jaringan, jenis unit (dalam kasus kami, termostat berbasis Sonoff). Daftar ini diperbarui setiap dua menit sekali (periode ini cukup untuk merespons perubahan dinamis dalam jumlah perangkat di jaringan). Dengan cara ini, kami melacak perangkat yang ditambahkan, diubah, dan dinonaktifkan tanpa tindakan pengguna apa pun. Daftar ini dikirim ke browser atau aplikasi seluler, dan skrip itu sendiri menghasilkan halaman dengan jumlah blok tertentu. Setiap blok berhubungan dengan satu perangkat/sensor/pengontrol. Secara visual daftarnya terlihat seperti ini:

Lytko bersatu

Tetapi bagaimana jika sensor radio lain terhubung ke esp8266/esp32 melalui cc2530 (ZigBee) atau nrf24 (MySensors)?

Tentang proyek

Ada berbagai sistem terdistribusi di pasar. Sistem kami memungkinkan Anda berintegrasi dengan yang paling populer.

Di bawah ini adalah proyek-proyek yang entah bagaimana mencoba mengubah situasi dengan ketidakcocokan produsen yang berbeda satu sama lain. Ini, misalnya, Gerbang SLS, Sensor Saya ΠΈΠ»ΠΈ ZESP32. ZigBee2MQTT terikat ke server MQTT, jadi tidak cocok untuk contoh.

Salah satu opsi untuk mengimplementasikan MySensors adalah gateway berdasarkan ESP8266. Contoh lainnya ada di ESP32. Dan di dalamnya Anda dapat menerapkan prinsip operasi kami dalam mendeteksi dan membuat daftar perangkat.

Mari kita lakukan eksperimen pikiran lainnya. Kami memiliki gateway ZESP32 atau SLS Gateway, atau MySensors. Bagaimana cara menggabungkannya dalam satu ruang informasi? Kami akan menambahkan perpustakaan protokol SSDP ke fungsi standar gateway ini. Saat mengakses pengontrol ini melalui SSDP, daftar perangkat yang terhubung dengannya akan ditambahkan ke respons standar. Berdasarkan informasi ini, browser akan menghasilkan halaman. Secara umum tampilannya akan seperti ini:

Lytko bersatu
Antarmuka web

Lytko bersatu
aplikasi PWA

"ssdpList": 
{
   "id": 94967291, // ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ устройства
   "ip": "192.168.x.x", // ip адрСс Π² сСти
   "type": "thermostat" // Ρ‚ΠΈΠΏ устройства
},
{
   "id": 94967292,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{
   "id": 94967293,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{  
   "id": 13587532, 
   "type": "switch"  
},
{  
   "id": 98412557, 
   "type": "smoke"
},
{  
   "id": 57995113, 
   "type": "contact_sensor"
},
{  
   "id": 74123668,
   "type": "temperature_humidity_pressure_sensor"
},
{
    "id": 74621883, 
    "type": "temperature_humidity_sensor"
}

Contoh tersebut menunjukkan bahwa perangkat ditambahkan secara independen satu sama lain. 3 termostat dengan alamat IP masing-masing dan 5 sensor berbeda dengan ID unik terhubung. Jika sensor terhubung ke jaringan Wi-Fi, sensor akan memiliki IP sendiri; jika terhubung ke gateway, maka alamat IP perangkat akan menjadi alamat IP gateway.

Kami menggunakan WebSocket untuk berkomunikasi dengan perangkat. Hal ini memungkinkan Anda meminimalkan biaya sumber daya dibandingkan mendapatkan permintaan dan memperoleh informasi secara dinamis saat menghubungkan atau mengubah.

Data diambil langsung dari perangkat yang memiliki blok tersebut, melewati server. Jadi, jika salah satu perangkat gagal, sistem akan terus beroperasi. Antarmuka web tidak menampilkan perangkat yang hilang dari daftar. Namun sinyal kehilangan bila diperlukan akan datang dalam bentuk notifikasi di aplikasi pengguna.

Upaya pertama untuk menerapkan pendekatan ini adalah aplikasi PWA. Ini memungkinkan Anda untuk menyimpan basis blok pada perangkat pengguna dan hanya meminta data yang diperlukan. Namun karena kekhasan strukturnya, opsi ini tidak lengkap. Dan hanya ada satu jalan keluar - aplikasi asli untuk Android dan iOS, yang saat ini sedang dalam pengembangan aktif. Secara default, aplikasi hanya akan bekerja pada jaringan internal. Jika perlu, Anda dapat mentransfer semuanya ke kontrol eksternal. Jadi, ketika pengguna keluar dari jaringan lokal, aplikasi otomatis beralih ke cloud.

Kontrol eksternal - menyelesaikan duplikasi halaman. Ketika halaman tersebut diaktifkan, pengguna dapat masuk ke server dan mengelola perangkat melalui akun pribadinya. Dengan demikian, Server memperluas fungsinya, memungkinkan Anda mengelola perangkat saat berada di luar rumah, dan tidak terikat pada penerusan porta atau IP khusus.

Dengan demikian, opsi di atas tidak memiliki kekurangan dibandingkan pendekatan server, dan juga memiliki sejumlah keunggulan berupa fleksibilitas dalam menghubungkan perangkat baru.

Tentang termostat

Mari kita lihat sistem kontrol menggunakan termostat sebagai contoh.

Asalkan:

  1. Kontrol suhu untuk setiap termostat (ditampilkan sebagai blok terpisah);
  2. Mengatur jadwal pengoperasian termostat (pagi, siang, sore, malam);
  3. Memilih jaringan Wi-Fi dan menghubungkan perangkat ke sana;
  4. Memperbarui perangkat β€œmelalui udara”;
  5. Menyiapkan MQTT;
  6. Konfigurasikan jaringan tempat perangkat terhubung.

Lytko bersatu

Selain kontrol melalui antarmuka web, kami menyediakan yang klasik - dengan mengklik pada tampilan. Ada monitor Nextion NX3224T024 2.4 inci. Pilihan jatuh padanya karena kemudahan bekerja dengan perangkat tersebut. Namun kami mengembangkan monitor kami sendiri berdasarkan STM32. Fungsionalitasnya tidak lebih buruk daripada Nextion, namun biayanya lebih murah, yang akan berdampak positif pada harga akhir perangkat.

Lytko bersatu

Seperti layar termostat lainnya, Nextion kami dapat:

  • atur suhu yang dibutuhkan pengguna (menggunakan tombol di sebelah kanan);
  • menghidupkan dan mematikan mode operasi terjadwal (tombol H);
  • tampilan operasi relai (panah di sebelah kiri);
  • memiliki perlindungan anak (klik fisik diblokir hingga kunci dilepas);
  • menampilkan kekuatan sinyal WiFi.

Selain itu, dengan menggunakan monitor Anda dapat:

  • pilih jenis sensor yang dipasang oleh pengguna;
  • mengelola fitur kunci anak;
  • perbarui firmwarenya.

Lytko bersatu

Dengan mengklik bilah WiFi, pengguna akan mengetahui informasi tentang jaringan yang terhubung. Kode QR digunakan untuk memasangkan perangkat di firmware HomeKit.

Lytko bersatu

Demo bekerja dengan layar:

Lytko bersatu

Kami telah mengembangkan halaman demo dengan tiga termostat yang terhubung.

Anda mungkin bertanya, β€œApa yang istimewa dari termostat Anda?” Saat ini di pasaran terdapat banyak termostat dengan fungsi Wi-Fi, pengoperasian terjadwal, dan kontrol sentuh. Dan para peminat telah menulis modul untuk berinteraksi dengan sistem rumah pintar paling populer (Majordomo, HomeAssistant, dll.).

Termostat kami kompatibel dengan sistem tersebut dan memiliki semua hal di atas. Namun ciri khasnya adalah termostat terus ditingkatkan berkat fleksibilitas sistemnya. Dengan setiap pembaruan, fungsinya akan berkembang. Untuk metode standar pengelolaan sistem (sesuai jadwal), kami akan menambahkan metode adaptif. Aplikasi ini memungkinkan Anda mendapatkan geolokasi pengguna. Berkat ini, sistem akan mengubah mode pengoperasian secara dinamis bergantung pada lokasinya. Dan modul cuaca akan memungkinkan Anda beradaptasi dengan kondisi cuaca.

Dan kemampuan untuk diperluas. Siapa pun dapat mengganti termostat konvensional yang ada dengan termostat kami. Dengan sedikit usaha. Kami telah memilih 5 sensor paling populer di pasar dan menambahkan dukungan untuk sensor tersebut. Namun meskipun sensor tersebut memiliki karakteristik eksklusif, pengguna akan dapat menghubungkannya ke termostat kami. Untuk melakukan ini, Anda perlu mengkalibrasi termostat agar berfungsi dengan sensor tertentu. Kami akan memberikan instruksi.

Saat menghubungkan termostat atau perangkat lain, termostat muncul secara bersamaan di mana saja: baik di antarmuka web maupun di aplikasi PWA. Penambahan perangkat terjadi secara otomatis: Anda hanya perlu menghubungkannya ke jaringan Wi-Fi.

Sistem kami tidak memerlukan Server, dan jika gagal, sistem tidak akan berubah menjadi labu. Bahkan jika salah satu komponen gagal, sistem tidak akan mulai beroperasi dalam keadaan darurat. Pengontrol, sensor, perangkat - setiap elemen adalah Server dan klien, oleh karena itu sepenuhnya otonom.

Bagi mereka yang tertarik, jejaring sosial kami: Telegram, Instagram, Berita Telegram, VK, Facebook.

E-mail: [email dilindungi]

PS Kami tidak menganjurkan Anda untuk meninggalkan Server. Kami juga mendukung server MQTT dan memiliki cloud kami sendiri. Tujuan kami adalah membawa stabilitas dan keandalan sistem ke tingkat yang baru. Sehingga Server bukan menjadi titik lemah, melainkan melengkapi fungsionalitas dan membuat sistem lebih nyaman.

Sumber: www.habr.com

Tambah komentar