Da die Einrichtung zum senden von Daten an esphome per mqtt etwas tricky ist möchte ich das hier noch kurz an folgendem Beispiel zeigen:
Text aus iobroker an esphome per mqtt senden und auf Display anzeigen.
-
In iobroker MQTT Broker/Client installieren und grundlegend einrichten.
Wichtig:
Unter MQTT-Einstellungen -> Maske zum Bekanntgeben eigener States "mqtt.0.*" (ohne Anführungszeichen) eintragen und Enter drücken (Achtung: ohne "Enter" lässt sich der Eintrag nicht speichern). -
Esphome:
Zum ersten Testen z.B. folgenden Code installieren (wichtig: loglevel auf verbose):
esphome:
name: mc-esp-test
esp8266:
board: d1_mini
logger:
level: verbose
api:
password: !secret api_password
ota:
password: "geheim"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Mc-Esp-Test Fallback Hotspot"
password: "geheim"
captive_portal:
mqtt:
broker: 192.168.188.110
text_sensor:
- platform: mqtt_subscribe
name: "Test"
id: test
topic: mc-esp-test/sensor/test/state
Nach dem Starten von esphome wird in iobroker automatisch ein Datenpunkt unter "mqtt" angelegt.
Achtung:
Das im Text Sensor angegebene Topic muss exakt mit dem Pfad des Datenpunktes übereinstimmen.
In meinem Fall wurde ein Datenpunkt vom Typ "number" erstellt. Hier gegebenenfalls noch manuell auf Typ "string" ändern.
Zum Testen in den Datenpunkt einfach Text eingeben. Wenn alles funktioniert wird dieser im esphome log angezeigt.
Hier noch der vollständige code für folgendes Display: HD44780 1602 LCD module Display Bundle with I2C interface 2x16 characters.
esphome:
name: mc-esp-test
esp8266:
board: d1_mini
logger:
api:
password: !secret api_password
ota:
password: "geheim"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Mc-Esp-Test Fallback Hotspot"
password: "geheim"
captive_portal:
mqtt:
broker: 192.168.188.110
i2c:
sda: D1
scl: D2
display:
- platform: lcd_pcf8574
dimensions: 16x2
address: 0x27
lambda: |-
it.printf(id(test).state.c_str());
text_sensor:
- platform: mqtt_subscribe
name: "Test"
id: test
topic: mc-esp-test/sensor/test/state
Die ganze Konfiguration ist eigenlich simpel. Allerdings haben mich die o.g. Fallstricke sehr viel Zeit gekostet.
Daten vom Typ "number" kann man natürlich ebenfalls senden: Anstelle "text_sensor" einfach "sensor" verwenden.
OK - vielleicht hilft das noch dem einen oder anderen....