MQTT – switch in Home Assistant
von Edi · 31/10/2020
MQTT – Relais
In diesem Projekt setzen wir den Ausgang (D5 – GPIO 14) an unserem NodeMCU, der ein Relais schaltet. Das Relais kann dann verwendet werden, um Geräte an- und auszuschalten wie z. B. einen Ventilator oder Lampen. Dieser Ausgang wird über MQTT mit dem inTopic angesteuert und an unseren NodeMCU übertragen. Wenn der Payload ON ist, dann wird der Ausgang D5 auf LOW gesetzt. LOW deswegen, da das Signal invertiert ist. Bei einem Payload von OFF schalten wir den Ausgang of HIGH was das Relais ausschaltet.
Nach dem Schalten senden wir über das MQTT state_topic den Status vom Relais mit dem Payload ON oder OFF, je nach dem Status von unserem Relais. Zusätzlich verwenden wir noch das OTA (over the air) um weitere updates direkt über Wi-Fi ausführen zu können, um uns dem Umweg über das USB-Kabel zu ersparen. Da ich hier zum Testen kein OTA Passwort verwenden ist es aus-markiert, ich empfehle euch eines bei einem Dauereinsatz zu verwenden.
MQTT – Switch im YAML file
Wenn wir einen Ausgang über MQTT von Home Assistant zu unserem ESP ansteuern möchten, dann geht das mit switches. Idealerweise wird, nachdem der Output seinen Status ändert, über das state_topic die Änderung zurückgemeldet. Wenn das state_topic nicht verfügbar ist, dann arbeitet der switch im sogenannten optimistic mode. Das bedeutet, dass der switch nach der Aktivierung seinen Status sofort ändert. Ist der optimistic mode auf false gesetzt, das ist automatisch der Fall, wenn ein state_topic angegeben ist, dann wartet der switch auf die Rückmeldung über das state_topic bevor er seinen Status ändert.
Als Platform definieren wir MQTT und darunter können wir uns jetzt um die Topic’s und Payload’s kümmern. Über das command_topic: wird der Payload ON oder OFF gesendet und in unserem Code am ESP als inTopic behandelt. Nachdem der Ausgang entsprechend gesetzt wurde, senden wir über das state_topic den Payload ON oder OFF zurück zu Home Assistant.
Zu guter letzt vergeben wir für unseren switch noch einen Namen, da ich das MQTT – Relay Beispiel verwende (Link unten), benenne ich den switch Relay.
mqtt:
switch:
- command_topic: MQTT_Relay/command
state_topic: MQTT_Relay/state
payload_on: "ON"
payload_off: "OFF"
name: "Relay"
★☆★ Projekt Material ★☆★
* https://amzn.to/2U7Urmn – NodeMCU
* https://amzn.to/3a5yUjQ – 1 Stk. Relais 5V KY-019 Modul – 10A
* https://amzn.to/2xeKb2V – Set 3 x 40 STK. je 20 cm M2M/ F2M / F2F
* https://amzn.to/2QQ7JSL – Breadboard Steckbrett mit 830 Kontakten
* https://amzn.to/2J3w8j4 – Raspberry Pi Server mit MQTT
★☆★ Microcontroller ★☆★
►Node-MCU ESP8266 Board:
* https://amzn.to/2U7Urmn – NodeMCU ESP8266 ESP-12F
* https://amzn.to/2J5wLJ3 – 3er Set, ESP8266 ESP-12F
* https://amzn.to/3belvGd – 5er Set, ESP8266 ESP-12F
►ESP32 und ESP32 Node-MCU Boards:
* https://amzn.to/3erQVKq – ESP32 Node-MCU Board
* https://amzn.to/2Om89OW – 3er Set ESP32 Node-MCU Board
* https://amzn.to/3erIkaS – 5er Set ESP32 Node-MCU Board
* https://amzn.to/2Ct9H7c – 4 Stück ESP32 Module
►Jumper Wire:
* https://amzn.to/2WxKwIl – Female to Female F2F 40 STK. je 20 cm
* https://amzn.to/2xeKb2V – Set 3 x 40 STK. je 20 cm M2M/ F2M / F2F
►Breadboard:
* https://amzn.to/2QQ7JSL – Breadboard Steckbrett mit 830 Kontakten
►USB Kabel:
* https://amzn.to/2y01THN – USB A auf Micro USB Kabel 0.5m
* https://amzn.to/2xkgqgQ – USB auf Mini USB Kabel 0.5m
* https://amzn.to/2QBxCp7 – USB A zu USB B Kabel 0.5m
►Netzteile:
* https://amzn.to/3beWY3V – 2er-Pack USB Ladegerät 5V/2A
* https://amzn.to/398WzP9 – Raspberry Pi 4 Netzteil, USB-C, 5.1V, 3A
* https://amzn.to/2wsS8Bh – HomeSpot Netzteil 3A/5V inkl. 1,5M Micro USB Kabel
Alle Links mit “*” sind Amazon Affiliate Links. Ich bekomme bei einer Bestellung einen kleinen Teil vom Umsatz, ohne das euch dafür Mehrkosten entstehen.