HA z ESPHome i TM1638

Dzień dobry.
Na wstępie chciałbym się przywitać ze wszystkimi, ponieważ jestem nowy i dopiero dołączyłem do forum.
Moja przygoda z HA zaczęła się dzięki temu forum jakieś 2 lata i trwa do dziś. Do tej pory radziłem sobie sam z mniejszymi bądź większymi problemami, aż do teraz, kiedy nie mogę rozwiązać problemu.
Przechodząc do sedna postaram się najlepiej jak będę umiał nakreślić problem.
Problem dotyczy integracji esphome z płytką led&digits na TM1638, na wyświetlaczu wyświetlam godzinę i temperaturę zewnętrzną. Dioda nr 8 pokazuje stan przekaźnika (domofonu) z innego esp, a przy podwójnym kliknięciu przycisku nr 8 zmienia się stan przekaźnika.
Założenie było takie, aby po wciśnięciu przycisku nr 1 na wyświetlaczu pojawiła się na 10 sekund informacja z temperaturą CWU, a po upływie czasu wyświetlacz wrócił do stanu poprzedniego tj. zegar z temperaturą zewnętrzną.
zamieszczę fragmenty kodu który zmodyfikowałem z filmu na YT:

#####################
...
captive_portal:

sensor:

  - platform: homeassistant
    id: temp_cwu
    entity_id: sensor.temp_cwu    

time:
  - platform: homeassistant
    id: homeassistant_time 

globals:

  - id: led_disp
    type: std::string
    restore_value: no
    initial_value: ""

  - id: led_disp_current
    type: std::string
    restore_value: no
    initial_value: ""

display: 
  - platform: tm1638
    id: led_disp_actual
    stb_pin: 0
    clk_pin: 2
    dio_pin: 3
    intensity: 1
    update_interval: 1s
    lambda: |-
      if (strlen(id(led_disp).c_str()) == 0) {
        id(led_disp_current).clear();
        it.print("        ");
        it.printf("%s %.1f", id(homeassistant_time).now().strftime("%H.%M").c_str(), id(temp_zewnetrzna).state);
      }
      else {
        if (strcmp(id(led_disp).c_str(), id(led_disp_current).c_str()) != 0) {

          id(led_disp_current).clear();
          id(led_disp_current).append(id(led_disp));
          // Clear the display and then print.
          it.print("        ");
          it.print(id(led_disp).c_str());
        }
      }

binary_sensor:

  - platform: homeassistant
    id: domofon
    entity_id: switch.domofon
    publish_initial_state: true
    on_state:
      - if:
          condition:
              - binary_sensor.is_on: domofon
          then:
            - logger.log: "LED8 on"
            - output.turn_on: led8
          else:
            - logger.log: "LED8 off"
            - output.turn_off: led8

  - platform: tm1638
    name: "TM1638 Button 1"
    id: tm1638Button1_p2
    key: 0
    on_click:
      then:
        - lambda: |-

#chodzi mi dokładnie o tą linikę:

            id(led_disp) = "cwu " + esphome::to_string(temp_cwu); 

        - delay: 10

        - lambda: |-
            id(led_disp) = "Disabled";
        - delay: 1s
        - lambda: |-
            id(led_disp).clear();

  - platform: tm1638
    name: "TM1638 Button 8"
    id: tm1638Button8_p2
    key: 7

    on_double_click:
      - if:
          condition:
              - binary_sensor.is_on: domofon
          then:
            - logger.log: "domofon autolock disabled"
            - homeassistant.service:
                service: "switch.toggle"
                data:
                  entity_id: "switch.domofon"
            - lambda: |-
                id(led_disp) = "domofon";
            - delay: 1s
            - lambda: |-
                id(led_disp) = "Disabled";
            - delay: 1s
            - lambda: |-
                id(led_disp).clear();
          else:
            - logger.log: "domofon autolock enabled"
            - homeassistant.service:
                service: "switch.toggle"
                data:
                  entity_id: "switch.domofon"
            - lambda: |-
                id(led_disp) = "domofon";
            - delay: 1s
            - lambda: |-
                id(led_disp) = "Enabled";
            - delay: 1s
            - lambda: |-
                id(led_disp).clear();

output:

  - platform: tm1638
    id: led8
    led: 7

############### K O N I E C ################

Jeżeli pozostawię samo

id(led_disp) = "cwu ";

jest OK, tylko nie wiem jak zapisać żeby esp odczytał wartość temp_cwu z HA i ją wyświetlił za napisem cwu. Z góry dziękuję za wszystkie sugestie i mam nadzieję, że nikogo nie zanudziłem, jak tak to przepraszam :slight_smile:

Pozdrawiam
Macio

text_sensor:
  - platform: homeassistant
    id: temp_cwu
    internal: True
    entity_id: sensor.temp_cwu

o tak :wink:

Witam
rm-rf bardzo dziękuję za szybką odpowiedź, a kolegom macek i szopen bardzo dziękuję za sformatowanie mojej wiadomości. Postaram się, żebyście mieli po mnie jak najmniej roboty :slight_smile:.
Wracając do tematu w dalszy ciągu nie udało mi się osiągnąć wyświetlenia temp CWU po wciśnięciu przycisku. Może z pierwszej wiadomości nie wynikało, ale mogę wyświetlić temp CWU z tym, że muszę zmienić lambdę.
zapisują ją tak:

lambda: |-
      it.printf(0, "%.1f", id(temp_cwu).state);
      it.printf(4, "%.1f", id(SDM72_moc_pobierana_v2).state);

oraz definiując sensor

sensor:
  - platform: homeassistant
    id: temp_cwu
    entity_id: sensor.temp_cwu

po sugestii rm-rf zmieniłem oczywiście na text_sensor - dzięki.

W pierwszym poście użyłem warunku w lambdzie, gdzie sprawdzam długość łańcucha i jeżeli jest 0 to wyświetlam zegar i temperaturę zewnętrzną. Jeżeli jest różny (po wciśnięciu przycisku) to chciałbym zobaczyć temp_cwu. Próbowałem jakoś tak to połączyć, ale skutek wciąż marny.

       - lambda: |-
            id(led_disp) = "cwu " + (temp_cwu);

oraz

       - lambda: |-
            id(led_disp) = "cwu " + esphome::to_string(temp_cwu); ;

Próbowałem również dodać zmienną globalną temp_cwu i też nic. Może powinienem zmienić warunki w lambdzie gdzie definiuję display? Jak macie jakieś sugestie to piszcie, za wszystkie jestem bardzo wdzięczny.
Pozdrawiam