Smart Home. Gehirne
Wenn alle Drähte verlegt sind, die Schalter installiert sind, die Schalttafel hergestellt ist (all dies wird im ersten Teil beschrieben ), können Sie mit dem interessantesten Schritt fortfahren - der Programmierung der Steuerung. Da ich keinen speziellen Controller für ein Smart Home verwendete, sondern einen Controller aus der industriellen Automatisierung, musste ich von Grund auf neu programmieren - es gibt Eingänge, es gibt Ausgänge, alles andere muss programmiert werden - was durch Drücken einer Taste (Schalter ohne Fixierung) zu tun ist, wie man einen Dimmer programmiert , Skripte usw.
Aber das Wichtigste zuerst. Zu Beginn umfasste die Architektur meines Smart Homes die folgenden Komponenten:- Industrieregler Widder von PLK110-32 (Haupthirn)
- Analoges Ausgangsmodul MU110-6U (zur Steuerung von Dimmern)
- Modul zur Eingabe von Analogsignalen MV110-8A (später hinzugefügt, um Messwerte von Sensoren zu erfassen).
All dies ist über RS-485 und die Modbus RTU-Punktion miteinander verbunden. Der Hauptcontroller ist zur Kommunikation mit der Außenwelt mit Ethernet verbunden.Zur Steuerung vom Telefon aus habe ich zunächst Iridium Mobile verwendet , das mir die Hersteller freundlicherweise zur Verfügung gestellt haben (ja, meine offizielle Position für persönliche Zwecke nutzen!). Später habe ich es durch einen Webdienst ersetzt, der auf Node JS basiert. Außerdem wurde später ein drahtloses Teil hinzugefügt, das auf Z-Wave basiert. Ich habe vor, darüber separat zu schreiben, aber jetzt kehren wir zu unseren Schafen zurück.Die Programmierung des Controllers erfolgt in der CoDeSys-Umgebung, die 5 Spezialsprachen unterstützt, von denen ich zwei beherrschte - FBD (Function Block Language) und ST (Pascal-like language). Eigentlich dachte ich anfangs, ich würde mich nur mit FBD zufrieden geben, da das Programmieren in dieser Sprache wie das Charting in einem Editor aussieht.
Die FBD-Subroutine (oder besser gesagt der Funktionsblock) zur Verarbeitung des Schalters im Korridor sieht also so aus. Mit diesem Schalter wird nicht nur das Licht im Flur ein- und ausgeschaltet, sondern auch das Licht in der gesamten Wohnung ausgeschaltet. Durch einmaliges Drücken wird das Licht im Korridor umgeschaltet, und durch langes Drücken (1 Sek.) Wird der Befehl zum Ausschalten aller Lichter aktiviert.Als immer mehr Funktionen und Fähigkeiten hinzugefügt wurden, kam ich zu dem Schluss, dass die Sprache der Funktionsdiagramme überhaupt nicht so bequem ist - es stellt sich als umständlicher Code heraus, die Programmierung ist langsam und das Debuggen ist sehr unpraktisch. Daher habe ich nach und nach auf die ST-Sprache umgestellt und mich nicht mehr der FBD-Sprache zugewandt.Zum Vergleich sieht es so aus, als wäre dies ein Teil des Funktionsblocks des Dimmers in der ST-Sprache (stimme zu, das ist eine ganz andere Sache!):
Da es sich um einen Dimmer handelt, müssen wir speziell darüber sprechen. Wie sich herausstellte, ist es gar nicht so einfach, einen geeigneten Dimmer (Bügeleisen) für ein Smart Home zu finden. Ich habe nicht alle Arten von Outbred-Optionen in Betracht gezogen, da alle grundlegenden Funktionen auf Drahttechnologien implementiert werden sollten - darüber habe ich bereits früher geschrieben. Der Preis für Dimmer, der mir aufgefallen ist, hat mir nicht gefallen. Außerdem musste die Kompatibilität mit meinem Smart Home sichergestellt werden. Zuerst habe ich mich für den von ModBus gesteuerten INSYTE LDD-400D entschieden, mit dem ich ihn ohne zusätzliche Module direkt an den Controller anschließen konnte, aber die Freunde, die ihn in ihren Projekten verwendeten, sprachen irgendwie nicht sehr gut darüber, und als Ergebnis entschied ich mich Frage mit einem Dimmer also - ein Halbleiterrelais setzen.
Das Relais wird (über das Analogausgangsmodul) mit einem 0-10V-Signal und 10-220V-Ausgängen gesteuert. Bitte beachten Sie, dass die Mindestspannung am Ausgang des Halbleiterrelais nicht 0, sondern 10 V beträgt - bei dieser Spannung leuchtet die Spirale der Glühlampe merklich. Dieses Problem wird wie folgt gelöst: Zusätzlich zum Halbleiterrelais enthält die Schaltung auch das übliche (mechanische) Zwischenrelais. Wenn auf Programmebene das Licht vollständig ausgeschaltet werden muss, schaltet die Steuerung das Zwischenrelais aus und unterbricht die Schaltung.Die zweite Schwierigkeit bei der Organisation des Dimmens des Lichts besteht darin, eine bequeme Schnittstelle zu erstellen, wobei zu berücksichtigen ist, dass ich einen herkömmlichen Schalter ohne Fixierung als Steuerung verwende.Die erste Version der Benutzeroberfläche sah ungefähr so aus (jetzt erinnere ich mich nicht mehr genau):- kurzes Drücken - Schalten Sie das Licht ein oder aus (das Licht wird bei der letzten Helligkeitsstufe eingeschaltet).
- langes Drücken, wenn das Licht an ist - eine allmähliche Abnahme der Helligkeit und dann eine Erhöhung durch Null
- langes Drücken bei ausgeschaltetem Licht - sanfter Anstieg von Null
- Durch zweimaliges Tippen wird das Licht bei voller Helligkeit eingeschaltet.
Ich habe mehrere Monate mit dieser Option gelebt, bin dann aber zu dem Schluss gekommen, dass sie immer noch nicht sehr praktisch ist und meistens nur drei Modi verwendet werden - das Licht ist an, das Licht ist aus oder das Licht ist mit minimaler Wut eingeschaltet. Daher habe ich eine einfachere diskrete Option implementiert (die bisher noch besteht):- kurz drücken - Licht ein- / ausschalten (bei voller Helligkeit einschalten)
- langes Drücken - schaltet das Licht bei 25% Helligkeit ein und wechselt in den Dimmmodus;
- Bei jedem weiteren Drücken geht es zum nächsten Schritt + 25%. Verlassen Sie den Dimmer-Modus - durch Timeout.
Wie ich bereits in einem früheren Beitrag sagte, ist die Steuerung einzelner Tasten ohne Korrektur immer noch nicht die beste Lösung. Neben dem gerade zitierten Beispiel mit dem Dimmer habe ich auch ein komplexes Szenario zum Einschalten des Lichts im Wohnzimmer implementiert. Wir ziehen es vor, das Deckenlicht im Wohnzimmer nicht zu verwenden und sofort die Schreibtischlampe und die Lichter im Schrank einzuschalten. Ich habe diesen Prozess automatisiert und jetzt sieht die Lichtsteuerung im Wohnzimmer folgendermaßen aus:- Ein Klick (wenn die Lampe ausgeschaltet ist) - schaltet die Lampe und die Hintergrundbeleuchtung ein
- Ein Klick (wenn die Lampe leuchtet) - schaltet das obere Licht ein oder aus
- Ein Druck unmittelbar nach dem zweiten (wenn das Deckenlicht ausgeschaltet ist) - löscht die Schreibtischlampe
- langes Drücken - schaltet alle Lichter im Raum aus
Die ersten beiden Punkte dieses Szenarios sind aus Sicht des Verhaltensmodells sehr gut geeignet. Der letzte Punkt wird in Analogie zum Korridor gemacht. Der dritte Absatz ist sehr kontrovers und wird nicht verwendet. Das Problem ist, dass die Familie murrt, aber dieses Drehbuch ist Gang, aber kein einziger Gast kann mit dem Licht fertig werden. Daher benötigen Sie für Skripte entweder Touchpanels oder Multifunktionstasten.Das CoDeSys-System kann ein Visualisierungs- und Bedienfeld erstellen. PLC110 unterstützt die Weboberfläche nicht, daher funktioniert die Visualisierung nur im CoDeSys-Komplex.
So sieht das technische Bedienfeld meines Smart Homes aus. Technisch, weil es im Alltag niemand benutzt. Mit einer kleinen Ausnahme dient dieses Panel als Remote-Schnittstelle für die Verwaltung eines Smart Homes. Wenn ich etwas aus der Ferne tun muss, gehe ich über TeamViewer zu meinem Heimserver und verwende dieses Bedienfeld. Ein solcher Bedarf tritt sehr selten auf, so dass ich nicht einmal den Fernzugriff für den Webdienst eingerichtet habe.Abschließend die Vor- und Nachteile.Vorteile:- Zuverlässigkeit - Die Lösung hat sich sehr gut bewährt (sie basiert jedoch auf einer Komponentenbasis, die für die industrielle Automatisierung verwendet wird). Für die ganze Zeit gab es keinen einzigen (!!!) Fehler. Auch nach Spannungsspitzen startete das System problemlos.
- (, , ).
:Wie ich im ersten Artikel sagte, würde ich jetzt genauer nach Alternativen suchen, aber wenn jemand plötzlich diese Lösung studieren möchte, habe ich den in CoDeSys erstellten Quellcode auf github veröffentlicht . (Bitte lassen Sie sich nur von der Qualität des Codes herablassen.In den folgenden Abschnitten - Telefonsteuerung und drahtlose Lösungen. Source: https://habr.com/ru/post/de389053/
All Articles