
Der vorherige Artikel löste eine ziemlich hitzige Diskussion aus, und dieser Umstand überzeugte mich von der Notwendigkeit, das, was wir "Erfahrungsaustausch" nennen, fortzusetzen. Wir haben uns also darauf geeinigt, dass ich nach dem Erscheinen alternativer Energiequellen im Haus, vor allem des Solarkollektors, die Parameter messen wollte, die mit ihrer Arbeit einhergehen. Um beispielsweise zu sehen, wie sich die Temperatur des Solarkühlmittels ändert, überhitzt sich das Wasser im Kessel usw. Es ist klar, dass die Messung von etwas an sich und sogar die Übermittlung dieser Informationen an den Verbrauchsort (Telemetrie) weder den Komfort noch die Sicherheit erhöht. Daher wurde der „TK“ sofort ein Element auf der Fernbedienung verschiedener Aktuatoren hinzugefügt. In diesem Artikel werde ich keine Codelisten geben, sondern alle technischen Lösungen bis ins kleinste Detail detaillieren. Mein Ziel ist es, den Gedankengang und die angenommenen technischen Lösungen sowie deren Ergebnis aufzuzeigen. Wer einen ähnlichen Weg einschlagen will, muss noch viele Probleme selbst lösen.
Ein leichter lyrischer Exkurs.Im Jahr 2010 erschien zusammen mit einem Wechselrichter / Batterien ein universelles GSM-Controller-Alarmsystem der russischen Firma RADS Electronics im Haus. Dieses wunderbare Universalgerät wurde zusätzlich zu Alarmfunktionen mit GSM-Warnungen verwendet, um auch das Licht im Wohnzimmer und vor allem den Elektrokessel zu steuern. So habe ich vor langer Zeit gelernt, die Temperatur zu kontrollieren, die Temperatur aufrechtzuerhalten und das Haus vor der Ankunft im Voraus zu wärmen. Die Bequemlichkeit solcher Systeme liegt auf der Hand. Die Fähigkeiten des Controllers sind jedoch begrenzt, so dass der neue „TK“ zunächst den Grundstein für die Schaffung eines parallelen Systems legte, selbst bei sich teilweise wiederholenden Funktionen und natürlich beim Zugriff auf Informationen von Sensoren und der Steuerung über das Internet.
Die anfänglichen Anforderungen drohten also:
- Messen Sie die Temperatur an allen 8 Kesseldüsen und 2 Kesseldüsen.
- Messen Sie die Temperatur und Luftfeuchtigkeit im Heizraum, in dem das Gerät montiert ist.
- Messen Sie die Temperatur und Luftfeuchtigkeit der Außenluft. Um eines Tages eine wetterabhängige Heizungsregelung zu implementieren.
- Fahren Sie einen Elektrokessel, während Sie das alte System beibehalten. Der Kessel ist dreistufig mit Einstellung der Heiztemperatur und Rückmeldung über die Temperatur des Kühlmittels. Für Fernbedienungszwecke ist es jedoch ausreichend, die Heizschritte ein- und auszuschalten.
- Kesselheizung verwalten.
- Verlegen Sie ein Minimum an Drähten. Nicht so sehr, um sich nicht darum zu kümmern, sondern weil die Dekoration im Haus bereits erfolgt ist.
- Verfügen Sie über eine praktische Oberfläche zum Verwalten und Arbeiten mit Sensorwerten. Die Schnittstelle muss auf mobilen Geräten zugänglich sein.
Und noch ein kleiner Exkurs.
Auf dem Foto - ein Generator mit einem elektrischen Anlasser. Für den Winterstart musste ich eine Autobatterie und ein Ladegerät einsetzen. Und verwenden Sie synthetisches Öl.
Alle im selben Jahr 2010 ließ sich ein Benzingenerator in der Garage nieder. Und bald wurde ein automatischer Startcontroller hinzugefügt, der unabhängig auf der Basis des Arduino-Mikrocontrollers hergestellt wurde. Die Steuerung prüft nicht nur das Vorhandensein eines 220-V-Netzwerks, sondern auch das Signal des Wechselrichters über die Entladung der Batterien, und der Wechselrichter selbst liefert die automatische Eingabe des Generators. Insgesamt war es möglich, einen ziemlich intelligenten Generatorsteuerungsalgorithmus zu implementieren. Im Allgemeinen bestand keine Angst vor der Verwendung von Mikrocontrollern, sowohl im Sinne der Verbindung von Peripheriegeräten als auch im Sinne der Programmierung. In der Vergangenheit habe ich viel in C / C ++ programmiert.
Die Anforderungen sind im Allgemeinen einfach, wenn nicht trivial. Es gibt Tausende verschiedener Möglichkeiten, sie zu implementieren. Deshalb ist der Eckpfeiler die Wahl der Architektur und der technologische Stapel, auf dem das neue System aufgebaut wird. Der systematische Ansatz ist genau das, was hier wichtig ist, das Verständnis, dass einzelne technische Lösungen miteinander verknüpft werden müssen, das Verständnis, dass das System sicherlich weiter expandieren wird, wie es bereits beim Stromversorgungssystem zu Hause geschehen ist. Außerdem ist es wichtig, Ihre eigenen Fähigkeiten zu verstehen. Deshalb musste ich googeln, "Hilfe vom Publikum" nehmen und "einen Freund anrufen".
Auf dem Foto Arduino Nano und nRF24L01 + mit Antenne
Ich fing an, nach Systemen zu suchen, die auf dem weit verbreiteten Z-Wave-Standard basieren. Dies beeinflusste weitere Entscheidungen stark, obwohl Z-Wave zunächst verworfen wurde. Da Z-Wave eine offensichtliche Wahl für Anforderungen in meiner Nähe ist, ist es wichtig zu verstehen, warum es fallengelassen wurde. Zunächst natürlich die Kosten für einen Sensor. Und ich muss nur die Temperatur an einem Kessel an 8 Punkten messen, jeder Punkt ergibt 3000+ Rubel. Zweitens der Formfaktor von Standardsensoren, die ihre Verwendung an Kesseldüsen nicht zulassen. Drittens die begrenzte Auswahl an Steuerungssystemen und Fernzugriff, die ebenfalls alle proprietär (Sie sollten lesen: "begrenzt") und bezahlt sind. Die Idee eines selbstorganisierenden Netzwerks mit der Möglichkeit sowohl der Peer-to-Peer-Kommunikation (Assoziationen) eines Sensor-Aktors als auch einer zentralisierten Server-Client-Verwaltung ist jedoch sehr attraktiv. Auf Anraten eines Freundes ging er an ein interessantes Projekt , das zunächst wie eine Erweiterung der Funktionalität von Z-Wave-Systemen auf Basis von Vera-Controllern aussah, jedoch den DIY-Ansatz verwendete. Das Projekt verwendete Arduino, 2,4 GHz nRF24L01 + drahtlose Transceiver und die entsprechende Bibliothek. Alles zusammen ist genau das, was für meine Anforderungen benötigt wird. Die Verwendung von Arduino eröffnet nahezu unbegrenzte Möglichkeiten der Hausautomation für Geld, eine Größenordnung (!) Kleiner als bei Z-Wave. Es ist auch wichtig, dass Arduino eine außergewöhnlich stabile Plattform ist. Der Generator-Autostart-Controller, der einmal auf dem Arduino montiert wurde, funktioniert seit 7 Jahren einwandfrei. Aufgrund der Erfahrung mit Entwicklung, Löten und Programmieren habe ich dieses Projekt eingestellt.
Und ging sogar weiter. Im Code habe ich mich völlig geweigert, mich an Vera zu binden. Stattdessen wählte er einen der vom Autor der mysensors-Bibliothek empfohlenen Software-Controller. Nachdem er die Foren und Websites der Hersteller studiert hatte, wurde er zum Open-Source-Projekt openHAB . Ausschlaggebend für die Offenheit, die plattformübergreifende, integrierte, leistungsstarke Regelsprache und die Präsenz mobiler Clients war die folgende erklärte Eigenschaft: „Anbieter- und Technologie-Agnostiker“. Genau das braucht ein systemorientierter IT-Spezialist: die Möglichkeit, das System in Zukunft mit Komponenten verschiedener Hersteller und Standards zu erweitern und gleichzeitig für bestimmte Zwecke am besten geeignet zu sein. Das heißt, Von Anfang an bestand das Verständnis, dass nicht alles auf dem Arduino erledigt werden muss und nicht alles innerhalb der Grenzen von Z-Wave möglich ist. Gleichzeitig habe ich mich für eine zentralisierte Verwaltungslogik entschieden, was zunächst einmal ganz natürlich ist. Das heißt, Bei auf Arduino montierten Endgeräten gibt es nur eine minimale Geschäftslogik: Ein- und Ausschalten des Lichts von herkömmlichen mechanischen Schaltern, die einfach zu Sensoren werden, Lesen und Konvertieren von Informationen von Sensoren physikalischer Parameter, Übertragen von Daten an den Server, Empfangen und Ausführen von Befehlen vom Server. Ich plane keine direkte Interaktion zwischen Gerätenetzwerkknoten. Alle echte Geschäftsführungslogik basiert auf openHAB-Regeln. Jetzt sind noch kleine Dinge übrig - wählen Sie die Hardwareplattform und das Betriebssystem für den Serverteil für openHAB.
Viele DIY-Enthusiasten unter openHAB wählen den Raspberry Pi. Und dies ist eine großartige Lösung, wirtschaftlich, kompakt und leise. Es schien mir jedoch falsch, mich auf die Rechenleistung zu beschränken, da ich mich sofort entschied, den zukünftigen Server als multifunktionales Gerät zu verwenden. Ich wollte beispielsweise das Kodi Media Center darauf und möglicherweise in Zukunft etwas anderes, beispielsweise einen Software-Videorecorder, bereitstellen. Mit Blick auf die Zukunft werde ich sagen, dass Kodi am Ende in ein Smart Home integriert ist. Wenn das Video startet, erlischt das Licht, wenn es stoppt, leuchtet es auf. Und der DVR erschien auch und ist auch integriert. Gleichzeitig habe ich keine besonderen Anforderungen an Multimedia-Komponenten, es reicht aus, dass der Server über HDMI und S / PDIF verfügt. Im Herbst 2015 fiel die Wahl auf einen lüfterlosen Nettop von Hystou (siehe AliExpress): Intel Core i7, 8 GB, 256 GB SSD, 8 USB-Anschlüsse, einschließlich 4 3,0, 2 LAN, WLAN, 2 HDMI, S / PDIF, Kartenleser im Allgemeinen alles, was Sie für das Glück einer DIY-Box brauchen. Er kostete dann etwa 24 tr. Ich habe die Wahl nie bereut, obwohl ich sagen muss, dass WiFi für ihn nicht sehr stabil ist. Aber die Erfahrung, die all dem folgte, sagt zuversichtlich: Wo immer Sie Drähte verlegen können - verlegen Sie Drähte. Ein Funkkanal ist unabhängig von Standard und Frequenz (WLAN, Z-Wave, 433 MHz, 869 MHz, 2,4 GHz usw.) immer schlechter als ein Kabel. Daher wird der Nettop schließlich mit dem Heim-LAN-Kabel verbunden. Und mehrere weitere verschiedene Systeme haben sich darauf niedergelassen.
Für das Betriebssystem des Servers würde ich Stabilität und Vorhersagbarkeit empfehlen. Linux-Distributionen mit einer großen Community haben diese Eigenschaft. Ich bin mit Ubuntu besser vertraut. Dank plattformübergreifender Funktionen kann alles unter Windows ausgeführt werden.
Architektur und Stapel werden also ausgewählt. Wir handeln.
Aufgabe 1. Wählen Sie Sensoren und Aktoren aus. Die Temperatur des Kühlmittels und des Wassers wird an den Düsen des Kessels und des Kessels gemessen. Dazu nehmen wir 1-Draht-DS18B20-Sensoren in ein metallversiegeltes Gehäuse, die von außen bequem direkt an den Düsen montiert werden. Und die Rohre selbst mit Sensoren oben sind mit einer Schaumisolierung für Rohre abgedeckt. Wenn es viele ähnliche Sensoren gibt, ist der 1-Draht-Bus sehr praktisch. Um die Lufttemperatur und Luftfeuchtigkeit im Heizraum und auf der Straße zu messen, wählen wir DHT22, einfach weil dies eine Standard-DIY-Wahl ist. Verwalten Sie den Kessel schrittweise - mit herkömmlichen mechanischen Fünf-Volt-Relais, die auch DIY-Schalttafeln bekannt sind. Es ist wichtig zu beachten, dass diese Relais parallel zu den Stufenschaltern am Kessel geschaltet sind und nicht zu den TEN-Relais, die von der Kesselautomatisierung gesteuert werden. Alle ausgewählten Peripheriegeräte sind entweder direkt kunstlos programmiert, z. B. ein Relais, oder verfügen über die entsprechenden Bibliotheken für Arduino, z. B. 1-Draht / DS18B20 / DHT22. Keine Komplikationen.
Auf dem Foto ein 300l Kessel. Es ist zu sehen, dass sich ein schwarzes Kabel mit einem Sensor am Ende jedem Abzweigrohr nähert, diese in einer weißen Box kombiniert sind und ein gemeinsames weißes 1-Draht-Kabel zur Steuerung führt.
Aufgabe 2. Daten und Befehle mit openHAB austauschen. Ich musste ein bisschen basteln, denn mit openHAB war ich noch nicht "auf dich". Die Architektur von Mysensoren impliziert das Vorhandensein eines Gateways (Gateways) zum Verbinden mit dem zentralen Controller / Server, d. H. zu openHAB.
Das Gateway selbst ist ein physisch separater Controller auf dem Arduino / nRF24L01 + und kann über LAN / WiFi oder Serial mit dem Server verbunden werden. Da ich am Anfang des Pfades bin, wähle ich Seriell und platziere das Gateway neben dem Server. Das Gateway wird verwendet, um Nachrichten, die über das Gateway an das mysensors-Netzwerk gesendet werden, weiterzuleiten und direkt mit dem zentralen Controller openHAB zu kommunizieren. Mysensors-Nachrichten haben ein festes Format und sind leicht zu analysieren. Wir fügen der openHAB-Bindungsserie Serial hinzu, um das Gateway über USB zu verbinden, und schreiben eine Regel zum Parsen von Nachrichten von Geräten im mysensors-Netzwerk, die über USB vom Gateway empfangen wurden. Die openHAB-Regel, die Nachrichten analysiert, basiert auf Code, der im mysensors-Forum gefunden wurde. Als nächstes schreiben wir die Regeln für Aktuatoren - Kesselsteuerrelais, Kesselheizung, Licht usw.
Das Foto zeigt ein Gateway, eine kleine braune Box mit einer Antenne in einem Audio-Lautsprecher.
Über openHABopenHAB - eine offene Lösung, die mithilfe der Community erweitert wird, indem Bindungen für bestimmte Geräte entwickelt werden, mit denen openHAB interagieren wird. Für die Interaktion mit Geräten über USB gibt es beispielsweise eine verbindliche Seriennummer. Ähnliches gilt für andere Geräte oder Protokolle, z. B. Modbus, NTP, HTTP, Squeezebox, Kodi / XBMC, Z-Wave, ZigBee, Nest usw. Ich selbst habe als aktiver Modbus-Bindungstester an der Entwicklung teilgenommen.
Während ich mit dem Verbinden des Gateways mit dem openHAB-Server beschäftigt war, beschloss ich, den Gateway-Code (und das Gateway selbst), der von mysensors.org stammt, zu finalisieren und einen Temperatur- und Feuchtigkeitssensor DHT22 sowie einen Atmosphärendrucksensor BMP180 hinzuzufügen. Gleichzeitig fand ich den Quellcode für die Vorhersage des Wetters anhand der atmosphärischen Dynamik Druck. Alle diese Messungen und Vorhersagen werden an openHAB übergeben.
Auf dem Foto befindet sich das Gateway im Inneren. Auf dem weißen Draht ist DHT22, die Platine mit den freien Pins ist Arduino, unten rechts ist nRF24L01 + und BMP180.
Aufgabe 3. Schnittstelle und Fernzugriff. openHAB ist ein vollständig anpassbares System, einschließlich des Schnittstellenlayouts. Dieses Markup ist einheitlich, sowohl für den normalen Zugriff über einen Browser als auch über eine mobile Anwendung. Universelles Markup ist natürlich nicht ideal, aber auf einem Smartphone sieht es gut aus, und das ist wichtig. Es bleibt zu entscheiden, wie auf den openHAB-Server außerhalb des lokalen Netzwerks zugegriffen werden soll. Erstens können Sie (und vor allem optional) die myopenhab.org-Cloud verwenden. Der openHAB-Server stellt über eine spezielle Bindung eine direkte Verbindung zur Cloud her. Diese Lösung ist die einfachste und bietet die volle Systemverwaltungsfunktion, mit Ausnahme der Übertragung von Videos von IP-Kameras. Zweitens gibt es für diejenigen, die die Wolken nicht mögen und zu denen ich gehöre, die üblichen Mittel für den Fernzugriff, zum Beispiel eine Kombination aus VPN + VNC usw. Ich werde aus offensichtlichen Gründen keine Details offenlegen, zumal dieses Problem nicht direkt mit dem Thema des Artikels zusammenhängt. Ich stelle nur fest, dass der mobile openHAB-Client eine Konfiguration für zwei Adressen hat. Es geht zum ersten, wenn es einen openHAB-Server an dieser Adresse sieht, zum zweiten - wenn dies nicht der Fall ist. Dies ist eine sehr praktische Funktion der Benutzeroberfläche. Beispielsweise können Sie die Cloud als zweite Adresse angeben. OpenHAB ist dann immer ohne zusätzliche Manipulationen an der VPN-Verbindung verfügbar. Oder geben Sie die virtuelle Adresse an, die Sie mit einer VPN-Lösung erhalten haben. Oder etwas anderes.
Interface-Startbildschirm | Scrollen Sie auf dem Startbildschirm nach unten | Der geöffnete Menüpunkt "Licht" |
---|
 |  |  |
Mit dem Markup können Sie eine bedingte Formatierung durchführen. Markieren Sie beispielsweise die Temperatur rot, wenn sie den im Markup angegebenen Wert überschreitet. Einige Elemente werden angezeigt, wenn sie gedrückt werden, z. B. "Heizung", "Licht", "Sirene" usw.
Das ist alles Wir nehmen einen Lötkolben und dann eine Tastatur. Und nach und nach nimmt die erste Version des Systems Gestalt an. Wie Sie wissen, kommt der Appetit mit dem Essen. Infolgedessen werden der ersten Version des Systems neue Sensoren und sogar neue Steuerungen hinzugefügt, um beispielsweise ein Gästehaus zu automatisieren. Als Ergebnis wurde in der ersten Phase ein System eingeführt, das:
- Misst die Temperatur an 16 Punkten.
- Misst die Luftfeuchtigkeit an 4 Punkten.
- Misst die Spannung des 220V-Netzes am Eingang des Hauses zum Stabilisator.
- Misst Umgebungslicht. Die Beleuchtung wird verwendet, um das Licht automatisch einzuschalten.
- Misst den atmosphärischen Druck und sagt das Wetter anhand der Druckdynamik voraus.
- Erkennt Bewegungen an mehreren Stellen.
- Kontrolliert die ganze Welt in einem Gästehaus. Die Schalter wurden zu Sensoren.
- Fährt Sirenen.
- Steuert separat 3 Stufen eines Elektrokessels, wobei die Funktionalität des alten Systems erhalten bleibt. Es steuert die Kesselheizung.
- Überprüft das Vorhandensein von Spannung am Kessel und an den Heizelementen des Kessels und liest auch die Fakten über die Einbeziehung der Heizelemente des Kessels. Dies ist wichtig, da zum einen der Kessel eine Rückmeldung über die Temperatur des Kühlmittels hat und die Heizelemente selbst ausschalten kann, und zum anderen ein zweistufiges Lastbegrenzungsrelais im Armaturenbrett montiert ist, das den Kessel und den Kessel nacheinander trennt, wenn die Verbrauchsschwelle im Haus überschritten wird. Diese Daten werden in Smart-Home-Algorithmen weiter verwendet. Aber zu diesem Zeitpunkt wusste ich nicht genau wie, ich hatte nur das Gefühl, dass sie gebraucht werden würden.
- Liest die Fakten zum Ein- und Ausschalten der Solarkreislaufpumpe.

- Erstellt Temperaturdiagramme für Woche, Tag und Stunde.
- Sendet Push-Benachrichtigungen zu verschiedenen Ereignissen. Ereignisse können fast alle sein, z. B. Bewegungen auf der Veranda, Temperaturen, die einen vorgegebenen Schwellenwert überschreiten, Stromverlust / -erscheinung usw. Es wurde auch eine SMS-Benachrichtigung erstellt.
- Das alte System blieb physisch und logisch vom neuen getrennt, obwohl dieselben Sensoren im neuen teilweise wiederverwendet werden. Das alte System behielt die Sicherheitsfunktionen und ein Backup-Überwachungs- / Steuerungssystem bei.
Das Foto zeigt die elektrische Ausstattung des Gästehauses. Die Box mit der Antenne ist der Controller, die runde „Waschmaschine“ ist die Sirene, zwischen ihnen befindet sich der DHT22-Sensor, unter dem Schild befindet sich ein Bewegungssensor, links befindet sich ein unterbrechungsfreies 12-V-Netzteil.
Beispiel für einen SystembetriebAlle 30 Sekunden fragt der Regler die Temperatursensoren ab. Im Falle einer Änderung der Messwerte oder auf Anfrage vom Server werden Daten für jeden Sensor separat an das Gateway gesendet. Das Gateway empfängt Daten und sendet sie über USB an openHAB. In openHAB wird eine Regel ausgelöst, die Nachricht analysiert, der entsprechende Temperaturwert dem entsprechenden Element zugeordnet (das Grundkonzept von openHAB). Es wird eine Regel generiert, die zum Ändern dieses Elements konfiguriert ist. Wenn die Logik eine Reaktion liefert, z. B. "Wenn die Temperatur unter ein bestimmtes Niveau gefallen ist", wird eine Aktion ausgeführt, z. B. "Kesselheizung einschalten". Dieser Befehl wird über USB an das Gateway gesendet. Das Gateway sendet einen Befehl über Funk an die Steuerung, die Steuerung empfängt den Befehl und schaltet das entsprechende Relais ein. Gibt eine Bestätigung des Eingangs des Befehls zurück. So etwas sieht aus wie das allgemeine Interaktionsschema von Systemkomponenten.
Das Ergebnis. Erste Ziele erreicht und noch mehr. Die Temperaturen werden in Grafiken und in der Benutzeroberfläche gemessen und visualisiert. Nach den Ergebnissen der Beobachtungen wurde klar, dass die Temperatur des heißen Wassers nie über 55 Grad steigt und das Kühlmittel im Solarkreislauf - 60, Sie müssen sich keine Sorgen um Überhitzung machen. Es ist zu sehen, dass die Lufttemperatur im Heizraum manchmal 30 Grad überschreitet und Sie eine Klimaanlage installieren müssen. Es wurde bequem, die Heizung zu steuern, indem Sie einfach die virtuellen Schalter auf dem Smartphone-Bildschirm berühren. Weiter. . , , . , . . «», .
. , 24.. , Raspberry Pi 2500. Arduino AliExpress 200, (nRF24L01+, ) . – . - , . Das heißt, .
, ., . — 11.05.2018. , 49 . 38, 35 . . . . 
. , , . , , C++, Arduino, . , openHAB. , – . . - , , . «». , , . . – . .