Hörrmann Supramatic mit ESP8266 / Tasmota und 433 MHz ansteuern

1. Mai 2020 at 18:16
Print Friendly, PDF & Email

Basierend auf den SONOFF Modulen habe ich mein Garagentorantrieb von Hörrmann erweitert.

Die Reichweite der Original-Fernbedienung war nicht ausreichend. Da ich weitere Sender benötigte, habe ich auch aus Kostengründen dann die Lösung mit dem einem ESP8266 aufgebaut.

Folgende Baugruppen habe ich eingesetzt:

  1. DC/DC Wandler; 1,00 EUR inkl. Versand
    LM2596 DC-DC Verstellbar Power Step-Down Stromversorgung Regler Modul
  2. ESP8266 / NodeMCU $6,00  inkl. Versand
    NodeMCU V3.2 Amica ESP8266 CP2102 WLAN WIFI Arduno IoT LUA
  3. 433 MHz Receiver – RXB12
  4. 5V Relays Platine; 3,50 EUR inkl. Versand
    2-Kanal Channel 5V Kanal Relais Modul Board für Arduino PIC AVR MCU DSP ARM RULE
  5. 433 Mhz Sender; $5,00
    4 Knopf-elektrisches Garagentor-Tür-Fernsteuerungsschlüssel-Klon 433,92 MHz

Vor rund 5 Jahren habe ich dies mit einem Arduino gelöst. Mittlerweile setze ich einen ESP8266 mit Tasmota ein. Mittlwerweile habe ich 12 Module mit Tasmota im Einstaz und bin davon einfach begeistert. Die Module kann ich per MQTT anbinden bzw. steuern und die Integration in OpenHAB ist einfacher.

Es gibt mehrere Möglichkeiten dies zu realisieren. Ein SONOFF Dual Modul um einen 433MHz receiver erweitern oder ein SONOFF R3RF verwenden und ein separates, zweites Relais.
Da ich aber ein NodeMCU und das Relay-Modul noch hatte, wollte ich das selber aufbauen. Dann kann man auch gleich eine vernünftige Antenne herstellen. Es gibt aber einen Nachteil, wenn man ein Modul mit einenem 433 MHz Empfänger baut: Das fertige binary für die Tasmota Firmware fehlt die Unterstützung von RCSwitch für den 433MHz Empfang.

Firmware mit RCSwitch erzeugen

Tasmota-Projekt in VSCode erzeugen

Link von github holen

Auf “Clone or download” drücken und den  Link kopieren. Achtung muss HTTPS sein, nicht SSH.

In VSCode Projekt klonen

Kommandozeile aufrufen mit: CTRL SHIFT P

Dann den link von oben einfügen: https://github.com/arendst/Tasmota.git

 

VSCode Project Settings

Nun muss das geklonte Projekt angepasst werden. Hierbei werden zwei Dateien kopiert und geändert.
Mit github kann man das Projekt jederzeit aktualisieren. Dafür darf man aber nicht die Original Dateien ändern, löschen oder umbenennen.
Die beiden neuen Dateien werden über .gitignore von der Versionsverwaltung ausgenommen.

Platformio

Kopiere platformio_override_sample.ini nach platformio_override.ini.
Dann in der platformio_override.ini folgende Änderungen vornehmen:

platformio_override.ini

Set environments
  default_envs =
                tasmota-DE
                tasmota-minimal
;                tasmota

user_config_override.h

Kopiere .\tasmota\user_config_override_sample.h nach .\tasmota\user_config_override.h
Im ersten Teil wird das 433MHz Modul hinzegfügt. Die beiden folgenden Teile sorgen setzen die default Werte für WLAN und MQTT.
Dann verbindet sich das Modul nach dem ersten Start sofort mit dem WLAN und man muss nicht erst umständlich mit den Handy das Modul ins Netzwerk bringen.

// -- Enable 433  ---------------
#undef RF_SENSOR
#define RF_SENSOR
#undef USE_RC_SWITCH
#define USE_RC_SWITCH
 
// -- Setup your own wifi settings  ---------------
#undef STA_SSID1
#define STA_SSID1 "meinwifi" // [Ssid1] Wifi SSID
#undef STA_PASS1
#define STA_PASS1 "meinpasssword" // [Password1] Wifi password
 
// -- Setup your own MQTT settings  ---------------
#undef MQTT_HOST
#define MQTT_HOST "192.168.xxx.xxx" // [MqttHost]

Firmware hochladen

Hierzu benutzt man einfach den NodeMCU-PyFlasher

https://github.com/marcelstoer/nodemcu-pyflasher/releases

Achtung: Flash Mode auf DOUT stellen

Modul konfigurieren

Als Gerätetyp Generic(18) auswählen (sollte ganz unten in der Liste sein).
Mit der neuen Firmware, erscheint nun auch RFrecv in der Liste für die GPIOs.

Regeln erstellen

In der Konsole des Moduls wechselt man zur Konsole.
Nun drückt man die Tasten der 433 MHz Fernbedienung und kopiert sich die Codes.
Diese werden nun in den Regeln hinterlegt. Mehrere Zeilen für eine Regel kann man als Block kopieren und einfügen.
Pulsetime sorgt dafür, dass die Relais nach kurzer Zeit wieder automatisch abschalten.

[codesyntax lang="bash"]
backlog rule1 off; rule2 off; rule3 off; rule1 "; rule2 "; rule3 "
backlog Mem1 2; Mem2 7; Pulsetime1 7; Pulsetime2 6

Rule1
On power1#state=on do Backlog Power1 off; RuleTimer1 %mem1% endon
On power2#state=on do Backlog Power2 off; RuleTimer1 %mem1% endon
on event#PState do publish house/stat/GarageDoor/STATE %value% endon

Rule2
on event#Opened do backlog var 1; var2 0; var3 0; var4 0; ruletimer1 0; event
PState=OPEN endon
on event#Closed do backlog var1 0; var2 1; var3 0; var4 0; ruletimer1 0; event
PState=CLOSE endon
on event#Opening do backlog var1 0; var2 0; var3 1; var4 0; ruletimer1 15;
event PState=OPENING endon
on event#Closing do backlog var1 0; var2 0; var3 0; var4 1; ruletimer1 15;
event PState=CLOSING endon

Rule3
on RfReceived#Data=0x510403 do power1 on endon
on RfReceived#Data=0x5104C0 do power2 on endon
on RfReceived#Data=0x510499 do power1 off endon
on RfReceived#Data=0x775D0C do power2 on endon
on RfReceived#Data=0x510430 do event Opened endon
on RfReceived#Data=0x34120E do event Opened endon
on RfReceived#Data=0x34060E do event Closed endon
on RfReceived#Data=0x34060A do event Opening endon
on RfReceived#Data=0x34120A do event Closing endon

backlog rule1 on; rule2 on; rule3 on;
[/codesyntax]
 

 

Hardware

433 Receiver

Das Modul RXB12 soll den besten Empfang haben. Siehe https://forum.arduino.cc/index.php?topic=612754.0
Auf dem Bild ist noch ein anderer Empfänger.

Antenne

Maßgeblich für den Empfang ist natürlich eine gute Antenne. Die für mich beste und einfachste Lösung: https://crycode.de/diy-433-mhz-dipol-antenne