Die Geschichte, wie ich die Wohnung mit Node-RED automatisiert habe. Teil II

Die lang erwartete Fortsetzung des Beitrags über die Automatisierung der Wohnung . In diesem Teil werde ich über Beleuchtung, ein Multimedia-System und Sicherheitssensoren sprechen.



Beleuchtung


Zur Steuerung der Beleuchtung werden verschiedene Komponenten verwendet:

  • motorisierte Vorhänge;
  • dimmbare Beleuchtung.

Scheinen


Das Licht in den Räumen ist in zwei Zonen unterteilt. Ich benutze ikeev LED-Dimmlampen. Ich verwende drei Module zur Steuerung:
Eingebauter Dimmer FIBARO Dimmer 2
Eingebauter Dimmer FIBARO Dimmer 2

Eingebauter Doppelrelais FIBARO Doppelschalter 2x1.5kW
Eingebauter Doppelrelais FIBARO Doppelschalter 2x1,5 kW

Eingebautes Relais FIBARO Single Switch 2.5kW
Eingebauter Relais FIBARO Einzelschalter 2,5 kW

Dimmer kann automatisch eine Dimmmethode (an der Vorder- und Hinterkante der Phase) auswählen und für minimale und maximale Helligkeit kalibrieren. Da ich im Voraus ein Dreileitersystem für alle Steckdosen hatte, musste ich keinen Bypass verwenden. LED-Lampen flackern nicht und leuchten nicht, wenn keine Spannung anliegt. Für dimmbare Module verwende ich Klingelschalter, damit Sie die Helligkeit einstellen können.


Dreidraht-Dimmer-Schaltplan

So funktioniert das:

  • - , ( ).
  • - , — . . , .
  • , , . — .
  • , . , 1% .
  • , 15 .
  • , .














Wie ich bereits schrieb, blicken alle Fenster meiner Wohnung auf eine belebte Straße mit hellem Licht. Um das Problem des hellen Lichts von Lampen in der Nacht oder im Sommer von der hellen Sonne zu lösen, verwende ich motorisierte Rollläden.

Zuerst wollte ich fertige Kits kaufen, aber die Preise waren sehr hoch und das Farbschema gefiel mir nicht. Diese Idee musste verworfen und mehrere Sets selbst zusammengestellt werden.

Von den 220-V-Motoren war die Auswahl gering: entweder French Somfy oder Chinese Dooya. Somfy ist leiser, aber auch teurer, daher fiel die Wahl auf Dooya DM35S-Motoren. Ich bestellte sie zusammen mit Befestigungselementen am "Aliexpress". Der Motor verfügt über zwei Endschalter, die die maximale und minimale Position einstellen.


Motor mit Halterungen

Das nächste Problem war das Rohr zum Aufwickeln von Vorhängen. Gemäß den Regeln der E-Mail-Nachricht können Sie ein Paket nicht länger als 180 cm senden, und eines der Fenster, die ich habe, ist mehr als 2 Meter groß. Auf dem nächstgelegenen Baumarkt fand ich ein Aluminiumrohr mit dem gewünschten Durchmesser - 50 mm. Nach dem Einbau der Motoren in die Rohre müssen noch Verdunkelungsvorhänge gefunden werden. Ich habe den Stoff in meinen Größen bei "Aliexpress" bestellt, nachdem ich mit dem Verkäufer vereinbart hatte, dass er mir nur den Stoff ohne Mechanismen schicken würde.


Die zusammengefügte feste curtain Die

Vorhänge werden gesteuert , die unter Verwendung von Fibaro Rolltor 2 Z-Wave Blindsteuermodul. Jalousiesteuermodul




Das Modul ist in die Buchse eingebaut. Bei solchen Modulen ist es ratsam, sofort tiefe Buchsen zu verlegen, um das Modul, die Drähte und den Schalter zu drücken. Das Modul verfügt über genügend Einstellungen, einschließlich Reaktion auf Alarme, Berechnung des Stromverbrauchs, Kalibrierung mit Endschaltern.


Zusammengebaute Schalter

Vorhänge sind in jedem Raum und in der Küche installiert. Sie können die Vorhänge entweder über die Schalter neben ihnen oder über eine Schnittstelle oder ein Skript steuern.

Die Vorhänge werden automatisch heruntergezogen, wenn die Dämmerung einsetzt und die Lichter auf der Straße angehen. Sie steigen an Wochentagen und Wochenenden entsprechend der programmierten Zeit für jedes Zimmer an. Wenn es draußen dunkel ist, geht das Licht in dem Raum, in dem der Vorhang heruntergelassen wird, sanft an.

Arbeitstage und Wochenenden werden nach dem heruntergeladenen Produktionskalender berechnet. Mit dem Telegrammbefehl können Sie die Uhrzeit am nächsten Tag für jeden Raum neu konfigurieren. Vor dem Zusammenklappen der Vorhänge gemäß dem „Wecker“ kommt eine Telegrammnachricht mit der Möglichkeit, 30 Minuten lang zu bestätigen, abzubrechen und neu zu planen. Wenn die Aktion nicht folgt, klappen die Vorhänge automatisch. An hellen Tagen stellen die Vorhänge ihre Position abhängig von der Beleuchtung im Raum und der Tageszeit automatisch ein und prüfen auch, ob das Licht an ist oder nicht. Nach Erhalt des Befehls „Urlaub“ werden alle Vorhänge in allen Räumen heruntergelassen. Curtain - Management Szenario Curtain - Management - Szenario








Arbeitsbeispiel

Multimedia-System


Ich habe viele Multimedia-Geräte mit verschiedenen Fernbedienungen im Wohnzimmer und wollte sie mit einer Taste steuern.

Im Internet habe ich separate IR-Codes zum Ein- und Ausschalten von Verstärker, Fernseher und HDMI-Splitter gefunden. Mit dem Python-Skript pronto_broadlink wurden sie in base64 transkodiert, dann in ein Array von Bytes konvertiert und in die IR-Codebasis geschrieben. Daher ist es jetzt nicht mehr erforderlich zu wissen, in welchem ​​Zustand sich das Gerät gerade befindet: Sie können das Signal einfach erneut senden.

Da mein Verstärker ziemlich alt ist und nicht weiß, wie man ein 4K-Bild über HDMI verarbeitet, habe ich einen HDMI-Splitter gekauft. Sie können das Video- und Audiosignal in zwei separate HDMI-Signale aufteilen: eines davon ist an den Verstärker angeschlossen, das zweite an das Fernsehgerät.


Verstärker und andere Geräte

Im Moment habe ich zwei Audio- und Videoquellen: einen Desktop-Computer und einen Server. Über die Schnittstelle können Sie alle Geräte für die Wiedergabe mit einer Taste einschalten. Nur in einem Fall wird der Signalempfang auf dem Splitter vom Server und im zweiten Fall vom Computer aus konfiguriert. In Zukunft ist geplant, Spielekonsolen an den Splitter anzuschließen.

Wenn alle das Haus verlassen, werden alle Multimedia-Geräte ausgeschaltet. Medienkontrollszene




Das Anwesenheitssystem arbeitet mit 6 Bewegungssensoren und einem Sensor zum Öffnen der Vordertür. Wenn nach dem Öffnen und Schließen der Tür kein einziger Belegungssensor ausgelöst wurde, wird in einem bestimmten Intervall eine Nachricht mit Bestätigung an Telegram gesendet. Wenn innerhalb von zwei Minuten keine Aktionen ausgeführt werden oder die Taste „Ok“ gedrückt wird, wechselt das System in den Modus „Außer Haus“. Wenn zu diesem Zeitpunkt eine Bewegung auftritt, wird der Befehl abgebrochen und die Nachricht gelöscht.

Ich habe versucht, BLE zu verwenden, aber in meinem Fall funktionierte es nicht sehr stabil und hing stark vom Telefonsender ab. Automatische Anwesenheitserkennung




Sicherheitssensoren


An den Wasserleitungen sind Gidrolock- Verriegelungsvorrichtungen installiert . Wenn das Steuerkabel kurzgeschlossen ist, schließt der Aktuator den Hahn und öffnet sich, wenn er nicht angeschlossen ist. Beide Antriebe sind an ein eingebautes Philio -Relais mit Trockenkontakt angeschlossen .

Gidrolock
Der Gidrolock-Relaisantrieb wird

von NEO Coolcam Z-Wave-Sensoren gesteuert, die sich in Bereichen mit möglichen Undichtigkeiten befinden. Alle Sensoren sind direkt mit dem Relais verbunden, so dass sich das Wasser ohne Beteiligung der Steuerung abschaltet. Um zu verhindern, dass der Wasserhahn sauer wird, wird er alle zwei Wochen nachts automatisch geöffnet und geschlossen. Laufwerksautomatisierungsdiagramm Wenn Philio einen Sensor raucht




Die Belüftung ist ausgeschaltet, um das Feuer nicht aufzublasen. Gleichzeitig wird eine Nachricht an den Telegramm-Chat gesendet und der Sensor quietscht widerlich.

Andere Sensoren und Geräte



Server autorisieren


Dieses Modul ist eine einfache Implementierung eines Autorisierungsdienstes.
Es gibt zwei http-Methoden: Eine prüft, ob die Anfrage vom internen Netzwerk stammt, und wenn ja, autorisiert sie den Benutzer, indem sie ihm ein JWT-Token ausstellt. Das JWT-Token wird mit RSA 256 verschlüsselt, der private Schlüssel muss in der Datei daneben registriert sein. Wenn die Anforderung nicht vom internen Netzwerk stammt, wird der Benutzer zur Anmeldeseite weitergeleitet, auf der er das Login und das Passwort eingeben und sich anmelden muss. Da eine Trennung in Benutzer nicht angenommen wird, befinden sich die Anmeldedatei und das Kennwort in verschlüsselter Form (SHA 512) in der Konfigurationsdatei in der Nähe.

MQTT-Server


Der MQTT-Server wird mithilfe der aedes- Komponente implementiert .

Der Server steigt an zwei Ports an: intern für die Kommunikation mit dem Server ohne Autorisierung und extern für die Implementierung von WebSocket. Alle Front-End-Clients stellen über einen Socket eine Verbindung her und übergeben die Authentifizierung während der Autorisierung, des Abonnierens des Themas und der Veröffentlichung einer Nachricht. Das vom Autorisierungsserver empfangene JWT-Token kommt herein und wird mit dem öffentlichen Schlüssel validiert. Bei Anforderungen vom Server erfolgt keine Validierung.

Benutzerdefinierte knotenrote Knoten


Beim Schreiben der Automatisierung mussten ein zusätzlicher Knoten und zwei zum Abschluss implementiert werden.

Ich musste Node-Red-Contrib-Openzwave ändern , da meine Pull-Anfrage erst nach 7 Monaten akzeptiert wurde, aber jetzt können Sie die Bibliothek ab npm verwenden. Die Verfeinerung bestand darin, ein Ereignis zum Entfernen von Knoten auszulösen.



Der MQTT-Knoten wurde ebenfalls finalisiert. Tatsächlich besteht die Hauptverfeinerung darin, die ID des verbundenen Clients abzurufen und beim Schreiben an die Warteschlange zurückzuschreiben. Hier kommen Sie mit der Subflow-Funktionalität zurecht. Es sollte auch Daten an den Eingang des MQTT-Knotens übertragen, war aber nicht nützlich.



Zur Steuerung der Vorhänge und Wasserhähne war ein Zeitplanknoten erforderlich. Zu diesem Zeitpunkt in der Bibliothek verfügbar waren zu funktionsreich und unterstützten keine einfache Implementierung mit CRON. Meine Implementierung ist recht einfach: Ein Zeitplan kann entweder am Eingang eines Knotens erstellt oder intern festgelegt werden. Es ist möglich, den Zeitplan abzubrechen. Unter der Haube wird der Knotenplan verwendet .



Vorderseite


Jede aktive Komponente der Wohnung, die in der Automatisierung aufgewickelt wird, ist ein Modul an der Vorderseite. Jedes Modul ist in sich geschlossen und enthält alle zum Rendern erforderlichen Komponenten. Die Module sind in zwei Aggregationen unterteilt: statisch und Z-Wave. Module müssen eine Schnittstelle implementieren.

Schnittstelle
export interface INode {
    id: string;
    type: NodeTypes;
    name: string;
    addWidget: ComponentClass<AddProps> | StatelessComponent<AddProps>;
    model: INodeModelConstructor;
    service?: INodeServiceConstructor;
    smallComponent: ComponentClass<WidgetProps<any>> | StatelessComponent<WidgetProps<any>>;
    bigComponent: ComponentClass<WidgetProps<any>> | StatelessComponent<WidgetProps<any>>;
    dialogEditComponent: ComponentClass<WidgetProps<any>> | StatelessComponent<WidgetProps<any>>;
    dialogViewComponent: ComponentClass<WidgetProps<any>> | StatelessComponent<WidgetProps<any>>;
}


Implementierungsbeispiel
class Widget extends BaseWidget implements INode {
    model: INodeModelConstructor = Model;
    manufacturerid: string = '0x0086';
    producttype: string = '0x1a02';
    productid: string = '0x0064';
    addWidget: StatelessComponent<AddProps> = AddWidget;
    service: INodeServiceConstructor = Service;
    smallComponent: StatelessComponent<WidgetProps<Model>> = SmallComponent;
    bigComponent: StatelessComponent<WidgetProps<Model>> = BigComponent;
    dialogEditComponent: ComponentClass<WidgetProps<Model>> = DialogEditComponent;
    dialogViewComponent: ComponentClass<WidgetProps<Model>> = DialogViewComponent;
}
export default Widget;


Für statische Module - zum Beispiel Klimaanlagen - müssen Sie vorne ein Data Warehouse implementieren. Eine solche Implementierung ist unpraktisch und muss in einem Repository geändert werden.

Für Z-Wave-Module habe ich ein gemeinsames Repository organisiert und alle Änderungen daran verfolgt.

Das Modul implementiert die Anzeige auf zwei Arten:

  • für "große" Bildschirme (Tablet, Computer);
  • für Telefone.

Je nach Gerätetyp wird die Touch- oder Maussteuerung ausgewählt.

Die Anwendung wurde mit Webpack + Babel erstellt: Gemäß den aktuellen Einstellungen wurde sie für die letzten beiden Versionen von Firefox, Chrome und Chrome Android zusammengestellt.

Merkmale von Quellcodes


Quellen

Alle Datenflüsse sind deaktiviert, um keine Fehler in das Protokoll zu werfen. Der Konfigurationsknoten für Z-Wave wird gelöscht: Er ist fehlerhaft, wenn der Z-Wave-Controller nicht gefunden wird, und löscht den gesamten Node-RED. Es sollte ungefähr so ​​aussehen:


Damit der Arbeitskalender-Loader funktioniert, müssen Sie sich auf data.gov.ru registrieren , dort ein Token abrufen und es nach access_token eingeben:


Die Wettervorhersage wird alle 15 Minuten von darksky.net heruntergeladen . Er benötigt auch einen Token. Sie müssen sich registrieren und den Token nach der Vorhersage in die Koordinaten eingeben:


Um Telegrammbenachrichtigungen zu senden, müssen Sie Ihren Bot abrufen, in den Telegrammkonfigurationsknoten eingeben und gegebenenfalls die Chat-ID eingeben. Bei meinem Flow handelt es sich um einen Subflow: Die



Quellen sind in Vorder- und Rückseite unterteilt. Im hinteren Teil liegt:

  • Server autorisieren.
  • MQTT-Server.
  • Benutzerdefinierte Node-RED-Module.
  • Exportierte Flows in einer Datei, die entweder in Ihr eigenes Konto oder in eine separate Instanz für Tests hochgeladen werden kann.
  • Ein Projekt für Node-RED, in dem Sie die Module installieren und dann nur den exportierten Flow laden müssen (die Module befinden sich bereits im Projekt).
  • Backup Mongo-Basis.

Weitere Informationen zur Installation finden Sie in der Readme-Datei im Github-Repository .

Pläne


Es ist geplant, das Mikrofon eines Smartphones oder eines an der Wand montierten Tablets zur Sprachsteuerung zu verwenden. Ich plane, mein Open-Source-System auf einem Server bereitzustellen, der auf CMU Sphinx basiert .

Ich plane auch, ein Modul für die Erfassung und Übertragung von Messwerten von Sanitär- und Stromzählern zusammenzustellen.

Es lohnt sich auch, die Verwendung akkumulierter Statistiken für verschiedene Parameter in Betracht zu ziehen, um die Automatisierung zu optimieren.

Fazit


Im Moment habe ich eine fast vollständige Automatisierung des Hauses gemäß meinen Bedürfnissen erreicht - um ein angenehmes Klima und eine angenehme Beleuchtung im Haus aufrechtzuerhalten. Aufgrund einer gewissen Automatisierung konnte der Stromverbrauch sowohl von den Heizelementen als auch von der Beleuchtungsseite aus reduziert werden (etwa 1.500 heating im Winter im Vergleich zu denselben Geräten ohne Automatisierung).

Natürlich gibt es immer noch Fehler in den Algorithmen, aber ich werde sie eines Tages abfangen, zumindest bewege ich mich in diese Richtung. Das System funktioniert stabil, ich sehe trotz der sehr geringen Geschwindigkeit im Z-Wave-Protokoll keine Bremsen.

Natürlich macht sich das System nicht auf Kosten der Einsparungen bezahlt, es geht eher um Komfort. Eine solche Automatisierung ist sehr feucht in Bezug auf Kleinigkeiten wie das Schließen und Öffnen von Vorhängen und die Steuerung des Lichts. Wenn Sie sich in einer normalen Wohnung befinden, vergessen Sie manchmal, das Licht ein- oder auszuschalten, und öffnen die Vorhänge überhaupt nicht.

Ich stelle das Klimasystem selten mit meinen Händen ein, aber manchmal müssen Sie die Klimaanlage ein- oder ausschalten oder die Temperatur der Batterie einstellen. Im Allgemeinen bin ich mit dem resultierenden System zufrieden: Es lässt weniger Zeit für Anpassungen. Bei einem Controller-Fehler bleiben alle Funktionen erhalten (nur die Automatisierung fällt aus). Die Funktionalität der Wasserabsperrung bleibt ebenfalls erhalten. Wenn ich mich entscheide, die Wohnung zu verkaufen, kann ich die gesamte Automatisierung problemlos entfernen. Oder lassen Sie es an Ort und Stelle, aber verkaufen Sie mehr.

All Articles