Zum Hauptinhalt springen

Automation Templates

·266 Wörter·2 min·
Inhaltsverzeichnis

Im Post Pixelclock: Custom App Collection wurde bereits eine Custom App zur Anzeige des Bitcoin Kurses auf der Ulanzi Pixelclock vorgestellt. Diese nutzt die Bitcoin Integration und stellt den aktuellen Kurs auf dem Display dar:

Foto der Custom Bitcoin App auf der Ulanzi Pixelclock

Vorhaben

Ziel dieses Beitrags ist Home Assistants mächtige Funktion der Automation Templates näherzubringen und diese zu nutzen, um die bestehende Custom App zu optimieren. Dazu wird die Automation erweitert und die Trigger Data verwendet, um den dargestellten Text des Bitcoin Kurse einzufärben. Steigt der Kurs, gegenüber dem zuletzt gelieferten Ausgangswert, wird der Text grün dargestellt. Fällt der Kurs, wird er in roter Textfarbe ausgegeben. Ist der Wert gleichbleibend erfolgt eine Ausgabe in Gelb:

Animiertes GIF des aktuellen Bitcoin Kurses in gefärbter Ausgabe auf der Ulanzi Pixeclock

Zur Einfärbung des Texts muss die State Trigger Data herangezogen werden, die zwei Variablen namens trigger.from_state und trigger.to_state bereitstellt:

Tabelle mit den Variablen für Home Assistants State Trigger Data

Automation anpassen

Die Farbausgabe auf dem Display wird über den Payload Key color definiert. Zuvor muss jedoch ermittelt werden, ob der letzte gelieferte Wert des Sensors sensor.exchange_rate_1_btc größer oder kleiner ist als der aktuelle Wert:

alias: notify_pixelclock_bitcoin
trigger:
  - trigger: state
    entity_id: sensor.exchange_rate_1_btc
action:
  - action: mqtt.publish
    data:
      qos: 2
      retain: true
      topic: pixelclock/custom/bitcoin
      payload: >-
        {
          "text": "{{ states('sensor.exchange_rate_1_btc') | round(0) }}",
          "icon": "bitcoin",
          "color":  {% if is_number(trigger.from_state.state) and (float(trigger.to_state.state,default=0) > float(trigger.from_state.state,default=0)) %}
                      "#006400"
                    {% elif is_number(trigger.from_state.state) and (float(trigger.to_state.state,default=0) < float(trigger.from_state.state,default=0)) %}
                      "#FF0000"
                    {% else %}
                      "#FFCC00"
                    {% endif %}
        }

Handelt es sich beim aktuellen Sensorwert um einen numerischen Wert (is_number()) und ist dieser größer als der vorherige Wert wird der Text nun in Grün ausgegeben:

Grüne Textausgabe des Bitcoin Kurs auf der Ulanzi Pixelclock

Fällt der aktuelle Kurs, wird der Text Rot ausgegeben:

Rote Textausgabe des Bitcoin Kurs auf der Ulanzi Pixelclock

Im Falle eines gleichbleibenden Werts, wird der Text in gelber Farbe ausgegeben.

Gelbe Textausgabe des Bitcoin Kurs auf der Ulanzi Pixelclock