NEWS
[gelöst] Daten von iobroker direkt an esphome senden??
-
Gibt es eine Möglichkeit Daten (z.B Text) von iobroker direkt an esphome zu senden? Oder bleibt hier nur der Weg über mqtt?
Evtl. per Template oder Custom Sensor??Für Homeassistant funktioniert das offensichtlich sehr einfach per esphome Text Sensor:
text_sensor: - platform: homeassistant
Hintergrund:
Ich will Daten aus iobroker an ein unter esphome angebundenes Display senden.edit [gelöst] - siehe Beiträge unten:
Derzeit können keine Textdaten direkt an esphome gesendet werden.
Als workaround kleines Tutorial zur Konfiguration von mqtt. -
-
Na ich versuche zwar zu helfen - aber alles verstehe ich auch nicht.
Nur aus der Doku: https://esphome.io/components/api.html
geht eigentlich eindeutig hervor, dass die API nur von Home Assistant genutzt wird. Eine Node habe ich nicht gefunden.
-
habe da auch keine bzw zu wenig ahnung von esphome
je nach display - ich nutze 7-segment - ginge es auch mit tasmota und einem http-get befehl
-
Vielen Dank für Eure schnellen Antworten. Da ich schon lange suche, wollte ich nur abklären, ob ich evt. etwas übesehen habe. Die Frage wurde auch hier schon gestellt, aber nicht wirklich beantwortet: link text.
@haselchen
Node Red: Kenn mich da nur rudimentär aus, aber wie ich das verstehe, komuniziert Nod Red auch nur per mqtt mit esphome.@mickym
API-Schnittstelle: Prinzipiell ist esphome ja wunderbar an iobroker angebunden. Switches z.B. lassen sich direkt von iobroker steuern - aber leider können hier nur die Zustände true/false übergeben werden.@liv-in-sky
Tasmota habe ich auch am laufen. Versuche in letzter Zeit aber alles in esphome zu realisieren. Wie eingangs erwähnt, könnte ich die Daten/Texte für das Display auch per mqtt an esphome senden.Vielleicht kann sich hier doch noch jemand melden, der zumindest bestätigen kann, dass es definitiv nicht geht - das würde mir weiteres Suchen ersparen.
-
Möchte meine Frage nochmal kurz präzisieren:
Wenn ich in esphome die Switch Komponente verwende, z.B.:switch: - platform: gpio pin: D1 name: "Schalter"
dann wird in iobroker automatisch ein Datenpunkt "Schalter" vom Typ boolean angelegt. Dieser ist beschreibbar. Das heist, mit true oder false kann ich in iobroker direkt den Switch in esphome schalten und damit z.B. ein Relais ansteuern. Funktioniert offensichtlich direkt über die api.
Meine Frage ist einfach: Gibt es in esphome irgendeine Komponente die in iobroker einen beschreibbaren Datenpunkt vom Typ string oder number erzeugt??
-
es gab mal einen spezialisten @OpenSourceNomad - aber der hat seit monaten nix mehr gepostet
sowas ? https://esphome.io/components/text_sensor/index.html
dann vielleicht mqtt:
mqtt: # ... on_message: topic: my/custom/topic qos: 0 then: - switch.turn_on: some_switch
oder so ähnlich
-
ich habe das noch irgendwo her - war mir zu viel arbeit, daher habe ich wieder mit tasmota weitergemacht
villeicht hilft das was:
-
@liv-in-sky
Den Text Sensor hatte ich auch schon ewig versucht - die Kommunikation geht leider nur oneway: von esphome zu iobroker.
Auch mit der esphome Web Server Komponente (via web api) kann man leider nur einen Switch steuern siehe : Web Server API.Habe heute aber auf github endlich eine klare Aussage von Dutchman gefunden: Text lässt sich derzeit nicht direkt von iobroker an esphome senden,
siehe hier: github DrozmotiX.Liegt also tatsächlich an der Native API Komponente von esphome. Wenn ich die Aussage von Dutchman richtig verstehe, wird bei esphome aber offensichtlich an einer Lösung gearbeitet. Bin gespannt wie sich das entwickelt.
Euch allen nochmal besten Dank für die Unterstützung. Ich ändere den Thread jetzt auf "gelöst".
-
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....
-
-
Ergänzung: Daten vom Typ "Number" per mqtt an esphome senden. Vielleicht kann es ja noch irgenwer gebrauchen......
Beispiel: Temperatur eines Homematic Sensors an esphome senden.
1. Einstellungen im mqtt-Adapter:
Um auf die Homematic Geräte zugreifen zu können muss die "Maske zum Bekanntgeben eigener States" um "hm-rpc.*" ergänzt werden.
"Nur bei Änderung puplizieren" sollte man anfangs nicht anhaken, da es sonst evtl. lange dauert, bis überhaupt ein Wert gesendet wird."Keine neuen Zustände erstellen" sollte man generell anhaken. Iobroker legt sonst bei jedem flashen von esphome automatisch Datenpunkte an, was bei mir zu ziemlich viel Durcheinander in der Datenstruktur führte. Bei Bedarf Datenpunkte einfach manuell anlegen.
2. Esphome:
Z.B. folgenden Sensor anlegen:sensor: - platform: mqtt_subscribe id: temp_aussen topic: hm-rpc/1/000xxxxxxxxxxxx/1/ACTUAL_TEMPERATURE
Das topic muss dem Objektpfad entsprechen. Kann man sich aus den Objektdaten kopieren (unter Objekte rechts das Bleistift-Symbol anklicken, Achtung: alle Punkte müssen durch Slash ersetzt werden).
Der Sensor liefert jetzt den numerischen Wert, den man z.B. auf einem Display ausgeben kann.
Übrigens:
Ich teste derzeit mit einem Waveshare 4.2 epaper Display an einem ESP32. Das funktioniert unter esphome einwandfrei. Die größte Hürde war halt, die Daten auf den ESP zu bekommen.