8x32 Pixel Uhr mit HomeAssistant Anbindung

So jetzt ist der Ulanzi da und hab versucht jetzt die Firmware zu Flashen aber leider will er nicht vieleicht kann hier einer weiter helfen. Hier die Fehlermeldung:

ERROR Running command failed: Packet content transfer stopped (received 8 bytes)
ERROR Please try running esptool.py --before default_reset --after hard_reset --baud 460800 --port
/dev/ttyUSB0 --chip esp32 write_flash -z --flash_size detect 0x10000
/data/ulanzi/.pioenvs/ulanzi/firmware.bin 0x1000 /data/ulanzi/.pioenvs/ulanzi/bootloader.bin 0x8000
/data/ulanzi/.pioenvs/ulanzi/partitions.bin 0xe000 /data/cache/platformio/packages/framework
arduinoespressif32/tools/partitions/boot_app0.bin locally.

@Lindtbear

Hi, versuch mal ein anderes USB Kabel oder einen anderen Port an deinem PC. Ich habe davon gehört das bei der Ulanzi das ein häufiges Problem ist.

Kannst Du das Ding vielleicht noch irgendwie Wireless flaschen?

Eine doofe Frage, aber hast du beim Anstecken des USB Kabels auch die mittlere Taste gedrückt?

Bin gerade auf der Arbeit, aber werde beide Tipps aus probieren. Das mit der mittleren Taste habe ich wirklich nicht gemacht. Steht ja auch nirgends, dass man das machen soll. Gib dann heute Abend Bescheid, danke schon mal für die Hilfe.

Das mit der mittleren Taste sagt mir auch nichts. Am besten du nimmst ein höhenwertiges, kurzes USB-Kabel.

Ja hab eins hier, damit hab ich schon mal ein ESP bespielt, das sollte funktionieren.

Edit: Anderes USB Kabel an USB3 Port hat funktioniert. Hatte zwar noch network not found aber das liegt bei mir daran weil meine ssid hidden ist.

Für die die das nicht kennen unter:

password: !secret wifi_password

Folgendes einfügen:

fast_connect: True

Jetzt erstmal gucken was geht damit :grinning:

Ich wollte mich mal mit meiner Uhr weiter beschäftigen. Ich nutze gerade diese Blaupause um den Temperatursensor der Uhr anzuzeigen. Jetzt habe ich mir einen eigenen Sensor gebaut.

- platform: template
    sensors:
      current_temperature:
        friendly_name: "Aktuelle Temperatur"
        unit_of_measurement: "°C"
        value_template: "{{ state_attr('weather.forecast_home', 'temperature') }}"

wenn ich diesen aber als Entität in der Blaupause angebe, bekomme ich diese Fehlermeldung.

Error: Error rendering data template: UndefinedError: 'dict object' has no attribute 'to_state'

klar die Automation benutzt den state nicht den wert. Aber wie biege ich das um?

Hi, es kann sein, dass dieser Blueprint nicht mit Attributen klarkommt, das muss ich mal prüfen

Versuch mal diese Automatisierung:

alias: EHMTX Temperatur
description: ""
trigger:
  - platform: state
    entity_id: weather.forecast_home
condition: []
action:
  sequence:
    - service: script.ehmtx_to_all
      data:
        icon_name: temperature
        text: "{{ trigger.to_state.attributes.temperature }}"

Also immer, wenn sich der State des Sensors ändert, wird die Temperatur mit dem Icon temperature (das muss in deiner YAML auch so drinstehen) angezeigt.

Sorry habe deine Antwort jetzt erst gelesen.
Wenn ich die Automation erstellen möchte bekomme ich Message malformed: Unable to determine action @ data['action'][0] als Fehlermeldung.

habe ich auch nicht.

Nachtrag:
Mir ist auch aufgefallen das sich der Inhalt der easy.yaml geändert hat. Schriftart hat sich geändert. Im GitHub steht es müssen noch Einträge für Image & Animation vorgenommen werden. Einen Schalter für das Display ( siehe weiter oben) sehe ich in deiner Yaml auch nicht. Ist noch etwas verändert worden?

:crayon:by HarryP: Zusammenführung Doppelpost.

Du kannst Dir die yaml so zusammenbauen, wie Du sie gerne hättest. Aber ja, aktuell muss Image & Animation als Workaround unbedingt mit rein. Zumindest wenn Du die Firmware erneut mit dem aktuellen ESPhome bauen willst. Wenn das Display läuft, lass es einfach so.

Zu Deinem Problem: Hast Du das mal über Entwicklerwerkzeuge->Dienste probiert?

So in der Art:

service: esphome.esphomatrix_arbeitszimmer_icon_screen
data:
  icon_name: skull
  text: "{{ states('sensor.sensor_schalter_trockner_power') | round(0) }}W"
  lifetime: 10
  screen_time: 10
  default_font: true
  r: 255
  g: 42
  b: 128

Noch auf Deine Belange anpassen. Da kannst Du auch direkt im yaml Modus Dein state_attr template einbauen.

Es hat eine Weile gedauert. Zeit ist immer ein Problem.
Habe deinen Tipp befolgt und

service: esphome.ulanzi_icon_screen
data:
  icon_name: car
  text: "{{ state_attr('weather.forecast_home', 'temperature') }}"
  lifetime: 42
  screen_time: 42
  default_font: true
  r: 42
  g: 42
  b: 42

damit bekomme ich die Temperatur angezeigt. Vielen Dank.

Ich habe gesehen an der ulanzi-easy.yaml wird gearbeitet. Macht es wohl Sinn das Display danach neu zu bauen?

Bzgl. Icons habe ich noch eine Frage. Wie kann ich eigene hinzufügen?

Edit
habe einfach mal versucht die Uhr neu zu bauen mit der aktuellen “ulanzi-easy.yaml” bekomme aber ERROR Failed to parse as bitmap font: '/config/esphome/fonts/MatrixClock-Light8.bdf': not a valid BDF file angezeigt. Dei Schrift habe ich wie in der yaml beschrieben von Hier

Hallo Ludger,
hallo alle zusammen,

ich habe zuerst einmal awtrix versucht, würde nun aber gerne esphomematrix nach dem Beitrag von blakkadar (oder so ähnlich) nehmen.

Ich bin neu in Home Assistant und espHome. Erstinstallation von ca. 3-4 Wochen mit Home Assistant OS 10.4 und 2023.7.xxx => Jetzt OS 10.5 auf 2023.8.4

Also, schnell Projekt angelegt und Installieren - und da sind sie wieder meine Probleme :unamused:
Ich bekomme einen Fehler zur animation.h

Compiling .pioenvs/ulanzi/src/esphome/components/esp32/preferences.cpp.o
In file included from src/esphome.h:25,
                 from src/esphome/components/ehmtx/EHMTX.cpp:1:
src/esphome/components/ehmtx/EHMTX.h:6:10: fatal error: esphome/components/animation/animation.h: No such file or directory
 #include "esphome/components/animation/animation.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pioenvs/ulanzi/src/esphome/components/ehmtx/EHMTX.cpp.o] Error 1
In file included from src/esphome.h:25,
                 from src/esphome/components/ehmtx/EHMTX_icons.cpp:1:
src/esphome/components/ehmtx/EHMTX.h:6:10: fatal error: esphome/components/animation/animation.h: No such file or directory
 #include "esphome/components/animation/animation.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pioenvs/ulanzi/src/esphome/components/ehmtx/EHMTX_icons.cpp.o] Error 1
In file included from src/esphome.h:25,
                 from src/esphome/components/ehmtx/EHMTX_screen.cpp:1:
src/esphome/components/ehmtx/EHMTX.h:6:10: fatal error: esphome/components/animation/animation.h: No such file or directory
 #include "esphome/components/animation/animation.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/esphome.h:25,
                 from src/esphome/components/ehmtx/EHMTX_store.cpp:1:
src/esphome/components/ehmtx/EHMTX.h:6:10: fatal error: esphome/components/animation/animation.h: No such file or directory
 #include "esphome/components/animation/animation.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pioenvs/ulanzi/src/esphome/components/ehmtx/EHMTX_store.cpp.o] Error 1
compilation terminated.
*** [.pioenvs/ulanzi/src/esphome/components/ehmtx/EHMTX_screen.cpp.o] Error 1
=========================================================== [FAILED] Took 63.99 seconds ===========================================================

Die animation.h, nebst der animation.cpp finde ich auf der esphome Seite.
Jetzt fand ich einen Hinweis, dass es ein Workaround dazu in der read.me auf (Deiner?) Githubseite gibt.

Nur: Welcher ist das? Sorry, aber ich weiß ja nicht, wofür die animation.h da ist und durch welchen Befehl der Compiler diese zieht.

Und vor allem: Warum habe nur ich das Problem? Haben ältere HA Installtionen evtl. sich da noch SourceCode mitgeschleppt?

Übrigens: Passiert das auch bei einer komplett anderen und vor allem neuen esphome Docker Installation für Command Line.

Verwendete YAML: Ulanzi Desktop Pixel Clock on Esphome | Blakadder's Smarthome Shenanigans
oder direkt aus dem Projekt: EsphoMaTrix/UlanziTC001.yaml at main · lubeda/EsphoMaTrix · GitHub

Hier passen nur ganz unten nicht die icons. a habe ich was eigenes genommen.

Gibt es für mich eine Chance, das doch noch zum Laufen zu bekommen? :pensive:

Danke im Voraus

Micha

Moin,

durch ein Update von ESPHOME muss man seine yaml anpassen.

Bleib bei deiner YAML und füge die hier beschriebenen Zeilen ein

Danke. Das war es.

Ich habe nun effektiv über 10h gesucht, da man einfach nicht weiß, wo der Anfang ist.
Die Lösung zum Issue in der Version 2 hatte mir google leider nie rausgeschmissen oder ich hatte es übersehen - da nicht richtiger Ort.
Magst Du das bitte nicht einfach auch direkt im Git einfügen? Auch wenn Du dieses nicht mehr pflegst.
Habe dir gerade einen PullRequest gesendet (readme.md mit der Fehlerbeschreibung & -lösung und black.gif Bild hinzugefügt)

Folgend eine Beschreibung, falls jemand auf diesen thread hier durch googlen stößt:

Die einfache Lösung ist, hier folgende Zeilen am Ende der verwendeten Konfigurations.yaml
hinzuzufügen:

animation:
  - id: animation_black
    file: "black.gif"

image:
  - id: image_black
    file: "black.gif"

Hinzu kommt, dass man ein x-beliebiges gif Bild mit 1x1 Pixel in schwarz in den esphome Ordner (/config/esphome/) ablegt.
Das Bild muss dann den identischen Namen wie in der yaml haben - hier also black.gif.

Erst jetzt erkennt der Compiler, dass er aus den Ressourcen in den Build-Ordner (da, wo alles comipilert wird) auch die “animation Ressourcen” kopieren muss.
Das sieht man schön an der json, die während des Kompilieren erstellt wird:
Mit Samba Add-On: \\192.168.xx.xx\config\esphome\.esphome\<nameDeinerKonfiguration>.yaml.json
(Deine HA-IP bitte verwenden)

{
  "storage_version": 1,
  "name": "ulanzi",
  "friendly_name": null,
  "comment": "Ulanzi TC001",
  "esphome_version": "2023.9.0-dev",
  "src_version": 1,
  "address": "ulanzi.local",
  "web_port": 80,
  "esp_platform": "ESP32",
  "build_path": "/config/esphome/.esphome/build/ulanzi",
  "firmware_bin_path": "/data/ulanzi/.pioenvs/ulanzi/firmware.bin",
  "loaded_integrations": [
    "adc",
    "addressable_light",
    "animation",
    "api",
    "async_tcp",
    "binary_sensor",
...

Vorher fehlte immer animation.

In der EHMTX.h wird aber immer fest animation.h aufgerufen.
grafik

Und wenn man das mit der animation.h gelöst hätte, würde sofort der nächste Fehler mit den image Ressourcen passieren.
Daher müssen beide Werte in der YAML hinzugefügt werden.

@lubeda
Hast du für mich auch einen Tipp für das weiter oben beschriebene Problem von mir?

Bestimmt, aber ich habe keinen Bock nach deiner Fragestellung zu suchen. Worum gehts?

Aber das Problem hat sich schon erledigt weil wieder an der ulanzi-easy gearbeitet wird.

Hier bin ich mir nicht sicher, ich würde wetten das die Datei beim download irgendwie kaputt gegangen ist.

Mein Vorschlag: neu runterladen mit diesem link: https://raw.githubusercontent.com/trip5/MatrixClockFonts/main/8-series/MatrixClock-Light8.bdf

und nochmal versuchen.

Hallo Ludger,
hallo Forengemeinde,

ich bin mit dem Home Assistant und jetzt der Ulanzi Clock in einen Kaninchenbau gefallen und komme aus dem Staunen nicht mehr heraus. Ich bin fasziniert von deiner Software (EHMTXv2) und bekomme langsam halbwegs einen Einblick (bin Anfänger was “echte” Programmiersprachen betrifft).

Eine Frage habe ich jetzt: es wird im Wechsel das Datum (10s) und die Uhrzeit (1s) angezeigt. Wie kann ich die Anzeigedauer dieser Anzeige ändern (Zeit lang / Datum kurz)?

Vielen Dank!

Grüße
Bernd

Ich steuere mein Display per Automation an, funktioniert so weit ganz gut.

alias: "Ulanzi: Sensoren"
description: ""
trigger:
  - platform: time_pattern
    minutes: /5
condition: []
action:
  - service: esphome.ulanzi_del_screen
    data:
      icon_name: "0"
      mode: 6
  - service: esphome.ulanzi_del_screen
    data:
      icon_name: "0"
      mode: 3
  - service: esphome.ulanzi_del_screen
    data:
      icon_name: "0"
      mode: 2
  - service: esphome.ulanzi_clock_screen
    data:
      default_font: false
      lifetime: 999
      screen_time: 10
      r: 255
      g: 255
      b: 255
  - service: esphome.ulanzi_set_weekday_color
    data:
      r: 255
      g: 255
      b: 255
  - service: esphome.ulanzi_set_today_color
    data:
      r: 0
      g: 255
      b: 255
  - service: esphome.ulanzi_date_screen
    data:
      default_font: false
      lifetime: 999
      screen_time: 10
      r: 255
      g: 255
      b: 255
  - service: esphome.ulanzi_text_screen
    data:
      default_font: false
      lifetime: 999
      screen_time: 10
      r: 255
      g: 255
      b: 255
      text: in {{ states("sensor.innen_temperature") | round(0) }}°C
  - service: esphome.ulanzi_text_screen
    data:
      default_font: false
      text: out {{ states("sensor.draussen_temperature") | round(0) }}°C
      lifetime: 999
      screen_time: 10
      r: 255
      g: 255
      b: 255
  - service: esphome.ulanzi_text_screen
    data:
      default_font: false
      text: Sonnenaufgang {{ states("sensor.sonnenaufgang") }}
      lifetime: 999
      screen_time: 10
      r: 255
      g: 255
      b: 255
  - service: esphome.ulanzi_text_screen
    data:
      default_font: false
      text: Sonnenuntergang {{ states("sensor.sonnenuntergang") }}
      lifetime: 999
      screen_time: 10
      r: 255
      g: 255
      b: 255
mode: single

In der Automation löscht er die verwendeten Screens und legt diese neu an. Passt die 4 Sensoren noch an eure an.

Was welcher Dienst macht, findet ihr da: