Cloud Smart Home. Časť 1: Regulátor a snímače

Cloud Smart Home. Časť 1: Regulátor a snímače

Dnes, vďaka rýchlemu rozvoju mikroelektroniky, komunikačných kanálov, internetových technológií a umelej inteligencie, sa téma inteligentných domácností stáva čoraz aktuálnejšou. Ľudské bývanie prešlo od doby kamennej významnými zmenami a v ére priemyselnej revolúcie 4.0 a internetu vecí sa stalo pohodlným, funkčným a bezpečným. Na trh prichádzajú riešenia, ktoré premenia byt či vidiecky dom na komplexné informačné systémy ovládané odkiaľkoľvek na svete pomocou smartfónu. Interakcia medzi človekom a strojom už navyše nevyžaduje znalosť programovacích jazykov – vďaka algoritmom rozpoznávania reči a syntézy človek hovorí do inteligentného domu vo svojom rodnom jazyku.

Niektoré systémy inteligentnej domácnosti, ktoré sú v súčasnosti na trhu, sú logickým vývojom cloudových video monitorovacích systémov, ktorých vývojári si uvedomili potrebu komplexného riešenia nielen pre monitorovanie, ale aj pre správu vzdialených objektov.

Predstavujeme vám sériu troch článkov, ktoré vám povedia o všetkých hlavných komponentoch cloudového inteligentného domáceho systému, ktorý autor osobne vyvinul a uviedol do prevádzky. Prvý článok je venovaný koncovým klientskym zariadeniam inštalovaným vo vnútri inteligentnej domácnosti, druhý architektúre cloudového úložiska a systému spracovania dát a napokon tretí klientskej aplikácii na správu systému na mobilných a stacionárnych zariadeniach.

Vybavenie inteligentnej domácnosti

Najprv si povedzme, ako z obyčajného bytu, chaty či chalupy urobiť inteligentný dom. Na tento účel je spravidla potrebné umiestniť do domu nasledujúce vybavenie:

  1. senzory, ktoré merajú rôzne parametre prostredia;
  2. akčné členy pôsobiace na vonkajšie predmety;
  3. regulátor, ktorý vykonáva výpočty v súlade s meraniami senzorov a zabudovanou logikou a vydáva príkazy akčným členom.

Nasledujúci obrázok znázorňuje schému inteligentného domu, na ktorom sú senzory úniku vody (1) v kúpeľni, teploty (2) a osvetlenia (3) v spálni, inteligentná zásuvka (4) v kuchyni a video monitorovacia kamera (5) na chodbe.

Cloud Smart Home. Časť 1: Regulátor a snímače

V súčasnosti sú široko používané bezdrôtové senzory pracujúce pomocou protokolov RF433, Z-Wave, ZigBee, Bluetooth a WiFi. Ich hlavnými výhodami sú jednoduchá inštalácia a používanie, ako aj nízke náklady a spoľahlivosť, pretože Výrobcovia sa snažia dostať svoje zariadenia na masový trh a sprístupniť ich bežnému používateľovi.

Senzory a akčné členy sú spravidla pripojené cez bezdrôtové rozhranie k ovládaču inteligentnej domácnosti (6) - špecializovanému mikropočítaču, ktorý spája všetky tieto zariadenia do jednej siete a riadi ich.

Niektoré riešenia však môžu kombinovať snímač, akčný člen a ovládač súčasne. Napríklad inteligentná zástrčka môže byť naprogramovaná tak, aby sa zapínala alebo vypínala podľa plánu a cloudová kamera na sledovanie videa môže nahrávať video na základe signálu detektora pohybu. V najjednoduchších prípadoch sa zaobídete bez samostatného ovládača, ale na vytvorenie flexibilného systému s mnohými scenármi je to nevyhnutné.

Na pripojenie ovládača inteligentnej domácnosti do globálnej siete možno použiť bežný internetový router (7), ktorý sa už dávno stal bežným domácim spotrebičom v každej domácnosti. Tu je ďalší argument v prospech ovládača inteligentnej domácnosti – ak dôjde k strate pripojenia k internetu, inteligentná domácnosť bude naďalej fungovať normálne vďaka logickému bloku uloženému vo vnútri ovládača, a nie v cloudovej službe.

Inteligentný domáci ovládač

Ovládač pre cloudový inteligentný domáci systém, o ktorom sa hovorí v tomto článku, je vyvinutý na základe jednodoskového mikropočítača Raspberry Pi 3 model B+, ktorý bol vydaný v marci 2018 a má dostatočné zdroje a výkon pre úlohy inteligentnej domácnosti. Obsahuje štvorjadrový procesor Cortex-A53 založený na 64-bitovej architektúre ARMv8-A, taktovaný na 1.4 GHz, ako aj 1 GB RAM, Wi-Fi 802.11ac, Bluetooth 4.2 a gigabitový ethernetový adaptér fungujúci cez USB 2.0. .

Cloud Smart Home. Časť 1: Regulátor a snímače

Zostavenie ovládača je veľmi jednoduché - mikropočítač (1) sa inštaluje do plastového puzdra (2), následne sa vloží 8 GB pamäťová karta vo formáte microSD so softvérom (3) a sieťový ovládač USB Z-Wave (4). zodpovedajúce sloty. Ovládač inteligentnej domácnosti sa pripája k napájaniu cez 5V, 2.1A napájací adaptér (5) a USB - micro-USB kábel (6). Každý ovládač má jedinečné identifikačné číslo, ktoré sa pri prvom spustení zapíše do konfiguračného súboru a je potrebné na interakciu s cloudovými službami inteligentnej domácnosti.

Softvér ovládača inteligentnej domácnosti bol vyvinutý autorom tohto článku na základe operačného systému Linux Raspbian Stretch. Pozostáva z týchto hlavných subsystémov:

  • serverový proces pre interakciu s inteligentným domácim zariadením a cloudom;
  • grafické užívateľské rozhranie pre nastavenie konfigurácie a prevádzkových parametrov regulátora;
  • databázu na uloženie konfigurácie ovládača.

Cloud Smart Home. Časť 1: Regulátor a snímače

databázy inteligentný domáci ovládač je implementovaný na základe vstavaného DBMS SQLite a je to súbor na SD karte so systémovým softvérom. Slúži ako úložisko pre konfiguráciu ovládača – informácie o pripojenom zariadení a jeho aktuálnom stave, blok logických produkčných pravidiel, ako aj informácie, ktoré vyžadujú indexovanie (napríklad názvy súborov lokálneho videoarchívu). Po reštarte ovládača sa tieto informácie uložia, čo umožňuje obnovenie ovládača v prípade výpadku napájania.

Grafické rozhranie inteligentný domáci ovládač vyvinutý v PHP 7 pomocou mikrorámca štíhly. Za spustenie aplikácie je zodpovedný webový server. lighttpd, často používaný vo vstavaných zariadeniach kvôli jeho dobrému výkonu a nízkym nárokom na zdroje.

Cloud Smart Home. Časť 1: Regulátor a snímače
(kliknutím na obrázok sa otvorí vo väčšom rozlíšení)

Hlavnou funkciou grafického rozhrania je pripojenie zariadenia inteligentnej domácnosti (IP sledovacie kamery a senzory) k ovládaču. Webová aplikácia načíta konfiguráciu a aktuálny stav ovládača a zariadení k nemu pripojených z databázy SQLite. Na zmenu konfigurácie radiča odosiela riadiace príkazy vo formáte JSON cez rozhranie RESTful API procesu servera.

Proces servera

Proces servera - kľúčový komponent, ktorý vykonáva všetky hlavné práce na automatizácii informačných procesov, ktoré tvoria základ inteligentného domu: prijímanie a spracovanie senzorických údajov, vydávanie kontrolných akcií v závislosti od zabudovanej logiky. Účelom serverového procesu je interagovať so zariadením inteligentnej domácnosti, vykonávať produkčné logické pravidlá, prijímať a spracovávať príkazy z grafického rozhrania a cloudu. Proces servera v uvažovanom ovládači inteligentnej domácnosti je implementovaný ako viacvláknová aplikácia vyvinutá v C++ a spustená ako samostatná služba systemd operačný systém Linux Raspbian.

Hlavné bloky procesu servera sú:

  1. správca správ;
  2. IP kamerový server;
  3. Server zariadenia Z-Wave;
  4. Server produkčných logických pravidiel;
  5. Databáza konfigurácie kontroléra a bloku logických pravidiel;
  6. RESTful API server pre interakciu s grafickým rozhraním;
  7. Klient MQTT na interakciu s cloudom.

Procesné bloky servera sú implementované ako samostatné vlákna, medzi ktorými sa informácie prenášajú vo forme správ vo formáte JSON (alebo dátových štruktúr reprezentujúcich tento formát v pamäti procesu).

Cloud Smart Home. Časť 1: Regulátor a snímače

Hlavnou súčasťou serverového procesu je správca správ, ktorý smeruje správy JSON do všetkých blokov procesov servera. Typy polí informácií správy JSON a hodnoty, ktoré môžu akceptovať, sú uvedené v tabuľke:

typ zariadenia
protokol
messageType
deviceState
povel

izbu
onvif
senzorové údaje
on
streamovanie (zapnuté/vypnuté)

senzor
zwave
povel
preč
nahrávanie (zapnuté/vypnuté)

efektor
MQTT
businessLogicRule
streamovanie (zapnuté/vypnuté)
evice (Pridať/Odstrániť)

businessLogic
konfiguračné údaje
nahrávanie (zapnuté/vypnuté)

Bluetooth
deviceState
chyba

wifi

rf

Napríklad správa z kamerového detektora pohybu vyzerá takto:

{
	"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"
}

Výrobná logika

Na prijatie alebo odoslanie správy od dispečera sa procesný blok servera prihlási na odber správ určitého typu. Predplatné je produkčné logické pravidlo tohto typu "Ak potom...", prezentované vo formáte JSON a odkaz na obslužný program správ v bloku procesu servera. Ak chcete napríklad povoliť serveru IP kamery prijímať príkazy z grafického používateľského rozhrania a cloudu, musíte pridať nasledujúce pravidlo:

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

Ak sú splnené podmienky uvedené v predchodca (ľavá strana) pravidlá sú pravdivé, potom je splnený následné (pravá strana) pravidiel a obsluha získa prístup k telu správy JSON. Predchodca podporuje logické operátory, ktoré porovnávajú páry kľúč – hodnota JSON:

  1. rovná sa "rovná sa";
  2. nerovná sa "nerovná sa";
  3. menej "menej";
  4. viac "väčšie";
  5. menšie alebo rovné "menej_alebo_rovnaké";
  6. väčšia alebo rovná "väčšia_alebo_rovná".

Výsledky porovnania môžu byť navzájom spojené pomocou operátorov booleovskej algebry:

  1. a "a"
  2. ALEBO "alebo";
  3. NIE "nie".

Zápisom operátorov a operandov v poľskom zápise teda môžete vytvárať pomerne zložité podmienky s veľkým množstvom parametrov.

Presne rovnaký mechanizmus, založený na správach JSON a produkčných pravidlách vo formáte JSON, sa používa v bloku servera produkčnej logiky na reprezentáciu vedomostí a vykonávanie logických záverov pomocou senzorických údajov zo senzorov inteligentnej domácnosti.

Používateľ si pomocou mobilnej aplikácie vytvára scenáre, podľa ktorých má inteligentná domácnosť fungovať. Napríklad: „Ak sa spustí senzor otvárania predných dverí, zapnite svetlo na chodbe“. Aplikácia načíta identifikátory senzorov (senzor otvorenia) a aktorov (inteligentná zásuvka alebo smart lampa) z databázy a vygeneruje logické pravidlo vo formáte JSON, ktoré sa odošle do ovládača inteligentnej domácnosti. Tomuto mechanizmu sa budeme podrobnejšie venovať v treťom článku našej série, kde si povieme niečo o klientskej aplikácii na správu inteligentnej domácnosti.

Mechanizmus produkčnej logiky diskutovaný vyššie je implementovaný pomocou knižnice RapidJSON — SAX parser pre formát JSON v C++. Sekvenčné čítanie a analyzovanie radu produkčných pravidiel uľahčuje implementáciu funkcie porovnávania údajov v rámci predchádzajúcich:

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);
        }
    }
}

Tu pFact — štruktúra obsahujúca páry kľúč – hodnota zo správy JSON, m_Rules — reťazec produkčných pravidiel. Porovnanie prichádzajúcej správy a výrobného pravidla sa vykonáva vo funkcii reader.Parse(ruleStream, ruleHandler)Kde ruleHandler je objekt obsahujúci logiku booleovských a porovnávacích operátorov. sRuleId — jedinečný identifikátor pravidiel, vďaka ktorému je možné ukladať a upravovať pravidlá v databáze ovládačov inteligentnej domácnosti. m_pActions — pole s výsledkami logickej inferencie: správy JSON obsahujúce dôsledky zo základne pravidiel a odoslané ďalej správcovi správ, aby ich vlákna účastníkov mohli spracovať.

Výkon RapidJSON je porovnateľný s funkciou strlen()a minimálne požiadavky na systémové prostriedky umožňujú použitie tejto knižnice vo vstavaných zariadeniach. Použitie správ a logických pravidiel vo formáte JSON umožňuje implementovať flexibilný systém výmeny informácií medzi všetkými komponentmi ovládača inteligentnej domácnosti.

Z-Wave senzory a akčné členy

Hlavnou výhodou inteligentného domu je, že dokáže nezávisle merať rôzne parametre vonkajšieho prostredia a vykonávať užitočné funkcie v závislosti od situácie. Na tento účel sú k ovládaču inteligentnej domácnosti pripojené senzory a akčné členy. V aktuálnej verzii ide o bezdrôtové zariadenia fungujúce pomocou protokolu Z-Wave na špeciálne pridelenej frekvencii 869 MHz Pre Rusko. Na prevádzku sú spojené do sieťovej siete, ktorá obsahuje opakovače signálu na zvýšenie oblasti pokrytia. Zariadenia majú aj špeciálny režim šetrenia energie – väčšinu času trávia v režime spánku a informácie odosielajú až pri zmene ich stavu, čo môže výrazne predĺžiť životnosť vstavanej batérie.

Cloud Smart Home. Časť 1: Regulátor a snímače

Na trhu teraz nájdete pomerne veľké množstvo rôznych Z-Wave zariadení. Pozrime sa na niekoľko príkladov:

  1. Inteligentná zásuvka Zipato PAN16 dokáže merať nasledovné parametre: spotrebu elektriny (kWh), výkon (W), napätie (V) a prúd (A) v elektrickej sieti. Má tiež zabudovaný vypínač, ktorým môžete ovládať pripojený elektrický spotrebič;
  2. Senzor úniku Neo Coolcam detekuje prítomnosť rozliatej kvapaliny uzavretím kontaktov vzdialenej sondy;
  3. Dymový senzor Zipato PH-PSG01 sa spustí, keď sa častice dymu dostanú do komory analyzátora plynu;
  4. Pohybový senzor Neo Coolcam analyzuje infračervené žiarenie ľudského tela. Okrem toho je tu svetelný senzor (Lx);
  5. Multisenzor Philio PST02-A meria teplotu (°C), svetlo (%), otváranie dverí, prítomnosť osoby v miestnosti;
  6. Z-Wave USB Stick sieťový ovládač ZME E UZB1, ku ktorému sa pripájajú senzory.

Je veľmi dôležité, aby zariadenia a ovládač fungovali na rovnakej frekvencii, inak sa v momente pripojenia jednoducho neuvidia. K jednému sieťovému ovládaču Z-Wave je možné pripojiť až 232 zariadení, čo je celkom dosť pre byt alebo vidiecky dom. Na rozšírenie oblasti pokrytia siete v interiéri je možné použiť inteligentnú zásuvku ako opakovač signálu.

Cloud Smart Home. Časť 1: Regulátor a snímače

V procese servera inteligentného domáceho ovládača, o ktorom sme hovorili v predchádzajúcom odseku, je server Z-Wave zodpovedný za interakciu so zariadeniami Z-Wave. Na príjem informácií zo senzorov využíva knižnicu OpenZWave v C++, ktorý poskytuje rozhranie na interakciu so sieťovým USB ovládačom Z-Wave a pracuje s rôznymi senzormi a akčnými členmi. Hodnotu parametra prostredia nameranú senzorom zaznamenáva Z-Wave server vo forme správy JSON:

{
	"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"
}

Potom sa prepošle správcovi správ procesu servera, aby ho vlákna účastníkov mohli prijať. Hlavným predplatiteľom je produkčný logický server, ktorý sa zhoduje s hodnotami poľa správ v predchodcoch logických pravidiel. Výsledky inferencie obsahujúce riadiace príkazy sa posielajú späť do správcu správ a odtiaľ idú na server Z-Wave, ktorý ich dekóduje a odošle do ovládača USB siete Z-Wave. Potom vstupujú do aktuátora, ktorý mení stav environmentálnych objektov a inteligentný dom tak vykonáva užitočnú prácu.

Cloud Smart Home. Časť 1: Regulátor a snímače
(kliknutím na obrázok sa otvorí vo väčšom rozlíšení)

Pripojenie Z-Wave zariadení prebieha v grafickom rozhraní ovládača inteligentnej domácnosti. Ak to chcete urobiť, prejdite na stránku so zoznamom zariadení a kliknite na tlačidlo „Pridať“. Príkaz add cez rozhranie RESTful API vstupuje do procesu servera a správca správ ho potom odošle na server Z-Wave, ktorý prepne sieťový USB radič Z-Wave do špeciálneho režimu na pridávanie zariadení. Ďalej na zariadení Z-Wave musíte vykonať sériu rýchlych stlačení (3 stlačenia v priebehu 1,5 sekundy) servisného tlačidla. USB radič pripojí zariadenie k sieti a odošle informácie o ňom na Z-Wave server. To zase vytvorí nový záznam v databáze SQLite s parametrami nového zariadenia. Po zadanom časovom intervale sa grafické rozhranie vráti na stránku zoznamu zariadení Z-Wave, načíta informácie z databázy a zobrazí nové zariadenie v zozname. Každé zariadenie dostane svoj vlastný jedinečný identifikátor, ktorý sa používa v pravidlách výroby a pri práci v cloude. Činnosť tohto algoritmu je znázornená v diagrame UML:

Cloud Smart Home. Časť 1: Regulátor a snímače
(kliknutím na obrázok sa otvorí vo väčšom rozlíšení)

Pripojenie IP kamier

Cloudový inteligentný domáci systém, o ktorom sa hovorí v tomto článku, je upgrade cloudového video monitorovacieho systému, ktorý vyvinul aj autor, ktorý je na trhu už niekoľko rokov a má veľa inštalácií v Rusku.

V prípade cloudových video monitorovacích systémov je jedným z akútnych problémov obmedzený výber zariadení, s ktorými je možné integráciu vykonať. Softvér zodpovedný za pripojenie ku cloudu je nainštalovaný vo vnútri videokamery, čo okamžite kladie vážne nároky na jej hardvér – procesor a množstvo voľnej pamäte. To vysvetľuje najmä vyššiu cenu cloudových CCTV kamier v porovnaní s bežnými IP kamerami. Na získanie prístupu k súborovému systému kamier a všetkým potrebným vývojovým nástrojom je navyše potrebná zdĺhavá fáza rokovaní so spoločnosťami vyrábajúcimi CCTV kamery.

Cloud Smart Home. Časť 1: Regulátor a snímače

Na druhej strane všetky moderné IP kamery majú štandardné protokoly na interakciu s inými zariadeniami (najmä videorekordérmi). Použitie samostatného ovládača, ktorý sa pripája cez štandardný protokol a vysiela video streamy z IP kamier do cloudu, teda poskytuje významné konkurenčné výhody pre cloudové video monitorovacie systémy. Navyše, ak už má klient nainštalovaný video monitorovací systém založený na jednoduchých IP kamerách, je možné ho rozšíriť a premeniť na plnohodnotný cloudový inteligentný dom.

Najpopulárnejší protokol pre IP video monitorovacie systémy, teraz podporovaný všetkými výrobcami IP kamier bez výnimky, je Profil ONVIF S, ktorého špecifikácie existujú v jazyku popisu webových služieb wsdl. Používanie nástrojov zo sady nástrojov gSOAP Je možné generovať zdrojový kód pre služby, ktoré pracujú s IP kamerami:

$ 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

Výsledkom je súbor hlavičkových „*.h“ a zdrojových „*.cpp“ súborov v C++, ktoré je možné umiestniť priamo do aplikácie alebo samostatnej knižnice a skompilovať pomocou kompilátora GCC. Kvôli množstvu funkcií je kód veľký a vyžaduje dodatočnú optimalizáciu. Mikropočítač Raspberry Pi 3 model B+ má dostatočný výkon na vykonanie tohto kódu, ale ak je potrebné preniesť kód na inú platformu, je potrebné zvoliť správnu architektúru procesora a systémové prostriedky.

IP kamery, ktoré podporujú štandard ONVIF, sú pri prevádzke v lokálnej sieti pripojené k špeciálnej multicastovej skupine s adresou 239.255.255.250. Existuje protokol WS Discovery, ktorý umožňuje automatizovať vyhľadávanie zariadení v lokálnej sieti.

Grafické rozhranie ovládača inteligentnej domácnosti implementuje funkciu vyhľadávania IP kamier v PHP, čo je veľmi pohodlné pri interakcii s webovými službami prostredníctvom XML správ. Pri výbere položiek ponuky Zariadenia > IP kamery > Skenovanie Spustí sa algoritmus na vyhľadávanie IP kamier, ktorý zobrazí výsledok vo forme tabuľky:

Cloud Smart Home. Časť 1: Regulátor a snímače
(kliknutím na obrázok sa otvorí vo väčšom rozlíšení)

Keď do ovládača pridáte kameru, môžete určiť nastavenia, podľa ktorých bude interagovať s cloudom. Aj v tejto fáze je mu automaticky pridelený jedinečný identifikátor zariadenia, podľa ktorého ho možno neskôr v rámci cloudu jednoducho identifikovať.

Cloud Smart Home. Časť 1: Regulátor a snímače

Ďalej sa vygeneruje správa vo formáte JSON obsahujúca všetky parametre pridanej kamery a odošle sa do serverového procesu ovládača inteligentnej domácnosti prostredníctvom príkazu RESTful API, kde sa parametre kamery dekódujú a uložia do internej databázy SQLite. používa sa aj na spustenie nasledujúcich vlákien spracovania:

  1. vytvorenie RTSP spojenia na príjem video a audio streamov;
  2. prekódovanie zvuku z formátov G.711 mu-Law, G.711 A-Law, G.723 atď. do formátu AAC;
  3. prekódovanie video streamov vo formáte H.264 a zvuku vo formáte AAC do kontajnera FLV a ich prenos do cloudu prostredníctvom protokolu RTMP;
  4. nadviazanie spojenia s koncovým bodom detektora pohybu IP kamery prostredníctvom protokolu ONVIF a jeho periodické dopytovanie;
  5. periodické generovanie náhľadu miniatúr a jeho odosielanie do cloudu prostredníctvom protokolu MQTT;
  6. lokálne nahrávanie video a audio streamov vo forme samostatných súborov vo formáte MP4 na SD alebo Flash kartu inteligentného domáceho ovládača.

Cloud Smart Home. Časť 1: Regulátor a snímače

Na vytvorenie spojenia s kamerami, prekódovanie, spracovanie a nahrávanie video streamov v serverovom procese sa používajú funkcie z knižnice FFmpeg 4.1.0.

V experimente testovania výkonu boli k ovládaču pripojené 3 kamery:

  1. HiWatch DS-I114W (rozlíšenie - 720p, kompresný formát - H.264, bitrate - 1 Mb/s, zvuk G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (rozlíšenie - 1080p, kompresný formát - H.264, bitrate - 1 Mb/s, bez zvuku);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (rozlíšenie - 1080p, kompresný formát - H.264, bitrate - 1.5 Mb/s, zvuk AAC).

Cloud Smart Home. Časť 1: Regulátor a snímače

Všetky tri streamy boli súčasne výstupom do cloudu, prekódovanie zvuku sa vykonávalo iba z jednej kamery a nahrávanie lokálneho archívu bolo vypnuté. Zaťaženie procesora bolo približne 5 %, využitie RAM bolo 32 MB (na proces), 56 MB (celkovo vrátane OS).

K ovládaču inteligentnej domácnosti je teda možné pripojiť približne 20 - 30 kamier (v závislosti od rozlíšenia a bitovej rýchlosti), čo je dosť pre video monitorovací systém pre trojposchodovú chatu alebo malý sklad. Pre úlohy, ktoré vyžadujú vyšší výkon, môžete použiť nettop s viacjadrovým procesorom Intel a OS Linux Debian Sarge. Regulátor je momentálne v skúšobnej prevádzke a údaje o jeho výkone budú aktualizované.

Interakcia s cloudom

Inteligentná domácnosť založená na cloude ukladá používateľské údaje (merania videa a senzorov) do cloudu. Architektúre cloudového úložiska sa budeme podrobnejšie venovať v ďalšom článku našej série. Teraz si povieme niečo o rozhraní na prenos informačných správ z ovládača inteligentnej domácnosti do cloudu.

Stavy pripojených zariadení a merania senzorov sa prenášajú cez protokol MQTT, ktorý je často využívaný v projektoch internetu vecí vďaka svojej jednoduchosti a energetickej efektívnosti. MQTT využíva model klient-server, kde sa klienti prihlasujú na odber konkrétnych tém v rámci brokera a zverejňujú svoje správy. Sprostredkovateľ posiela správy všetkým účastníkom podľa pravidiel určených úrovňou QoS (Quality of Service):

  • QoS 0 - maximálne raz (bez záruky doručenia);
  • QoS 1 - aspoň raz (s potvrdením doručenia);
  • QoS 2 - presne raz (s dodatočným potvrdením doručenia).

V našom prípade používame Eclipse Mosquito. Názov témy je jedinečný identifikátor ovládača inteligentnej domácnosti. Klient MQTT v rámci serverového procesu sa prihlási na odber tejto témy a preloží do nej správy JSON prichádzajúce zo správcu správ. Naopak, správy od makléra MQTT preposiela správcovi správ, ktorý ich potom multiplexuje svojim odberateľom v rámci serverového procesu:

Cloud Smart Home. Časť 1: Regulátor a snímače

Na prenos správ o stave ovládača inteligentnej domácnosti sa používa mechanizmus uložených správ uchovávané správy protokol MQTT. To vám umožní správne sledovať načasovanie opätovného pripojenia počas výpadkov napájania.

Klient MQTT bol vyvinutý na základe implementácie knižnice Eclipse Paho v jazyku C++.

Mediálne prúdy H.264 + AAC sa odosielajú do cloudu prostredníctvom protokolu RTMP, kde je za ich spracovanie a ukladanie zodpovedný klaster mediálnych serverov. Aby bolo možné optimálne rozložiť záťaž v klastri a vybrať najmenej zaťažený mediálny server, ovládač inteligentnej domácnosti odošle predbežnú požiadavku do nástroja na vyrovnávanie zaťaženia cloudu a až potom odošle mediálny stream.

Záver

Článok skúmal jednu konkrétnu implementáciu inteligentného domáceho ovládača založeného na mikropočítači Raspberry Pi 3 B+, ​​ktorý dokáže prijímať, spracovávať informácie a ovládať zariadenia prostredníctvom protokolu Z-Wave, interagovať s IP kamerami prostredníctvom protokolu ONVIF a tiež si vymieňať dáta a príkazy s cloudovou službou prostredníctvom protokolov MQTT a RTMP. Produkčný logický engine bol vyvinutý na základe porovnania logických pravidiel a faktov prezentovaných vo formáte JSON.

Inteligentný domáci ovládač je momentálne v skúšobnej prevádzke na viacerých miestach v Moskve a Moskovskej oblasti.

Ďalšia verzia ovládača plánuje pripojenie ďalších typov zariadení (RF, Bluetooth, WiFi, káblové). Pre pohodlie používateľov sa postup pripojenia senzorov a IP kamier prenesie do mobilnej aplikácie. Existujú aj nápady na optimalizáciu procesného kódu servera a portovanie softvéru do operačného systému OpenWRT. To vám umožní ušetriť na samostatnom ovládači a preniesť funkcionalitu inteligentnej domácnosti na bežný domáci router.

Zdroj: hab.com

Pridať komentár