Zegarek podświetlany z niemymi powiadomieniami DIY

Jak wieczorem oglądam telewizje muszę patrzeć na telefon która jest godzina, więc szukałem zegarka żeby postawić przy telewizorze, żeby mieć czas pod kontrolą. Na noc telefony się wyciszają, więc żadnych powiadomień nie słyszę. To muszę zrobić zegarek z powiadomieniami :slight_smile:

Potrzebujemy:
MAX7219
image
i płytkę np. wemos

no i jakąś obudowę,
mam drukarkę więc wziąłem pierwszy lepszy projekt:

chciałem czarny filament więc musiałem zmniejszyć grubość frontu do jednej warstwy 0.2mm - jest jak papier :slight_smile: ale widać podświetlone cyfry

Podłączamy płytkę do wyświetlacza
image

Wgrywamy ESPhome

esphome:
  name: matrix
  platform: ESP8266
  board: d1_mini

logger:

api:

ota:
  password: "bhthnjtrjrtjtrhththth"

wifi:
  ssid: *****
  password: ******

web_server:
  port: 80
  
  
captive_portal:

mqtt:
  broker: 192.168.00.00

time:
  - platform: homeassistant
    id: homeassistant_time
globals:
  - id: hapage
    type: int
    restore_value: no
    initial_value: '1'
    
spi:
  clk_pin: D5
  mosi_pin: D7

display:
  - platform: max7219digit
    id: display_max
    cs_pin: D8
    num_chips: 8
    intensity: 3
    scroll_speed: 100ms
    update_interval: 100ms
    lambda: |-
           if(id(power_on_off).state) {  
           it.intensity(atoi(id(habri).state.c_str()));
           if (id(hapage) == 1) {
             it.print(32, 0, id(digit_font), "UWAGA!");
             it.invert_on_off(true);
             it.scroll(false);
             }  else {
               if (id(hapage) == 2) {
               it.strftime(36, 0, id(digit_font), "%H:%M", id(homeassistant_time).now()); 
               it.invert_on_off(false);
               it.scroll(false);
                 
               } else {
                 if (id(hapage) == 3) {
                 it.printf(33, 0, id(digit_font), "%.1f°C", id(temp1).state); 
                 it.invert_on_off(false);
                 it.scroll(false);
                 
                 } else {
                    if (id(hapage) == 4) {
                    it.printf(32, 0, id(digit_font), "%s%%", id(humi1).state.c_str());
                    it.invert_on_off(false);
                    it.scroll(false);
                    
                    } else {
                    if (id(hapage) == 5) { 
                      it.printf(32, 0, id(digit_font), "%s", id(hatxt).state.c_str());
                      it.invert_on_off(false);
                      it.scroll_left();
                      }
                   
                   } } } } };
switch:
  - platform: template
    name: "Display Power Switch"
    icon: mdi:dots-grid
    optimistic: true
    restore_state: yes
    turn_on_action:
      - binary_sensor.template.publish:
          id: power_on_off
          state: ON
    turn_off_action:
      - binary_sensor.template.publish:
          id: power_on_off
          state: OFF

font:
  - file: "font/pixelmix.ttf"
    id: digit_font
    size: 8


    
text_sensor:
  - platform: wifi_info
    ip_address:
      name: "Display IP Address"
    ssid:
      name: "Display Connected SSID"
    bssid:
      name: "Display Connected BSSID"
  - platform: homeassistant
    name: "HA Txt"
    id: hatxt
    entity_id: input_text.matrix_text

  - platform: homeassistant
    name: "HA Brightness"
    id: habri
    entity_id: input_number.matrix_bri
    

  - platform: homeassistant
    name: "Podworko Humidity"
    id: humi1
    entity_id: sensor.czujnik_temperatury_podworko_humidity
    
sensor:                                        
  - platform: homeassistant
    name: "Podworko Temp"
    id: temp1
    entity_id: sensor.czujnik_temperatury_podworko_temperature
      
    
  - platform: wifi_signal
    name: "Display WiFi Signal Sensor"
    update_interval: 60s
  - platform: uptime
    name: "Display Uptime Sensor"

  - platform: homeassistant
    id: hapage1
    entity_id: input_number.matrix_page
    on_value:
      then:
        if:
          condition:
            lambda: 'return id(hapage) != int(x);'
          then:
            - globals.set:
                id: hapage
                value: !lambda 'return int(x);'
                
binary_sensor:          
    
  - platform: template
    name: "Power State"
    id: power_on_off
    internal: true
    

Mam tak że zmieniamy 5 widoków

  1. uwaga
  2. godzina
  3. temperatura
  4. wilgotnosc
  5. powiadomienie

podpiąłem sobie pod powiadomienia w NR, także jak jakies przychodzi to przełącza się na 1 ekran UWAGA i włacza wyłącza, potem na 5 z treścią powiadomienia, a normalnie wyświetla przygaszoną godzinę, temp, hum.
Możecie sobie zmienić po siebie, czy zrobic automatyzacje w HA, mi było tak wygodniej.

FLOW

[{"id":"e553902b1509771e","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"input_text","service":"set_value","entityId":"input_text.matrix_text","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":390,"y":400,"wires":[[]]},{"id":"82ac0c48b5b3bf70","type":"function","z":"a1b0527a20b603f8","name":"KOMUNIKAT","func":"msg.payload=\n{\n    \"data\":\n    {\n        \"value\": msg.komunikat.data.message,\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":170,"y":340,"wires":[["e553902b1509771e","53fde1bb80062a52"]]},{"id":"b9f246a421b53ddb","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":true,"service_domain":"switch","service":"turn_off","entityId":"switch.display_power_switch_2","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1390,"y":280,"wires":[[]]},{"id":"bda32504da1ca76e","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":true,"service_domain":"switch","service":"turn_on","entityId":"switch.display_power_switch_2","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":970,"y":280,"wires":[["643214fdbe969adb"]]},{"id":"643214fdbe969adb","type":"trigger","z":"a1b0527a20b603f8","name":"","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"3","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1170,"y":280,"wires":[["b9f246a421b53ddb"]]},{"id":"fcb1e05567b9ffeb","type":"change","z":"a1b0527a20b603f8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":740,"y":280,"wires":[["bda32504da1ca76e"]]},{"id":"dd8d2d71623e2fd1","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"input_number.matrix_page","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":220,"wires":[["f37975410f0aefa8"]]},{"id":"b599eb9b07b7a753","type":"function","z":"a1b0527a20b603f8","name":"KOMUNIKAT","func":"msg.payload=\n{\n    \"data\":\n    {\n        \"value\": 1,\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":220,"wires":[["dd8d2d71623e2fd1"]]},{"id":"31ebb4562d41a818","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":true,"service_domain":"switch","service":"turn_off","entityId":"switch.display_power_switch_2","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1450,"y":220,"wires":[["51335ca1b2efc625"]]},{"id":"828536a73d443735","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":true,"service_domain":"switch","service":"turn_on","entityId":"switch.display_power_switch_2","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1070,"y":220,"wires":[["c75042741792a2a8"]]},{"id":"c75042741792a2a8","type":"trigger","z":"a1b0527a20b603f8","name":"","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"1","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1240,"y":220,"wires":[["31ebb4562d41a818"]]},{"id":"51335ca1b2efc625","type":"trigger","z":"a1b0527a20b603f8","name":"","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"1","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1620,"y":220,"wires":[["39f437561dc75a29"]]},{"id":"39f437561dc75a29","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":true,"service_domain":"switch","service":"turn_on","entityId":"switch.display_power_switch_2","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1830,"y":220,"wires":[["93ea534fa54900e5"]]},{"id":"703d86605bd590fc","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"input_number.matrix_page","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":180,"wires":[["f93d53380c210c38"]]},{"id":"0e7c65be4cfb6d22","type":"function","z":"a1b0527a20b603f8","name":"KOMUNIKAT","func":"msg.payload=\n{\n    \"data\":\n    {\n        \"value\": 5,\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":430,"y":180,"wires":[["703d86605bd590fc"]]},{"id":"f37975410f0aefa8","type":"change","z":"a1b0527a20b603f8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":880,"y":220,"wires":[["828536a73d443735"]]},{"id":"732b3fdb422d5695","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"input_number.matrix_page","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1100,"y":600,"wires":[["6e0f12f26ad11609"]]},{"id":"7ba5abc6ba4a8ba0","type":"function","z":"a1b0527a20b603f8","name":"KOMUNIKAT","func":"msg.payload=\n{\n    \"data\":\n    {\n        \"value\": 2,\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":890,"y":600,"wires":[["732b3fdb422d5695"]]},{"id":"9543ca1d5fb3ad35","type":"inject","z":"a1b0527a20b603f8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"0.2","topic":"","payloadType":"date","x":190,"y":580,"wires":[["ba781d3ef409b119"]]},{"id":"c24bafbca9ee0781","type":"afya-carousel-switch","z":"a1b0527a20b603f8","name":"","variableName":"licznik","maxValue":2,"x":400,"y":600,"wires":[["5906627fe32f66b5"]]},{"id":"73d6033b9d963679","type":"switch","z":"a1b0527a20b603f8","name":"","property":"payload.value","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":730,"y":600,"wires":[["7ba5abc6ba4a8ba0"],["d38c7e4ffe1282e8"],["6336b38b54a1a460"]]},{"id":"c5caafc1ca8ea311","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"input_number.matrix_page","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1100,"y":640,"wires":[["c57717d2ff0ab8ab"]]},{"id":"d38c7e4ffe1282e8","type":"function","z":"a1b0527a20b603f8","name":"KOMUNIKAT","func":"msg.payload=\n{\n    \"data\":\n    {\n        \"value\": 3,\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":890,"y":640,"wires":[["c5caafc1ca8ea311"]]},{"id":"76e756d0ec28dfe9","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"input_number.matrix_page","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1100,"y":680,"wires":[["779c39aa0c989059"]]},{"id":"6336b38b54a1a460","type":"function","z":"a1b0527a20b603f8","name":"KOMUNIKAT","func":"msg.payload=\n{\n    \"data\":\n    {\n        \"value\": 4,\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":890,"y":680,"wires":[["76e756d0ec28dfe9"]]},{"id":"c57717d2ff0ab8ab","type":"delay","z":"a1b0527a20b603f8","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1300,"y":640,"wires":[["c24bafbca9ee0781"]]},{"id":"779c39aa0c989059","type":"delay","z":"a1b0527a20b603f8","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1300,"y":680,"wires":[["c24bafbca9ee0781"]]},{"id":"6e0f12f26ad11609","type":"delay","z":"a1b0527a20b603f8","name":"","pauseType":"delay","timeout":"60","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1300,"y":600,"wires":[["c24bafbca9ee0781"]]},{"id":"f93d53380c210c38","type":"delay","z":"a1b0527a20b603f8","name":"","pauseType":"delay","timeout":"60","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":860,"y":180,"wires":[["ba781d3ef409b119"]]},{"id":"53fde1bb80062a52","type":"change","z":"a1b0527a20b603f8","name":"","rules":[{"t":"set","p":"matrix","pt":"global","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":360,"wires":[["c65f0e21167d6078"]]},{"id":"5906627fe32f66b5","type":"switch","z":"a1b0527a20b603f8","name":"","property":"matrix","propertyType":"global","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":590,"y":600,"wires":[["73d6033b9d963679"]]},{"id":"ba781d3ef409b119","type":"change","z":"a1b0527a20b603f8","name":"","rules":[{"t":"set","p":"matrix","pt":"global","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":420,"y":560,"wires":[["c24bafbca9ee0781","64fc6a35006898a1"]]},{"id":"f05f2b2cf0fbd676","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"input_number.matrix_bri","data":"","dataType":"json","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":860,"y":540,"wires":[[]]},{"id":"64fc6a35006898a1","type":"function","z":"a1b0527a20b603f8","name":"KOMUNIKAT","func":"msg.payload=\n{\n    \"data\":\n    {\n        \"value\": 0,\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":540,"wires":[["f05f2b2cf0fbd676"]]},{"id":"c65f0e21167d6078","type":"function","z":"a1b0527a20b603f8","name":"KOMUNIKAT","func":"msg.payload=\n{\n    \"data\":\n    {\n        \"value\": 7,\n    }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":830,"y":360,"wires":[["f6cc80258e1fe0b2"]]},{"id":"f6cc80258e1fe0b2","type":"api-call-service","z":"a1b0527a20b603f8","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"input_number.matrix_bri","data":"","dataType":"json","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1100,"y":360,"wires":[["b599eb9b07b7a753"]]},{"id":"4d0e02c9.2307bc","type":"server","name":"Asystent domowy","version":1,"legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

W HA mamy tak:
thtrjhtrjtr

Robota na 5 min, a sprawdza się elegancko POLECAM :slight_smile:


mam podpięte pod usb telewizora

10 polubień

Taki zegarek chętnie bym kupił :+1:.

Ja również podpinam sie pod kupno bez obudowy. Mam drukarkę :grin:

Jakie to proste i banalne :grinning:.

Hej czy moglbym prosic kod bez czujnikow ? Jedynie sam zegar i powiadomienia ?
Jestem poczatkujacy i gdy modyfikuje twoj kod ciagle mam bledy

Ile już zrobiłeś samodzielnie projektów w ESPHome?

Kod z posta gdzieś tam u góry jest sprzed 2 lat i jest przestarzały, więc najpierw trzeba go uzdatnić do współczesności, musisz też zdobyć skądś font pixelmix.ttf (albo jakiś inny, który podpasuje).

Samodzielnie zero dopiero zaczynam , chcialem zaczac od tego by wlasnie nauczyc sie modyfikowac kody lub sam je pisac, udalo mi sie zdobyc plik o ile o to chodzi luma.examples/examples/fonts/pixelmix.ttf at main · rm-hull/luma.examples · GitHub )

No to gruby projekt jak na start, a MQTT i NR używasz?

Bo jeśli chodzi o dostosowanie YAMLa dla ESPHome do współczesności to mogę spróbować to ogarnąć, ale jeśli chodzi o całą resztę to inaczej używam HA, więc nawet nie mam jak zaemulować sytuacji z początku wątku (ESPHome łączę po natywnym API z HA, a NR nie używam w ogóle).

Jeśli chcesz się czegoś nauczyć to musisz czytać dokumentację samodzielnie, a jest sporo do czytania, więc skup się tylko na wszystkich użytych tu komponentach analizuj YAML sekcja po sekcji porównując z dokumentacją (każda sekcja YAML odnosi się do jakiegoś konkretnego komponentu)

Jak bys byl tak mily to bylo by super reszte ogarnę:)

na razie sprawdziłem czcionkę i jest OK, niżej wkleję zmodyfikowany YAML (ale bez usuwania sensorów, bo nie mam czasu na pełną analizę)
w katalogu /config/esphome utwórz podkatalog fonts (zmieniłem mu nazwę, bo u siebie wykorzystuję wiele fontów i użyłem swojego istniejącego katalogu) i do niego wrzuć plik fontu

Jeśli IDE ESPHome masz zainstalowane inaczej niż jako Dodatek do HA, to musisz sobie katalogi ogarnąć samodzielnie (ja używam Dodatku).
Dzięki temu używam w konfiguracji standardowe odwołania do pliku secrets.yaml (tam jest np. konfiguracja WiFi, która musisz mieć zrobioną samodzielnie, dlatego najlepiej by było, abyś wykonał choć jeden własny prosty projekt korzystając z kreatora, wtedy cześć konfiguracji IDE uzupełni się automagicznie, tj. właściwie sam to zrobisz)

Poniższy YAML się waliduje i kompiluje, nie sprawdziłem jego działania funkcjonalnego (musiałbym zbudować urządzenie, a nie mam czasu na zabawę)

Adres brokera MQTT można sobie też przenieść do substitutions: albo wręcz do secrets.yaml (tam wrzucam sobie wszelkie stałe którymi nie chcę się chwalić publicznie, np. wrzucając kod na forum) tutaj zmieniłem IP tylko na jakiś pełnoprawny i możliwy do zaistnienia, musisz użyć swój realny adres hosta czy tam jego IP i pewnie trzeba mu też dodać dane logowania (bo anonymous to nie jest dobre rozwiązanie na rok 2025).
Tak ogólnie to w tej konfiguracji jest też połączenie API z HA (też nieszyfrowane), wymagane jeśli HA ma być źródłem czasu oraz do odbierania sensorów z HA (w pewnych wypadkach trzeba autoryzować urządzenie w HA, ta konfiguracja raczej z tego nie korzysta, ale i tak sugeruję używać połączenie szyfrowane z tokenem w sekcji api:)
Czyli połączenie z innymi systemami jest zdublowane bo jest i MQTT i API
(łącząc się wyłącznie z HA można zrezygnować z MQTT, no chyba że sytuacja tego wymaga i używamy MQTT zamiast API, natomiast połączenie z innymi serwerami np. NR istotnie warto zrealizować przez broker, aby nie angażować dodatkowo HA w komunikację).

OTA ustawiłem bez hasła, jeśli chcesz to zmienić to sugeruję znowu użycie secrets.yaml oraz UWAGA przy zmianie hasła OTA wymagane jest flaszowanie po kabelku!

Niektóre fragmenty nie są skonfigurowane w najprostszy możliwy sposób (sekcja wifi: jest przygotowana na dodanie kolejnych sieci)

substitutions:
  name: "zegarek-max7219digit"
  friendly_name: "Zegarek max7219digit"

esphome:
  name: ${name}
  friendly_name: ${friendly_name}

esp8266:
  board: d1_mini

logger:

api:

ota:
  platform: esphome
  password: ""
  
wifi:
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_pass

web_server:
  port: 80
  
  
captive_portal:

mqtt:
  broker: 192.168.001.001

time:
  - platform: homeassistant
    id: homeassistant_time

globals:
  - id: hapage
    type: int
    restore_value: no
    initial_value: '1'
    
spi:
  clk_pin: D5
  mosi_pin: D7

display:
  - platform: max7219digit
    id: display_max
    cs_pin: D8
    num_chips: 8
    intensity: 3
    scroll_speed: 100ms
    update_interval: 100ms
    lambda: |-
           if(id(power_on_off).state) {  
           it.intensity(atoi(id(habri).state.c_str()));
           if (id(hapage) == 1) {
             it.print(32, 0, id(digit_font), "UWAGA!");
             it.invert_on_off(true);
             it.scroll(false);
             }  else {
               if (id(hapage) == 2) {
               it.strftime(36, 0, id(digit_font), "%H:%M", id(homeassistant_time).now()); 
               it.invert_on_off(false);
               it.scroll(false);
                 
               } else {
                 if (id(hapage) == 3) {
                 it.printf(33, 0, id(digit_font), "%.1f°C", id(temp1).state); 
                 it.invert_on_off(false);
                 it.scroll(false);
                 
                 } else {
                    if (id(hapage) == 4) {
                    it.printf(32, 0, id(digit_font), "%s%%", id(humi1).state.c_str());
                    it.invert_on_off(false);
                    it.scroll(false);
                    
                    } else {
                    if (id(hapage) == 5) { 
                      it.printf(32, 0, id(digit_font), "%s", id(hatxt).state.c_str());
                      it.invert_on_off(false);
                      it.scroll_left();
                      }
                   
                   } } } } };
switch:
  - platform: template
    name: "Display Power Switch"
    icon: mdi:dots-grid
    optimistic: true
    restore_mode: RESTORE_DEFAULT_ON
    turn_on_action:
      - binary_sensor.template.publish:
          id: power_on_off
          state: ON
    turn_off_action:
      - binary_sensor.template.publish:
          id: power_on_off
          state: OFF

font:
  - file: "fonts/pixelmix.ttf"
    id: digit_font
    size: 8


    
text_sensor:
  - platform: wifi_info
    ip_address:
      name: "Display IP Address"
    ssid:
      name: "Display Connected SSID"
    bssid:
      name: "Display Connected BSSID"
  - platform: homeassistant
    name: "HA Txt"
    id: hatxt
    entity_id: input_text.matrix_text

  - platform: homeassistant
    name: "HA Brightness"
    id: habri
    entity_id: input_number.matrix_bri
    

  - platform: homeassistant
    name: "Podworko Humidity"
    id: humi1
    entity_id: sensor.czujnik_temperatury_podworko_humidity
    
sensor:                                        
  - platform: homeassistant
    name: "Podworko Temp"
    id: temp1
    entity_id: sensor.czujnik_temperatury_podworko_temperature
      
    
  - platform: wifi_signal
    name: "Display WiFi Signal Sensor"
    update_interval: 60s
  - platform: uptime
    name: "Display Uptime Sensor"

  - platform: homeassistant
    id: hapage1
    entity_id: input_number.matrix_page
    on_value:
      then:
        if:
          condition:
            lambda: 'return id(hapage) != int(x);'
          then:
            - globals.set:
                id: hapage
                value: !lambda 'return int(x);'
                
binary_sensor:          
    
  - platform: template
    name: "Power State"
    id: power_on_off
    internal: true

Szczerze mówiąc sekcję czasu też bym uniezależnił od HA

u siebie używam takich konstrukcji

time:
  - platform: sntp
    timezone: Europe/Warsaw
    servers:
      - 0.pl.pool.ntp.org
      - 1.pl.pool.ntp.org
      - 2.pl.pool.ntp.org
    id: sntp_time

zwróć uwagę na inny ID zmiennej zamiast homeassistant_time jest sntp_time i to trzeba zmienić też w miejscu gdzie ją wywołujesz

Wielkie dzieki jutro bede sprawdzal wszystko szkoda ze nie mozna tu wysylac PW bylo by latwiej

NIGDY nie udzielam pomocy na PW, jest to sprzeczne z zasadami open-knowledge i open-documentation

a tak swoją drogą jest tu PW, ale nie widzę podstaw by z niego korzystać, jeśli nie masz jakiejś realnej prywaty do kogoś…

Ok jasne , chodzilo mi by dopytac sie np Starszych stazem kolegow o jakąś błachą sprawe ,np.czy dobrze cos zrozumialem.

Nie ma błahych spraw.

A dążenie do wiedzy nie jest powodem do wstydu, każdy z nas kiedyś zaczynał i często nie pamiętamy o jakichś rzeczach, które wydają się teraz oczywiste, a kiedyś nie były, ale to nie powód by je ukrywać.
Z takich z pozoru nieważnych pytań tworzy się zwykle każde FAQ.

Pisz co tam uda Ci się zrobić.
Mam wszystkie pliki i aktualny kod, używam zegarka do dziś.
Do działania potrzebny jest też Node-red

pod co masz go podpiete w sensie co ci wyświetla?

W wątku na arturhome (chyba już tu gdzieś wyżej linkowanym) jest też post do innych projektów na bazie monochromatycznych wyświetlaczy pikselowych na bazie sterowników MAX7219

a generalnie można wyświetlać co się komu podoba - wręcz można sobie ogarnąć taki wyświetlacz samodzielnie od zera na bazie samej dokumentacji (tylko dla początkującego to naprawdę duży projekt)

Projekt jest podpięty do Home Assistant, a na wyświetlaczu prezentuję różne informacje w zależności od aktualnej strony, którą wybieram za pomocą encji w Node-red. Oto co wyświetla:

  1. Godzina - w moim przypadku synchronizowana z Home Assistant.
  2. Temperatura na zewnątrz - dane z czujnika Netatmo.
  3. Wilgotność na zewnątrz - również z czujnika Netatmo.
  4. Temperatura w salonie - dane z innego czujnika w HA.
  5. Dowolny tekst - można go wprowadzić w Home Assistant przez encję input_text w moim przypadku powiadomienia z node-red gdy jestem w domu.

Podeslalbys kod w ktorym jest tylko godzina i text ? Mi niesety wyswietla tylko uwaga i nic wiecej nawet jak zmienie tekst z uwaga na inny