Cloud Smart Home. Dio 1: Kontroler i senzori

Cloud Smart Home. Dio 1: Kontroler i senzori

Danas, zahvaljujući brzom razvoju mikroelektronike, komunikacijskih kanala, internet tehnologija i umjetne inteligencije, tema pametnih domova postaje sve aktuelnija. Ljudski dom je pretrpio značajne promjene od kamenog doba, a u eri industrijske revolucije 4.0 i Interneta stvari postao je udoban, funkcionalan i siguran. Na tržište dolaze rješenja koja stan ili seosku kuću pretvaraju u složene informacione sisteme kojima se upravlja s bilo kojeg mjesta u svijetu pomoću pametnog telefona. Štoviše, za interakciju čovjeka i mašine više nije potrebno poznavanje programskih jezika - zahvaljujući algoritmima za prepoznavanje govora i sinteze, osoba razgovara s pametnim domom na svom maternjem jeziku.

Neki sistemi pametnih kuća koji su trenutno na tržištu logičan su razvoj sistema za video nadzor u oblaku, čiji su programeri shvatili potrebu za sveobuhvatnim rješenjem ne samo za nadzor, već i za upravljanje udaljenim objektima.

Vaša pažnja je pozvana na seriju od tri članka, koji će govoriti o svim glavnim komponentama cloud sistema pametne kuće, koje je autor lično razvio i pustio u rad. Prvi članak posvećen je terminalnoj klijentskoj opremi instaliranoj unutar pametne kuće, drugi je posvećen arhitekturi sistema za skladištenje i obradu podataka u oblaku, a na kraju, treći članak posvećen je klijentskoj aplikaciji za upravljanje sistemom. na mobilnim i stacionarnim uređajima.

Oprema za pametnu kuću

Prvo, hajde da razgovaramo o tome kako napraviti pametan dom od običnog stana, dacha ili vikendice. Da biste to učinili, u pravilu je potrebno postaviti sljedeću opremu u stan:

  1. senzori za mjerenje različitih parametara vanjskog okruženja;
  2. aktuatori koji djeluju na vanjske objekte;
  3. kontroler koji vrši proračune u skladu sa mjerenjima senzora i osnovnom logikom, te izdaje komande aktuatorima.

Na sljedećoj slici prikazan je dijagram pametne kuće, koji sadrži senzore za curenje vode (1) u kupatilu, senzore temperature (2) i osvjetljenja (3) u spavaćoj sobi, pametnu utičnicu (4) u kuhinji i video nadzor kamera (5) u hodniku.

Cloud Smart Home. Dio 1: Kontroler i senzori

Trenutno se široko koriste bežični senzori koji rade na RF433, Z-Wave, ZigBee, Bluetooth i WiFi protokolima. Njihove glavne prednosti su jednostavnost ugradnje i upotrebe, kao i niska cijena i pouzdanost. proizvođači se trude da svoje uređaje dovedu na masovno tržište i učine dostupnim prosječnom korisniku.

Senzori i aktuatori se po pravilu povezuju preko bežičnog sučelja na kontroler pametne kuće (6) – specijalizirani mikroračunar koji sve ove uređaje objedinjuje u jednu mrežu i upravlja njima.

Međutim, neka rješenja mogu kombinirati senzor, aktuator i kontroler u isto vrijeme. Na primjer, pametni priključak se može programirati da se uključuje ili isključi prema rasporedu, a kamera za video nadzor u oblaku može snimati video na signal detektora pokreta. U najjednostavnijim slučajevima možete bez posebnog kontrolera, ali za stvaranje fleksibilnog sistema s mnogo scenarija potrebno je.

Za povezivanje pametnog kućnog kontrolera na globalnu mrežu može se koristiti običan internet ruter (7), koji je odavno postao uobičajen kućni aparat u svakom domu. Postoji još jedan argument u korist kontrolera pametne kuće - ako se veza s internetom izgubi, onda će pametna kuća nastaviti normalno raditi zahvaljujući logičkom bloku pohranjenom unutar kontrolera, a ne u cloud servisu.

kontroler pametne kuće

Kontroler za sistem pametne kuće u oblaku o kojem se govori u ovom članku razvijen je na bazi mikroračunara sa jednom pločom Raspberry Pi 3 model B+, koji je objavljen u martu 2018. i ima dovoljno resursa i performansi za zadatke pametnog doma. Uključuje četvorojezgarni Cortex-A53 procesor na 64-bitnoj ARMv8-A arhitekturi, takta od 1.4 GHz, kao i 1 GB RAM-a, Wi-Fi 802.11ac, Bluetooth 4.2 i gigabitni Ethernet adapter koji radi preko USB 2.0 bus.

Cloud Smart Home. Dio 1: Kontroler i senzori

Montaža kontrolera je vrlo jednostavna - mikroračunar (1) se ugrađuje u plastično kućište (2), zatim se u njega ugrađuje microSD memorijska kartica od 8 GB sa softverom (3) i USB Z-Wave mrežni kontroler (4). odgovarajućim slotovima. Pametni kućni kontroler je povezan na mrežu preko adaptera za napajanje od 5V, 2.1A (5) i USB-micro-USB kabla (6). Svaki kontroler ima jedinstveni identifikacioni broj, koji je zapisan u konfiguracionoj datoteci pri prvom pokretanju i neophodan je za interakciju sa uslugama pametne kuće u oblaku.

Softver kontrolera pametne kuće razvio je autor ovog članka na osnovu operativnog sistema Linux Raspbian Stretch. Sastoji se od sljedećih glavnih podsistema:

  • serverski proces za interakciju sa opremom za pametnu kuću i oblakom;
  • grafički korisnički interfejs za podešavanje konfiguracije i radnih parametara kontrolera;
  • baza podataka za pohranjivanje konfiguracije kontrolera.

Cloud Smart Home. Dio 1: Kontroler i senzori

Baza podataka Smart home kontroler je implementiran na bazi ugrađenog DBMS-a SQLite i predstavlja datoteku na SD kartici sa sistemskim softverom. Služi kao skladište konfiguracije kontrolera — informacije o povezanoj opremi i njenom trenutnom stanju, blok logičkih pravila proizvodnje, kao i informacije koje zahtijevaju indeksiranje (na primjer, imena datoteka lokalne video arhive). Kada se kontroler ponovo pokrene, ove informacije se pohranjuju, što omogućava vraćanje funkcionalnosti kontrolera u slučaju nestanka struje.

Grafičko sučelje Smart home kontroler je razvijen u PHP 7 koristeći mikroframework vitak. Web server je odgovoran za pokretanje aplikacije. lighttpd, koji se često koristi u ugrađenim uređajima zbog svojih dobrih performansi i niskih zahtjeva za resursima.

Cloud Smart Home. Dio 1: Kontroler i senzori
(kliknite na sliku za otvaranje u većoj rezoluciji)

Glavna funkcija GUI je povezivanje opreme za pametnu kuću (IP kamere i senzori) na kontroler. Web aplikacija čita konfiguraciju i trenutno stanje kontrolera i uređaja povezanih s njim iz SQLite baze podataka. Za promjenu konfiguracije kontrolera, on šalje kontrolne komande u JSON formatu kroz RESTful API serverskog procesa.

Server proces

Server proces - ključna komponenta koja obavlja sve glavne poslove na automatizaciji informacijskih procesa koji čine osnovu pametnog doma: primanje i obrada senzornih podataka, izdavanje kontrolnih radnji ovisno o osnovnoj logici. Svrha serverskog procesa je interakcija sa opremom za pametni dom, izvršavanje logičkih pravila proizvodnje, primanje i obrada komandi iz grafičkog interfejsa i oblaka. Serverski proces u razmatranom kontroleru pametne kuće implementiran je kao višenitna aplikacija razvijena u C++ i pokrenuta kao zasebna usluga systemd operativni sistem Linux Raspbian.

Glavni blokovi serverskog procesa su:

  1. Message Manager;
  2. IP kamera server;
  3. Z-Wave server uređaja;
  4. Server proizvodnih logičkih pravila;
  5. Baza podataka konfiguracije kontrolera i blok logičkih pravila;
  6. RESTful API server za interakciju sa grafičkim interfejsom;
  7. MQTT klijent za interakciju sa oblakom.

Serverski procesni blokovi su implementirani kao zasebni tokovi, informacije između kojih se prenose u obliku poruka u JSON formatu (ili struktura podataka koje predstavljaju ovaj format u memoriji procesa).

Cloud Smart Home. Dio 1: Kontroler i senzori

Glavna komponenta serverskog procesa je menadžer poruka, koji usmjerava JSON poruke na sve blokove u procesu servera. Tipovi informativnih polja u JSON poruci i vrijednosti koje mogu uzeti navedeni su u tabeli:

deviceType
protokol
messageType
deviceState
naredba

kamera
onvif
senzorData
on
streaming (uključeno/isključeno)

senzor
zwave
naredba
isključen
snimanje (uključeno/isključeno)

Effector
mqtt
businessLogicRule
streaming (uključeno/isključeno)
uređaj (Dodaj/ukloni)

businessLogic
configurationData
snimanje (uključeno/isključeno)

bluetooth
deviceState
greška

wifi

rf

Na primjer, poruka sa detektora pokreta kamere izgleda ovako:

{
	"vendor": "*****",
	"version": "3.0.0",
	"timestampMs": "1566293475475",
	"clientType": "gateway",
	"deviceId": "1616453d-30cd-44b7-9bf0-************",
	"deviceType": "camera",
	"protocol": "onvif",
	"messageType": "sensorData",
	"sensorType": "camera",
	"label": "motionDetector",
	"sensorData": "on"
}

Logika proizvodnje

Za primanje ili slanje poruke od dispečera, procesni blok servera se pretplaćuje na poruke određenog tipa. Pretplata je proizvodno logično pravilo tog tipa "Ako onda...", predstavljen u JSON formatu, i vezu do rukovaoca poruka unutar bloka procesa servera. Na primjer, da bi server IP kamere primao komande od GUI-a i oblaka, potrebno je dodati sljedeće pravilo:

{
	"if": {
	    "and": [{
		"equal": {
		    "deviceId": "1616453d-30cd-44b7-9bf0-************"
		}
	    },
	    {
		"equal": {
		    "messageType": "command"
		}
	    }
	    ]
	},
	"then": {
	    "result": "true"
	}
}

Ako su ispunjeni uslovi navedeni u antecedent (lijeva strana) pravila su tačna, dakle posljedično (desna strana) pravila, a rukovalac dobija pristup telu JSON poruke. Prethodni podržava logičke operatore koji upoređuju JSON parove ključ/vrijednost:

  1. jednako je "jednako";
  2. nije jednako "not_equal";
  3. manje od "manje";
  4. više "veći";
  5. manje od ili jednako "manje_ili_jednako";
  6. veće ili jednako "veće_ili_jednako".

Rezultati poređenja mogu se međusobno povezati koristeći Bulove algebarske operatore:

  1. I "i";
  2. OR "ili";
  3. NE "ne".

Dakle, pisanjem operatora i operanada u poljskoj notaciji, mogu se formirati prilično složeni uslovi sa velikim brojem parametara.

Potpuno isti mehanizam, zasnovan na JSON porukama i proizvodnim pravilima u JSON formatu, koristi se u bloku servera proizvodne logike za predstavljanje znanja i izvođenje zaključaka koristeći podatke senzora sa senzora pametne kuće.

Korisnik pomoću mobilne aplikacije kreira scenarije prema kojima bi pametna kuća trebala funkcionirati. Na primjer: "Ako se aktivira senzor za otvaranje ulaznih vrata, onda upalite svjetlo u hodniku". Aplikacija čita identifikatore senzora (senzor otvaranja) i aktuatora (pametna utičnica ili pametna lampa) iz baze podataka i generiše logičko pravilo u JSON formatu koje se šalje na kontroler pametne kuće. O ovom mehanizmu ćemo detaljnije govoriti u trećem članku našeg ciklusa, gdje ćemo govoriti o klijentskoj aplikaciji za upravljanje pametnom kućom.

Mehanizam produkcijske logike koji je gore razmotren je implementiran pomoću biblioteke Rapid JSON — SAX-parser JSON formata u C++ jeziku. Sekvencijalno čitanje i raščlanjivanje niza pravila proizvodnje olakšava implementaciju funkcije uparivanja podataka unutar prethodnika:

void CRuleEngine::Process(PProperties pFact)
{
    m_pActions->clear();

    rapidjson::Reader   reader;
    for(TStringMap::value_type& rRule : m_Rules)
    {
        std::string sRuleId   = rRule.first;
        std::string sRuleBody = rRule.second;

        CRuleHandler            ruleHandler(pFact);
        rapidjson::StringStream ruleStream(sRuleBody.c_str());
        rapidjson::ParseResult  parseResult = reader.Parse(ruleStream, ruleHandler);
        if(!parseResult)
        {
            m_Logger.LogMessage(
                        NLogger2::ePriorityLevelError,
                        std::string("JSON parse error"),
                        "CRuleEngine::Process()",
                        std::string("RuleId: ") + sRuleId);
        }

        PProperties pAction = ruleHandler.GetAction();
        if(pAction)
        {
            pAction->Set("ruleId", sRuleId);
            m_pActions->push_back(pAction);
        }
    }
}

to je pFact - struktura koja sadrži parove ključ/vrijednost iz JSON poruke, m_Pravila — niz nizova pravila proizvodnje. Usklađivanje dolazne poruke i pravila proizvodnje vrši se u funkciji reader.Parse(ruleStream, ruleHandler)gde ruleHandler je objekat koji sadrži logiku logičkih operatora i operatora poređenja. sRuleId - jedinstveni identifikator pravila, zahvaljujući kojem je moguće pohranjivati ​​i uređivati ​​pravila unutar baze podataka kontrolera pametnog doma. m_pActions - niz sa rezultatima zaključivanja: JSON poruke koje sadrže konsekvence iz baze pravila i poslane dalje menadžeru poruka tako da ih pretplatničke niti mogu obraditi.

Performanse RapidJSON-a su uporedive sa funkcijom strlen(), a minimalni zahtjevi sistemskih resursa omogućavaju korištenje ove biblioteke u ugrađenim uređajima. Upotreba poruka i logičkih pravila u JSON formatu omogućava vam da implementirate fleksibilan sistem razmjene informacija između svih komponenti kontrolera pametne kuće.

Senzori i aktuatori Z-Wave

Glavna prednost pametne kuće je što može samostalno mjeriti različite parametre vanjskog okruženja i obavljati korisne funkcije ovisno o situaciji. Da biste to učinili, senzori i aktuatori su povezani na kontroler pametne kuće. U trenutnoj verziji ovo su bežični uređaji koji rade po protokolu Z-val na namjenskoj frekvenciji 869 MHz Za Rusiju. Za svoj rad kombiniraju se u mesh mrežu, u kojoj se nalaze repetitori signala kako bi se povećalo područje pokrivenosti. Uređaji imaju i poseban režim za uštedu energije – većinu vremena provode u režimu mirovanja i šalju informacije tek kada im se stanje promeni, što može značajno produžiti život ugrađene baterije.

Cloud Smart Home. Dio 1: Kontroler i senzori

Danas na tržištu postoji veliki broj različitih Z-Wave uređaja. Kao primjer, razmotrite nekoliko:

  1. Pametna utičnica Zipato PAN16 može mjeriti sljedeće parametre: potrošnju električne energije (kWh), snagu (W), napon (V) i struju (A) u mreži. Također ima ugrađen prekidač, pomoću kojeg možete kontrolirati priključeni električni uređaj;
  2. Neo Coolcam senzor curenja detektuje prisustvo prolivene tečnosti zatvaranjem kontakata daljinske sonde;
  3. Zipato PH-PSG01 detektor dima se aktivira kada čestice dima uđu u komoru gasnog analizatora;
  4. Neo Coolcam senzor pokreta analizira infracrveno zračenje ljudskog tijela. Dodatno, tu je i svjetlosni senzor (Lx);
  5. Multisenzor Philio PST02-A mjeri temperaturu (°C), osvjetljenje (%), otvaranje vrata, prisustvo ljudi u prostoriji;
  6. Mrežni kontroler Z-Wave USB Stick ZME E UZB1, na koji su senzori povezani.

Vrlo je važno da uređaji i kontroler rade na istoj frekvenciji, inače se, na jednostavan način, neće vidjeti u trenutku povezivanja. Na jedan Z-Wave mrežni kontroler može se povezati do 232 uređaja, što je sasvim dovoljno za stan ili seosku kuću. Za proširenje pokrivenosti mreže u zatvorenom prostoru, pametna utičnica se može koristiti kao repetitor signala.

Cloud Smart Home. Dio 1: Kontroler i senzori

U procesu serverskog kontrolora pametne kuće o kojem se govorilo u prethodnom paragrafu, Z-Wave server je odgovoran za interakciju sa Z-Wave uređajima. Da bi dobio informacije od senzora, koristi biblioteku OpenZWave u C++, koji pruža interfejs za interakciju sa Z-Wave mrežnim USB kontrolerom i radi sa raznim senzorima i aktuatorima. Vrijednost parametra okoline koju je izmjerio senzor Z-Wave server zapisuje kao JSON poruku:

{
	"vendor": "*****",
	"version": "3.0.0",
	"timestampMs": "1566479791290",
	"clientType": "gateway",
	"deviceId": "20873eb0-dd5e-4213-a175-************",
	"deviceType": "sensor",
	"protocol": "zwave",
	"messageType": "sensorData",
	"homeId": "0xefa0cfa7",
	"nodeId": "20",
	"sensorType": "METER",
	"label": "Voltage",
	"sensorData": "229.3",
	"units": "V"
}

Zatim se šalje upravitelju poruka serverskog procesa tako da ga pretplatničke niti mogu primiti. Primarni pretplatnik je proizvodni logički server, koji odgovara vrijednostima polja poruke u prethodnim logičkim pravilima. Rezultati zaključivanja koji sadrže kontrolne komande se šalju nazad u menadžer poruka i odatle na Z-Wave server, koji ih dekodira i šalje Z-Wave mrežnom USB kontroleru. Tada ulaze u izvršni uređaj, koji mijenja stanje objekata u vanjskom okruženju, a pametni dom, na taj način, obavlja koristan posao.

Cloud Smart Home. Dio 1: Kontroler i senzori
(kliknite na sliku za otvaranje u većoj rezoluciji)

Povezivanje Z-Wave uređaja vrši se u grafičkom interfejsu kontrolera pametne kuće. Da biste to učinili, idite na stranicu s popisom uređaja i kliknite na dugme "Dodaj". Naredba add preko RESTful API interfejsa ulazi u proces servera, a zatim je šalje menadžer poruka Z-Wave serveru, koji Z-Wave USB mrežni kontroler stavlja u poseban režim za dodavanje uređaja. Zatim, na Z-Wave uređaju, potrebno je izvršiti niz brzih pritisaka (3 pritiska u roku od 1,5 sekunde) servisnog dugmeta. USB kontroler povezuje uređaj na mrežu i šalje informacije o njemu Z-Wave serveru. To, zauzvrat, kreira novi zapis u bazi podataka SQLite sa parametrima novog uređaja. Grafički interfejs nakon određenog vremenskog intervala vraća se na stranicu sa listom uređaja Z-Wave, čita informacije iz baze podataka i prikazuje novi uređaj na listi. Istovremeno, svaki uređaj dobija svoj jedinstveni identifikator, koji se koristi u pravilima proizvodnje i pri radu u oblaku. Rad ovog algoritma je prikazan na UML dijagramu:

Cloud Smart Home. Dio 1: Kontroler i senzori
(kliknite na sliku za otvaranje u većoj rezoluciji)

Povezivanje IP kamera

Sistem pametne kuće u oblaku o kojem se govori u ovom članku je nadogradnja sistema video nadzora u oblaku, koji je također razvio autor, koji je na tržištu već nekoliko godina i ima mnogo instalacija u Rusiji.

Za sisteme video nadzora u oblaku, jedan od akutnih problema je ograničen izbor opreme sa kojom se može izvršiti integracija. Softver odgovoran za povezivanje s oblakom instaliran je unutar kamkordera, što odmah nameće ozbiljne zahtjeve za njegovo hardversko punjenje - procesor i količinu slobodne memorije. Ovo uglavnom objašnjava višu cijenu kamera za nadzor u oblaku u odnosu na obične IP kamere. Osim toga, potrebna je duga faza pregovora sa kompanijama za CCTV kamere kako bi se dobio pristup sistemu datoteka kamere i svim potrebnim razvojnim alatima.

Cloud Smart Home. Dio 1: Kontroler i senzori

S druge strane, sve moderne IP kamere imaju standardne protokole za interakciju sa drugom opremom (posebno video rekorderima). Dakle, upotreba posebnog kontrolera koji se povezuje putem standardnog protokola i emituje video tokove sa IP kamera u oblak daje značajne konkurentske prednosti za sisteme video nadzora u oblaku. Štaviše, ako je klijent već instalirao sistem video nadzora baziran na jednostavnim IP kamerama, tada ga postaje moguće proširiti i pretvoriti u punopravni pametni dom u oblaku.

Najpopularniji protokol za IP sisteme video nadzora, koji sada podržavaju svi proizvođači IP kamera bez izuzetka je ONVIF Profil S, čije specifikacije postoje u jeziku opisa Web usluga wsdl. Korištenje uslužnih programa iz kompleta alata gSOAP moguće je generirati izvorni kod servisa koji rade sa IP kamerama:

$ wsdl2h -o onvif.h 
	https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl 
	https://www.onvif.org/ver10/events/wsdl/event.wsdl 
	https://www.onvif.org/ver10/media/wsdl/media.wsdl 
	https://www.onvif.org/ver20/ptz/wsdl/ptz.wsdl

$ soapcpp2 -Cwvbj -c++11 -d cpp_files/onvif -i onvif.h

Kao rezultat, dobijamo set zaglavlja "*.h" i izvornih datoteka "*.cpp" na jeziku C++, koji se mogu postaviti direktno u aplikaciju ili posebnu biblioteku i kompajlirati pomoću GCC kompajlera. Zbog brojnih funkcija, kod je velik i zahtijeva dodatnu optimizaciju. Mikroračunar Raspberry Pi 3 model B+ ima dovoljno performansi za izvršavanje ovog koda, ali u slučaju da bude potrebno prenijeti kod na drugu platformu, potrebno je odabrati pravu arhitekturu procesora i sistemske resurse.

IP kamere koje podržavaju ONVIF standard, kada rade u lokalnoj mreži, povezane su na posebnu multicast grupu sa adresom 239.255.255.250. Postoji protokol WS Discovery, koji vam omogućava automatizaciju pretraživanja uređaja na lokalnoj mreži.

U grafičkom sučelju kontrolera pametne kuće implementirana je funkcija traženja IP kamera na PHP jeziku, što je vrlo zgodno pri interakciji sa web servisima putem XML poruka. Prilikom odabira stavki menija Uređaji > IP kamere > Skeniraj pokreće se algoritam za traženje IP kamera, koji prikazuje rezultat u obliku tabele:

Cloud Smart Home. Dio 1: Kontroler i senzori
(kliknite na sliku za otvaranje u većoj rezoluciji)

Prilikom dodavanja kamere na kontroler, možete odrediti postavke prema kojima će ona komunicirati s oblakom. Takođe u ovoj fazi, automatski mu se dodeljuje jedinstveni identifikator uređaja, pomoću kojeg se može lako identifikovati unutar oblaka u budućnosti.

Cloud Smart Home. Dio 1: Kontroler i senzori

Zatim se generira poruka u JSON formatu koja sadrži sve parametre dodane kamere i šalje se serverskom procesu kontrolera pametne kuće putem RESTful API naredbe, gdje se parametri kamere dekodiraju i pohranjuju u internu SQLite bazu podataka, te se također se koristi za pokretanje sljedećih niti za obradu:

  1. uspostavljanje RTSP veze za prijem video i audio tokova;
  2. audio transkodiranje iz G.711 mu-Law, G.711 A-Law, G.723, itd. u AAC format;
  3. transkodiranje video tokova u H.264 formatu i audio u AAC formatu u FLV kontejner i prijenos u oblak putem RTMP protokola;
  4. Uspostavljanje veze sa krajnjom tačkom detektora pokreta IP kamere pomoću ONVIF protokola i periodično prozivanje istog;
  5. periodično generisanje umanjene slike za pregled (pregled) i slanje u oblak koristeći MQTT protokol;
  6. lokalno snimanje video i audio tokova kao zasebnih datoteka u MP4 formatu na SD ili Flash kartici kontrolera pametnog doma.

Cloud Smart Home. Dio 1: Kontroler i senzori

Za uspostavljanje veze s kamerama, transkodiranje, obradu i snimanje video tokova u procesu servera, koriste se funkcije iz biblioteke FFmpeg 4.1.0.

U eksperimentu testiranja performansi, 3 kamere su bile povezane na kontroler:

  1. HiWatch DS-I114W (rezolucija - 720p, format kompresije - H.264, brzina prijenosa - 1 Mb / s, zvuk G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (rezolucija - 1080p, format kompresije - H.264, brzina prijenosa - 1 Mb / s, bez zvuka);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (rezolucija - 1080p, format kompresije - H.264, brzina prijenosa - 1.5 Mb/s, AAC audio).

Cloud Smart Home. Dio 1: Kontroler i senzori

Sva tri toka su istovremeno izlaze u oblak, audio je transkodiran sa samo jedne kamere, a snimanje lokalne arhive je onemogućeno. Opterećenje CPU-a je bilo oko 5%, upotreba RAM-a je bila 32 MB (po procesu), 56 MB (ukupno sa OS-om).

Tako se na kontroler pametne kuće može povezati oko 20-30 kamera (ovisno o rezoluciji i bitrate), što je dovoljno za sistem video nadzora trospratnice ili malog skladišta. U zadacima gdje su potrebne visoke performanse, možete koristiti nettop s višejezgrenim Intel procesorom i Linux Debian Sarge. Kontrolor je trenutno u probnom radu, a podaci o učinku njegovog rada biće precizirani.

Interakcija sa oblakom

Cloud pametni dom pohranjuje korisničke podatke (video i senzorska mjerenja) u oblak. O arhitekturi pohrane u oblaku ćemo detaljnije govoriti u sljedećem članku naše serije. Sada razgovarajmo o sučelju za prijenos informativnih poruka sa kontrolera pametne kuće u oblak.

Protokolom se prenose stanja povezanih uređaja i mjerenja senzora MQTT, koji se često koristi u projektima Interneta stvari zbog svoje jednostavnosti i energetske efikasnosti. MQTT koristi klijent-server model gdje se klijenti pretplate na određene teme unutar brokera i objavljuju svoje poruke. Broker šalje poruke svim pretplatnicima u skladu sa pravilima utvrđenim QoS (Quality of Service) nivoom:

  • QoS 0 - maksimalno jednom (bez garancije isporuke);
  • QoS 1 - najmanje jednom (sa potvrdom isporuke);
  • QoS 2 - tačno jednom (uz dodatnu potvrdu isporuke).

U našem slučaju, MQTT broker je Eclipse Mosquito. Naziv teme je jedinstveni ID kontrolera pametnog doma. MQTT klijent unutar serverskog procesa se pretplaćuje na ovu temu i prevodi u nju JSON poruke koje dolaze od dispečera poruka. I obrnuto, poruke od MQTT brokera se prosljeđuju upravitelju poruka, koji ih zatim multipleksira svojim pretplatnicima unutar procesa servera:

Cloud Smart Home. Dio 1: Kontroler i senzori

Za slanje poruka o statusu kontrolera pametne kuće koristi se mehanizam pohranjenih poruka. zadržane poruke MQTT protokol. Ovo vam omogućava da ispravno pratite trenutke ponovnog povezivanja u slučaju nestanka struje.

MQTT klijent je razvijen na osnovu implementacije biblioteke Eclipse Paho u C++.

H.264 + AAC medijski tokovi se šalju u oblak preko RTMP protokola, gdje je klaster medijskih servera odgovoran za njihovu obradu i skladištenje. Za optimalnu distribuciju opterećenja u klasteru i odabir najmanje opterećenog medijskog servera, kontroler pametne kuće postavlja preliminarni zahtjev balanseru opterećenja u oblaku i tek onda šalje medijski stream.

zaključak

U članku se razmatra jedna specifična implementacija kontrolera za pametnu kuću zasnovanog na mikroračunaru Raspberry Pi 3 B+, ​​koji može primati, obrađivati ​​informacije i kontrolisati opremu pomoću Z-Wave protokola, komunicirati s IP kamerama pomoću ONVIF protokola, a također razmjenjivati ​​podatke i komande sa cloud servisom preko MQTT i RTMP protokola. Produkcijski logički mehanizam je razvijen na osnovu poređenja logičkih pravila i činjenica predstavljenih u JSON formatu.

Sada je kontroler pametne kuće u probnom radu u nekoliko objekata u Moskvi i Moskovskoj regiji.

U sljedećoj verziji kontrolera planirano je povezivanje uređaja drugih tipova (RF, Bluetooth, WiFi, žični). Radi pogodnosti korisnika, procedura povezivanja senzora i IP kamera bit će prebačena na mobilnu aplikaciju. Postoje i ideje za optimizaciju serverskog procesnog koda i prenos softvera na operativni sistem openwrt. Ovo će uštedjeti na zasebnom kontroleru i prenijeti funkcionalnost pametnog doma na običan kućni ruter.

izvor: www.habr.com

Dodajte komentar