8x32 Pixel Uhr mit HomeAssistant Anbindung

Hallo,
vielen Dank für die Hilfe. Jetzt sieht Sie so aus wie vorher.

Merci

Hallo erstmal und vielen Dank für das Forum und die tolle Arbeit von lubeda für Anbindung von LED-Matrizen. Super Projekt.
Ich hätte da auch gleich mal ne Frage. Ich möchte gerne 2 8x32 Matrix Display untereinander mit 2 x ESP8266 betreiben. Funktioniert auch soweit. Kann man die Displays irgendwie untereinander synchronisieren, so das sie nicht auseinander driften? Kann man die Uhrzeit auch deaktivieren? Beim Datum gehts ja.

Danke schonmal
Martin

Eine Möglichkeit wäre z.B. das automatische Weiterschalten der Screens zu verhindern und das über HA zu erledigen. Vielleicht über ein API-Call “next_screen” oder so ähnlich. Dann würden beide ESP zur fast gleichen Zeit das übermittelt bekommen. Dann würde es kein auseinander driften geben. Nur so’ne Idee.

Martin

Moin. Hat sich erledigt. Habe ne Lösung mit “del_screen” gefunden über Automatisierung oder Script-Sequenz. Will dann später über Alexa bestimmte Screens einblenden können.

Danke

Hello everyone,
recently the icons on my Ulanzi Clock (integrated via the ID at LaMetric: Web) have been “destroyed” - i.e. they are no longer displayed correctly (see photo).

However, everything is displayed correctly on the ulanzi-easy.html created when installing the firmware:

It started shortly after installing a new firmware version (which actually worked without any problems).
Several attempts with new and old firmware have not helped - is there a way to solve the problem? And if so, which one? I am grateful for any help.

Bernd

Have you ever tried AWREIX3-firmware on your Ulanzi Clock?

This works for me on three clocks without any problems.

3 YT-videos in German:

and another one in English:

Hallo harryp,

ich schau mir gerade die awtrix Firmware an. Ich konnte mittlerweile die TC001 auf diese Firmware umstellen (lesson learned - don’t use USB3) und versuche jetzt mit Automationen etwas darzustellen. Das klappt noch nicht - aber zumindest ging die Einbindung im HA mit den Videos recht gut.

Vielen Dank für deinen Tipp!

Bernd

Das ist in den verlinkten Videos (und es gibt auf YT noch mehr), gut beschrieben.
Ich habe mir dafür noch folgende HACS-Integration
“homeassistant-custom_components-awtrix”
installiert, mache aber alles mit Node-Red. :wink:

das Node-Red Addon installiere ich gerade :+1:t3:

… und der Kaninchenbau wird immer tiefer …

Ist aber aber kein NR-Addon, sondern eine HA-HACS-Integration, die Du sowohl für HA-Automatisierungen, als auch in NR nutzen kannst.

Tibber Price Chart Script
I made a tibber price chart with following features:

  • 24 hour price chart
  • shows previous 8 hours + shows future 16 hours (if possible)
  • shows more previous hours, if future prices are not yet available
  • colored according to VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE
  • current hour indicator (white LED)
  • show current price Ct/KwH
  • show min indicator for cheapest hour
  • show max indicator for most expensive hour

Credits to: anon71759204 for the idea (Hourly Tibber rates on matrix displays (e.g. Ulanzi TC001)

Automation can be easily made with toggle helper to switch on/off


Script: Tibber Price Chart to Awtrix Display

alias: Tibber Price Chart to Awtrix Display
description: Draw Tibber Price Chart to Awtrix Display
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      qos: "0"
      retain: false
      topic: awtrix_a9b7ac/custom/tibberPriceChart
      payload: >-
        {% set prices_today = state_attr("sensor.tibber_prices", "today") %} {%
        set prices_tomorrow = state_attr("sensor.tibber_prices", "tomorrow") %}
        {% set prices_today_and_tomorrow = prices_today|list +
        prices_tomorrow|list %}

        {% set my_now = now().year|string + "-" + now().month|string + "-" +
        ((now().day)|int + 0)|string + "T" + (now().hour-1)|string +
        ":00:00.000+01:00" %}

        {% set ns = namespace(min_price=100.0, max_price=0.0, now_index=-1) %}

        {# Get index of current hour in price array #} {%- for hour_cost in
        prices_today_and_tomorrow -%}
          {%- if as_timestamp(hour_cost.startsAt) == as_timestamp(my_now) -%}
            {%- set ns.now_index = loop.index -%}
            {%- break %}
          {%- endif %}
        {%- endfor %}

        {# Get start_index in price array #} {% if
        prices_today_and_tomorrow|length > 24 -%}
          {% if ns.now_index > (48-16) -%}
            {% set start_index = 48-24 -%}
          {% else -%}
            {% set start_index = ns.now_index - 7 -%}
          {% endif -%}
        {% else -%}
          {% set start_index = 0 -%}
        {% endif -%}

        {# get ns.min_prices, ns.max_prices and diff_price #} {%- for i in
        range(start_index,start_index+24) %}
          {%- if float(prices_today_and_tomorrow[i].total) < float(ns.min_price) -%}
            {%- set ns.min_price = float(prices_today_and_tomorrow[i].total) -%}
          {%- endif -%}
          {%- if float(prices_today_and_tomorrow[i].total) > float(ns.max_price) -%}
            {%- set ns.max_price = float(prices_today_and_tomorrow[i].total) -%}
          {%- endif -%}
        {%- endfor %} {%- set diff = ns.max_price - ns.min_price %}

        {% macro getY(price) -%}
          {{ 6 - int((price - ns.min_price) * 6 / diff + 0.5) -}}
        {% endmacro -%}

        {%- macro getColor(level) -%}
          {%- if level == "VERY_CHEAP" -%}
            "#00ff00" {#- Grün -#}
          {%- elif level == "CHEAP" -%}
            "#48a43f" {#- Gelbgrün -#}
          {%- elif level == "NORMAL" -%}
            "#ffff00" {#- Gelb -#}
          {%- elif level == "EXPENSIVE" -%}
            "#ff8800" {#- Orange -#}
          {%- elif level == "VERY_EXPENSIVE" -%}
            "#ff0000" {#- Rot -#}
          {%- endif -%}
        {%- endmacro -%}

        {"draw":[
        {# draw current hour -#}
        {"dp":[{{ns.now_index-start_index}},7,"#ffffff"]},
        {#- draw price chart-#}
        {%- for i in range(start_index,start_index+24) %}
        {"dl":[{{i-start_index}},6,{{i-start_index}},{{getY(prices_today_and_tomorrow[i].total)}},{{getColor(prices_today_and_tomorrow[i].level)}}]},
        {%- endfor -%}
        {#- draw min or max indicator #}
        {%- if (prices_today_and_tomorrow[ns.now_index].total*100)|round == (ns.max_price*100)|round %}
        {"dl":[27,6,29,6,"#ffffff"]},
        {"dp":[28,7,"#ffffff"]},
        {%- endif -%}
        {%- if (prices_today_and_tomorrow[ns.now_index].total*100)|round == (ns.min_price*100)|round -%}
        {"dp":[28,6,"#ffffff"]},
        {"dl":[27,7,29,7,"#ffffff"]},
        {%- endif -%}
        {#- draw current price in Cent #}
        {"dt":[24,0,"{{(prices_today_and_tomorrow[ns.now_index].total*100)|round}}",{{getColor(prices_today_and_tomorrow[ns.now_index].level)}}]}
        ]}

Automation: Awtrix Tibber Price Chart

alias: Awtrix Tibber Price Chart
description: Upon tibber price change trigger an update to the awtrix tipper price chart
triggers:
  - trigger: state
    entity_id:
      - sensor.tibber_prices
    id: tibber_price_update_available
  - trigger: state
    entity_id:
      - input_boolean.awtrix_toggle_tibber_prices
    to: "on"
    id: toggle_helper_on
  - trigger: state
    entity_id:
      - input_boolean.awtrix_toggle_tibber_prices
    to: "off"
    id: toggle_helper_off
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - tibber_price_update_available
              - toggle_helper_on
        sequence:
          - action: script.test_tibber_price_chart
            data: {}
          - action: mqtt.publish
            data:
              qos: 0
              retain: false
              topic: awtrix_a9b7ac/switch
              payload: |-
                {   
                  "name": "tibberPriceChart"
                }
      - conditions:
          - condition: trigger
            id: toggle_helper_off
        sequence:
          - action: mqtt.publish
            metadata: {}
            data:
              qos: "0"
              retain: false
              topic: awtrix_a9b7ac/custom/tibberPriceChart
mode: single

Helper: Awtrix Toggle Tibber Prices

Entity ID: input_boolean.awtrix_toggle_tibber_prices
Type: Input Boolean