Sensordaten zwischen zwei Nodemcu austauschen und auf Display anzeigen

Ich lese von einem nodemcu die temperatur ein und möchte diese auf dem Display , das an einem zweiten nodemcu angeschlossen ist, anzeigen.
Leider ist die angezeigte Temperatur völlig falsch. Die Anzeige wechselt immer nur von “1.9” zu “2.0” und “0.0”.
Dabei habe ich mehrere Formatierungen zur Anzeige der Temperatur ausprobiert:
text_sensor, sensor, %.1f, %s, … Erfolglos.

Das Display ist ein SSD1306, der Temperatursensor ist ein DH12B20. Diese funktionieren alle hervorragend.

font:
  - file: 'arial.ttf'
    id: my_font48
    size: 48

  - file: 'arial.ttf'
    id: my_font16
    size: 16

# Example configuration entry for ESP32
i2c:
  sda: GPIO12
  scl: GPIO14
  scan: true
  id: bus_a

text_sensor:
  - platform: homeassistant
    name: "sauna-temperatur"
    id: "temp"
    entity_id: sensor.home_saunatemperatur

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
#    invert: true
#    reset_pin: D0 
    lambda: |-
      it.printf(0, 0, id(my_font16), TextAlign::TOP_LEFT, "Sauna:");
      it.printf(128, 0, id(my_font16), TextAlign::TOP_RIGHT, "°C");
      it.printf(64, 16, id(my_font48), TextAlign::TOP_CENTER, "%.1f", id(temp).state);

Die Sensordaten kommen von:

sensor:
  - platform: dallas_temp
    address: 0x4701204213dc5328
    name: "Saunatemperatur"

Die Anzeige auf dem SSD1306 sieht wie folgt aus:

Sauna °C
1.9

Ich verstehe wirklich nicht, wo diese “1.9” herkommt.

Der tatsächliche Temperaturwert ist nämlich:
26,3 °C
image

vielleicht ist es ein Darstellungs-/Konvertierungsthema?
Beim Compilieren gibt es nämlich die folgende Warnung:

/config/esphome/esphome-web-3839a1.yaml: In lambda function:
/config/esphome/esphome-web-3839a1.yaml:76:59: warning: format '%f' expects argument of type 'double', but argument 7 has type 'std::string' {aka 'std::__cxx11::basic_string<char>'} [-Wformat=]
   76 |       it.printf(64, 16, id(my_font48), TextAlign::TOP_CENTER, "%.1f", id(temp).state);
      |                                                           ^~~~~~

SOLVED!

text_sensor:
  - platform: homeassistant
    name: "sauna-temperatur"
    id: temp
    entity_id: sensor.home_saunatemperatur

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    id: oled_display
#    invert: true
#    reset_pin: D0 
    lambda: |-
      it.printf(0, 0, id(my_font16), TextAlign::TOP_LEFT, "Sauna:");
      it.printf(128, 0, id(my_font16), TextAlign::TOP_RIGHT, "°C");
      it.printf(64, 16, id(my_font48), TextAlign::TOP_CENTER, "%s", id(temp).state.c_str());

care for:
“text_sensor”
and
“%s” with “.c_str()”