Pametni dom u oblaku. Dio 1: Kontroler i senzori

Pametni dom u oblaku. Dio 1: Kontroler i senzori

Danas, zahvaljujući brzom razvoju mikroelektronike, komunikacijskih kanala, internetskih tehnologija i umjetne inteligencije, tema pametnih domova postaje sve aktualnija. Ljudsko stanovanje doživjelo je značajne promjene od kamenog doba, au eri industrijske revolucije 4.0 i Interneta stvari postalo je udobno, funkcionalno i sigurno. Na tržište dolaze rješenja koja stan ili seosku kuću pretvaraju u složene informacijske sustave kojima se upravlja s bilo kojeg mjesta u svijetu pomoću pametnog telefona. Štoviše, interakcija čovjeka i stroja više ne zahtijeva poznavanje programskih jezika - zahvaljujući algoritmima za prepoznavanje govora i sintezu, osoba razgovara s pametnim domom na svom materinjem jeziku.

Neki sustavi pametnih kuća trenutno na tržištu logičan su razvoj sustava videonadzora u oblaku, čiji su programeri uvidjeli potrebu za sveobuhvatnim rješenjem ne samo za nadzor, već i za upravljanje udaljenim objektima.

Predstavljamo vam niz od tri članka koji će vam reći o svim glavnim komponentama sustava pametne kuće u oblaku, koji je autor osobno razvio i pustio u rad. Prvi članak posvećen je terminalskoj klijentskoj opremi instaliranoj unutar pametne kuće, drugi arhitekturi sustava za pohranu i obradu podataka u oblaku, a na kraju treći klijentskoj aplikaciji za upravljanje sustavom na mobilnim i stacionarnim uređajima.

Oprema za pametnu kuću

Prvo, razgovarajmo o tome kako napraviti pametnu kuću od običnog stana, vikendice ili vikendice. Da biste to učinili, u pravilu je potrebno u kući postaviti sljedeću opremu:

  1. senzori koji mjere razne parametre vanjske okoline;
  2. aktuatori koji djeluju na vanjske objekte;
  3. kontroler koji izvodi proračune u skladu s mjerenjima senzora i ugrađenom logikom te izdaje naredbe aktuatorima.

Sljedeća slika prikazuje dijagram pametne kuće na kojem se nalaze senzori curenja vode (1) u kupaonici, temperature (2) i osvjetljenja (3) u spavaćoj sobi, pametna utičnica (4) u kuhinji i videonadzorna kamera (5) u hodniku.

Pametni dom u oblaku. Dio 1: Kontroler i senzori

Trenutno se naširoko koriste bežični senzori koji rade pomoću protokola RF433, Z-Wave, ZigBee, Bluetooth i WiFi. Njihove glavne prednosti su jednostavnost ugradnje i korištenja, kao i niska cijena i pouzdanost, jer Proizvođači nastoje svoje uređaje dovesti na masovno tržište i učiniti ih dostupnima prosječnom korisniku.

Senzori i aktuatori, u pravilu, povezani su putem bežičnog sučelja na kontroler pametne kuće (6) - specijalizirano mikroračunalo koje spaja sve te uređaje u jedinstvenu mrežu i njima upravlja.

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

Za povezivanje kontrolera pametne kuće s globalnom mrežom može se koristiti obični internetski usmjerivač (7), koji je odavno postao uobičajeni kućanski aparat u svakom domu. Ovdje postoji još jedan argument u korist kontrolera pametne kuće - ako se veza s internetom prekine, pametna kuća nastavit će normalno raditi zahvaljujući logičkom bloku pohranjenom unutar kontrolera, a ne u usluzi u oblaku.

Upravljač za pametnu kuću

Kontroler za sustav pametne kuće u oblaku o kojem se raspravlja u ovom članku razvijen je na temelju mikroračunala s jednom pločom Raspberry Pi 3 model B+, koji je objavljen u ožujku 2018. i ima dovoljno resursa i performansi za zadatke pametnog doma. Uključuje četverojezgreni Cortex-A53 procesor temeljen na 64-bitnoj ARMv8-A arhitekturi, na 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 .

Pametni dom u oblaku. Dio 1: Kontroler i senzori

Sastavljanje kontrolera je vrlo jednostavno - mikroračunalo (1) se ugradi u plastično kućište (2), zatim se ugradi memorijska kartica od 8 GB u microSD formatu sa softverom (3) i USB Z-Wave mrežni kontroler (4). odgovarajuće utore. Upravljač za pametnu kuću na napajanje se spaja preko strujnog adaptera 5V, 2.1A (5) i USB - micro-USB kabela (6). Svaki kontroler ima jedinstveni identifikacijski broj, koji je zapisan u konfiguracijskoj datoteci pri prvom pokretanju i neophodan je za interakciju s uslugama pametnog doma u oblaku.

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

  • poslužiteljski proces za interakciju s opremom pametnog doma i oblakom;
  • grafičko korisničko sučelje za podešavanje konfiguracijskih i radnih parametara regulatora;
  • baza podataka za pohranu konfiguracije kontrolera.

Pametni dom u oblaku. Dio 1: Kontroler i senzori

Baza podataka kontroler pametne kuće implementiran je na temelju ugrađenog DBMS-a SQLite i to je datoteka na SD kartici sa sistemskim softverom. Služi kao pohrana za konfiguraciju kontrolera - informacije o priključenoj opremi i njenom trenutnom stanju, blok logičkih pravila proizvodnje, kao i informacije koje zahtijevaju indeksiranje (na primjer, nazivi datoteka lokalne video arhive). Kada se kontroler ponovno pokrene, ove informacije se spremaju, što omogućuje ponovno uspostavljanje kontrolera u slučaju nestanka struje.

Grafičko sučelje kontroler pametne kuće razvijen u PHP-u 7 pomoću mikrookvira vitak. Web poslužitelj odgovoran je za pokretanje aplikacije. lighttpd, često se koristi u ugrađenim uređajima zbog dobrih performansi i malih zahtjeva za resursima.

Pametni dom u oblaku. Dio 1: Kontroler i senzori
(kliknite na sliku da je otvorite u većoj rezoluciji)

Glavna funkcija grafičkog sučelja je povezivanje pametne kućne opreme (IP nadzornih kamera i senzora) s upravljačem. Web aplikacija iz SQLite baze podataka čita konfiguraciju i trenutno stanje kontrolera i uređaja povezanih s njim. Za promjenu konfiguracije kontrolera, on šalje kontrolne naredbe u JSON formatu kroz RESTful API sučelje poslužiteljskog procesa.

Proces poslužitelja

Proces poslužitelja - ključna komponenta koja obavlja sve glavne radove na automatizaciji informacijskih procesa koji čine osnovu pametne kuće: primanje i obrada senzorskih podataka, izdavanje kontrolnih radnji ovisno o ugrađenoj logici. Svrha poslužiteljskog procesa je interakcija s opremom pametnog doma, izvršavanje proizvodnih logičkih pravila, primanje i obrada naredbi iz grafičkog sučelja i oblaka. Poslužiteljski proces u razmatranom kontroleru pametne kuće implementiran je kao višenitna aplikacija razvijena u C++ i pokrenuta kao zasebna usluga systemd operacijski sustav Linux Raspbian.

Glavni blokovi poslužiteljskog procesa su:

  1. Upravitelj poruka;
  2. poslužitelj IP kamere;
  3. Z-Wave poslužitelj uređaja;
  4. Poslužitelj proizvodnih logičkih pravila;
  5. Baza podataka konfiguracije kontrolera i bloka logičkih pravila;
  6. RESTful API poslužitelj za interakciju s grafičkim sučeljem;
  7. MQTT klijent za interakciju s oblakom.

Procesni blokovi poslužitelja implementirani su kao zasebne niti, informacije između kojih se prenose u obliku poruka u JSON formatu (ili podatkovnih struktura koje predstavljaju ovaj format u procesnoj memoriji).

Pametni dom u oblaku. Dio 1: Kontroler i senzori

Glavna komponenta poslužiteljskog procesa je upravitelj poruka, koji usmjerava JSON poruke u sve blokove procesa poslužitelja. Vrste informacijskih polja JSON poruke i vrijednosti koje mogu prihvatiti navedene su u tablici:

tip uređaja
protokol
messageType
stanje uređaja
naredba

soba
onvif
senzorData
on
strujanje (uključeno/isključeno)

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

sredstva za povećanje
mqtt
businessLogicRule
strujanje (uključeno/isključeno)
uređaj (dodaj/ukloni)

poslovnaLogika
konfiguracijski podaci
snimanje (uključeno/isključeno)

Bluetooth
stanje uređaja
pogreška

WiFi

rf

Na primjer, poruka 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"
}

Proizvodna logika

Za primanje ili slanje poruke od dispečera, blok procesa poslužitelja pretplaćuje se na poruke određene vrste. Pretplata je proizvodno logično pravilo tipa "Ako tada...", predstavljen u JSON formatu, i poveznica na rukovatelj porukama unutar bloka procesa poslužitelja. Na primjer, kako biste dopustili poslužitelju IP kamere da prima naredbe iz GUI-ja i oblaka, trebate dodati sljedeće pravilo:

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

Ako su ispunjeni uvjeti navedeni u prethodnik (lijeva strana) pravila su istinita, onda je zadovoljeno posljedično (desna strana) pravila, a rukovatelj dobiva pristup tijelu JSON poruke. Prethodnik podržava logičke operatore koji uspoređuju JSON parove ključ-vrijednost:

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

Rezultati usporedbe mogu se međusobno povezati pomoću operatora Booleove algebre:

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

Dakle, pisanjem operatora i operanda u poljskoj notaciji, možete stvoriti prilično složene uvjete s velikim brojem parametara.

Potpuno isti mehanizam, temeljen na JSON porukama i produkcijskim pravilima u JSON formatu, koristi se u proizvodnom logičkom poslužiteljskom bloku za predstavljanje znanja i izvođenje logičkog zaključivanja korištenjem senzorskih podataka iz senzora pametne kuće.

Koristeći mobilnu aplikaciju, korisnik 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 svjetiljka) iz baze podataka i generira logičko pravilo u JSON formatu koje se šalje kontroleru pametne kuće. O ovom mehanizmu ćemo detaljnije govoriti u trećem članku naše serije, gdje ćemo govoriti o klijentskoj aplikaciji za upravljanje pametnom kućom.

Mehanizam proizvodne logike koji je gore razmotren implementiran je pomoću knjižnice RapidJSON — SAX parser za JSON format u C++. Sekvencijalno čitanje i raščlanjivanje niza proizvodnih pravila omogućuje vam jednostavnu implementaciju funkcije usporedbe 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);
        }
    }
}

Ovdje pČinjenica — struktura koja sadrži parove ključ-vrijednost iz JSON poruke, m_Pravila — niz nizova pravila proizvodnje. Usporedba dolazne poruke i pravila proizvodnje provodi se u funkciji reader.Parse(ruleStream, ruleHandler)Gdje Rukovatelj pravilom je objekt koji sadrži logiku Booleovih i operatora usporedbe. sPraviloId — jedinstveni identifikator pravila, zahvaljujući kojem je moguće pohraniti i uređivati ​​pravila unutar baze podataka kontrolera pametne kuće. m_pAkcije — niz s rezultatima logičkog zaključivanja: JSON poruke koje sadrže posljedice iz baze pravila i šalju se dalje upravitelju poruka kako bi ih niti pretplatnika mogle obraditi.

Izvedba RapidJSON-a usporediva je s funkcijom strlen(), a minimalni zahtjevi za sistemskim resursima dopuštaju korištenje ove biblioteke u ugrađenim uređajima. Korištenje poruka i logičkih pravila u JSON formatu omogućuje implementaciju fleksibilnog sustava razmjene informacija između svih komponenti kontrolera pametne kuće.

Z-Wave senzori i aktuatori

Glavna prednost pametne kuće je da 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 povezani su s kontrolerom pametne kuće. U trenutnoj verziji, to su bežični uređaji koji rade pomoću protokola Z-Wave na posebno dodijeljenoj frekvenciji 869 MHz Za Rusiju. Za rad se spajaju u isprepletenu mrežu koja sadrži repetitore signala za povećanje područja pokrivenosti. Uređaji imaju i poseban način rada za uštedu energije – većinu vremena provode u stanju mirovanja i šalju informacije tek kada im se stanje promijeni, što može značajno produžiti vijek trajanja ugrađene baterije.

Pametni dom u oblaku. Dio 1: Kontroler i senzori

Sada na tržištu možete pronaći prilično velik broj različitih Z-Wave uređaja. Pogledajmo nekoliko primjera:

  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 električnoj mreži. Također ima ugrađenu sklopku kojom upravljate priključenim električnim aparatom;
  2. Neo Coolcam senzor curenja detektira prisutnost prolivene tekućine zatvaranjem kontakata daljinske sonde;
  3. Senzor dima Zipato PH-PSG01 aktivira se kada čestice dima uđu u komoru analizatora plina;
  4. Senzor pokreta Neo Coolcam analizira infracrveno zračenje ljudskog tijela. Dodatno postoji svjetlosni senzor (Lx);
  5. Multisenzor Philio PST02-A mjeri temperaturu (°C), svjetlost (%), otvaranje vrata, prisutnost osobe u prostoriji;
  6. Z-Wave USB Stick ZME E UZB1 mrežni kontroler, na koji se spajaju senzori.

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

Pametni dom u oblaku. Dio 1: Kontroler i senzori

U procesu poslužitelja kontrolera pametne kuće o kojem je bilo riječi u prethodnom odlomku, Z-Wave poslužitelj odgovoran je za interakciju sa Z-Wave uređajima. Koristi biblioteku za primanje informacija od senzora OpenZWave u C++, koji pruža sučelje za interakciju sa Z-Wave mrežnim USB kontrolerom i radi s različitim senzorima i aktuatorima. Vrijednost parametra okoliša izmjerena senzorom Z-Wave poslužitelj bilježi u obliku JSON poruke:

{
	"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 prosljeđuje upravitelju poruka poslužiteljskog procesa tako da ga niti pretplatnika mogu primiti. Glavni pretplatnik je proizvodni logički poslužitelj, koji odgovara vrijednostima polja poruke u prethodnicima logičkih pravila. Rezultati zaključivanja koji sadrže kontrolne naredbe šalju se natrag upravitelju poruka, a odatle idu na Z-Wave poslužitelj, koji ih dekodira i šalje Z-Wave mrežnom USB kontroleru. Zatim ulaze u aktuator koji mijenja stanje okolišnih objekata, a pametna kuća na taj način obavlja koristan rad.

Pametni dom u oblaku. Dio 1: Kontroler i senzori
(kliknite na sliku da je otvorite u većoj rezoluciji)

Povezivanje Z-Wave uređaja vrši se u grafičkom sučelju kontrolera pametne kuće. Da biste to učinili, idite na stranicu s popisom uređaja i kliknite gumb "Dodaj". Naredba add preko RESTful API sučelja ulazi u proces poslužitelja, a potom je upravitelj poruka šalje Z-Wave poslužitelju, koji Z-Wave mrežni USB kontroler stavlja u poseban mod za dodavanje uređaja. Zatim, na Z-Wave uređaju morate napraviti niz brzih pritisaka (3 pritiska unutar 1,5 sekundi) servisnog gumba. USB kontroler povezuje uređaj s mrežom i šalje podatke o njemu Z-Wave poslužitelju. To zauzvrat stvara novi unos u SQLite bazi podataka s parametrima novog uređaja. Nakon određenog vremenskog intervala, grafičko sučelje vraća se na stranicu popisa Z-Wave uređaja, čita informacije iz baze podataka i prikazuje novi uređaj na popisu. Svaki uređaj dobiva vlastiti jedinstveni identifikator koji se koristi u pravilima zaključivanja proizvodnje i pri radu u oblaku. Rad ovog algoritma prikazan je na UML dijagramu:

Pametni dom u oblaku. Dio 1: Kontroler i senzori
(kliknite na sliku da je otvorite u većoj rezoluciji)

Spajanje IP kamera

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

Za sustave videonadzora u oblaku jedan od akutnih problema je ograničen izbor opreme s kojom se može izvršiti integracija. Softver zadužen za povezivanje s oblakom instaliran je unutar video kamere, što odmah postavlja ozbiljne zahtjeve na njen hardver - procesor i količinu slobodne memorije. To uglavnom objašnjava višu cijenu cloud CCTV kamera u usporedbi s običnim IP kamerama. Osim toga, potrebna je duga faza pregovora s tvrtkama koje proizvode CCTV kamere kako bi se dobio pristup sustavu datoteka kamere i svim potrebnim razvojnim alatima.

Pametni dom u oblaku. Dio 1: Kontroler i senzori

S druge strane, sve moderne IP kamere imaju standardne protokole za interakciju s drugom opremom (osobito videorekorderima). Dakle, upotreba zasebnog kontrolera koji se povezuje standardnim protokolom i emitira video streamove s IP kamera u oblak daje značajne konkurentske prednosti za videonadzorne sustave u oblaku. Štoviše, ako je klijent već instalirao sustav videonadzora temeljen na jednostavnim IP kamerama, tada ga je moguće proširiti i pretvoriti u punopravni pametni dom u oblaku.

Najpopularniji protokol za IP sustave videonadzora, koji sada podržavaju svi proizvođači IP kamera bez iznimke, je ONVIF profil S, čije specifikacije postoje u jeziku opisa web usluga wsdl. Korištenje uslužnih programa iz alata gSOAP Moguće je generirati izvorni kod za usluge koje rade s 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, dobivamo skup datoteka zaglavlja “*.h” i izvora “*.cpp” u C++, koje se mogu postaviti izravno u aplikaciju ili zasebnu biblioteku i kompajlirati pomoću GCC prevodioca. Zbog mnoštva funkcija kod je velik i zahtijeva dodatnu optimizaciju. Mikroračunalo Raspberry Pi 3 model B+ ima dovoljne performanse za izvršavanje ovog koda, no ako postoji potreba za prijenosom koda na drugu platformu, potrebno je odabrati ispravnu arhitekturu procesora i sistemske resurse.

IP kamere koje podržavaju ONVIF standard, kada rade na lokalnoj mreži, povezuju se u posebnu multicast grupu s adresom 239.255.255.250. Postoji protokol WS-Otkriće, koji vam omogućuje automatizaciju traženja uređaja na lokalnoj mreži.

Grafičko sučelje kontrolera pametne kuće implementira funkciju pretraživanja IP kamera u PHP-u, što je vrlo zgodno pri interakciji s web uslugama putem XML poruka. Prilikom odabira stavki izbornika Uređaji > IP kamere > Skeniranje Pokreće se algoritam za traženje IP kamera s prikazom rezultata u obliku tablice:

Pametni dom u oblaku. Dio 1: Kontroler i senzori
(kliknite na sliku da je otvorite u većoj rezoluciji)

Kada dodate kameru u kontroler, možete odrediti postavke prema kojima će ona komunicirati s oblakom. Također u ovoj fazi, automatski mu se dodjeljuje jedinstveni identifikator uređaja, po kojem se kasnije može lako identificirati unutar oblaka.

Pametni dom u oblaku. 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 spremaju u internu SQLite bazu podataka, te se također se koristi za pokretanje sljedećih niti obrade:

  1. uspostavljanje RTSP veze za primanje video i audio tokova;
  2. transkodiranje zvuka iz G.711 mu-Law, G.711 A-Law, G.723 itd. formata. u AAC format;
  3. transkodiranje video tokova u H.264 formatu i zvuka u AAC formatu u FLV spremnik i prijenos u oblak putem RTMP protokola;
  4. uspostavljanje veze s krajnjom točkom detektora pokreta IP kamere putem ONVIF protokola i povremeno prozivanje iste;
  5. povremeno generiranje minijaturne slike za pregled i slanje u oblak putem MQTT protokola;
  6. lokalno snimanje video i audio streamova u obliku zasebnih datoteka u MP4 formatu na SD ili Flash karticu pametnog kućnog kontrolera.

Pametni dom u oblaku. Dio 1: Kontroler i senzori

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

U eksperimentu testiranja performansi, 3 kamere bile su spojene na upravljač:

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

Pametni dom u oblaku. Dio 1: Kontroler i senzori

Sva tri streama bila su istovremeno izlazna u oblak, audio transkodiranje je izvršeno sa samo jedne kamere, a lokalno arhivsko snimanje je bilo onemogućeno. Opterećenje CPU-a bilo je približno 5%, upotreba RAM-a bila je 32 MB (po procesu), 56 MB (ukupno uključujući OS).

Tako se na kontroler pametne kuće može spojiti otprilike 20 - 30 kamera (ovisno o rezoluciji i bitrateu), što je dovoljno za sustav videonadzora trokatnice ili manjeg skladišta. Za zadatke koji zahtijevaju veće performanse, možete koristiti nettop s višejezgrenim Intelovim procesorom i Linux Debian Sarge OS-om. Kontroler je trenutno u probnom radu, a podaci o njegovom radu bit će ažurirani.

Interakcija s oblakom

Pametna kuća temeljena na oblaku pohranjuje korisničke podatke (video i senzorska mjerenja) u oblaku. O arhitekturi pohrane u oblaku detaljnije ćemo govoriti u sljedećem članku iz naše serije. Razgovarajmo sada o sučelju za prijenos informacijskih poruka s kontrolera pametne kuće u oblak.

Protokolom se prenose stanja povezanih uređaja i mjerenja senzora MQTT, koji se zbog svoje jednostavnosti i energetske učinkovitosti često koristi u projektima Internet of Things. MQTT koristi model klijent-poslužitelj, gdje se klijenti pretplaćuju na određene teme unutar brokera i objavljuju svoje poruke. Broker šalje poruke svim pretplatnicima prema pravilima određenim QoS (Quality of Service) razinom:

  • QoS 0 - maksimalno jednom (bez jamstva isporuke);
  • QoS 1 - najmanje jednom (uz potvrdu isporuke);
  • QoS 2 - točno jednom (uz dodatnu potvrdu isporuke).

U našem slučaju koristimo Pomrčina komarac. Naziv teme je jedinstveni identifikator kontrolera pametne kuće. MQTT klijent unutar poslužiteljskog procesa pretplaćuje se na ovu temu i prevodi JSON poruke koje dolaze iz upravitelja poruka u nju. Suprotno tome, poruke od MQTT brokera on prosljeđuje upravitelju poruka, koji ih potom multipleksira svojim pretplatnicima unutar procesa poslužitelja:

Pametni dom u oblaku. Dio 1: Kontroler i senzori

Za prijenos poruka o statusu kontrolera pametne kuće koristi se mehanizam spremljenih poruka zadržane poruke MQTT protokol. To vam omogućuje ispravno praćenje vremena ponovnog povezivanja tijekom nestanka struje.

MQTT klijent razvijen je na temelju implementacije knjižnice Pomrčina Paho u jeziku C++.

H.264 + AAC streamovi medija šalju se u oblak putem RTMP protokola, gdje je klaster medijskih poslužitelja odgovoran za njihovu obradu i pohranu. Za optimalnu raspodjelu opterećenja u klasteru i odabir najmanje opterećenog medijskog poslužitelja, kontroler pametne kuće postavlja preliminarni zahtjev balanseru opterećenja u oblaku i tek nakon toga šalje medijski tok.

Zaključak

U članku je ispitana jedna specifična implementacija kontrolera za pametnu kuću temeljenog na mikroračunalu Raspberry Pi 3 B+, ​​koji može primati, obrađivati ​​informacije i upravljati opremom putem Z-Wave protokola, komunicirati s IP kamerama putem ONVIF protokola, te razmjenjivati ​​podatke i naredbe s oblakom.servis putem MQTT i RTMP protokola. Proizvodni logički mehanizam razvijen je na temelju usporedbe logičkih pravila i činjenica prikazanih u JSON formatu.

Kontroler pametne kuće trenutno je u probnom radu na nekoliko lokacija u Moskvi i Moskovskoj regiji.

Sljedeća verzija kontrolera planira povezivanje drugih vrsta uređaja (RF, Bluetooth, WiFi, žičane). Radi praktičnosti korisnika, postupak povezivanja senzora i IP kamera bit će prebačen u mobilnu aplikaciju. Postoje i ideje za optimizaciju procesnog koda poslužitelja i prijenos softvera na operativni sustav OpenWrt. To će vam omogućiti da uštedite na zasebnom kontroleru i prenesete funkcionalnost pametne kuće na obični kućni usmjerivač.

Izvor: www.habr.com

Dodajte komentar