So steuern Sie günstige HF-Steckdosen von OpenHAB

So steuern Sie günstige HF-Steckdosen von OpenHAB / Intelligentes Zuhause

Intelligente Steckdosen sind die einfachste Möglichkeit, Ihr Zuhause zu automatisieren. Bei einem WLAN- oder ZWave-Sockel von etwa 40 US-Dollar ist es jedoch unwahrscheinlich, dass Sie mehr als ein paar davon kaufen.

Möglicherweise verfügen Sie jedoch bereits über günstige HF-basierte Sockets - solche, die über eine eigene Fernbedienung verfügen und auf der Rückseite einige Kanal- und ID-Selektoren haben. Leider gibt es keine Smart-Home-Hubs auf dem Markt. Schlacht der Smart-Home-Hubs: Was gibt es da draußen und was kommt? Schlacht um die Smart Home Hubs: Was gibt es da draußen und was kommt? Lesen Sie mehr darüber, was mit denen funktioniert. Wäre es nicht toll, wenn Sie diese irgendwie in Ihr Heimwerker-System integrieren könnten? Nun, Sie können - ziemlich leicht - mit rund 10 Dollar in Teilen.

Mit etwas mehr Arbeit können Sie auch andere maßgeschneiderte RF-basierte Remote-Hardware wie diesen Budget-Kinoleinwand integrieren.

Was du brauchst:

  • ESP8266 NodeMCU v12E-Entwicklungsplatine (das genaue Modell spielt keine Rolle, v1 oder v3 sollten ebenfalls in Ordnung sein). Der Grund, warum wir eine NodeMCU-Karte verwenden, ist, dass wir später eine einfache Wi-Fi-Verbindung wünschen. Der Link bezieht sich auf ein 2er-Pack, das für jeweils 7 US-Dollar ausreicht.
  • Paket mit 433Mhz-Sender und -Empfänger (rund 3 US-Dollar).
  • RCSwitch- und MQTT-Bibliotheken sowie unser Code - alles zum Herunterladen bei Github.
  • Ein lokaler oder entfernter MQTT-Server.
  • Einige HF-gesteuerte Buchsen laufen im 433-MHz-Band (dies sollte auf der Fernbedienung stehen). Ich kaufte meine von Maplin als Packung mit 3 für etwa 20 £ (25,89 $)..

Wenn Sie das NodeMCU-Board zum ersten Mal programmieren, müssen Sie die Arduino-Plugins dafür herunterladen: Folgen Sie dem ersten Teil unseres Arduino-Killer-Einführungsleitfadens. Triff den Arduino-Killer: ESP8266 Triff den Arduino-Killer: ESP8266 Was passiert, wenn ich Ich habe Ihnen gesagt, es gibt ein Arduino-kompatibles Entwicklungsboard mit integriertem WLAN für weniger als 10 US-Dollar? Nun, das gibt es. Weitere Informationen zum NodeMCU / ESP8266-Chip. Du wirst auch brauchen CH430 Treiber. Signierte macOS CH430-Treiber finden Sie hier oder Windows hier.

Ich habe v1.6.5 des Arduino verwendet, weil alles, was höher ist, mehr Probleme verursacht, als es löst. Downgrade, falls noch nicht geschehen.

Bevor Sie fortfahren, gehe ich von einem Grundwissen über die Arduino-Programmierung aus. Arduino-Programmierung für Anfänger: Der Ampel-Controller Arduino-Programmierung für Anfänger: Der Ampel-Controller Letzte Woche haben wir die Grundstruktur eines Arduino-Programms kennen gelernt Wir haben uns das Blink-Beispiel genauer angesehen. Hoffentlich haben Sie die Gelegenheit genutzt, mit Code zu experimentieren und die Timings anzupassen. Diesmal… Lesen Sie mehr, und Sie haben Ihr NodeMCU-Setup im Board-Manager eingerichtet und können den Demo-Code korrekt hochladen. Sie sollten auch die in unserem Download enthaltenen Bibliotheken zu Ihrem hinzugefügt haben Arduino / Bibliotheken Mappe.

Wenn Sie eine haben PubSubClient- oder MQTT-Bibliothek, sichern und entfernen - es ist das einzige, das ich in den Download aufgenommen habe, das einzige, bei dem ich zuverlässig Meldungen über NodeMCU empfangen konnte, und ich habe es versucht viel!

RF-Schnüffeln (optional)

Dieser Schritt ist nicht erforderlich, wenn Sie nur DIP-Switch- oder Wählschalter-Steckdosen steuern möchten. Diese werden standardmäßig unterstützt, und es ist nur eine minimale Codeänderung erforderlich (dies ist jedoch zunächst interessant. Ich verstehe, was hinter den Kulissen los ist..

Wenn Sie andere RF-Fernbedienungen haben, die Sie hinzufügen möchten, müssen Sie sie zuerst ausführen “schnüffeln” die übertragenen RF-Codes. Laden Sie dazu die ReceiveDemo_Advanced Skizze aus der Menü -> Beispiele -> RCSwitch Ordner und ändern Sie die folgende Zeile von 0

mySwitch.enableReceive (0); // Empfänger bei Interrupt 0 => das ist Pin # 2

zu 2.

mySwitch.enableReceive (2); // Empfänger auf GPIO 2 / D4.

Verdrahten Sie das Empfängermodul wie folgt. Wenn Sie auf die Vorderseite der Empfängerplatine schauen (es ist der längere von beiden, der Sender ist quadratisch) - die Seite mit den Komponenten auf:

  • Ganz rechts ist GND. Verbinden Sie sich mit GND auf der NodeMCU-Platine.
  • Ganz links ist VCC. Verbinden Sie sich mit der VIN auf der NodeMCU-Platine.
  • Die beiden mittleren Pins sind das Signal. Verbinden Sie eine der beiden Komponenten mit D4 an der NodeMCU (sie sind miteinander verbunden, sodass es egal ist, welche)..

Laden Sie jetzt das geänderte hoch ReceiveDemo_Advanced, und wenn es fertig ist, öffnen Sie den seriellen Monitor und drücken Sie die Tasten auf der Fernbedienung. Kopieren Sie die Dezimalzahl (einschließlich Bitlänge), die Impulslänge und das Protokoll, wenn Sie eine Taste drücken.

Danach stellte ich fest, dass meine Projektorleinwand verwendet wurde

  • BILDSCHIRM NACH OBEN: 8694273 / 24bit empfangen; Impulslänge: 355 oder 356; Protokoll: 1
  • BILDSCHIRM NACH UNTEN: 8694276 / 24bit empfangen; Impulslänge: 355 oder 356; Protokoll: 1

Fahren Sie mit so vielen Tasten fort, wie Sie benötigen.

Den Sender testen

Als Nächstes versuchen wir, Codes mit dem Sender zu senden. Verdrahten Sie das Sendemodul (das quadratische) wie folgt. Seien Sie vorsichtig: Die Beschriftung dieser Pins ist abscheulich.

Der VCC-Pin befindet sich tatsächlich in der Mitte, nicht auf der linken Seite. Ich habe ein Modul zerstört, um das herauszufinden. Das, was sagt “EIN BISSCHEN” ist eigentlich “DATEN”, Rückwärts buchstabiert. Wieder gehen die Daten an D4, VCC an VIN und GND an GND (entfernen Sie das Empfängermodul, Sie benötigen es nicht mehr).

Laden Sie die Beispiele -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitches, und wieder die Daten-PIN ändern:

mySwitch.enableTransmit (10);

zu

mySwitch.enableTransmit (2);

Beachten Sie, dass eine Reihe von Beispielen in der Bibliothek enthalten ist. Welche davon für Sie geeignet ist, hängt von der Art Ihres Switches ab. Am häufigsten werden Typ A (DIP-Schalter) und B (Drehregler oder Schieberegler) verwendet - siehe Abbildungen auf der Seite RCSwitch. Für Typ B ist das Ein- und Ausschalten einer Steckdose so einfach wie folgt:

mySwitch.switchOn (1, 4); mySwitch.switchOff (1, 4);

Dabei ist 1 die Kanal-ID (die obere Skala) und 4 die Socket-ID (die untere Skala). Diese waren in römischen Ziffern auf meinen Fassungen geschrieben. Es können daher maximal 16 einzelne Sockets adressiert werden, obwohl mehrere Sockets dieselbe Adresse verwenden können, wenn mehrere Geräte gleichzeitig eingeschaltet sind.

Mein Projektorbildschirm war jedoch etwas anders - er verwendete eine andere Impulslänge. Um diese zu bedienen, funktionierte folgendes. Beachten Sie, dass Sie auch ein anderes Protokoll definieren können, wenn Ihre Fernbedienung dies erfordert. Stellen Sie jedoch sicher, dass Sie das Protokoll VOR der Impulslänge definieren. Die Impulslänge wird beim Protokollwechsel überschrieben.

 // Beachten Sie, dass für meinen Bildschirm tatsächlich ZWEI Tastendrücke erforderlich sind (kein langes Drücken, sondern zwei physische Tastendrücke). Deshalb verzögere ich ein wenig, dann sende ich dasselbe Signal erneut. mySwitch.send (8694273,24); // (Dezimalcode, Anzahl der Bits) delay (2000); mySwitch.send (8694273,24);  void screenDown () mySwitch.setPulseLength (358); mySwitch.send (8694276,24); Verzögerung (2000); mySwitch.send (8694276,24);  

Testen Sie zuerst alle Ihre Codes, bevor Sie mit dem nächsten Schritt fortfahren.

Steuerung über MQTT

Öffnen Sie die von Github mit dem Namen heruntergeladene Skizze mqtt_rcswitch.ino, und ändern Sie zunächst die Netzwerk-SSID und das Kennwort für Ihr Zuhause. Ändern Sie dann den Kanalnamen, wenn Sie möchten, und legen Sie den MQTT-Server fest. Wenn auf Ihrer OpenHAB-Installation noch kein MQTT-Server ausgeführt wird, lesen Sie Teil 2 unseres OpenHAB-Einsteigerhandbuchs, Teil 2: ZWave, MQTT, Regeln und Diagramme. OpenHAB-Einsteigerhandbuch, Teil 2: ZWave, MQTT, Regeln und Diagramme OpenHAB, die Open-Source-Hausautomationssoftware, übertrifft bei weitem die Fähigkeiten anderer auf dem Markt verfügbarer Hausautomationssysteme - aber die Einrichtung ist nicht einfach. In der Tat kann es geradezu frustrierend sein. Weiterlesen . Beachten Sie, dass mein Code für Buchsen vom Typ B (Drehschalter) vorgesehen ist, Sie können ihn jedoch auch leicht für DIP-Schalter ändern.

Der wichtigste Teil des Codes ist der Nachricht erhalten() Funktion, die auf eingehende MQTT-Befehle reagiert. In dieser Funktion überprüfen wir zuerst das Schlüsselwort - ich habe es ausgewählt “Schalter” und “Bildschirm”. Im Falle von “Schalter”, Wir analysieren dann die Kanal- und Plug-ID. Überprüfen Sie dann den Body der Nutzlast auf den Befehl.

 void messageReceived (String-Thema, String-Payload, Char * Bytes, Länge ohne Vorzeichen) if (topic.indexOf ("switch")> = 0) // Schaltersteuerung, analysieren den Kanal und die Plug-ID int channel = getValue ( topic, '/', 3) .toInt (); int plug = getValue (Topic, '/', 4) .toInt (); if (payload == "on") mySwitch.switchOn (Kanal, Stecker);  else mySwitch.switchOff (Kanal, Stecker);  else if (topic.indexOf ("screen")> = 0) // screen-Steuerung if (payload == "up") screenUp ();  else if (payload == "down") screenDown ();  / * fügen Sie eine andere hinzu, wenn Sie hier auf weitere Befehle warten möchten (oder ändern Sie einfach den obigen Befehl, wenn Sie keinen Bildschirm möchten) * / 

Standardmäßig funktionieren dann die folgenden MQTT-Befehle:

Wohnzimmer / Steuerung / Schalter / X / Y (wobei X der Kanal ist und Y die Steckerkennung ist; der Nachrichtentext ist aktiviert oder deaktiviert)
Wohnzimmer / Steuerung / Bildschirm (mit Nachrichtenkörper nach oben oder unten)

Verwenden Sie die Befehlszeile oder einen GUI-MQTT-Client, um Ihre Geräte zu testen, bevor Sie sie zu OpenHAB hinzufügen.

Hinzufügen zu OpenHAB

Als letzten Schritt müssen wir nur einige Elemente für diese Schalter in OpenHAB erstellen. Ich habe die folgenden Elemente für den Moment definiert, aber Sie sollten in der Lage sein, weitere Optionen hinzuzufügen:

/ * RF433mHz-Geräte * / CinemaScreen "Screen" (Cinema) umschalten mqtt = "> [Makler: Wohnzimmer / Steuerung / Bildschirm: Befehl: EIN: Runter],> [Makler: Wohnzimmer / Steuerung / Bildschirm: Befehl: AUS: Auf ] " Switch Switch41" Switch41 "(Cinema) mqtt ="> [Makler: Wohnzimmer / Steuerung / Schalter / 4/1: Befehl: EIN: Ein],> [Makler: Wohnzimmer / Steuerung / Schalter / 4/1: Befehl: OFF: off] " Switch Switch42" Switch42 "(Cinema) mqtt ="> [Makler: Wohnzimmer / Steuerung / Schalter / 4/2: Befehl: EIN: Ein],> [Makler: Wohnzimmer / Kontrolle / Schalter / 4/2: Befehl: OFF: off] " 

Sie sollten jetzt Ihre RF-Geräte von OpenHAB aus steuern können! Eine Sache, die mich angenehm überrascht hat, war die Reichweite - ein einziger Knoten konnte den größten Teil meines Hauses abdecken. Sie können natürlich einen weiteren Knoten hinzufügen, der denselben Kanal abhört, der einfach dieselben Befehle wiederholt, wenn Sie weitere Abdeckung benötigen.

Die einzige Einschränkung, die zu beachten ist, ist, dass die Sockets selbst ihren Status nicht melden können. Wenn Sie die Originalfernbedienung verwenden, wird der Status des Sockets möglicherweise nicht genau in OpenHAB angezeigt. Verwenden Sie einfach die OpenHAB-Schnittstelle, und Sie sollten in Ordnung sein.

Fragen oder Probleme? Fragen Sie in den Kommentaren nach, und ich werde mein Bestes tun, um zu helfen. Wenn Sie meinen Code verbessern möchten, können Sie eine Pull-Anfrage senden.

Erfahren Sie mehr über: Home Automation, Smart Plugs.