Mein Hausautomationssystem

Hallo Habr!

Der Zweck dieses Artikels (Zyklus) ist der Habra-Effekt, eine einführende Geschichte über mein Hausautomationssystem. Natürlich habe ich nicht alles von Grund auf neu erfunden und erstellt, sondern nur Technologien und Projekte gesammelt, die ich für diesen Zweck am besten geeignet hielt, und ein wenig von mir selbst hinzugefügt. Amateurniveau, aber infolgedessen funktioniert alles, die Leute benutzen es und rennen mir nicht mit einem Verein nach. Ich habe alles selbst gemacht. Konstruktive Kritik ist willkommen, es wird interessant sein, eine Meinung zu kennen.

Das System umfasst Geräte und eine Reihe von Programmen: direkt ein Automatisierungssystem für die Kommunikation und Visualisierung von Geräten, Kommunikation und Telemetrie für die Fernüberwachung und -aktualisierung, einen Sprachassistenten von Yandex. Alles (fast alles) ist offen und auf Github veröffentlicht .

Ausrüstungsstufe


Der wichtigste und notwendige Teil ist ein Server, der auf dem Raspberry Pi basiert, aber problemlos auf einem PC mit Debian oder Ubuntu funktioniert. Raspbian Betriebssystem. Das System sollte rund um die Uhr funktionieren, sodass Sie ein hochwertiges Netzteil benötigen, beispielsweise ein ideales Netzteil für das iPad.



Für die Fernverwaltung habe ich auch die Fähigkeit, dass der Sprachassistent Yandex einen Server mit einer "weißen" IP und einer Domain benötigt. Auf dem Server wird ein MQTT-Server ausgeführt, aus Sicherheitsgründen wird SSL / TLS verwendet.

KNX-Unterstützung über das BAOS 771-774-Gateway. BAOS ist die Schnittstelle zwischen KNX-Bus und LAN. Ermöglicht den Zugriff auf Adressen auf dem Bus über einen Webdienst im JSON-Format.

Meine Ausrüstung:

Projekte für Arduino IDE

Wifi Controller basierend auf Wemos D1 mini



Angetrieben von einem 230-Volt-Netzwerk ist es auch ohne ein Netzteil von einem gemeinsamen 5-Volt-Bus möglich, Wemos mit Strom zu versorgen, oder von Geräten, die es steuert, beispielsweise einen Vorhangantrieb. Es ist möglich, in Montage- und Anschlusskästen mit ausreichender Tiefe, beispielsweise hinter einem Schalter, zu installieren.

Es kann anstelle der Funksteuerung verschiedener Vorhangantriebe verwendet werden.

Schema


Pinbelegung der gesteuerten Ausgänge:
L1, L2 - Leistungsausgänge von BT-137S-Triacs, gesteuert von wemos-Ausgängen D0, D5 über einen MOC 3063S-Optokoppler mit Phasenübergangssteuerung über Null. Das Ein- und Ausschalten der Last erfolgt ohne Störung des Netzwerks.
p1, p2 - pwm Ausgang für Dimmer oder motorisierte Vorhangantriebe oder zusätzliche Tasten, abhängig von den Einstellungen. entsprechen den Schlussfolgerungen von wemos'a D6, D7.
A0 Analogeingang zum Anschluss verschiedener Sensoren, z. B. Licht oder eine zusätzliche Taste.
ds - Der Anschluss des Temperatursensors DS18B20 entspricht Pin D1.
DHT - Der Anschluss des Temperatursensors DHT22 entspricht Pin D2.
b1, b2 - Tasten, kurzes und langes Drücken, mit der Funktion des Klickzählers können an die Impulsausgänge der Zähler für Strom, Wasser usw. angeschlossen werden.

Arbeitsdemonstration


Controller-Programm in Arduino IDE erstellt. Geeignet für alle Motherboards basierend auf ESP-8266. Die Netzwerkeinrichtung, -steuerung und der Betrieb der Steuerung werden von MQTT durchgeführt. Zum bequemen Anzeigen von Einstellungen gibt es eine Weboberfläche. Früher gab es die Möglichkeit, über http zu steuern, aber dann hielt ich es für unnötig und entfernte es.

Webschnittstelle


Das Webinterface kann deaktiviert werden. Zur Vereinfachung der Erstkonfiguration werden ein winit.sh-Skript und Anweisungen bereitgestellt. Um den Controller auf die Standardeinstellungen zurückzusetzen, müssen Sie entweder den Befehl „Standard 1“ eingeben oder gleichzeitig die Tasten b1, b2 20 Sekunden lang drücken. Es gibt auch eine vereinfachte Version des Programms für verwaltete Sonoff-Verkaufsstellen.

Arduino Mega-basierter Controller



Es besteht aus dem Mega selbst und der Abschirmung der W5100-Netzwerkkarte, die Karte verfügt über separate Ausgänge für Dimmer und einen Eingang für Sensoren und Tasten. Die Relaisausgänge müssen separat über ein Kabel mit dem zweireihigen Anschluss auf der Mega-Karte auf der gegenüberliegenden Seite der Strom- und USB-Anschlüsse verbunden werden. Der Controller ist für das D6MG-Gehäuse ausgelegt.

Pinbelegung:

D2-9, D11-13 - PWM-Ausgänge für Dimmer, die PWM-Frequenz wird gegenüber dem Standard erhöht.
D14-21 - Temperatursensoren DS18B20 und DHT22.
D22-49 - Relaisausgänge, D22-29 Ausgänge können für Jalousien, Tore, Vorhangantriebe konfiguriert werden.
D 10.50-53 - verwendet die W5100-Netzwerkkarte.
A0-16 - Eingänge für Tasten, kurzes und langes Drücken. A0-A6 kann für analoge Sensoren konfiguriert werden.

Die Netzwerkeinstellungen für Mega werden vor dem Blinken im Programm festgelegt. Die IP-Adresse ist fest.

Webschnittstelle


Dimmer am Triac BT137-600E



Eingang 220 Volt, PWM-Steuerung 0-5 / 3,3 Volt, eingestellt durch Setzen eines Jumpers. 0-5 Volt für die Arbeit mit Arduino Mega oder 0-3,3 Volt bei Wemos. Das PWM-Signal wird dem Analogeingang A0 Arduino Pro zugeführt, wo es in eine Verzögerung zum Öffnen des Triac umgewandelt wird. Ein Anschluss zum Blinken des Arduino ist vorhanden. Ausgewiesener Platz für Heizkörper. Auf der Seite des Arduino befindet sich der Steuer- und Stromanschluss des Arduino (PWM, -, +), auf der Seite des Smimstors befindet sich ein 4-poliger Stromanschluss - Strom und Ausgang zur Last, falls erforderlich, kann er auch mit einem Varistor oder Dämpfer ausgestattet werden. Das Dimmerboard ist für das D2MG-Chassis ausgelegt.

Dimmer-Projekt:

PCB von PCBWay

Arbeitsdemonstration


Das D9MG-Paket enthält außerdem eine 28-Kanal-Triac-Einheit .

Ich entschuldige mich für die Qualität des Bildes


Das Gerät ist über das Local Area Network verbunden, ein Protokoll für die MQTT-Kommunikation. Ich verwende den MQTT Mosquitto-Server.

Software-Teil


Der Einfachheit halber müssen Sie zuerst ein Image des Betriebssystems mit allen erforderlichen Programmen erstellen. Ich verwende Raspbian Stretch Lite. Sie müssen NodeJS, Python-Pip, Python3-Pip, Supervisor, Mosquitto, Mosquitto-Clients und SQLite3 installieren. Und Pip-Pakete: Paho-Mqtt und Psutil. Sie können auch Node-Red installieren, das sich perfekt für alle Arten von Experimenten eignet.

Nach der Veröffentlichung von Apple Homekit im Jahr 2016 stellte sich heraus, dass alle Hersteller und Entwickler für die gesamte Existenz von Smart Home-Systemen in Bezug auf Komfort und Funktionalität im Vergleich zum Homkit nichts in der Nähe tun konnten. Dies ist ähnlich wie bei der Veröffentlichung des ersten iPhone, als sich herausstellte, dass der gesamte Zoo Telefone, Smartphones, Kommunikatoren verwandelten sich in einen Haufen Müll. In jedem Fall ist es immer angenehm, ein Qualitäts- und Endprodukt zu verwenden.

Ich habe das homekit2mqtt- Projekt als Hauptvisualisierungssystem ausgewählt. Natürlich können Sie OpenHUB oder Homeassistant verwenden, diese Systeme funktionieren auch mit MQTT.

hjmqtt
Homekit2mqtt erstellt Homekit Bridge, es befindet sich im Home-Programm auf Apple-Geräten. Zubehör (Beleuchtung, Sensoren, Temperaturregler usw.) muss in einer speziellen Datei im JSON-Format registriert werden. Die Skripte filegen.sh und install.sh sind für die Erstellung dieser Datei verantwortlich. Sie müssen Zubehör in filegen.sh registrieren, install.sh fügt homekit2mqtt zum automatischen Laden hinzu und startet. Die Hauptsache passiert in der Datei hjmqtt.py - die Verbindung von Zubehör mit Geräten, auch manuell in der Datei, müssen Sie Zubehör und Geräteparameter, Adressen für KNX registrieren.
Die Funktionalität für Zubehör ist in den Dateien accessory.py und accessoryknx.py registriert. Die Gerätestatus werden in der SQLite-Datenbank gespeichert, die Bibliothek statdb.py wird für Datenbankoperationen verwendet.

hjconnect
Das nächste Projekt wird für die Ferntelemetrie benötigt. Dies ist die Verwendung von Speicher, Festplatten, Last und Temperatur, und das psutil-Paket wird dafür verwendet. Jetzt ist Open Access für die hjconnect-Version nur zur Überwachung und ohne Verschlüsselung verfügbar. Als separates Projekt ist das Programm zum Verknüpfen von Dateien auch MQTT- Dateiübertragung über mqtt . Die Einstellungen befinden sich direkt in der Hauptdatei hjconnect.py. Wenn Sie es mit der Option -l ausführen, können Sie es auf dem lokalen MQTT-Server testen. Die Einstellungen für den Remote-Server befinden sich in Zeile 160

rclient.connect("test.mosquitto.org", 1883, 60) 

Der Server test.mosquitto.org kann durch Ihre Domain oder IP ersetzt werden. Um den Raspberry Pi zu identifizieren, wird die Seriennummer des Prozessors in das Thema aufgenommen. Wenn das Programm auf einem anderen Computer ausgeführt wird, wird anstelle der Seriennummer die Zeichenfolge "SN" angezeigt. Das Nachrichtenintervall wird in Zeile 96 eingestellt.

 th = threading.Timer(9, my_stat) # interval 

wobei 9 Sekunden ist.

Ein Beispiel dafür, wie Überwachung aussieht


sima
Jetzt hat nur Yandex die einzige russischsprachige Kolumne. Eine Fertigkeit für Alice zu erstellen ist einfach genug. Im Gegensatz zu Siri gibt es völlige Handlungsfreiheit. Und Zugriff auf jedes Gerät. Nur leider gibt es zwar keinen vernünftigen Weg, eine Fertigkeit zu starten, aber das ständige Ausführen einer Fertigkeit ist unpraktisch.

Demo


Dies ist ein Beispiel für Arbeitsfähigkeiten. Um die Fertigkeit zu starten, benötigen Sie ein SSL-Zertifikat, das mit openssl generiert werden kann. In Zeile sima.py in Zeile 14 finden Sie ein Beispiel für die Zertifikatgenerierung

 openssl req -new -keyout crt.pem -out crt.pem -x509 -days 365 -nodes -subj '/CN=site.com/O=user/C=RU' 

site.com und Benutzer müssen durch ihre Daten ersetzt werden.

Wenn eine Fertigkeit auf einem neuen Gerät gestartet wird, wird ihre Kennung aufgezeichnet. Um die Kennung und das Automatisierungssystem zu verknüpfen, müssen Sie zunächst eine neue CSV-Datei im Client-Verzeichnis erstellen, die auf der Beispieldatei my.csv basiert. Die Seriennummer wird gemäß der Vorlage in die Datei geschrieben. Dies ist dieselbe Seriennummer aus dem Programm hjconnect, und die Steuerobjekte werden geschrieben: Name, Typ, Thema. Das Thema ist ein wesentlicher Bestandteil des MQTT-Zubehörthemas aus der JSON-Datei für homekit2mqtt. Anschließend müssen Sie mit sn.py die Seriennummer in ein Kennwort konvertieren und dieses Kennwort auf dem Gerät benennen, von dem aus Sie verwalten werden. Die Kommunikation wird vom Programm hjconnect bereitgestellt, und der MQTT-Überwachungsserver ist derselbe Computer, auf dem die Fertigkeit ausgeführt wird.

Danke, Tschüss.

Source: https://habr.com/ru/post/de442600/


All Articles