ESPHome: Text ausgeben auf LCD-Display

hardl

Member
Ich habe schon verschiedene Umwandlungen probiert, aber habe immer ein Problem mit der text.entität.
Die Ausgabe der nummerischen Entitäten funktionieren.

In Lambda von Pooltest Yaml steht:
it.printf(17, 3, id(pooleinaus).state);

Die text.entität:
text.pooltest_pooleinausyaml:

Fehler:
Code:
/config/esphome/pooltest.yaml: In lambda function:
/config/esphome/pooltest.yaml:176:41: error: request for member 'value' in 'esphome::id<const char>(((const char*)"pooleinaus"))', which is of non-class type 'const char'
  176 |        it.printf(17, 3, id("pooleinaus").value);
      |                                         ^~~~~
*** [.pioenvs/pooltest/src/main.cpp.o] Error 1

Ich habe schon .state oder .state.c_str() statt .value getestet.
 
Zuletzt bearbeitet:
Hallo,

habe hier in einem alten Projekt dies gefunden:

Code:
it.printf(9, 64, id(font), id(my_yellow), TextAlign::BASELINE_LEFT, "%s", id(textsensor).state.c_str());

Hat auf jeden Fall mal bei mir irgendwann funktioniert.
 
Hallo ich nochmal, hatte heute mal Zeit und habe mein altes Zeug nochmal raus gesucht und kompiliert.
Bin auf ESPHome 2024.5.0 und es läuft bei mir.
Habe mir einen Textsensor wie folgt erzeugt:

Code:
text_sensor:
  - platform: wifi_info
    ssid:
      name: Connected SSID
      id: ssid

und so angezeigt:

Code:
it.printf(5, 5, id(helvetica_12), id(my_yellow), id(ssid).state.c_str());

Mein Englisch ist leider nicht so erwähnenswert, aber deine obige Fehlermeldung sagt ja eigentlich aus, das dein Sensor keine Textsensor ist. "pooleinaus" hört sich mehr nach binary an?
Wenn obiges Beispiel bei dir klappt, schaue dir mal deinen Sensor näher an.
 
Danke, dass du dich nochmals damit beschäftigt hast.
Mit deinem Beispiel funktioniert es wie mit meinen anderen Sensoren die in espHome erstellt und mit Werten gefüllt werden.
Mein Problem ist, dass ich in espHome einen leeren text_sensor erstelle.
Diesem wird in HA ein Wert zugewisen, den ich dann mit it.printf anzeigen möchte und der Sensor ist scheinbar leer.

Ich habe den text_sensor jetzt mit id: poolpruef erstellt.
In HA wird dieser automatisch mit der EntitätsID: sensor.pooltest_poolpruef erstellt.

Vermutlich ist schon mein Ansatz falsch.
 
Jetzt habe ich den Weg umgedreht, zuerst einen input_text Helfer in HA erstellt:

Bildschirmfoto 2024-05-21 um 17.17.55.png

dann in ESPHome:

Code:
- platform: homeassistant
    id: poolpruef
    name: "Poolpruef"
    entity_id: input_text.poolpruef

Manuelle Eingabe wird übernommen, aber in der Automation:

Code:
- service: input_text.set_value
            target:
              entity_id: input_text.poolpruef
            data:
              value: ein

passiert nichts, obwohl der Trigger einen Schalter in der gleichen Sequenz auslöst.

Das Problem habe erkannt: Der Helfer erstellt input_text.poolpruef vom Typ state und die Automation verwendet value, aber die Lösung fehlt mir.
 
Zuletzt bearbeitet:
Hallo,

ich habe deinen Weg mal nachvollzogen, also einen input_text in HA erstellt: poolpruef
Den dann in ESPHome importiert:

Code:
text_sensor:
  - platform: homeassistant
    id: poolpruef
    name: "Poolpruef"
    entity_id: input_text.poolpruef

Den input_text dann in HA unter Entwicklerwerkzeuge/Dienste gesetzt:

Code:
service: input_text.set_value
target:
  entity_id: input_text.poolpruef
data:
  value: diekuhliefumdenteich

Und wird alles richtig angezeigt.

Beim ersten Versuch gab es beim Kompilieren Mecker, weil ich den Sensor statt unter text_sensor: unter sensor: erzeugt hatte.
Vielleicht ähnlich bei dir.
 
Der HA Sensor ist definitiv input_text.poolpruef.

Dann habe ich meinen text_sensor durch deinen text_sensor ersetzt, um Tippfehler auszuschließen.
Unter Entwicklerwerkzeuge/Dienste deine Kopie gesetzt.

Es läuft ohne Fehlermeldung durch, aber im HA bleibt poolpruef unverändert, wie in der Automation, diekuhliefnicht.

Ich teste heute schon den ganzen Tag, ohne Erfolg.
 
Dienst ausführen:

Bildschirmfoto 2024-05-21 um 21.34.42.png

Nach Dienst ausführen:

Bildschirmfoto 2024-05-21 um 21.45.52.png

Leider komme ich nicht weiter und versuche es morgen wieder, trotzdem danke für deine Hilfe.
 
Du könntest noch versuchen bei Zustände nach poolpruef filtern, dann auf das i im Kreis klicken und oben rechts einen Text vorgeben.
Oder bei Zustände auf den Sensor klicken und bei Status setzen den Zustand ändern.

Und mal dies versuchen:

Code:
service: input_text.set_value
target:
  entity_id: input_text.poolpruef
data:
  value: "{{ states('sensor.buero_ist_temperatur') }}"

Bei data: kannst du egal welche Entität nehmen, sensor., automation., geht alles.
Kommt denn beim Klicken auf "DIENST AUSFÜHREN" ein grünes Häckchen?
Neustart und Browser-Cache löschen schon mal versucht?
 
Bei i im Kreis kann ich oben Text eingeben, aber der Text wird nicht übernommen.
Bei Zustand ändern hat es schon immer funktioniert und der Text wird übernommen.
Bei Entwicklerwerkzeug-Dienste kommt bei verschiedenen sensor oder automation Entitäten immer ein grüner Haken, aber in input_text.poolpruef ändert sich nichts.
Mehrmaliger Neustart oder Cache löschen ändert nichts.
 
Aus Verzweiflung habe ich jetzt mit Helfer einen neuen input_text.test erstellt und noch nicht an ESPHome übergeben.
Da funktioniert die Änderung über Dienste einwandfrei.
Ich werde noch über Automation testen und dann die Verbindung zu ESPHome testen.
 
Ich glaube es nicht:
Nach Löschen von input_text.poolpruef und genauso wieder über Helfer erzeugen, funktioniert alles wie es soll.
Ich danke Dir für Deine Unterstützung und habe trotzdem einige Dinge gelernt, die ich vorher nicht kannte.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.556
Beiträge
54.721
Mitglieder
5.384
Neuestes Mitglied
BlueEclipse
Zurück
Oben