Wie man ein Smart Home baut und nicht verrückt wird

Bild

Intelligente Möbel, die sich selbst um die Bestellung im Haus kümmern, sind ein Muss für fast jedes futuristische Bild. Ein selbstregulierendes Klima, automatische Ein- und Ausschaltbeleuchtung und Sprachsteuerung von Haushaltsgeräten - all dies kann jetzt konfiguriert werden. Aber es braucht ein wenig Erfahrung, Grundkenntnisse auf dem Gebiet der Technologie und manchmal der Programmierung sowie ein ganzes Meer von Fantasien. In meinem Fall habe ich das so gemacht, dass nur Fantasie genug ist, aber das Wichtigste zuerst ...

Vor ungefähr fünf Jahren interessierte ich mich für die Idee eines „Smart Home“. Zuerst habe ich das einfachste System gemacht. Sie steuerte das Licht im Korridor und im Badezimmer über den Bewegungssensor, die Motorhaube über den Feuchtigkeitssensor und auch die Wetterstation - zu dieser Zeit waren alle verrückt nach ihnen. Jede DIY-Box mit Selbstachtung musste eine Wetterstation bauen.

Zunächst habe ich die Wohnung mit einem kontrollierten Relais ausgestattet, um das Licht im Flur und im Badezimmer automatisch einzuschalten. Es sah so aus: Ein Sensor stand im Flur, der zweite im Badezimmer.

Wenn jemand ins Badezimmer ging, erkannte der Korridorsensor seine Bewegung und schaltete sofort das Licht im Korridor und im Badezimmer ein. Wenn gleichzeitig niemand das Badezimmer betrat, wurde dies bereits durch den Sensor im Badezimmer behoben. Nach 15 Sekunden ging das Licht dort aus. Wenn eine Person das Badezimmer betrat, ging das Licht im Korridor nach einer Minute aus. 

Ich dachte auch an solche Fälle, wenn jemand zu viel nachdachte, während er auf einem „weißen Freund“ im Badezimmer saß (ich hatte ein kombiniertes Badezimmer). Dafür wurde das Licht im Bad in zwei Gruppen eingeteilt. Einer schaltete sich 3 Minuten aus, nachdem der Sensor im Badezimmer keine Bewegungen mehr erkannte, der andere nach 5 Minuten. Es funktionierte also nicht, länger als fünf Minuten im Badezimmer im Licht bewegungslos zu bleiben. Sehr disziplinierend. Sie können jedoch jederzeit Ihre Hand bewegen und weiterhin über das Wesentliche nachdenken.

Ein Feuchtigkeitssensor funktionierte auch im Badezimmer, der die Haube automatisch startete, wenn die Luftfeuchtigkeit 50% überschritt. Sobald der Raum auf 45% Luftfeuchtigkeit belüftet war, schaltete sich die Haube aus. 

Das Management hat die Arduino-Plattform durchlaufen - oder vielmehr versucht. 


Foto von der Website des Herstellers

Fast sofort wurde klar, dass es bei dieser Plattform nicht nur darum ging, ein Smart Home zu schaffen. Der Hauptnachteil der Arbeit mit Arduino bestand darin, dass die Plattform ohne Netzwerk funktionierte und ohne dieses Netzwerk kein wirklich einheitliches Ökosystem erhalten werden konnte. Natürlich könnte ich das Arduino wiederholen und Netzwerkunterstützung hinzufügen, aber warum? Ich habe einen einfacheren Weg gewählt und diese Plattform auf eine andere geändert. 

Nachdem ich genug mit Arduino gespielt hatte, verband ich das Haus wieder mit dem ESP-8266-Board. Tatsächlich ist dies das gleiche Arduino, aber mit Wi-Fi + ist es kompakter. Dieses Modul ist bei Herstellern von Gadgets für Smart Homes nach wie vor beliebt. 


Foto aus dem Internet

Parallel dazu habe ich versucht, das Smart Home noch intelligenter zu machen. Lösen Sie beispielsweise das Problem einer Fußbodenheizung rund um die Uhr oder einer Klimaanlage, die immer eingeschaltet ist. Dafür habe ich Beok Chinese WiFi Thermostate gekauft. Sie durften die Fußbodenheizung aus der Ferne ausschalten, mussten dies jedoch über eine spezielle Anwendung im Telefon tun. 

Ich habe das Problem der Fernsteuerung der Klimaanlage mit dem Infrarotsignalemulator Broadlink RM Pro gelöst. Nichts Kompliziertes: Sie zeichnen ein Signal vom Bedienfeld der Klimaanlage zum Emulator auf (es kann eine beliebige Technik geben, die von der Fernbedienung gesteuert wird), und dann drücken Sie auf dem Telefon eine Taste in der Anwendung, und der Emulator spielt das zuvor aufgezeichnete Signal ab. Bei der Klimaanlage hatte ich die Möglichkeit, sie ein- und auszuschalten, den Betriebsmodus einzustellen und andere Parameter aus der Ferne einzustellen.  

Auch Livolo-Schalter installiert. Mit ihrer Hilfe konnte ich auch das Licht über Funk ein- und ausschalten. 



Von den Minuspunkten: Zur Steuerung musste ich erneut eine separate Anwendung installieren und es gab keine Rückmeldung, das heißt, ich konnte nicht sehen, dass das Licht an war, wenn es von jemandem manuell mit einem herkömmlichen Schalter ein- oder ausgeschaltet wurde. 

Verschiedene kontrollierte WiFi-Relais wie Sonoff oder Tuya und sogar das teure Danalock zum Verschließen der Wohnung, für das ebenfalls eine separate Anwendung erforderlich war, erschienen ebenfalls im Haus. Fast all diese kleinen Dinge (mit Ausnahme von Danalock) habe ich auf der chinesischen Website Aliexpress gekauft, wo sie einen Cent kosten und mir erlauben, ohne ernsthafte Investitionen zu experimentieren. 

Einer der ersten relativ ernsthaften Käufe war die Tion-Verschnaufpause. Mit der automatischen CO2-Regelung kam er mehr oder weniger zurecht, aber die Temperatur der Luftheizung im Winter musste ständig manuell angepasst werden. Und wieder - um es zu verwalten, musste eine separate Anwendung installiert werden. 


Das Foto wurde von der Website des Herstellers aufgenommen.

Alle Sensoren und Steuerungen, die ich damals ausprobiert habe, kann ich mich nicht einmal erinnern. Mein Smartphone war mit Anwendungen zur Verwaltung verstopft. Es war ein ganzer Zoo, der ständig folgen musste. Ich habe versucht, die Verwaltung dieser Anwendungen über alle Arten von Aggregatoren wie HomeBridge / MajorDomo usw. zu kombinieren. Aber alle zeigten ihre erheblichen Mängel:

  • unfreundliche Schnittstelle und manchmal nur eine schreckliche Schnittstelle
  • mangelnde Unterstützung für alle verwendeten Anwendungen
  • komplexe Verbindung

Die Suche nach einer Anwendung für die zentrale Verwaltung eines solchen Volumens von Sensoren, Steuerungen und anderen Steuerungssystemen hat nicht zum Erfolg geführt. Dann habe ich versucht, selbständig an eines der „intelligenten“ Geräte zu erinnern - die Tion-Verschnaufpause. Ich habe ein Skript geschrieben, um die Heiztemperatur abhängig von der Raumtemperatur automatisch zu steuern. Tatsache ist, dass das Lüftungssystem keine automatische Anpassung der Luftheiztemperatur hatte. Es stellte sich heraus, dass der Raum entweder super heiß oder super kalt war. Es gab keine Möglichkeit, einen Mittelweg zu erreichen. Hier wurde dieses Problem mit Hilfe eines schriftlichen Skripts und einer Verschnaufpause gelöst. 

Der Erfolg mit einem Skript für die Verschnaufpause veranlasste mich, meine eigene Anwendung für die Verwaltung eines Smart Homes zu erstellen. Das Hauptziel war die Erstellung eines Programms mit bequemer Integration intelligenter Geräte, mehrstufigen Automatisierungsbedingungen und der Möglichkeit, alle Geräte im Haus zu verwalten. 

Ungefähr ein Jahr lang war ich selbst mit der Entwicklung von Back-End- und Front-End-Anwendungen beschäftigt. 

Die Serverseite ist in NodeJS geschrieben. Die Entscheidung für NodeJS wurde aufgrund der entwickelten Community getroffen, in der Protokolle für fast alle Geräte auf dem Markt implementiert sind. Der Client-Teil ist in Angular (Ionic) geschrieben und läuft unter Android / iOS. Im Allgemeinen die klassische Client-Server-Architektur.

Auf eine Anmerkung:Während der Arbeit an der Anwendung erhielt ich einen technischen Einblick in die Verwendung von Verunreinigungen beim Schreiben von Gerätetreibern. Ich weiß nicht, vielleicht ist es für einige elementar, aber es wurde mir wirklich leichter zu atmen.

Ich habe Gerätetreiber viele Male umgeschrieben, bis ich zu so etwas kam:

Beispielcode eines der Geräte
import {XiaomiSubdeviceV2} from '../xiaomi.subdevice.v2';
import {load_power} from '../capabilities/load_power';
import {power_plug} from '../capabilities/power_plug';
import {PowerPurpose} from '../../base/PowerPurpose';
import {Relay} from '../../base/types/Relay';
import {HomeKitAccessory} from '../../hap/HomeKitAccessory';
import {Lightbulb2Accessory} from '../../hap/Lightbulb2Accessory';
import {Yandex} from '../../yandex/Yandex';
import {YandexLightOrSwitch} from '../../yandex/YandexLightOrSwitch';

export class LumiPlug extends XiaomiSubdeviceV2.with(Relay, power_plug, load_power, PowerPurpose,
  HomeKitAccessory, Lightbulb2Accessory,
  Yandex, YandexLightOrSwitch) {

  onCreate() {
    super.onCreate();
    this.model = 'Mi Smart Plug';
    this.class_name = 'lumi.plug';
    this.driver_name = 'Mi Smart Plug';
    this.driver_type = 3;
    this.parent_class_name = 'lumi.gateway';
  }

  getIcon() {
    return 'socket';
  }
}


Das Fazit ist, dass trotz der Fülle unterschiedlicher Geräte alle ungefähr das Gleiche tun und ungefähr die gleichen Informationen liefern. Daher wurden alle Fähigkeiten der Geräte in getrennten Verunreinigungen untergebracht, aus denen der endgültige Treiber letztendlich besteht. Beispielsweise unterstützt die Anwendung viele Geräte mit der Ein / Aus-Funktion. Es wird in einer separaten Verunreinigung hergestellt und für alle Geräte identisch verwendet. Grundstufe, Watson!

Was hat das gebracht: Jeder Treiber eines neuen Geräts ist ziemlich schnell und einfach zu schreiben, weil Alles ist standardisiert und es besteht kein Grund zur weiteren Speicherung der empfangenen Informationen. Für völlig neue Protokolle (die ich noch nicht hatte) werden auch Verunreinigungen geschrieben, die auf bestehenden basieren. Sie empfangen bereits Geräteinformationen und senden diese weiter unten in der Kette. Dieser Ansatz ermöglichte es uns, die Codemenge um das Zehnfache zu reduzieren (anfangs war jeder Treiber eine Kopie eines ähnlichen Treibers).

Also ging ich nach und nach durch alle Kreise der Hölle, um den Rücken und die Front zu beenden. Als die Anwendung ein ziemlich erträgliches Aussehen erhielt, dachte ich: Warum nicht Ihre Entwicklung mit der Öffentlichkeit teilen? Für das Projekt wurden Partner und Assistenten gefunden, die an die Anwendung erinnern. 

Zunächst musste an das Design der Anwendung erinnert werden. Dazu musste ich mich an professionelle Designer wenden. Ich glaubte naiv, dass es 3-4 Monate dauern würde, aber am Ende zog sich der Prozess hin. Trotz der Tatsache, dass sich die Struktur der Anwendung gegenüber der ursprünglichen Quelle nicht wesentlich geändert hat, musste buchstäblich alles überarbeitet werden.

Parallel dazu kaufte ich - nicht allein, sondern mit einem Team von Projektpartnern - die beliebtesten Geräte für ein Smart Home und fügte eine Anwendung hinzu, wenn diese Geräte nicht unterstützt wurden. Bald wurde jedoch klar, dass nicht genug Geld für alle intelligenten Geräte vorhanden war. Daher beschlossen wir, mit bestehenden Marktteilnehmern zu sprechen und kostenlose Testmuster für Geräte zu vereinbaren. Wir wurden nicht bestritten und Wirenboard und MiMiSmart wurden die ersten ernsthaften Lieferanten.

Deshalb habe ich zusammen mit den Jungs eine neue Anwendung für die Smart-Home-Automatisierung mit einer klassischen Client-Server-Architektur erstellt, die auf jeder Plattform installiert werden kann, und mit einem praktischen modernen Design. Treffen Sie die BARY *.

* Der Name stammt nicht vom Namen Bari Alibasov, sondern vom Charakter von Arthur C. Doyles Buch "The Hound of the Baskervilles" von Barrymores Butler - Ihrem persönlichen "intelligenten Butler". 

Was ist passiert: Beschreibung der Anwendung mit schönen Bildern und Katzen


Der Hauptbildschirm ist ein praktisches Dashboard mit der Möglichkeit, Parameter automatisierter Räume anzuzeigen und zu verwalten. Praktisch - dies ist das Schlüsselwort, da Dashboards in den Anwendungen, mit denen ich selbst arbeiten wollte, manuell konfiguriert werden mussten. Nicht der angenehmste Zeitvertreib. Das



Haus kann in Zonen und Zonen unterteilt werden - in Räume. Jeder Raum verfügt über verschiedene Parameter: Temperatur, Luftfeuchtigkeit, aktueller Stromverbrauch usw. sowie ausgewählte Aktionen. Wenn wir auf den Raum klicken, fallen wir in die Liste der angeschlossenen Geräte:



Hier können Sie das Gerät ein- und ausschalten und auch dessen Hauptparameter sehen. Beim Wechsel zu einem Gerät steht eine detailliertere Steuerung mit einer vollständigen Liste der Funktionen zur Verfügung. 

Alle Geräte werden mit denselben Einstellungen verbunden. Für viele Geräte gibt es einen Verbindungsassistenten. Keine Konfiguration für diejenigen, die heißer mögen! Grundsätzlich kommt es darauf an, die IP-Adresse des Geräts anzugeben (für viele Geräte gibt es eine automatische Suche). Wenn sich die IP-Adresse plötzlich ändert, ist dies in Ordnung. Der Server findet sie automatisch an der neuen Adresse.



Es gibt eine Integration mit Apple HomeKit, es wird für die Sprachsteuerung über Siri verwendet. Alle in BARY unterstützten Geräte lassen sich mit einem einzigen Häkchen in Apple HomeKit integrieren (Hallo an HomeBridge-Fans). Nicht ohne die Unterstützung von Yandex Alice. Sie war freundlicher in Bezug auf Schnittstellenbefehle. Zum Beispiel möchte Siri die Vorhänge nicht mit dem Befehl „Vorhänge schließen“ schließen, kann im Fernsehen keinen bestimmten Lautstärkepegel einstellen und so weiter. Yandex.Alice hat keine solchen Verrückten. 

Um die Verwaltung von Smart Lands zu vereinfachen, wurde die Automatisierung implementiert: die Regeln für die Ausführung von Aktionen, wenn eine Reihe von Bedingungen erfüllt sind. Automatisierungen sind logisch, mehrstufig, d.h. Sie können etwas tun wie: "Bedingung 1 und (Bedingung 2 oder Bedingung 3)." Alles in einem schönen logischen Automatisierungseditor:



Persönlich hatte ich bereits hundert Automatisierungsprogramme, und jedes davon kann schnell gefunden werden, weil Alles ist nach Raum und Gerät gruppiert:



Skripte werden auch in der Anwendung unterstützt. Ein Szenario ist ein Komplex von Aktionen, die unter bestimmten Bedingungen aus der Automatisierung ausgeführt werden. Für mein Smart Home verwende ich nur das Standard-Set:



Ich habe mein Zuhause verlassen / über Apple TV nach Hause zurückgekehrt - es wird automatisch ein- und ausgeschaltet, wenn alle das Haus verlassen haben oder jemand nach Hause zurückgekehrt ist. Du kommst nach Hause und der Ansager mit traurigen Augen von Kanal 1 trifft dich dort bereits. Gut, ok?

Was für ein Smart Home ohne die Möglichkeit, eine Katze zu beobachten?



Sie können jede Kamera anschließen, die einen RTSP-Stream liefern kann. 

Separat möchte ich zum Statistikblock sagen. Es stellte sich als recht informativ heraus:



In der Legende ist der rote Balken die Abweichung von den Durchschnittswerten der letzten sechs Monate, der graue Balken die Durchflussrate innerhalb der Durchschnittswerte.

Auf dem Bild meine Statistik für September. Es war kalt, die Heizung war noch nicht gegeben worden, so dass die Heizung an der Lüftung ständig eingeschaltet war.

Sie können auch Statistiken für jedes angeschlossene Gerät anzeigen:



Durch die Verfügbarkeit von Automatisierung und Statistiken konnten die Stromkosten um mehr als das Zweifache gesenkt werden.

Alle auftretenden Ereignisse werden gespeichert und können angezeigt werden:



Auf der Hauptseite befindet sich außerdem eine spezielle Registerkarte, auf der alle vom Benutzer ausgewählten Hauptindikatoren erfasst werden:



Die Wassermessung erfolgt übrigens über den Xiaomi-Sensor zum Öffnen von Türen und Fenstern. Zu diesem Zweck wird anstelle eines Reed-Schalters der Ausgang des Impulszählers an einen speziellen Kontakt gelötet und in BARY ein virtueller Zähler erstellt, in dem Sie diesen Sensor als Impulsquelle angeben können.

Architektur und Sicherheit


Der Client-Server-Austausch wird mithilfe der AES-Technologie verschlüsselt, und der Server befindet sich direkt im automatisierten Raum. Meiner Meinung nach schützt dies das System so weit wie möglich vor unerwünschten Eingriffen Dritter.

Wenn keine weiße IP-Adresse vorhanden ist, können Sie eine Verbindung zur Cloud herstellen. Es wird als Vermittler fungieren, ohne die Fähigkeit, Befehle zu entschlüsseln, weil Schlüssel sind auf dem Server. 

Wo bekommt man


Die Serverseite kann auf fast jeder vorhandenen Plattform ausgeführt werden - dank NodeJS. Für die gängigsten Plattformen haben wir Skripte vorbereitet, die die gesamte Arbeit automatisch erledigen.

Für Raspberry Pi basierend auf Debian Stretch:

wget -qO- "http://bary.io/install?target=pi" | sudo bash

Der Zielparameter ist für die Zielplattform verantwortlich und kann die folgenden Werte haben:
Raspberry Pi (Debian Stretch)
Pi
Himbeer-Pi (Debian Buster)
pi_buster
Bastelbrett (Debian Stretch)
tb
Wiren Board (Debian Stretch)
wb

Wenn jemand auf einer anderen Plattform installieren möchte, schreiben Sie uns und wir werden das Skript aktualisieren. Wenn Sie auf Schwierigkeiten stoßen - schreiben Sie auch. Wir brauchen wirklich Feedback. 

Die Anwendung ist bei Google Play und im App Store frei verfügbar . Möglicherweise wird der Antrag bis Ende des Jahres bezahlt.

Fazit


Warum habe ich diesen Artikel geschrieben? Das Hauptziel ist es, Feedback von Ihnen zu erhalten.

Derzeit entwickelt sich das Projekt rasant und unser gesamtes Team versucht, die Liste der auf dem Markt verfügbaren unterstützten Geräte zu maximieren. Obwohl ich nicht alleine an dem Projekt arbeite, blieben die Aufgaben dieselben - die bequemste Anwendung zu erstellen, die die Wünsche berücksichtigt und die Probleme aller löst, die an der unabhängigen Installation intelligenter Lösungen für zu Hause beteiligt waren.

Wir sind offen für den Dialog über mögliche Integrationen und bereit, die Geräteunterstützung von Unternehmen, die an einer Partnerschaft interessiert sind, so bald wie möglich umzusetzen. Sie erhalten eine vorgefertigte Anwendung und verschwenden keine Zeit mit der Entwicklung von Software. Und wir erhalten eine breite Palette unterstützter Geräte für jeden Geschmack und jede Farbe. Alles ist gut. 

Sofortpläne und Regenbogenwunschliste


Derzeit sind mein Team und ich aktiv an der Entwicklung eines Videospeichers beteiligt. Das Video kann in Ihrem Heimspeicher oder in einem Cloud-Dienst abgelegt werden. Ich denke, Anfang nächsten Jahres wird es möglich sein, über eine neue Version zu sprechen. Sollte es möglich sein, die besten Perlen einer Katze zu überprüfen, die sich selbst unterhält, während die Besitzer nicht zu Hause sind? 

Nächstes Jahr planen wir weitere Integrationen mit verschiedenen Diensten: eine Liste der Einkäufe und Aufgaben, einen Kalender usw. Er kam hoch, schaute auf einen Bildschirm - und alles war in voller Sicht. Mehrere schlüsselfertige Projekte haben gezeigt, dass diese Aufgabe relevant ist.

Wir planen auch, die Produktion von Controllern mit vorinstallierter Software für Batch-Lösungen eines Smart Home zu starten (derzeit ist die Batch-Lösung "Software + Hardware" zusammen mit unseren Partnern erhältlichWiren Board .

Und Unterstützung für Google Home und Amazon Alexa. Natürlich die Erweiterung des Angebots an unterstützten Geräten.

Übrigens, wen interessiert das schon, Sie können die Liste der unterstützten Geräte (nicht vollständig) auf unserer Website sehen . Wenn etwas in der Liste nicht gefunden wird, fragen Sie in der Telegrammgruppe nach .

Wir sind Ihnen sehr dankbar, wenn Sie uns mitteilen, was Ihnen in vorhandenen Anwendungen fehlt und welche Funktionen Sie an unserer Stelle hinzufügen würden.

Vielen Dank fürs Lesen. Lassen Sie uns gemeinsam unser Zuhause intelligenter machen!

All Articles