Cloud Smart Home. Teil 1: Controller und Sensoren

Cloud Smart Home. Teil 1: Controller und Sensoren

Dank der rasanten Entwicklung von Mikroelektronik, KommunikationskanĂ€len, Internettechnologien und kĂŒnstlicher Intelligenz gewinnt das Thema Smart Home heute immer mehr an Relevanz. Das menschliche Zuhause hat seit der Steinzeit erhebliche VerĂ€nderungen erfahren und ist im Zeitalter der industriellen Revolution 4.0 und des Internets der Dinge komfortabel, funktional und sicher geworden. Es kommen Lösungen auf den Markt, die eine Wohnung oder ein Landhaus in komplexe Informationssysteme verwandeln, die von ĂŒberall auf der Welt per Smartphone gesteuert werden können. DarĂŒber hinaus sind fĂŒr die Mensch-Maschine-Interaktion keine Kenntnisse in Programmiersprachen mehr erforderlich – dank Spracherkennungs- und Synthesealgorithmen spricht ein Mensch mit einem Smart Home in seiner Muttersprache.

Einige derzeit auf dem Markt befindliche Smart-Home-Systeme sind eine logische Weiterentwicklung von Cloud-VideoĂŒberwachungssystemen, deren Entwickler den Bedarf an einer umfassenden Lösung nicht nur fĂŒr die Überwachung, sondern auch fĂŒr die Verwaltung entfernter Objekte erkannt haben.

Ihre Aufmerksamkeit wird auf eine Reihe von drei Artikeln gelenkt, in denen alle Hauptkomponenten des Cloud-Smart-Home-Systems behandelt werden, die vom Autor persönlich entwickelt und in Betrieb genommen wurden. Der erste Artikel befasst sich mit den im Smart Home installierten Client-EndgerĂ€ten, der zweite mit der Architektur des Cloud-Speicher- und Datenverarbeitungssystems und der dritte Artikel schließlich mit der Client-Anwendung zur Verwaltung des Systems auf mobilen und stationĂ€ren GerĂ€ten.

Smart-Home-AusrĂŒstung

Lassen Sie uns zunĂ€chst darĂŒber sprechen, wie Sie aus einer gewöhnlichen Wohnung, einem Sommerhaus oder einem Cottage ein Smart Home machen können. Hierzu ist es in der Regel erforderlich, folgende GerĂ€te in der Wohnung anzubringen:

  1. Sensoren, die verschiedene Parameter der Ă€ußeren Umgebung messen;
  2. Aktoren, die auf externe Objekte wirken;
  3. ein Controller, der Berechnungen entsprechend den Messungen der Sensoren und der zugrunde liegenden Logik durchfĂŒhrt und Befehle an die Aktoren ausgibt.

Die folgende Abbildung zeigt ein Diagramm eines Smart Homes, das Wasserlecksensoren (1) im Badezimmer, Temperatur- (2) und Beleuchtungssensoren (3) im Schlafzimmer, eine Smart-Steckdose (4) in der KĂŒche und eine VideoĂŒberwachung enthĂ€lt Kamera (5) im Flur.

Cloud Smart Home. Teil 1: Controller und Sensoren

Derzeit werden hÀufig drahtlose Sensoren verwendet, die mit den Protokollen RF433, Z-Wave, ZigBee, Bluetooth und WiFi arbeiten. Ihre Hauptvorteile sind einfache Installation und Verwendung sowie niedrige Kosten und ZuverlÀssigkeit. Hersteller streben danach, ihre GerÀte auf den Massenmarkt zu bringen und sie dem Durchschnittsbenutzer zugÀnglich zu machen.

Sensoren und Aktoren sind in der Regel ĂŒber eine drahtlose Schnittstelle mit dem Smart Home Controller (6) verbunden – einem speziellen Mikrocomputer, der alle diese GerĂ€te in einem einzigen Netzwerk vereint und steuert.

Einige Lösungen können jedoch gleichzeitig einen Sensor, einen Aktor und einen Controller kombinieren. Beispielsweise kann eine intelligente Steckdose so programmiert werden, dass sie sich nach einem Zeitplan ein- oder ausschaltet, und eine Cloud-VideoĂŒberwachungskamera kann Videos ĂŒber ein Bewegungsmeldersignal aufzeichnen. Im einfachsten Fall kann auf einen separaten Controller verzichtet werden, fĂŒr den Aufbau eines flexiblen Systems mit vielen Szenarien ist dieser jedoch notwendig.

Um den Smart-Home-Controller mit dem globalen Netzwerk zu verbinden, kann ein gewöhnlicher Internet-Router (7) verwendet werden, der lĂ€ngst zu einem vertrauten HaushaltsgerĂ€t in jedem Haushalt geworden ist. Es gibt noch ein weiteres Argument fĂŒr den Smart-Home-Controller: Wenn die Verbindung zum Internet unterbrochen wird, funktioniert das Smart Home dank des im Controller und nicht im Cloud-Dienst gespeicherten Logikblocks normal weiter.

Smart-Home-Controller

Der in diesem Artikel besprochene Controller fĂŒr das Cloud-Smart-Home-System wurde auf Basis eines Single-Board-Mikrocomputers entwickelt Raspberry Pi 3 Modell B+, das im MĂ€rz 2018 veröffentlicht wurde und ĂŒber genĂŒgend Ressourcen und Leistung fĂŒr Smart-Home-Aufgaben verfĂŒgt. Es umfasst einen Quad-Core-Cortex-A53-Prozessor auf einer 64-Bit-ARMv8-A-Architektur, getaktet mit 1.4 GHz, sowie 1 GB RAM, Wi-Fi 802.11ac, Bluetooth 4.2 und einen Gigabit-Ethernet-Adapter, der ĂŒber USB 2.0 betrieben wird Bus.

Cloud Smart Home. Teil 1: Controller und Sensoren

Der Zusammenbau des Controllers ist denkbar einfach: Der Mikrocomputer (1) wird in ein KunststoffgehĂ€use (2) eingebaut, anschließend werden eine 8 GB microSD-Speicherkarte mit Software (3) und ein USB-Z-Wave-Netzwerkcontroller (4) eingebaut die entsprechenden SteckplĂ€tze. Der Smart Home Controller wird ĂŒber ein 5V, 2.1A Netzteil (5) und ein USB-Micro-USB-Kabel (6) an das Stromnetz angeschlossen. Jeder Controller verfĂŒgt ĂŒber eine eindeutige Identifikationsnummer, die beim ersten Start in die Konfigurationsdatei geschrieben wird und fĂŒr die Interaktion mit Cloud-Smart-Home-Diensten erforderlich ist.

Die Smart-Home-Controller-Software wurde vom Autor dieses Artikels auf Basis des Betriebssystems entwickelt Linux Raspbian-Stretch. Es besteht aus den folgenden Hauptsubsystemen:

  • ein Serverprozess zur Interaktion mit Smart-Home-GerĂ€ten und der Cloud;
  • grafische BenutzeroberflĂ€che zum Einstellen der Konfigurations- und Betriebsparameter des Controllers;
  • Datenbank zum Speichern der Controller-Konfiguration.

Cloud Smart Home. Teil 1: Controller und Sensoren

Datenbank Der Smart-Home-Controller wird auf Basis eines eingebetteten DBMS implementiert SQLite und ist eine Datei auf der SD-Karte mit Systemsoftware. Es dient als Controller-Konfigurationsspeicher – Informationen ĂŒber die angeschlossenen GerĂ€te und deren aktuellen Status, ein Block logischer Produktionsregeln sowie Informationen, die indiziert werden mĂŒssen (z. B. Dateinamen lokaler Videoarchive). Bei einem Neustart des Controllers werden diese Informationen gespeichert, sodass bei StromausfĂ€llen die FunktionalitĂ€t des Controllers wiederhergestellt werden kann.

GUI Der Smart-Home-Controller wird in PHP 7 mithilfe eines Mikroframeworks entwickelt Slim. Der Webserver ist fĂŒr die AusfĂŒhrung der Anwendung verantwortlich. Lichttpd, wird aufgrund seiner guten Leistung und geringen Ressourcenanforderungen hĂ€ufig in eingebetteten GerĂ€ten verwendet.

Cloud Smart Home. Teil 1: Controller und Sensoren
(Klicken Sie auf das Bild, um es in grĂ¶ĂŸerer Auflösung zu öffnen)

Die Hauptfunktion der GUI besteht darin, Smart-Home-GerĂ€te (IP-Kameras und Sensoren) mit dem Controller zu verbinden. Die Webanwendung liest die Konfiguration und den aktuellen Zustand des Controllers und der damit verbundenen GerĂ€te aus der SQLite-Datenbank. Um die Controller-Konfiguration zu Ă€ndern, sendet er Steuerbefehle im JSON-Format ĂŒber die RESTful-API des Serverprozesses.

Serverprozess

Serverprozess - eine SchlĂŒsselkomponente, die alle Hauptarbeiten zur Automatisierung von Informationsprozessen ĂŒbernimmt, die die Grundlage eines Smart Homes bilden: Empfang und Verarbeitung sensorischer Daten, Ausgabe von Steueraktionen abhĂ€ngig von der zugrunde liegenden Logik. Der Zweck des Serverprozesses besteht darin, mit Smart-Home-GerĂ€ten zu interagieren, Produktionslogikregeln auszufĂŒhren und Befehle von der grafischen OberflĂ€che und der Cloud zu empfangen und zu verarbeiten. Der Serverprozess im betrachteten Smart-Home-Controller wird als in C++ entwickelte Multithread-Anwendung implementiert und als separater Dienst gestartet systemd Betriebssystem Linux Raspbian.

Die Hauptblöcke des Serverprozesses sind:

  1. Nachrichtenmanager;
  2. IP-Kameraserver;
  3. Z-Wave-GerÀteserver;
  4. Server der logischen Produktionsregeln;
  5. Datenbank zur Konfiguration des Controllers und Block logischer Regeln;
  6. RESTful API-Server fĂŒr die Interaktion mit der grafischen OberflĂ€che;
  7. MQTT-Client zur Interaktion mit der Cloud.

Serverprozessblöcke werden als separate Streams implementiert, zwischen denen Informationen in Form von Nachrichten im JSON-Format (oder Datenstrukturen, die dieses Format im Prozessspeicher darstellen) ĂŒbertragen werden.

Cloud Smart Home. Teil 1: Controller und Sensoren

Die Hauptkomponente des Serverprozesses ist Nachrichtenmanager, das JSON-Nachrichten an alle Blöcke im Serverprozess weiterleitet. Die Arten von Informationsfeldern in einer JSON-Nachricht und die Werte, die sie annehmen können, sind in der Tabelle aufgefĂŒhrt:

GerÀtetyp
Protokoll
Nachrichtentyp
GerÀtestatus
Befehl

Kamera
onvif
sensorData
on
Streaming (Ein/Aus)

Sensor
Z-Wave
Befehl
WOW!
Aufnahme (Ein/Aus)

Effektor
MQTT
businessLogicRule
Streaming (Ein/Aus)
GerĂ€t (HinzufĂŒgen/Entfernen)

GeschÀftslogik
Konfigurationsdaten
Aufnahme (Ein/Aus)

Bluetooth
GerÀtestatus
Fehler

Wi-Fi

rf

Eine Meldung eines Kamera-Bewegungsmelders sieht beispielsweise so aus:

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

Produktionslogik

Um eine Nachricht vom Dispatcher zu empfangen oder zu senden, abonniert der Serverprozessblock Nachrichten eines bestimmten Typs. Ein Abonnement ist eine logische Produktionsregel des Typs "Wenn, dann...", dargestellt im JSON-Format, und ein Link zum Nachrichtenhandler im Serverprozessblock. Damit der IP-Kameraserver beispielsweise Befehle von der GUI und der Cloud empfangen kann, mĂŒssen Sie die folgende Regel hinzufĂŒgen:

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

Wenn die in angegebenen Bedingungen erfĂŒllt sind VorgĂ€nger (linke Seite) Regeln sind also wahr folgerichtig (rechte Seite) Regeln, und der Handler erhĂ€lt Zugriff auf den Text der JSON-Nachricht. Der VorgĂ€nger unterstĂŒtzt logische Operatoren, die JSON-SchlĂŒssel-Wert-Paare vergleichen:

  1. ist gleich „gleich“;
  2. ungleich „not_equal“;
  3. weniger als „weniger“;
  4. mehr „grĂ¶ĂŸer“;
  5. kleiner oder gleich „less_or_equal“;
  6. grĂ¶ĂŸer oder gleich „greater_or_equal“.

Die Ergebnisse des Vergleichs können mithilfe boolescher Algebra-Operatoren miteinander verknĂŒpft werden:

  1. Und und";
  2. Oder oder";
  3. Nicht nicht".

Wenn man also Operatoren und Operanden in polnischer Notation schreibt, kann man ziemlich komplexe Bedingungen mit einer großen Anzahl von Parametern bilden.

Der exakt gleiche Mechanismus, der auf JSON-Nachrichten und Produktionsregeln im JSON-Format basiert, wird im Produktionslogik-Serverblock verwendet, um Wissen darzustellen und Schlussfolgerungen mithilfe von Sensordaten von Smart-Home-Sensoren durchzufĂŒhren.

Der Nutzer erstellt mithilfe einer mobilen Anwendung Szenarien, nach denen ein Smart Home funktionieren soll. Zum Beispiel: „Wenn der Sensor zum Öffnen der HaustĂŒr ausgelöst wird, dann schalten Sie das Licht im Flur ein“. Die Anwendung liest die Kennungen von Sensoren (Öffnungssensor) und Aktoren (Smart-Steckdose oder Smart-Lampe) aus der Datenbank und generiert eine logische Regel im JSON-Format, die an den Smart-Home-Controller gesendet wird. Dieser Mechanismus wird im dritten Artikel unseres Zyklus ausfĂŒhrlicher besprochen, wo wir ĂŒber die Client-Anwendung zur Verwaltung eines Smart Homes sprechen.

Der oben diskutierte Mechanismus der Produktionslogik wird mithilfe der Bibliothek implementiert Schnelles JSON — SAX-Parser des JSON-Formats in der Sprache C++. Das sequentielle Lesen und Parsen einer Reihe von Produktionsregeln erleichtert die Implementierung einer Datenabgleichsfunktion innerhalb von VorlĂ€ufern:

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

Hier pFakt – eine Struktur, die SchlĂŒssel-Wert-Paare aus einer JSON-Nachricht enthĂ€lt, m_Rules — String-Array von Produktionsregeln. Der Abgleich der eingehenden Nachricht und der Produktionsregel erfolgt in der Funktion reader.Parse(ruleStream, RuleHandler)Wo RuleHandler ist ein Objekt, das die Logik von booleschen Operatoren und Vergleichsoperatoren enthĂ€lt. sRuleId - eine eindeutige Regelkennung, dank der es möglich ist, Regeln in der Datenbank des Smart Home Controllers zu speichern und zu bearbeiten. m_pActions – ein Array mit den Ergebnissen der Inferenz: JSON-Nachrichten, die Konsequenzen aus der Regelbasis enthalten und weiter an den Nachrichtenmanager gesendet werden, damit Abonnenten-Threads sie verarbeiten können.

Die Leistung von RapidJSON ist vergleichbar mit der Funktion strlen ()und die Mindestanforderungen an die Systemressourcen ermöglichen die Verwendung dieser Bibliothek in eingebetteten GerÀten. Durch die Verwendung von Nachrichten und logischen Regeln im JSON-Format können Sie ein flexibles System des Informationsaustauschs zwischen allen Komponenten des Smart-Home-Controllers implementieren.

Sensoren und Aktoren Z-Wave

Der Hauptvorteil eines Smart Home besteht darin, dass es verschiedene Parameter der Außenumgebung selbststĂ€ndig messen und je nach Situation nĂŒtzliche Funktionen ausfĂŒhren kann. Dazu werden Sensoren und Aktoren an den Smart-Home-Controller angeschlossen. In der aktuellen Version handelt es sich dabei um drahtlose GerĂ€te, die unter dem Protokoll arbeiten Z-Wave auf einer eigenen Frequenz 869 MHz FĂŒr Russland. FĂŒr ihre Arbeit werden sie zu einem Mesh-Netzwerk zusammengefasst, in dem sich SignalverstĂ€rker befinden, um den Abdeckungsbereich zu vergrĂ¶ĂŸern. Die GerĂ€te verfĂŒgen außerdem ĂŒber einen speziellen Energiesparmodus – sie verbringen die meiste Zeit im Schlafmodus und senden Informationen nur, wenn sich ihr Zustand Ă€ndert, was die Lebensdauer des eingebauten Akkus deutlich verlĂ€ngern kann.

Cloud Smart Home. Teil 1: Controller und Sensoren

Heutzutage gibt es eine ganze Reihe verschiedener Z-Wave-GerÀte auf dem Markt. Betrachten Sie als Beispiel einige:

  1. Die intelligente Steckdose Zipato PAN16 kann folgende Parameter messen: Stromverbrauch (kWh), Leistung (W), Spannung (V) und Strom (A) im Netz. Es verfĂŒgt außerdem ĂŒber einen eingebauten Schalter, mit dem Sie das angeschlossene ElektrogerĂ€t steuern können;
  2. Der Neo Coolcam-Lecksensor erkennt das Vorhandensein einer verschĂŒtteten FlĂŒssigkeit, indem er die Kontakte der Fernsonde schließt;
  3. Der Rauchmelder Zipato PH-PSG01 wird ausgelöst, wenn Rauchpartikel in die Gasanalysatorkammer gelangen;
  4. Der Neo Coolcam Bewegungssensor analysiert die Infrarotstrahlung des menschlichen Körpers. ZusÀtzlich gibt es einen Lichtsensor (Lx);
  5. Der Multisensor Philio PST02-A misst Temperatur (°C), Beleuchtung (%), TĂŒröffnung, menschliche Anwesenheit im Raum;
  6. Netzwerkcontroller Z-Wave USB Stick ZME E UZB1, an den die Sensoren angeschlossen werden.

Es ist sehr wichtig, dass die GerĂ€te und der Controller mit der gleichen Frequenz arbeiten, da sie sich sonst zum Zeitpunkt der Verbindung auf einfache Weise nicht sehen können. An einen Z-Wave-Netzwerkcontroller können bis zu 232 GerĂ€te angeschlossen werden, was fĂŒr eine Wohnung oder ein Landhaus völlig ausreicht. Um die Netzabdeckung im Innenbereich zu erweitern, kann eine smarte Steckdose als SignalverstĂ€rker eingesetzt werden.

Cloud Smart Home. Teil 1: Controller und Sensoren

Im im vorherigen Absatz besprochenen Smart-Home-Controller-Serverprozess ist der Z-Wave-Server fĂŒr die Interaktion mit Z-Wave-GerĂ€ten verantwortlich. Um Informationen von Sensoren zu erhalten, nutzt es die Bibliothek OpenZWave in C++, das eine Schnittstelle fĂŒr die Interaktion mit einem Z-Wave-Netzwerk-USB-Controller bietet und mit einer Vielzahl von Sensoren und Aktoren funktioniert. Der vom Sensor gemessene Wert des Umgebungsparameters wird vom Z-Wave-Server als JSON-Nachricht geschrieben:

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

Anschließend wird es an den Nachrichtenmanager des Serverprozesses gesendet, damit Abonnenten-Threads es empfangen können. Der primĂ€re Abonnent ist der Produktionslogikserver, der die Nachrichtenfeldwerte in den VorlĂ€ufern der Logikregeln abgleicht. Die Inferenzergebnisse, die Steuerbefehle enthalten, werden an den Nachrichtenmanager und von dort an den Z-Wave-Server zurĂŒckgesendet, der sie dekodiert und an den Z-Wave-Netzwerk-USB-Controller sendet. Dann gelangen sie in das ausfĂŒhrende GerĂ€t, das den Zustand von Objekten in der Außenumgebung verĂ€ndert, und das Smart Home verrichtet somit nĂŒtzliche Arbeit.

Cloud Smart Home. Teil 1: Controller und Sensoren
(Klicken Sie auf das Bild, um es in grĂ¶ĂŸerer Auflösung zu öffnen)

Der Anschluss von Z-Wave-GerĂ€ten erfolgt ĂŒber die grafische OberflĂ€che des Smart-Home-Controllers. Gehen Sie dazu auf die Seite mit der GerĂ€teliste und klicken Sie auf die SchaltflĂ€che „HinzufĂŒgen“. Der Befehl zum HinzufĂŒgen ĂŒber die RESTful-API-Schnittstelle gelangt in den Serverprozess und wird dann vom Nachrichtenmanager an den Z-Wave-Server gesendet, der den Z-Wave-USB-Netzwerkcontroller in einen speziellen Modus zum HinzufĂŒgen von GerĂ€ten versetzt. Als nĂ€chstes mĂŒssen Sie auf dem Z-Wave-GerĂ€t mehrmals schnell (drei Mal innerhalb von 3 Sekunden) auf die Servicetaste drĂŒcken. Der USB-Controller verbindet das GerĂ€t mit dem Netzwerk und sendet Informationen darĂŒber an den Z-Wave-Server. Dadurch wird wiederum ein neuer Datensatz in der SQLite-Datenbank mit den Parametern des neuen GerĂ€ts erstellt. Die grafische BenutzeroberflĂ€che kehrt nach dem angegebenen Zeitintervall zur Z-Wave-GerĂ€telistenseite zurĂŒck, liest Informationen aus der Datenbank und zeigt ein neues GerĂ€t in der Liste an. Gleichzeitig erhĂ€lt jedes GerĂ€t eine eigene eindeutige Kennung, die in den Regeln der Produktionsinferenz und beim Arbeiten in der Cloud verwendet wird. Die Funktionsweise dieses Algorithmus ist im UML-Diagramm dargestellt:

Cloud Smart Home. Teil 1: Controller und Sensoren
(Klicken Sie auf das Bild, um es in grĂ¶ĂŸerer Auflösung zu öffnen)

Anschließen von IP-Kameras

Das in diesem Artikel besprochene Cloud-Smart-Home-System ist ein Upgrade des ebenfalls vom Autor entwickelten Cloud-VideoĂŒberwachungssystems, das seit mehreren Jahren auf dem Markt ist und in Russland viele Installationen hat.

Bei Cloud-VideoĂŒberwachungssystemen ist eines der akuten Probleme die begrenzte Auswahl an GerĂ€ten, mit denen eine Integration erfolgen kann. Die fĂŒr die Verbindung mit der Cloud verantwortliche Software ist im Inneren des Camcorders installiert, was sofort hohe Anforderungen an seine Hardware stellt – den Prozessor und die Menge an freiem Speicher. Dies erklĂ€rt hauptsĂ€chlich den höheren Preis von Cloud-Überwachungskameras im Vergleich zu herkömmlichen IP-Kameras. DarĂŒber hinaus ist eine langwierige Verhandlungsphase mit CCTV-Kameraherstellern erforderlich, um Zugriff auf das Dateisystem der Kamera und alle erforderlichen Entwicklungstools zu erhalten.

Cloud Smart Home. Teil 1: Controller und Sensoren

Andererseits verfĂŒgen alle modernen IP-Kameras ĂŒber Standardprotokolle fĂŒr die Interaktion mit anderen GerĂ€ten (insbesondere Videorecordern). Daher bietet die Verwendung eines separaten Controllers, der ĂŒber ein Standardprotokoll eine Verbindung herstellt und Videostreams von IP-Kameras in die Cloud ĂŒbertrĂ€gt, erhebliche Wettbewerbsvorteile fĂŒr Cloud-VideoĂŒberwachungssysteme. Wenn der Kunde außerdem bereits ein VideoĂŒberwachungssystem auf Basis einfacher IP-Kameras installiert hat, besteht die Möglichkeit, dieses zu erweitern und in ein vollwertiges Cloud-Smart Home umzuwandeln.

Das beliebteste Protokoll fĂŒr IP-VideoĂŒberwachungssysteme, das mittlerweile ausnahmslos von allen IP-Kameraherstellern unterstĂŒtzt wird, ist ONVIF Profil S, deren Spezifikationen in der Web Services Description Language vorliegen wsdl. Verwenden der Dienstprogramme aus dem Toolkit gSEIFE Es ist möglich, den Quellcode von Diensten zu generieren, die mit IP-Kameras arbeiten:

$ 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

Als Ergebnis erhalten wir eine Reihe von Headerdateien „*.h“ und Quelldateien „*.cpp“ in der Sprache C++, die direkt in eine Anwendung oder eine separate Bibliothek eingefĂŒgt und mit dem GCC-Compiler kompiliert werden können. Aufgrund der vielen Funktionen ist der Code umfangreich und erfordert zusĂ€tzliche Optimierung. Der Mikrocomputer Raspberry Pi 3 Modell B+ verfĂŒgt ĂŒber genĂŒgend Leistung, um diesen Code auszufĂŒhren. Falls es jedoch notwendig wird, den Code auf eine andere Plattform zu portieren, ist es notwendig, die richtige Prozessorarchitektur und die richtigen Systemressourcen auszuwĂ€hlen.

IP-Kameras, die den ONVIF-Standard unterstĂŒtzen, werden beim Betrieb in einem lokalen Netzwerk mit einer speziellen Multicast-Gruppe mit der Adresse verbunden 239.255.255.250. Es gibt ein Protokoll W.S. Discovery, mit dem Sie die Suche nach GerĂ€ten im lokalen Netzwerk automatisieren können.

In der grafischen OberflĂ€che des Smart-Home-Controllers ist die Funktion zur Suche nach IP-Kameras in der PHP-Sprache implementiert, was bei der Interaktion mit Webdiensten ĂŒber XML-Nachrichten sehr praktisch ist. Bei der Auswahl von MenĂŒpunkten GerĂ€te > IP-Kameras > Scannen Der Algorithmus zur Suche nach IP-Kameras wird gestartet und zeigt das Ergebnis in Form einer Tabelle an:

Cloud Smart Home. Teil 1: Controller und Sensoren
(Klicken Sie auf das Bild, um es in grĂ¶ĂŸerer Auflösung zu öffnen)

Beim HinzufĂŒgen einer Kamera zum Controller können Sie die Einstellungen festlegen, nach denen diese mit der Cloud interagiert. Zu diesem Zeitpunkt wird ihm außerdem automatisch eine eindeutige GerĂ€tekennung zugewiesen, anhand derer es in Zukunft in der Cloud leicht identifiziert werden kann.

Cloud Smart Home. Teil 1: Controller und Sensoren

Anschließend wird eine Nachricht im JSON-Format generiert, die alle Parameter der hinzugefĂŒgten Kamera enthĂ€lt, und ĂŒber den RESTful-API-Befehl an den Serverprozess des Smart-Home-Controllers gesendet, wo die Kameraparameter dekodiert und in der internen SQLite-Datenbank gespeichert werden Wird auch zum Starten der folgenden Verarbeitungsthreads verwendet:

  1. Aufbau einer RTSP-Verbindung zum Empfang von Video- und Audiostreams;
  2. Audiotranskodierung von G.711 mu-Law, G.711 A-Law, G.723 usw. ins AAC-Format;
  3. Videostreams im H.264-Format und Audio im AAC-Format in einen FLV-Container transkodieren und ĂŒber das RTMP-Protokoll in die Cloud ĂŒbertragen;
  4. Herstellen einer Verbindung mit dem Endpunkt des Bewegungsmelders der IP-Kamera mithilfe des ONVIF-Protokolls und regelmĂ€ĂŸiges Abfragen;
  5. regelmĂ€ĂŸiges Generieren eines Miniaturvorschaubilds (Vorschau) und Senden dieses mithilfe des MQTT-Protokolls an die Cloud;
  6. lokale Aufzeichnung von Video- und Audiostreams als separate Dateien im MP4-Format auf der SD- oder Flash-Karte des Smart Home Controllers.

Cloud Smart Home. Teil 1: Controller und Sensoren

Um eine Verbindung mit Kameras herzustellen, Videostreams zu transkodieren, zu verarbeiten und im Serverprozess aufzuzeichnen, werden Funktionen aus der Bibliothek verwendet FFmpeg 4.1.0

Im Leistungstestexperiment wurden 3 Kameras an den Controller angeschlossen:

  1. HiWatch DS-I114W (Auflösung – 720p, Komprimierungsformat – H.264, Bitrate – 1 Mb/s, Ton G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (Auflösung – 1080p, Komprimierungsformat – H.264, Bitrate – 1 Mb/s, kein Ton);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (Auflösung – 1080p, Komprimierungsformat – H.264, Bitrate – 1.5 Mb/s, AAC-Audio).

Cloud Smart Home. Teil 1: Controller und Sensoren

Alle drei Streams wurden gleichzeitig in die Cloud ausgegeben, der Ton wurde nur von einer Kamera transkodiert und die lokale Archivaufzeichnung war deaktiviert. Die CPU-Auslastung betrug etwa 5 %, die RAM-Nutzung betrug 32 MB (pro Prozess), 56 MB (insgesamt mit dem Betriebssystem).

So lassen sich etwa 20 bis 30 Kameras (abhĂ€ngig von Auflösung und Bitrate) an einen Smart-Home-Controller anschließen. Dies ist fĂŒr ein VideoĂŒberwachungssystem in einem dreistöckigen Haus oder einem kleinen Lagerhaus ausreichend. FĂŒr Aufgaben mit höherem Leistungsbedarf kann ein Nettop mit Intel-Mehrkernprozessor und entsprechendem Betriebssystem verwendet werden. Linux Debian Sergeant. Der Controller befindet sich derzeit im Probebetrieb, die Leistungsdaten werden aktualisiert.

Interaktion mit der Cloud

Cloud Smart Home speichert Benutzerdaten (Video- und Sensormessungen) in der Cloud. Die Architektur des Cloud-Speichers wird im nĂ€chsten Artikel unserer Serie ausfĂŒhrlicher besprochen. Lassen Sie uns nun ĂŒber die Schnittstelle zur Übertragung von Informationsnachrichten vom Smart-Home-Controller in die Cloud sprechen.

Über das Protokoll werden die ZustĂ€nde angeschlossener GerĂ€te und Sensormessungen ĂŒbertragen MQTT, das aufgrund seiner Einfachheit und Energieeffizienz hĂ€ufig in Internet-of-Things-Projekten eingesetzt wird. MQTT verwendet ein Client-Server-Modell, bei dem Clients bestimmte Themen innerhalb des Brokers abonnieren und ihre Nachrichten veröffentlichen. Der Broker sendet Nachrichten an alle Abonnenten gemĂ€ĂŸ den durch die QoS-Ebene (Quality of Service) festgelegten Regeln:

  • QoS 0 – maximal einmal (keine Zustellungsgarantie);
  • QoS 1 – mindestens einmal (mit LieferbestĂ€tigung);
  • QoS 2 - genau einmal (mit zusĂ€tzlicher ZustellbestĂ€tigung).

In unserem Fall ist es der MQTT-Broker Eclipse-MĂŒcke. Der Themenname ist die eindeutige ID des Smart Home Controllers. Der MQTT-Client innerhalb des Serverprozesses abonniert dieses Thema und ĂŒbersetzt darin JSON-Nachrichten, die vom Nachrichtenverteiler kommen. Und umgekehrt werden Nachrichten vom MQTT-Broker an den Nachrichtenmanager weitergeleitet, der sie dann innerhalb des Serverprozesses an seine Abonnenten weiterleitet:

Cloud Smart Home. Teil 1: Controller und Sensoren

Um Nachrichten ĂŒber den Status des Smart Home Controllers zu versenden, wird der Mechanismus der gespeicherten Nachrichten genutzt. gespeicherte Nachrichten MQTT-Protokoll. Dadurch können Sie die Zeitpunkte der Wiederverbindung bei StromausfĂ€llen korrekt verfolgen.

Der MQTT-Client wurde auf Basis der Implementierung der Bibliothek entwickelt Finsternis Paho in C++.

H.264 + AAC-Medienströme werden ĂŒber das RTMP-Protokoll an die Cloud gesendet, wo ein Cluster von Medienservern fĂŒr deren Verarbeitung und Speicherung verantwortlich ist. FĂŒr eine optimale Lastverteilung im Cluster und Auswahl des am wenigsten belasteten Medienservers stellt der Smart Home Controller eine Vorabanfrage an den Cloud Load Balancer und sendet erst dann den Medienstream.

Fazit

Der Artikel befasste sich mit einer spezifischen Implementierung eines Smart-Home-Controllers auf Basis des Mikrocomputers Raspberry Pi 3 B+, ​​der mithilfe des Z-Wave-Protokolls Informationen empfangen, verarbeiten und GerĂ€te steuern, mithilfe des ONVIF-Protokolls mit IP-Kameras interagieren sowie Daten austauschen und austauschen kann Befehle mit dem Cloud-Dienst ĂŒber die Protokolle MQTT und RTMP. Basierend auf einem Vergleich logischer Regeln und Fakten im JSON-Format wurde eine Produktionslogik-Engine entwickelt.

Jetzt befindet sich der Smart-Home-Controller in mehreren Einrichtungen in Moskau und der Region Moskau im Probebetrieb.

In der nĂ€chsten Version des Controllers ist geplant, GerĂ€te anderer Typen (RF, Bluetooth, WiFi, kabelgebunden) anzuschließen. Zur Vereinfachung der Benutzer wird das Verfahren zum Anschließen von Sensoren und IP-Kameras auf die mobile Anwendung ĂŒbertragen. Es gibt auch Ideen zur Optimierung des Serverprozesscodes und zur Portierung von Software auf das Betriebssystem OpenWrt. Dadurch wird ein separater Controller eingespart und die FunktionalitĂ€t eines Smart Homes auf einen normalen Haushaltsrouter ĂŒbertragen.

Source: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz und VPS-VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster