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

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

Dnes, díky rychlému rozvoji mikroelektroniky, komunikačních kanálů, internetových technologií a umělé inteligence, je téma chytrých domácností stále aktuálnější. Lidský domov prošel od doby kamenné významnými změnami a v éře průmyslové revoluce 4.0 a internetu věcí se stal pohodlným, funkčním a bezpečným. Na trh přicházejí řešení, která promění byt nebo venkovský dům v komplexní informační systémy ovládané odkudkoli na světě pomocí chytrého telefonu. Navíc pro interakci člověk-stroj již není potřeba znalost programovacích jazyků – díky algoritmům rozpoznávání řeči a syntézy člověk mluví s chytrým domem ve svém rodném jazyce.

Některé systémy chytré domácnosti, které jsou v současnosti na trhu, jsou logickým vývojem cloudových video monitorovacích systémů, jejichž vývojáři si uvědomili potřebu komplexního řešení nejen pro monitorování, ale také pro správu vzdálených objektů.

Vaši pozornost zveme na sérii tří článků, které budou hovořit o všech hlavních komponentách cloudového systému chytré domácnosti, které autor osobně vyvinul a uvedl do provozu. První článek je věnován koncovému klientskému zařízení instalovanému uvnitř chytré domácnosti, druhý je věnován architektuře cloudového úložiště a systému zpracování dat a konečně třetí článek je věnován klientské aplikaci pro správu systému na mobilních a stacionárních zařízeních.

Vybavení chytré domácnosti

Nejprve si povíme, jak z obyčejného bytu, dače nebo chaty udělat chytrý dům. K tomu je zpravidla nutné umístit do obydlí následující zařízení:

  1. senzory měřící různé parametry vnějšího prostředí;
  2. aktuátory působící na vnější předměty;
  3. regulátor, který provádí výpočty v souladu s měřeními senzorů a základní logiky a vydává příkazy akčním členům.

Následující obrázek ukazuje schéma chytrého domu, který obsahuje čidla úniku vody (1) v koupelně, čidla teploty (2) a osvětlení (3) v ložnici, chytrou zásuvku (4) v kuchyni a kameru (5) na chodbě.

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

V současné době jsou široce používány bezdrátové senzory pracující na protokolech RF433, Z-Wave, ZigBee, Bluetooth a WiFi. Jejich hlavními výhodami jsou snadná instalace a použití, stejně jako nízká cena a spolehlivost. výrobci se snaží dostat svá zařízení na masový trh a zpřístupnit je běžnému uživateli.

Senzory a akční členy jsou zpravidla připojeny přes bezdrátové rozhraní k ovladači chytré domácnosti (6) - specializovanému mikropočítači, který spojuje všechna tato zařízení do jedné sítě a řídí je.

Některá řešení však mohou kombinovat senzor, akční člen a ovladač zároveň. Například chytrou zástrčku lze naprogramovat tak, aby se zapínala nebo vypínala podle plánu, a cloudová video monitorovací kamera může nahrávat video na signál detektoru pohybu. V nejjednodušších případech se obejdete bez samostatného ovladače, ale pro vytvoření flexibilního systému s mnoha scénáři je to nutné.

Pro připojení ovladače chytré domácnosti ke globální síti lze použít běžný internetový router (7), který se již dlouho stal známým domácím spotřebičem v každé domácnosti. Ve prospěch ovladače chytré domácnosti hovoří i další argument – ​​pokud dojde ke ztrátě připojení k internetu, pak bude chytrá domácnost nadále normálně fungovat díky logickému bloku uloženému uvnitř ovladače, a nikoli v cloudové službě.

ovladač chytré domácnosti

Ovladač pro cloudový systém chytré domácnosti, o kterém pojednává tento článek, je vyvinut na bázi jednodeskového mikropočítače Raspberry Pi 3 model B+, který byl vydán v březnu 2018 a má dostatek zdrojů a výkonu pro úkoly chytré domácnosti. Obsahuje čtyřjádrový procesor Cortex-A53 na 64bitové architektuře ARMv8-A, taktovaný na 1.4 GHz, dále 1 GB RAM, Wi-Fi 802.11ac, Bluetooth 4.2 a gigabitový ethernetový adaptér fungující přes sběrnici USB 2.0.

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

Sestavení ovladače je velmi jednoduché - mikropočítač (1) je instalován v plastovém pouzdře (2), dále je do příslušných slotů instalována 8GB microSD paměťová karta se softwarem (3) a USB Z-Wave síťový ovladač (4). Ovladač chytré domácnosti se připojuje k elektrické síti pomocí napájecího adaptéru 5V, 2.1A (5) a kabelu USB-micro-USB (6). Každý ovladač má jedinečné identifikační číslo, které je zapsáno do konfiguračního souboru při prvním spuštění a je nutné pro interakci s cloudovými službami chytré domácnosti.

Software pro ovládání chytré domácnosti byl vyvinut autorem tohoto článku na základě operačního systému Linux Raspbian Stretch. Skládá se z následujících hlavních subsystémů:

  • serverový proces pro interakci se zařízením chytré domácnosti a cloudem;
  • grafické uživatelské rozhraní pro nastavení konfigurace a provozních parametrů regulátoru;
  • databáze pro uložení konfigurace řadiče.

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

Databáze inteligentní domácí ovladač je implementován na základě vestavěného DBMS SQLite a je to soubor na SD kartě se systémovým softwarem. Slouží jako úložiště konfigurace kontroléru — informace o připojeném zařízení a jeho aktuálním stavu, blok logických produkčních pravidel a také informace vyžadující indexaci (například názvy souborů lokálního videoarchivu). Při restartu ovladače se tyto informace uloží, což umožňuje obnovit funkčnost ovladače v případě výpadků napájení.

GUI inteligentní domácí ovladač je vyvinut v PHP 7 pomocí mikrorámce Štíhlý. Za běh aplikace je zodpovědný webový server. lighttpd, který se často používá ve vestavěných zařízeních kvůli svému dobrému výkonu a nízkým nárokům na zdroje.

Cloud Smart Home. Část 1: Regulátor a snímače
(kliknutím na obrázek otevřete ve větším rozlišení)

Hlavní funkcí GUI je připojení zařízení chytré domácnosti (IP kamery a senzory) k ovladači. Webová aplikace načítá konfiguraci a aktuální stav regulátoru a zařízení k němu připojených z databáze SQLite. Ke změně konfigurace řadiče odešle řídicí příkazy ve formátu JSON prostřednictvím RESTful API procesu serveru.

Proces serveru

Proces serveru - klíčová součást, která provádí veškerou hlavní práci na automatizaci informačních procesů, které tvoří základ chytré domácnosti: přijímání a zpracovávání senzorických dat, vydávání kontrolních akcí v závislosti na základní logice. Účelem serverového procesu je interagovat se zařízením chytré domácnosti, provádět pravidla produkční logiky, přijímat a zpracovávat příkazy z grafického rozhraní a cloudu. Serverový proces v uvažovaném ovladači chytré domácnosti je implementován jako vícevláknová aplikace vyvinutá v C++ a spuštěná jako samostatná služba. systemd operační systém Linux Raspbian.

Hlavní bloky procesu serveru jsou:

  1. Správce zpráv;
  2. IP kamerový server;
  3. Server zařízení Z-Wave;
  4. Server produkčních logických pravidel;
  5. Databáze konfigurace regulátoru a bloku logických pravidel;
  6. RESTful API server pro interakci s grafickým rozhraním;
  7. Klient MQTT pro interakci s cloudem.

Procesní bloky serveru jsou implementovány jako samostatné toky, mezi nimiž jsou informace přenášeny ve formě zpráv ve formátu JSON (nebo datových struktur reprezentujících tento formát v paměti procesu).

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

Hlavní součástí procesu serveru je správce zpráv, který směruje zprávy JSON do všech bloků v procesu serveru. Typy informačních polí ve zprávě JSON a hodnoty, které mohou nabývat, jsou uvedeny v tabulce:

typ zařízení
protokol
messageType
deviceState
příkaz

pokoj
onvif
senzorová data
on
streamování (zapnuto/vypnuto)

senzor
zwave
příkaz
off
nahrávání (zapnuto/vypnuto)

efektor
MQTT
businessLogicRule
streamování (zapnuto/vypnuto)
zařízení (přidat/odebrat)

obchodní logika
konfigurační data
nahrávání (zapnuto/vypnuto)

bluetooth
deviceState
chyba

wifi

rf

Například zpráva z detektoru pohybu kamery vypadá 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

Pro příjem nebo odeslání zprávy od dispečera se procesní blok serveru přihlásí k odběru zpráv určitého typu. Předplatné je produkční logické pravidlo tohoto typu "Pokud...tak...", reprezentovaný ve formátu JSON, a odkazem na obsluhu zpráv uvnitř bloku procesu serveru. Například, aby server IP kamery mohl přijímat příkazy z GUI a cloudu, musíte přidat následující pravidlo:

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

Pokud jsou splněny podmínky uvedené v předchůdce (levá strana) pravidla jsou tedy pravdivá následný (pravá strana) a handler získá přístup k tělu zprávy JSON. Předchůdce podporuje logické operátory, které porovnávají páry klíč–hodnota JSON:

  1. je rovno "rovná se";
  2. není rovno "není se rovná";
  3. méně než "méně";
  4. více "větší";
  5. menší nebo rovno "méně_nebo_rovno";
  6. větší nebo rovno "větší_nebo_rovný".

Výsledky srovnání lze propojit pomocí operátorů booleovské algebry:

  1. A "a";
  2. OR "nebo";
  3. NE "ne".

Při psaní operátorů a operandů v polské notaci lze tedy vytvářet poměrně složité podmínky s velkým množstvím parametrů.

Úplně stejný mechanismus, založený na zprávách JSON a produkčních pravidlech ve formátu JSON, se používá v bloku serveru produkční logiky k reprezentaci znalostí a provádění dedukcí pomocí dat senzorů ze senzorů chytré domácnosti.

Uživatel pomocí mobilní aplikace vytváří scénáře, podle kterých má chytrá domácnost fungovat. Například: "Pokud se spustí senzor pro otevření předních dveří, rozsviťte světlo na chodbě". Aplikace načte z databáze identifikátory senzorů (senzor otevření) a aktorů (chytrá zásuvka nebo chytrá lampa) a vygeneruje logické pravidlo ve formátu JSON, které se odešle do ovladače chytré domácnosti. Podrobněji se tomuto mechanismu budeme věnovat ve třetím článku našeho cyklu, kde si povíme něco o klientské aplikaci pro správu chytré domácnosti.

Mechanismus produkční logiky diskutovaný výše je implementován pomocí knihovny Rychlý JSON — SAX-parser formátu JSON v jazyce C++. Sekvenční čtení a analýza řady produkčních pravidel usnadňuje implementaci funkce porovnávání dat v rámci předchozích:

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

Zde pFact - struktura obsahující páry klíč-hodnota ze zprávy JSON, m_Pravidla — řetězcové pole produkčních pravidel. Párování příchozí zprávy a produkčního pravidla se provádí ve funkci reader.Parse(ruleStream, ruleHandler)Kde ruleHandler je objekt obsahující logiku booleovských operátorů a operátorů porovnání. sRuleId - jedinečný identifikátor pravidla, díky kterému je možné ukládat a upravovat pravidla uvnitř databáze ovladačů chytré domácnosti. m_pActions - pole s výsledky odvození: zprávy JSON obsahující důsledky ze základny pravidel a zasílané dále správci zpráv, aby je mohla zpracovat předplatitelská vlákna.

Výkon RapidJSON je srovnatelný s funkcí strlen()a minimální požadavky na systémové prostředky umožňují použití této knihovny ve vestavěných zařízeních. Použití zpráv a logických pravidel ve formátu JSON umožňuje implementovat flexibilní systém výměny informací mezi všemi komponentami ovladače chytré domácnosti.

Senzory a akční členy Z-Wave

Hlavní výhodou chytré domácnosti je, že dokáže nezávisle měřit různé parametry vnějšího prostředí a plnit užitečné funkce v závislosti na situaci. K tomu jsou k ovladači chytré domácnosti připojeny senzory a akční členy. V aktuální verzi se jedná o bezdrátová zařízení fungující pod protokolem Z-Wave na vyhrazené frekvenci 869 MHz Pro Rusko. Pro svou práci jsou spojeny do mesh sítě, ve které jsou opakovače signálu, aby se zvětšila oblast pokrytí. Zařízení mají také speciální režim úspory energie – většinu času tráví v režimu spánku a informace odesílají až při změně jejich stavu, což může výrazně prodloužit životnost vestavěné baterie.

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

Dnes je na trhu celá řada různých Z-Wave zařízení. Jako příklad zvažte několik:

  1. Chytrá zásuvka Zipato PAN16 dokáže měřit tyto parametry: spotřebu elektrické energie (kWh), výkon (W), napětí (V) a proud (A) v síti. Má také zabudovaný vypínač, kterým můžete ovládat připojený elektrický spotřebič;
  2. Senzor úniku Neo Coolcam detekuje přítomnost rozlité kapaliny uzavřením kontaktů vzdálené sondy;
  3. Kouřový detektor Zipato PH-PSG01 se spustí, když částice kouře vniknou do komory analyzátoru plynu;
  4. Pohybový senzor Neo Coolcam analyzuje infračervené záření lidského těla. Navíc je zde světelný senzor (Lx);
  5. Multisenzor Philio PST02-A měří teplotu (°C), osvětlení (%), otevření dveří, přítomnost člověka v místnosti;
  6. Síťový ovladač Z-Wave USB Stick ZME E UZB1, ke kterému se připojují čidla.

Je velmi důležité, aby zařízení a ovladač pracovaly na stejné frekvenci, jinak se jednoduchým způsobem v okamžiku připojení neuvidí. K jednomu síťovému ovladači Z-Wave lze připojit až 232 zařízení, což je docela dost pro byt nebo venkovský dům. Pro rozšíření pokrytí sítě v interiéru lze jako opakovač signálu použít chytrou zásuvku.

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

V procesu serveru inteligentního domácího ovladače popsaného v předchozím odstavci je Z-Wave server zodpovědný za interakci se Z-Wave zařízeními. K získávání informací ze senzorů využívá knihovnu OpenZWave v C++, který poskytuje rozhraní pro interakci se síťovým USB řadičem Z-Wave a pracuje s řadou senzorů a akčních členů. Hodnota parametru prostředí naměřená senzorem je zapsána serverem Z-Wave jako zpráva 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"
}

Poté je odeslána do správce zpráv procesu serveru, aby je mohla přijímat vlákna předplatitelů. Primárním předplatitelem je server produkční logiky, který odpovídá hodnotám pole zpráv v předchůdcích logických pravidel. Výsledky odvození obsahující řídicí příkazy jsou odeslány zpět do správce zpráv a odtud do Z-Wave serveru, který je dekóduje a odešle do USB řadiče sítě Z-Wave. Poté se dostanou do výkonného zařízení, které změní stav objektů ve vnějším prostředí, a chytrá domácnost tak odvede užitečnou práci.

Cloud Smart Home. Část 1: Regulátor a snímače
(kliknutím na obrázek otevřete ve větším rozlišení)

Připojení Z-Wave zařízení se provádí v grafickém rozhraní ovladače chytré domácnosti. Chcete-li to provést, přejděte na stránku se seznamem zařízení a klikněte na tlačítko "Přidat". Příkaz add přes rozhraní RESTful API se dostane do procesu serveru a je poté odeslán správcem zpráv na server Z-Wave, který uvede síťový ovladač Z-Wave USB do speciálního režimu pro přidávání zařízení. Dále na zařízení Z-Wave musíte provést sérii rychlých stisknutí (3 stisknutí během 1,5 sekundy) servisního tlačítka. USB řadič připojí zařízení k síti a odešle o něm informace na Z-Wave server. To zase vytvoří nový záznam v databázi SQLite s parametry nového zařízení. Grafické rozhraní se po zadaném časovém intervalu vrátí na stránku se seznamem zařízení Z-Wave, načte informace z databáze a zobrazí nové zařízení v seznamu. Každé zařízení zároveň dostává svůj jedinečný identifikátor, který se používá v pravidlech produkčního vyvozování a při práci v cloudu. Činnost tohoto algoritmu je znázorněna v diagramu UML:

Cloud Smart Home. Část 1: Regulátor a snímače
(kliknutím na obrázek otevřete ve větším rozlišení)

Připojení IP kamer

Cloudový inteligentní domácí systém, o kterém se pojednává v tomto článku, je upgrade cloudového video monitorovacího systému, také vyvinutého autorem, který je na trhu již několik let a má mnoho instalací v Rusku.

U cloudových video monitorovacích systémů je jedním z akutních problémů omezený výběr zařízení, se kterým lze integraci provést. Software zodpovědný za připojení ke cloudu je nainstalován uvnitř videokamery, což okamžitě klade vážné požadavky na její hardwarové vytížení - procesor a množství volné paměti. To vysvětluje především vyšší cenu cloudových sledovacích kamer ve srovnání s běžnými IP kamerami. Kromě toho je pro získání přístupu k souborovému systému kamery a všem nezbytným vývojovým nástrojům vyžadována zdlouhavá fáze vyjednávání se společnostmi zabývajícími se CCTV kamerami.

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

Na druhou stranu všechny moderní IP kamery mají standardní protokoly pro interakci s jiným zařízením (zejména videorekordéry). Použití samostatného ovladače, který se připojuje prostřednictvím standardního protokolu a vysílá video streamy z IP kamer do cloudu, tedy poskytuje významné konkurenční výhody pro cloudové video monitorovací systémy. Navíc, pokud klient již nainstaloval video monitorovací systém založený na jednoduchých IP kamerách, je možné jej rozšířit a přeměnit jej na plnohodnotnou cloudovou inteligentní domácnost.

Nejpopulárnější protokol pro IP video monitorovací systémy, nyní podporovaný všemi výrobci IP kamer bez výjimky, je Profil ONVIF S, jehož specifikace existují v jazyce popisu webových služeb wsdl. Použití utilit ze sady nástrojů gSOAP je možné vygenerovat zdrojový kód služeb, které 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ýsledkem je sada hlavičkových souborů "*.h" a zdrojových souborů "*.cpp" v jazyce C++, které lze umístit přímo do aplikace nebo samostatné knihovny a zkompilovat pomocí kompilátoru GCC. Vzhledem k mnoha funkcím je kód velký a vyžaduje další optimalizaci. Mikropočítač Raspberry Pi 3 model B+ má dostatek výkonu k provedení tohoto kódu, ale v případě, že bude nutné kód přenést na jinou platformu, je nutné zvolit správnou architekturu procesoru a systémové prostředky.

IP kamery, které podporují standard ONVIF, jsou při provozu v lokální síti připojeny ke speciální multicastové skupině s adresou 239.255.255.250. Existuje protokol WS Discovery, který umožňuje automatizovat vyhledávání zařízení v místní síti.

V grafickém rozhraní ovladače chytré domácnosti je implementována funkce vyhledávání IP kamer v jazyce PHP, což je velmi pohodlné při interakci s webovými službami prostřednictvím XML zpráv. Při výběru položek nabídky Zařízení > IP kamery > Skenovat spustí se algoritmus pro vyhledávání IP kamer, který zobrazí výsledek ve formě tabulky:

Cloud Smart Home. Část 1: Regulátor a snímače
(kliknutím na obrázek otevřete ve větším rozlišení)

Při přidávání kamery do ovladače můžete určit nastavení, podle kterého bude komunikovat s cloudem. Také v této fázi je mu automaticky přidělen jedinečný identifikátor zařízení, podle kterého může být v budoucnu v cloudu snadno identifikován.

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

Dále je vygenerována zpráva ve formátu JSON obsahující všechny parametry přidané kamery a odeslána do serverového procesu ovladače chytré domácnosti prostřednictvím příkazu RESTful API, kde jsou parametry kamery dekódovány a uloženy v interní databázi SQLite a jsou také použity ke spuštění následujících procesních vláken:

  1. vytvoření RTSP spojení pro příjem video a audio streamů;
  2. překódování zvuku z G.711 mu-Law, G.711 A-Law, G.723 atd. do formátu AAC;
  3. překódování video streamů ve formátu H.264 a zvuku ve formátu AAC do kontejneru FLV a jeho přenos do cloudu prostřednictvím protokolu RTMP;
  4. Navázání spojení s koncovým bodem detektoru pohybu IP kamery pomocí protokolu ONVIF a jeho periodické dotazování;
  5. periodické generování náhledu náhledu (preview) a jeho odesílání do cloudu pomocí protokolu MQTT;
  6. lokální nahrávání video a audio streamů jako samostatných souborů ve formátu MP4 na SD nebo Flash kartu ovladače chytré domácnosti.

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

Pro navázání spojení s kamerami, překódování, zpracování a záznam video streamů v procesu serveru se používají funkce z knihovny FFmpeg 4.1.0.

V experimentu testování výkonu byly k ovladači připojeny 3 kamery:

  1. HiWatch DS-I114W (rozlišení - 720p, kompresní formát - H.264, přenosová rychlost - 1 Mb/s, zvuk G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (rozlišení - 1080p, kompresní formát - H.264, přenosová rychlost - 1 Mb/s, žádný zvuk);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (rozlišení - 1080p, kompresní formát - H.264, přenosová rychlost - 1.5 Mb/s, zvuk AAC).

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

Všechny tři streamy byly současně vysílány do cloudu, zvuk byl překódován pouze z jedné kamery a nahrávání místního archivu bylo zakázáno. Zatížení CPU bylo asi 5 %, využití RAM bylo 32 MB (na proces), 56 MB (celkem s OS).

K ovladači chytré domácnosti lze tedy připojit asi 20-30 kamer (v závislosti na rozlišení a datovém toku), což je dostatečné pro video monitorovací systém třípatrové chaty nebo malého skladu. V úlohách, kde je vyžadován vysoký výkon, můžete použít nettop s vícejádrovým procesorem Intel a Linux Debian Sarge. Regulátor je v současné době ve zkušebním provozu a údaje o výkonu jeho práce budou upřesněny.

Interakce s cloudem

Cloudová chytrá domácnost ukládá uživatelská data (měření videa a senzorů) do cloudu. Architektuře cloudového úložiště se budeme podrobněji věnovat v dalším článku našeho seriálu. Nyní si povíme něco o rozhraní pro přenos informačních zpráv z ovladače chytré domácnosti do cloudu.

Protokolem jsou přenášeny stavy připojených zařízení a měření senzorů MQTT, který je díky své jednoduchosti a energetické účinnosti často používán v projektech internetu věcí. MQTT používá model klient-server, kde se klienti přihlašují k odběru určitých témat v rámci brokera a publikují své zprávy. Broker posílá zprávy všem účastníkům podle pravidel určených úrovní QoS (Quality of Service):

  • QoS 0 - maximálně jednou (bez záruky doručení);
  • QoS 1 - alespoň jednou (s potvrzením doručení);
  • QoS 2 - přesně jednou (s dodatečným potvrzením doručení).

V našem případě je to broker MQTT Eclipse Mosquito. Název tématu je jedinečné ID ovladače chytré domácnosti. Klient MQTT uvnitř procesu serveru se přihlásí k odběru tohoto tématu a překládá do něj zprávy JSON přicházející od dispečera zpráv. A naopak, zprávy od brokera MQTT jsou předávány správci zpráv, který je pak multiplexuje svým předplatitelům uvnitř procesu serveru:

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

Pro zasílání zpráv o stavu ovladače chytré domácnosti se používá mechanismus uložených zpráv. uchované zprávy protokol MQTT. To vám umožní správně sledovat okamžiky opětovného připojení v případě výpadků napájení.

Klient MQTT byl vyvinut na základě implementace knihovny Eclipse Paho v C++.

Mediální streamy H.264 + AAC jsou odesílány do cloudu prostřednictvím protokolu RTMP, kde je za jejich zpracování a ukládání zodpovědný cluster mediálních serverů. Pro optimální rozložení zátěže v clusteru a výběr nejméně zatíženého mediálního serveru provede řadič chytré domácnosti předběžný požadavek na nástroj pro vyrovnávání zatížení cloudu a teprve poté odešle mediální stream.

Závěr

Článek se zabýval jednou konkrétní implementací ovladače chytré domácnosti založeného na mikropočítači Raspberry Pi 3 B+, ​​který dokáže přijímat, zpracovávat informace a ovládat zařízení pomocí protokolu Z-Wave, komunikovat s IP kamerami pomocí protokolu ONVIF a také si vyměňovat data a příkazy s cloudovou službou pomocí protokolů MQTT a RTMP. Produkční logický engine byl vyvinut na základě porovnání logických pravidel a faktů prezentovaných ve formátu JSON.

Nyní je ovladač pro inteligentní domácnost ve zkušebním provozu v několika zařízeních v Moskvě a Moskevské oblasti.

V další verzi ovladače se počítá s připojením zařízení jiných typů (RF, Bluetooth, WiFi, drátové). Pro pohodlí uživatelů bude postup připojení senzorů a IP kamer přenesen do mobilní aplikace. Existují také nápady na optimalizaci procesního kódu serveru a portování softwaru do operačního systému OpenWrt. Ušetříte tak na samostatném ovladači a přenesete funkcionalitu chytré domácnosti na běžný domácí router.

Zdroj: www.habr.com

Přidat komentář