Ich brauche "wieder einmal" euer Fachwissen!

Ich habe ein Display I2C und dahinter einen ESP8266.
Jetzt will ich mir bzw meiner Frau meine Internet-Verfügbarkeitsabfrage anzeigen lassen.
Konkret gibt es als Ausgabe: “Verbunden” oder “Getrennt”
An Template klappts super.

bekomme leider folgende Fehlermeldung:

[12:25:01][W][homeassistant.sensor:015]: 'binary_sensor.8_8_8_8': Can't convert 'on' to number!
[12:25:01][D][sensor:093]: 'Internet Status': Sending state nan  with 1 decimals of accuracy

Code

display:
  - platform: ssd1306_i2c
    model: "SH1106 128x64"
    lambda: |-
      it.print(10, 0, id(roboto_20), "Internet-Status:");
      it.printf(55, 30, id(roboto_20), "%.f", id(inet).state);


sensor:
  - platform: homeassistant
    name: "Internet Status"
    id: inet
    entity_id: binary_sensor.8_8_8_8    

Ich weiß das Problem ist das Display versucht eine Zahl anzuzeigen und keinen Text. Wie kann ich das ändern ? Danke euch!

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

probiere mal:

display:
  - platform: ssd1306_i2c
    model: "SH1106 128x64"
    lambda: |-
      it.print(10, 0, id(roboto_20), "Internet-Status:");
      it.printf(55, 30, id(roboto_20), "%s", id(inet).state);


sensor:
  - platform: homeassistant
    name: "Internet Status"
    id: inet
    entity_id: binary_sensor.8_8_8_8  

das geht leider nicht … da kommen nur komische zeichen am display beim wert

Dann mal das:

display:
  - platform: ssd1306_i2c
    model: "SH1106 128x64"
    lambda: |-
      it.print(10, 0, id(roboto_20), "Internet-Status:");
      it.printf(55, 30, id(roboto_20), "%s", id(inet).state.c_str());


sensor:
  - platform: homeassistant
    name: "Internet Status"
    id: inet
    entity_id: binary_sensor.8_8_8_8
> Compiling .pioenvs/display-internet/src/main.cpp.o
> /config/esphome/display-internet.yaml: In lambda function:
> /config/esphome/display-internet.yaml:48:54: error: request for member 'c_str' in 'inet->esphome::homeassistant::HomeassistantSensor::<anonymous>.esphome::sensor::Sensor::state', which is of non-class type 'float'
>    48 |       it.printf(55, 30, id(roboto_20), "%s", id(inet).state.c_str());
>       |                                                      ^~~~~
> *** [.pioenvs/display-internet/src/main.cpp.o] Error 1
> ========================== [FAILED] Took 3.38 seconds ==========================

langsam glaube ich, ich muss mir einen helfer schalter machen 0 für getrennt und 1 für verbunden und das dann am display abbilden bzw wieder umwandeln.

:pencil2: by tarag: Beiträge zusammengeführt

Ein letzter Versuch:

display:
  - platform: ssd1306_i2c
    model: "SH1106 128x64"
    lambda: |-
      it.print(10, 0, id(roboto_20), "Internet-Status:");
      it.printf(55, 30, id(roboto_20), "%s", id(inet).state ? "On" : "Off");


sensor:
  - platform: homeassistant
    name: "Internet Status"
    id: inet
    entity_id: binary_sensor.8_8_8_8

trotzdem vielen vielen dank !
leider:

3:24:50][W][homeassistant.sensor:015]: 'binary_sensor.8_8_8_8': Can't convert 'on' to number!
[23:24:50][D][sensor:093]: 'Internet Status': Sending state nan  with 1 decimals of accuracy

Ich habe nun einen Helferschalter der den Wert 0 und 1 nutzt gibts dafür was einfacheres ?

input_boolean.internet_status das ist die etnität vom "helfer"schalter

Du könntest auch so etwas einfügen:

lambda: |-
      if (id(my_binary_sensor).state) {
        it.print(0, 0, id(my_font), "state: ON");
      } else {
        it.print(0, 0, id(my_font), "state: OFF");
      }

Das Beispiel kommt aus der Doku:

hab ich getestet … bekomme immer den fehler

[08:56:34][W][homeassistant.sensor:015]: 'input_boolean.internet_status': Can't convert 'on' to number!
[08:56:34][D][sensor:093]: 'Internet Status': Sending state nan  with 1 decimals of accuracy

ich denke das problem ist die ausgabe der etnität.

zeig nochmal deinen Code…irgendwie kann ich mir das nicht vorstellen…^^
beim input_boolean bin ich mir nicht sicher, ich würde beim binary_sensor.8_8_8_8 bleiben. Zeige auch da dann mal den Status im Entwicklerwerkzeug

dito leider ;(

display:
  - platform: ssd1306_i2c
    model: "SH1106 128x64"
    lambda: |-
      if (id(inet).state) {
        it.print(0, 0, id(roboto_20), "state: ON");
      } else {
        it.print(0, 0, id(roboto_20), "state: OFF");
      }

sensor:
  - platform: homeassistant
    name: "Internet Status"
    id: inet
    entity_id: binary_sensor.8_8_8_8


Display zeigt nur " state: ON "
ist aber statisch

was meinst du mit statisch?
gut ist ja schonmal, dass kein Fehler kommt.
Stell in den Entwicklerwerkzeugen mal den binary_sensor.8_8_8_8 auf false, dann müsste auch das Display state: OFF anzeigen

leider kommt immer diese meldung:

Warum will der immer eine Nummer haben aus “ON” ? “Can’t convert ‘on’ to number!”

[11:32:37][W][homeassistant.sensor:015]: 'binary_sensor.8_8_8_8': Can't convert 'on' to number!
[11:32:37][D][sensor:093]: 'Internet Status': Sending state nan  with 1 decimals of accuracy
[11:32:50][W][homeassistant.sensor:015]: 'binary_sensor.8_8_8_8': Can't convert 'off' to number!
[11:32:50][D][sensor:093]: 'Internet Status': Sending state nan  with 1 decimals of accuracy
[11:32:50][W][homeassistant.sensor:015]: 'binary_sensor.8_8_8_8': Can't convert 'on' to number!
[11:32:50][D][sensor:093]: 'Internet Status': Sending state nan  with 1 decimals of accuracy
[11:33:18][I][safe_mode:041]: Boot seems successful; resetting boot loop counter
[11:33:59][W][homeassistant.sensor:015]: 'binary_sensor.8_8_8_8': Can't convert 'off' to number!
[11:33:59][D][sensor:093]: 'Internet Status': Sending state nan  with 1 decimals of accuracy
[11:34:07][W][homeassistant.sensor:015]: 'binary_sensor.8_8_8_8': Can't convert 'on' to number!
[11:34:07][D][sensor:093]: 'Internet Status': Sending state nan  with 1 decimals of accuracy

display ändert sich nichts

kann das sein, dass dein binary_sensor irgendwie falsch läuft? Normal sollte der ja True und False sein und nicht on und off…

Ansonsten vllt. dann folgendes testen:

display:
  - platform: ssd1306_i2c
    model: "SH1106 128x64"
    lambda: |-
      if (id(inet).state == "on") {
        it.print(0, 0, id(roboto_20), "state: ON");
      } else {
        it.print(0, 0, id(roboto_20), "state: OFF");
      }

sensor:
  - platform: homeassistant
    name: "Internet Status"
    id: inet
    entity_id: binary_sensor.8_8_8_8

Vielen Dank ich teste es sofort wenn ich zu Hause bin, das ist einfach integration “ping” icmp. und eingestellt auf 8.8.8 8 mit 180sek abfrage.

Update:
mit dem neuen code geht der compiler gar nicht.:

langsam glaube ich … es ist nicht möglich oder ich übersehe etwas offensichtliches.

um dessen anzeige geht es am display

der hat solche entitäten:

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

kannst du da mal auf das Zahnrad gehen und schauen wie die Entität tatsächlich heißt? Weil verbunden für einen Boolean ist schon komisch

den boolean habe ich angelegt mittels helfer “schalter” den kann ich entfernen.

binary_sensor.8_8_8_8

ist die genaue bezeichnung

und wie ist der genaue Wert in den Entwicklungstools von binary_sensor.8_8_8_8 ?

ich kann leider nix anderes liefern als:

Kannst du mal alternativ das versuchen?

it.printf(0, 0, id(roboto_20), "State: %s", id(inet).state ? "ON" : "OFF");

Alternativ eventuell auch on off nochmal klein schreiben.