Lytko ngahiji

Sababaraha waktu ka tukang urang ngawanohkeun anjeun thermostat pinter. Artikel ieu asalna dimaksudkeun salaku démo ngeunaan firmware sarta sistem kontrol na. Tapi dina raraga ngajelaskeun logika thermostat jeung naon urang dilaksanakeun, perlu outline sakabéh konsép sakabéhna.

Lytko ngahiji

Ngeunaan automation

Sacara konvensional, sadaya otomatisasi tiasa dibagi kana tilu kategori:
Kategori 1 - alat "pinter" misah. Anjeun meuli bohlam lampu, teapots, jsb ti pabrik béda. Pro: Unggal alat expands kamampuhan sarta ngaronjatkeun kanyamanan. Kontra: Unggal produsén anyar merlukeun aplikasi sorangan. Protokol alat ti pabrik anu béda sering henteu cocog sareng anu sanés.

Kategori 2 - pamasangan PC papan tunggal atanapi x86 cocog. Ieu ngaluarkeun larangan dina kakuatan komputasi, sarta MajorDoMo atawa distribusi server séjén pikeun ngatur imah pinter dipasang dina mesin ieu. Ku kituna, alat ti kalolobaan pabrik disambungkeun dina spasi informasi tunggal. Jelema. Server sorangan pikeun imah pinter mucunghul. Naros: kasaluyuan dina puseur tunggal, nu nyadiakeun kamampuhan manajemén ditingkatkeun. Kontra: lamun server gagal, sakabéh sistem balik deui ka tahap 1, i.e. jadi sempalan atawa jadi teu aya gunana.

Kategori 3 - pilihan paling hardcore. Dina tahap perbaikan, sadaya komunikasi disimpen sareng sadaya sistem diduplikasi. Naros: sagalana dibawa ka kasampurnaan lajeng imah jadi sabenerna pinter. Kakurangan: mahal pisan dibandingkeun sareng kategori 1 sareng 2, kabutuhan pikeun mikirkeun sadayana sateuacanna sareng tumut kana unggal jéntré sakedik.

Kaseueuran pangguna milih pilihan hiji teras teraskeun kana pilihan dua. Teras anu paling pengkuh ngahontal pilihan 3.

Tapi aya pilihan anu tiasa disebut sistem anu disebarkeun: unggal alat individu bakal janten server sareng klien. Intina, ieu usaha nyandak tur ngagabungkeun pilihan 1 jeung pilihan 2. Candak sadayana pro maranéhanana sarta ngaleungitkeun kontra, nyekel mean emas.

Panginten aya anu bakal nyarios yén pilihan sapertos kitu parantos dikembangkeun. Tapi kaputusan sapertos anu heureut difokuskeun; pikeun jalma anu pinter dina program. Tujuan kami nyaéta pikeun nurunkeun halangan pikeun asup kana sistem anu disebarkeun sapertos kitu, dina bentuk alat tungtung sareng dina bentuk ngahijikeun alat anu tos aya kana sistem kami. Dina kasus termostat, pamaké ngan saukur miceun thermostat heubeul na, install hiji pinter, sarta nyambungkeun sensor na aya kana eta. Tanpa léngkah tambahan.

Hayu urang tingali integrasi kana sistem kami nganggo conto.

Hayu urang ngabayangkeun yén urang gaduh 8 modul Sonoff dina jaringan urang. Kanggo sababaraha pangguna, kontrol via awan Sonoff (kategori 1) bakal cekap. Sababaraha baris mimitian nganggo firmware pihak-katilu tur bakal mulus mindahkeun kana kategori 2. The bulk of firmware pihak-katilu jalan dina prinsip anu sarua: mindahkeun data ka server MQTT. OpenHub, Majordomo atanapi anu sanésna ngalayanan hiji tujuan - pikeun ngahijikeun alat anu béda-béda kana rohangan inpormasi tunggal anu aya dina Internét atanapi dina jaringan lokal. Ku alatan éta, ayana Server wajib. Ieu dimana masalah utama timbul - lamun Server gagal, sakabéh sistem eureun gawéna otonom. Pikeun nyegah ieu, sistem jadi leuwih pajeulit, métode kontrol manual ditambahkeun anu otomatis duplikat dina acara gagalna Server.

Kami nyandak jalan anu béda, dimana unggal alat mandiri. Ku kituna, Server teu maénkeun peran decisive, tapi ngan expands pungsionalitasna.

Hayu urang balik deui ka percobaan pamikiran. Hayu urang nyandak sami 8 Sonoff modul deui tur masang firmware Lytko di aranjeunna. Kabéh firmwares Lytko boga fungsi SSDP. SSDP mangrupikeun protokol jaringan dumasar kana suite protokol Internét pikeun pariwara sareng mendakan jasa jaringan. Réspon kana pamundut tiasa janten standar atanapi diperpanjang. Salian fungsi baku, urang kaasup dina jawaban ieu kreasi daptar alat dina jaringan. Ku kituna, alat sorangan manggihan silih, sarta unggal sahijina bakal boga daptar misalna. Contoh lambaran SSDP:

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

Sakumaha anjeun tiasa tingali tina conto, daptar kalebet id alat, alamat IP dina jaringan, jinis unit (bisi kami, thermostat dumasar Sonoff). Daptar ieu diropéa sakali unggal dua menit (periode ieu cukup pikeun ngabales parobahan dinamis dina jumlah alat dina jaringan). Ku cara ieu, urang ngalacak alat anu ditambah, dirobih, sareng ditumpurkeun tanpa tindakan pangguna. Daptar ieu dikirim ka browser atawa aplikasi mobile, sarta naskah sorangan ngahasilkeun kaca kalawan jumlah nu tangtu blok. Unggal blok pakait jeung hiji alat / sensor / controller. Sacara visual daptarna sapertos kieu:

Lytko ngahiji

Tapi kumaha upami sénsor radio sanés nyambung ka esp8266 / esp32 via cc2530 (ZigBee) atanapi nrf24 (MySensors)?

Ngeunaan proyék

Aya sababaraha sistem anu disebarkeun di pasar. Sistem kami ngamungkinkeun anjeun ngahijikeun sareng anu pang populerna.

Di handap ieu mangrupakeun proyék anu salah sahiji atawa cara séjén nyoba ngarobah kaayaan jeung incompatibility sahiji pabrik béda saling. Ieu, contona, SLS Gateway, MySensors atawa ZESP32. ZigBee2MQTT dihijikeun ka server MQTT, jadi teu cocog pikeun conto.

Hiji pilihan pikeun nerapkeun MySensors nyaéta gateway dumasar kana ESP8266. Sesa conto aya dina ESP32. Sareng di aranjeunna anjeun tiasa nerapkeun prinsip operasi kami pikeun ngadeteksi sareng nyiptakeun daptar alat.

Hayu urang ngalakukeun percobaan pamikiran sejen. Kami gaduh gateway ZESP32 atanapi SLS Gateway, atanapi MySensors. Kumaha aranjeunna tiasa digabungkeun dina rohangan inpormasi tunggal? Urang bakal nambahan perpustakaan protokol SSDP kana fungsi standar gateways ieu. Nalika ngakses controller ieu via SSDP, eta bakal nambahan daptar alat nu disambungkeun ka respon baku. Dumasar inpormasi ieu, browser bakal ngahasilkeun halaman. Sacara umum bakal kasampak kawas kieu:

Lytko ngahiji
panganteur wéb

Lytko ngahiji
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"
}

Conto nunjukeun yen alat-alat nu ditambahkeun bebas unggal lianna. 3 thermostats kalawan alamat IP sorangan jeung 5 sensor béda jeung ID unik disambungkeun. Upami sensor disambungkeun ka jaringan Wi-Fi, éta bakal gaduh IP sorangan; upami disambungkeun ka gateway, teras alamat IP alat bakal janten alamat IP gateway.

Kami nganggo WebSocket pikeun komunikasi sareng alat. Ieu ngidinan Anjeun pikeun ngaleutikan biaya sumberdaya dibandingkeun pikeun ménta requests sarta ménta informasi dinamis nalika nyambungkeun atawa ngarobah.

Data dicokot langsung ti alat nu block milik, bypassing server. Ku kituna, lamun salah sahiji alat gagal, sistem terus beroperasi. Antarbeungeut wéb ngan henteu ningalikeun alat anu leungit tina daptar. Tapi sinyal ngeunaan leungitna, upami diperlukeun, bakal datang dina bentuk bewara dina aplikasi pamaké.

Usaha munggaran pikeun nerapkeun pendekatan ieu nyaéta aplikasi PWA. Ieu ngamungkinkeun anjeun pikeun nyimpen blok blok dina alat pangguna sareng ngan ukur nyuhunkeun data anu diperyogikeun. Tapi kusabab peculiarities tina struktur, pilihan ieu teu lengkep. Sareng ngan ukur aya hiji jalan kaluar - aplikasi pituin pikeun Android sareng ios, anu ayeuna nuju ngembangkeun aktip. Sacara standar, aplikasi ngan ukur tiasa dianggo dina jaringan internal. Upami diperlukeun, Anjeun bisa mindahkeun sagalana kana kontrol éksternal. Janten, nalika pangguna ninggalkeun jaringan lokal, aplikasina otomatis ngalih ka méga.

Kontrol éksternal - duplikasi lengkep halaman. Nalika halamanna diaktipkeun, pangguna tiasa log in ka server sareng ngatur alat-alat ngalangkungan akun pribadina. Ku kituna, Server ngalegaan pungsionalitasna, ngamungkinkeun anjeun pikeun ngatur alat nalika di luar bumi, sareng henteu kabeungkeut kana port diteruskeun atanapi IP khusus.

Ku kituna, pilihan di luhur teu boga kalemahan tina pendekatan server, sarta ogé ngabogaan sajumlah kaunggulan dina bentuk kalenturan dina nyambungkeun alat anyar.

Ngeunaan thermostat

Hayu urang nempo sistem kontrol ngagunakeun thermostat urang salaku conto.

Disadiakeun:

  1. Kontrol suhu pikeun tiap thermostat (ditémbongkeun salaku blok misah);
  2. Nyetél jadwal operasi thermostat (isuk, soré, soré, peuting);
  3. Milih jaringan Wi-Fi sareng nyambungkeun alat ka dinya;
  4. Ngamutahirkeun alat "leuwih hawa";
  5. Nyetél MQTT;
  6. Konpigurasikeun jaringan nu alat disambungkeun.

Lytko ngahiji

Salian kontrol via panganteur web, kami nyadiakeun hiji Palasik - ku ngaklik on tampilan. Aya monitor Nextion NX3224T024 2.4 inci dina kapal. Pilihanna tumiba ka anjeunna kusabab betah damel sareng alat éta. Tapi urang ngembangkeun monitor sorangan dumasar kana STM32. Fungsionalitasna henteu langkung parah tibatan Nextion, tapi hargana langkung murah, anu bakal gaduh dampak anu positif kana harga akhir alat.

Lytko ngahiji

Sapertos layar termostat anu ngahargaan diri, Nextion kami tiasa:

  • Nyetél suhu anu diperyogikeun ku pangguna (nganggo tombol di sisi katuhu);
  • hurungkeun sareng mareuman mode operasi anu dijadwalkeun (tombol H);
  • tampilan operasi relay (panah di kénca);
  • gaduh panyalindungan anak (klik fisik diblokir dugi koncina dicabut);
  • mintonkeun kakuatan sinyal WiFi.

Salaku tambahan, nganggo monitor anjeun tiasa:

  • pilih jinis sensor anu dipasang ku pangguna;
  • ngatur fitur konci anak;
  • ngamutahirkeun firmware nu.

Lytko ngahiji

Ku ngaklik dina bar WiFi, pamaké bakal manggihan informasi ngeunaan jaringan disambungkeun. Kode QR dipaké pikeun nyapasangkeun alat dina firmware HomeKit.

Lytko ngahiji

Demo gawé bareng tampilan:

Lytko ngahiji

Kami geus dimekarkeun kaca demo kalawan tilu thermostats disambungkeun.

Anjeun tiasa naros, "Naon anu khusus ngeunaan thermostat anjeun?" Ayeuna di pasar aya seueur termostat sareng fungsi Wi-Fi, operasi anu dijadwalkeun, sareng kontrol touch. Sareng para peminat parantos nyerat modul pikeun berinteraksi sareng sistem bumi pinter anu paling populér (Majordomo, HomeAssistant, jsb.).

Thermostat kami cocog sareng sistem sapertos kitu sareng gaduh sadayana di luhur. Tapi fitur has nyaéta yén thermostat terus ningkat, hatur nuhun kana kalenturan sistem. Kalawan unggal update fungsionalitas bakal dilegakeun. Pikeun metodeu standar manajemén sistem (nurutkeun jadwal), kami bakal nambihan hiji adaptif. Aplikasina ngamungkinkeun anjeun kéngingkeun geolokasi pangguna. Hatur nuhun kana ieu, sistem bakal dinamis ngarobah mode operasi gumantung lokasina. Jeung modul cuaca bakal ngidinan Anjeun pikeun adaptasi jeung kondisi cuaca.

Jeung expandability. Saha waé tiasa ngagentos termostat konvensional anu tos aya ku thermostat kami. Kalayan usaha minimal. Kami parantos milih 5 tina sénsor anu pang populerna di pasar sareng nambihan dukungan pikeun aranjeunna. Tapi sanajan sensor boga ciri ekslusif, pamaké bakal bisa nyambung ka thermostat urang. Jang ngalampahkeun ieu, anjeun bakal kedah calibrate thermostat pikeun digawe sareng sensor husus. Urang bakal nyadiakeun parentah.

Nalika nyambungkeun thermostat atanapi alat anu sanés, éta sakaligus muncul di mana waé: boh dina antarmuka wéb sareng dina aplikasi PWA. Nambahkeun alat lumangsung otomatis: Anjeun ngan perlu nyambungkeun ka jaringan Wi-Fi.

Sistem kami henteu peryogi Server, sareng upami gagal, éta henteu janten waluh. Malah lamun salah sahiji komponén gagal, sistem teu ngawitan beroperasi dina skenario darurat. Controllers, sensor, alat - unggal unsur duanana mangrupa Server jeung klien, kituna sagemblengna otonom.

Pikeun anu resep, jaringan sosial kami: telegram, Instagram, Telegram News, VK, Facebook.

Kantor pos: [email dijaga]

PS Kami henteu ajak anjeun ngantunkeun Server. Urang ogé ngarojong hiji server MQTT sarta boga awan urang sorangan. Tujuan kami nyaéta pikeun mawa stabilitas sareng reliabilitas sistem ka tingkat anu énggal. Sangkan Server teu titik lemah, tapi complements fungsionalitas jeung ngajadikeun sistem leuwih merenah.

sumber: www.habr.com

Tambahkeun komentar