Home Assistant: Kalender Automatisierungen gehen so einfach ! 📅 ( Einsteiger ready)

Oftmals hat man den Anwendungsfall, dass man auf ein Kalenderevent triggern möchte. Sei es, dass man sich eine đŸ“Č Benachrichtigung schicken lassen möchte, wenn ein Event ansteht, oder aber eine đŸ€– Automatisierung ausgefĂŒhrt werden soll. Ebenso interessant ist, wann welche đŸ—‘ïž MĂŒlltonne an die Straße gestellt werden muss. Desto lĂ€nger man drĂŒber nachdenkt, umso mehr AnwendungsfĂ€lle fallen einem ein. 🔧 MĂŒhsam? Nicht mit diesem Blueprint! Mit Templates und Automatisierungen in Home Assistant lĂ€sst sich das zwar umsetzen, aber heute stelle ich euch ein Blueprint vor, das euch diese Arbeit mit ein paar Klicks abnimmt. 🎁 Bonus: Ich zeige euch eine komplette Lösung fĂŒr euren MĂŒllkalender, inklusive einer Anzeige auf der Pixelclock Ulanzi TC001.

👉 FĂŒr den Ulanzi-Bonus mĂŒsst ihr als Basis dieses Video umgesetzt haben

🔗 Das Blueprint zum Video findet ihr hier

Tolle Arbeit des Entwicklers – ich war wirklich begeistert von diesem durchdachten Blueprint!

📱 Weitere Infos zu den Notification Sounds

YAML Code des Bonus Materials MĂŒll-Kalender

alias: MĂŒllkalender
description: ""
use_blueprint:
  path: Blackshome/calendar-notifications-and-actions.yaml
  input:
    calendar: calendar.smarthomeandmore
    include_calendar_trigger: disable_key_word
    start_calendar_offset:
      hours: 16
      minutes: 0
      seconds: 0
      days: -1
    include_start_notify: disable_start_notify_options
    start_notify_device:
      - d64818e1bf4a857f01f0f7589028ac75
    include_start_auto_actions:
      - enable_start_action_1
    start_action_1:
      - choose:
          - conditions:
              - condition: template
                value_template: "{{ \"Gelber Sack\" in trigger.calendar_event.summary }}"
            sequence:
              - action: input_boolean.turn_on
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.gelber_sack
            alias: Gelber Sack
          - conditions:
              - condition: template
                value_template: "{{ \"Graue Tonne\" in trigger.calendar_event.summary }}"
            sequence:
              - action: input_boolean.turn_on
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.graue_tonne
            alias: Graue Tonne
          - conditions:
              - condition: template
                value_template: "{{ \"GrĂŒne Tonne\" in trigger.calendar_event.summary }}"
            sequence:
              - action: input_boolean.turn_on
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.grune_tonne
            alias: GrĂŒne Tonne
          - conditions:
              - condition: template
                value_template: "{{ \"SperrmĂŒll\" in trigger.calendar_event.summary }}"
            sequence:
              - action: input_boolean.turn_on
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.sperrmull
            alias: SperrmĂŒll
          - conditions:
              - condition: template
                value_template: >-
                  {{ "Problemabfallsammeltermine" in
                  trigger.calendar_event.summary }}
            sequence:
              - action: input_boolean.turn_on
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.problemabfallsammeltermine
            alias: Problemabfallsammeltermine
    include_end_notify: enable_end_notify_options
    end_notify_device:
      - d64818e1bf4a857f01f0f7589028ac75
    end_message: "{{ trigger.calendar_event.summary }} muss rausgestellt werden !"
    end_notify_interruption_level: critical
    include_end_action_buttons:
      - enable_end_action_button_1
    end_action_button_1: "{{ trigger.calendar_event.summary }} rausgestellt?"
    end_time_delay:
      hours: 20
      minutes: 0
      seconds: 0
    include_end_action_button_confirmation: enable_end_action_button_confirmation
    end_action_button_confirmation_title: MĂŒllinformation
    end_action_1:
      - choose:
          - conditions:
              - condition: template
                value_template: "{{ \"Gelber Sack\" in trigger.calendar_event.summary }}"
            sequence:
              - action: input_boolean.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.gelber_sack
            alias: Gelber Sack
          - conditions:
              - condition: template
                value_template: "{{ \"Graue Tonne\" in trigger.calendar_event.summary }}"
            sequence:
              - action: input_boolean.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.graue_tonne
            alias: Graue Tonne
          - conditions:
              - condition: template
                value_template: "{{ \"GrĂŒne Tonne\" in trigger.calendar_event.summary }}"
            sequence:
              - action: input_boolean.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.grune_tonne
            alias: GrĂŒne Tonne
          - conditions:
              - condition: template
                value_template: "{{ \"SperrmĂŒll\" in trigger.calendar_event.summary }}"
            sequence:
              - action: input_boolean.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.sperrmull
            alias: SperrmĂŒll
          - conditions:
              - condition: template
                value_template: >-
                  {{ "Problemabfallsammeltermine" in
                  trigger.calendar_event.summary }}
            sequence:
              - action: input_boolean.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: input_boolean.problemabfallsammeltermine
            alias: Problemabfallsammeltermine
    end_calendar_offset:
      hours: 16
      minutes: 0
      seconds: 0
      days: -2
    end_action_button_confirmation_message: "{{ trigger.calendar_event.summary }} wurde rausgestellt!"
    include_end_auto_actions:
      - enable_end_action_1
    start_title: "MĂŒll "
    end_time_delay_confirmation_message: >-
      {{ trigger.calendar_event.summary }} : MĂŒllabfuhr schon durch ! MĂŒll
      automatisch quittiert.
    start_notify_interruption_level: active
    start_message: "{{ trigger.calendar_event.summary }} muss rausgestellt werden!"
    end_title: MĂŒll
    end_action_button_stop_confirmation_message: "{{ trigger.calendar_event.summary }} Vorgang abgebrochen!"
    end_action_button_stop: Abbruch !

Hinweis: FĂŒr die Anzeige auf der Pixel Clock mĂŒssen die Inhalte dieses Videos umgesetzt worden sein!

YouTube player

YAML Code der Ulanzi TC-001 Awtrix 3 Anzeige

alias: Test MĂŒll
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.gelber_sack
      - input_boolean.graue_tonne
      - input_boolean.grune_tonne
conditions: []
actions:
  - if:
      - condition: state
        entity_id: input_boolean.gelber_sack
        state: "on"
    then:
      - action: script.awtrix_new_app
        metadata: {}
        data:
          rainbow: false
          lifetime: 0
          duration: 10
          textcase: 0
          textcolor:
            - 255
            - 255
            - 255
          progress: 0
          topicname: Muell_Gelber_Sack
          text: "Gelber Sack "
          icon: "12345"
    else:
      - action: script.awtrix_delete_app
        metadata: {}
        data:
          topicname: Muell_Gelber_Sack
mode: single

EVCC spricht Home Assistant: So einfach geht’s jetzt mit HACS Integration 🚗⚡

YouTube player

Mit EVCC und Home Assistant wird das Management deines Elektroautos einfacher als je zuvor! 🚗⚡ In diesem Video zeige ich dir, wie du EVCC mit HACS und dem passenden Add-On in Home Assistant integrieren kannst. Egal ob Ladeplanung, Energieoptimierung oder smarte Automatisierungen – mit dieser Anleitung holst du das Maximum aus deinem Smart Home heraus. Schau rein und erfahre, wie simpel die Einrichtung wirklich ist!

HACS Integration: GitHub – marq24/ha-evcc: Home Assistant integration for evccâ˜€ïžđŸš˜- optimized charging of electric vehicles, connecting your EV charger with your PV system. The integration use local polling (interval configurable) of the evcc API. Please note, that this integration is not official and not supported by the evcc developers. This project is not affiliated with evcc in any way.

Wichtiger Hinweis !: Im Video habe ich an der Stelle 6:03 benannt, dass ihr die IP Eures Home Assistant Servers (mit dem Port 7070) angeben sollt. Dies ist korrekt, wenn Ihr zusĂ€tzlich das HomeAssistant EVCC Addon installiert habt. Sollte Euere EVCC Installation nicht innerhalb von Home Assistant laufen, mĂŒsst Ihr hier die Adresse, unter der die EVCC WeboberflĂ€che bei Euch im Netzwerk zu erreichen ist, eintragen. Nochmals der Hinweis, bevor ihr diese Integration ĂŒber HACS hinzufĂŒgt, mĂŒsst Ihr EVCC bei Euch installiert haben (hier der link zum Video).

Code zum Bonus im Video:

Hinweis ! Die EntitĂ€ten mĂŒsst ihr mit den Namen eurer EntitĂ€ten im YAML Code ersetzen
Template Sensor Helfer „evcc_Tariff_Level“

{% set current_time = now().replace(minute=0, second=0, microsecond=0) %}
{% set rates = state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] %}
{% set future_rates = rates | selectattr('start', '>=', current_time.isoformat()) | list %}
{% if future_rates | length > 0 %}
  {% set prices = future_rates | map(attribute='price') | list %}
  {% set avg_price = prices | average(0) %}
  {% set min_price = prices | min(0) %}
  {% set max_price = prices | max(0) %}
  {% set current_price = states('sensor.evcc_tariff_grid_2') | float(0) %}
    {# Definiere den Schwellenwert in Prozent (z.B. 80%) #}
  {% set threshold_percent = 10 %}
  
  {# Berechne den Preisunterschied basierend auf dem Schwellenwert #}
  {% set price_diff = avg_price * (threshold_percent / 100) %}

  {# Kategorisiere den aktuellen Preis basierend auf der Berechnung #}
  {% if current_price < (avg_price - price_diff) %}
     gĂŒnstig
  {% elif current_price > (avg_price + price_diff) %}
     teuer
  {% else %}
     mittel
  {% endif %}
  
{% else %}
    unbekannt
{% endif %}

Bonus Automatisierung:

alias: EVCC_Speicherladung
description: ""
triggers:
  - entity_id:
      - sensor.evcc_battery_soc_2
    for:
      minutes: 1
    trigger: state
  - entity_id:
      - sensor.evcc_tariff_level
    for:
      minutes: 1
    trigger: state
  - entity_id:
      - sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
    for:
      minutes: 1
    trigger: state
  - trigger: state
    entity_id:
      - sensor.evcc_tariff_grid_2
    for:
      hours: 0
      minutes: 1
      seconds: 0
conditions: []
actions:
  - if:
      - condition: or
        conditions:
          - condition: state
            entity_id: sensor.evcc_tariff_level
            state: mittel
          - condition: state
            entity_id: sensor.evcc_tariff_level
            state: teuer
          - condition: numeric_state
            entity_id: sensor.evcc_battery_soc_2
            above: 99
          - condition: numeric_state
            entity_id: sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
            above: 10
    then:
      - action: number.set_value
        data:
          value: "0.0"
        target:
          entity_id: number.evcc_battery_grid_charge_limit
    else:
      - if:
          - condition: and
            conditions:
              - condition: state
                entity_id: sensor.evcc_tariff_level
                state: gĂŒnstig
                for:
                  minutes: 1
              - condition: numeric_state
                entity_id: >-
                  sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
                below: 10
              - condition: numeric_state
                entity_id: sensor.evcc_battery_soc_2
                below: 100
        then:
          - action: number.set_value
            data:
              value: "{{ states('sensor.evcc_tariff_grid_2') | float(0) }}"
            target:
              entity_id: number.evcc_battery_grid_charge_limit
          - action: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.test_speicherladung
        else:
          - action: number.set_value
            data:
              value: "0.0"
            target:
              entity_id: number.evcc_battery_grid_charge_limit
mode: single

Blogbeitrag und Youtube Video zum Thema dynamischen Strompreis aus EVCC auslesen.

Home Assistant: EVCC-Daten zu dynamischen Strompreisen auslesen, visualisieren und damit rechnen – smarthome & more

Home Assistant: Automatische Lichteffekte ohne Aufwand – Zeit sparen mit diesem Script ! 💡

Beschreibung

Hast du auch Beleuchtungen, die Effekte integriert haben ? Klar, nicht immer will man dieses Lichtspektakel, es gibt aber auch Jahreszeiten, wo man sich darĂŒber freut, dass man mal den einen oder anderen vielleicht „kitschigen“ Effekt laufen lĂ€sst. Und dann geht es los. Wie setze ich das um ?

Der erste Gedanke ist, dass man fĂŒr jeden Effekt eine eigene Szene erstellt.

Aber sind wir mal ehrlich, da hat man innerhalb kĂŒrzester Zeit keine Lust mehr. Und genau hier möchte ich euch eine Lösung zeigen, die euch automatisch die Effekte ausliest und entweder einen zufĂ€lligen Effekt auswĂ€hlt, oder aber die Effekte der Reihe nach durchgeht.

Wenn man in die Effektlisten der einzelnen Beleuchtungen schaut, dann können da schnell mal etliche Effekte zusammenkommen.

Um euch das Leben hier einfacher zu machen, habe ich euch ein Skript erstellt, in dem ihr eurer Licht ĂŒbergebt, ein paar Übergabeparameter setzt und schon könnt ihr eure gewĂŒnschten Effekte laufen lassen.

Dieses Skript lÀsst sich einfach handhaben und in einer Automatisierung umsetzen. Als Beispiel möchte ich euch meine Weihnachtsbaum Automatisierung vorstellen.

Die zu ĂŒbergebenden Parameter sind:

  • Licht ( beliebige LichtentitĂ€t mit Effekten)
  • random ( An / Aus )
  • brigthness ( 0% – 100%)
  • exclude ( Liste von Effekten, die bei der automatischen Selektion ausgeschlossen werden sollen )
  • transition ( Übergangszeit fĂŒr einen weichen Übergang zum nĂ€chsten Effekt ) -> Hinweis: Das wird nicht von jeder Beleuchtung unterstĂŒtzt. Ist diese Möglichkeit nicht vorhanden, so wird automatisch ohne Transition Time geschaltet.

In der obigen Beispielautomatisierung wird alle 30 Sekunden ein anderer Effekt selektiert. Der Zyklus ist vielleicht etwas kurz, aber hier könnt ihr frei entscheiden.

Gerne stelle ich euch das Script kostenfrei zur VerfĂŒgung und wĂŒrde mich ĂŒber Kommentare zum Video bei Youtube , aber auch ein Like und vielleicht ein Abo sehr freuen. Auch Anregungen zur sinnvollen Erweiterung finde ich immer sehr Klasse. Ich hoffe euch hilft diese Umsetzung und ihr könnt gerade in der aktuell adventlichen Zeit schnell ein paar schöne Effekte damit leuchten lassen. Wenn ihr dann noch eure Zeit dabei fĂŒr die Umsetzung spart, dann habe ich mein Ziel schon erreicht.

Ich wĂŒnsche euch eine ruhige und besinnliche Adventszeit ( auch, wenn vielleicht mal ein Lichtspektakel dabei ist 🙂 ).

Das Skript ✹ Light Effect Toggle als YAML Code:

alias: ✹ Light Effect Toggle
sequence:
  - action: light.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: " {{ light }} "
    alias: first turn on light
  - variables:
      current_effect: "{{ state_attr(light, 'effect') }}"
      all_effects: >
        {% set exclude_list = (exclude | default('')).split(',') | map('trim') |
        list %} {{ state_attr(light, 'effect_list') | reject('in', exclude_list)
        | list }}
      effect_to_apply: |
        {% if random %}
          {{ all_effects | random }}
        {% else %}
          {% set idx = all_effects.index(current_effect) + 1 %}
          {% if idx >= all_effects | length %}
            {{ all_effects[0] }}
          {% else %}
            {{ all_effects[idx] }}
          {% endif %}
        {% endif %}
    alias: get effect list ( light is on )
  - action: light.turn_on
    metadata: {}
    data:
      effect: "{{ effect_to_apply }}"
      brightness_pct: "{{ brightness }}"
      transition: "{{ transition | default(0) }}"
    target:
      entity_id: "{{light}}"
    alias: apply effect
  - action: logbook.log
    data:
      name: Actual Effect
      message: "actual effect: {{ state_attr(light, 'effect') | default('None') }}"
  - action: logbook.log
    data:
      name: effect to apply
      message: "effect to apply: {{ state_attr(light, 'effect') | default('None') }}"
fields:
  light:
    name: Licht
    description: Die zu steuernde Licht-EntitÀt
    selector:
      entity:
        domain: light
  random:
    selector:
      boolean: {}
    name: random
  brightness:
    selector:
      number:
        min: 1
        max: 100
        step: 1
    name: brightness
    required: true
    default: 50
  exclude:
    selector:
      text: null
    name: exclude
    description: enter the effects you want to exclude here, separated by commas
  transition:
    selector:
      number:
        min: 1
        max: 10
        step: 0.1
    name: transition
    description: time in seconds
    default: 0
description: Toggles the effect of the specified light
mode: parallel
max: 10

đŸŽ„ Home Assistant meets Community – Gemeinsam smarter leben!

In der Welt von Home Assistant entstehen stÀndig neue, kreative Lösungen, um den Alltag smarter und einfacher zu gestalten. In meinem neuesten Video stellen Mitglieder der Home Assistant Community ihre beeindruckenden Automatisierungsprojekte vor. Hier sind einige Highlights, die du nicht verpassen solltest:

đŸ”č Christian hat ein cleveres Setup fĂŒr seine Waschmaschine und seinen Trockner entwickelt. Dank Home Assistant bekommt er immer rechtzeitig eine Benachrichtigung, wenn die WĂ€sche fertig ist – nie wieder zu spĂ€t die Maschine ausrĂ€umen oder den perfekten Zeitpunkt fĂŒr den Wechsel verpassen!

đŸ”č Patrick prĂ€sentiert sein selbstgebautes, smartes SchlĂŒsselbrett. Es kombiniert Technik und KreativitĂ€t auf eine beeindruckende Weise, die nicht nur praktisch ist, sondern auch stylisch in den Alltag integriert werden kann.

Diese Projekte zeigen, wie vielseitig Home Assistant eingesetzt werden kann – von nĂŒtzlichen Haushaltshelfern bis hin zu kreativen Ideen, die dein Zuhause einzigartig machen.

Hast du auch spannende Automatisierungen umgesetzt? Teile sie in den Kommentaren oder lass dich von der Community inspirieren! 🚀

Die von Christian erwĂ€hnte Pixelclock bekommt ihr hier: Ulanzi TV001 smarte Pixel Uhr *

In diesem Video findet ihr noch weitere Informationen zur Pixelclock mit awtrix 3:

YouTube player

Als zuverlĂ€ssigen TĂŒr/Fenstersensor auf Zigbee Basis kann ich euch den Sensor von Aqara * empfehlen.

Ulanzi✹ Home Assistant – Awtrix 3/Ulanzi TC001 ❀ – So funktioniert die perfekte Interaktion đŸŽ›ïžđŸš€Ulanzi

👉 Direkt auf YouTube schauen und abonnieren:
Smart Home & More auf YouTube

Beschreibung

Diese Uhr ist nicht nur ein stilvolles Accessoire, sondern auch ein wahres Multitalent im Smart Home. Dank ihrer nahtlosen Integration in Home Assistant kannst du die Ulanzi TC001 ganz nach deinen WĂŒnschen anpassen und automatisieren. Stell dir vor, wie sie dir nicht nur die Uhrzeit anzeigt, sondern auch aktuelle Wetterdaten in lebendigen Animationen prĂ€sentiert oder dich rechtzeitig an deine nĂ€chsten Termine erinnert. Lass deiner KreativitĂ€t freien Lauf und gestalte deine Uhr mit individuellen Designs, die deine Persönlichkeit widerspiegeln. Die Ulanzi TC001 Smart Pixel Uhr ist der SchlĂŒssel, um dein Zuhause intelligenter und stilvoller zu machen. Entdecke die unendlichen Möglichkeiten der modernen Technologie und verwandle dein Zuhause in einen Ort, der sowohl funktional als auch Ă€sthetisch ansprechend ist – mit der Ulanzi TC001 wird jeder Tag zu einem besonderen Erlebnis!

In meinem Video habe ich die Installation von awtrix 3 auf dem Pixel Display nicht vorgestellt. Bei mir geht es um die Kommunikation mit awtrix 3 und Home Assistant. Und zwar ohne dem teilweise bekannten Memory Leak.

Matthias vom Kanal haus:automation hat den Installationsvorgang und das Produkt sehr gut erklÀrt, so dass ich gerne darauf verweise:
https://youtu.be/hsc_yUWwcVY?si=EMikkCt64jbqckt7

Bis zur Nacht vor der Veröffentlichung lag mir auch noch kein Affiliate Link vor. Aber nach nun einigen Wochen Wartezeit habe auch ich tatsĂ€chlich einen Link erhalten, wo ihr das Produkt erwerben könnt. Lag wohl doch nicht an der KanalgrĂ¶ĂŸe 🙂

Bezugsquelle*

Ulanzi TC001 smarte Pixel Uhr

Einleitung

FĂŒr die Kommunikation mit dem Pixeldisplay habe ich im Video mehrere Skripte vorgestellt.

Bei der Entwicklung, dem Code und auch beim Bugfixing habe ich mit @Herr Spiegelmann ( Moderator auf meinem Discord Server ) eng zusammengearbeitet. Auch an dieser Stelle meinen herzlichen Dank fĂŒr die sehr angenehme und konstruktive Zusammenarbeit.

  • awtrix – new app
  • awtrix – delete app
  • awtrix – indicator
  • awtrix – power off
  • awtrix – power on
  • awtrix – reboot

Icons fĂŒr das Display lassen sich auf der Seite LaMetric Icon Gallery herunterladen. Im Video wurden folgende Icon Numbers verwendet:

  • 3813 – fĂŒr Tibber
  • 37323 – fĂŒr PV Leistung
  • 2422 – fĂŒr Aussentemperatur
  • 389 – fĂŒr SOC des Hausspeichers
  • 974 – fĂŒr Youtube Views und Likes
  • 56166 – fĂŒr Gelbe Tonne
  • 12155 – fĂŒr Graue Tonne
  • 56626 – fĂŒr GrĂŒne Tonne

Wichtige Hinweise:

24.01.2025

Ab der Version 0.97 funktionieren die LaMetrics IconÂŽs wieder.

Zur MĂŒllanzeige gibt es im Video vom 24.01.2025 ( Veröffentlichungszeitpunkt 17:00 Uhr ) ein Update zum Thema. Ihr findet das Video unter: https://youtu.be/3jxeRZBt4u4

16.02.2025

Aktuell lĂ€sst sich in der awtrix WeboberflĂ€che von LaMetrics kein Icon auf das Display laden. Aber es gibt eine alternative Lösung. Blueforcer , der Entwickler von awtrix 3 hat eine App fĂŒr Android und IPhone entwickelt, wo ihr auch eine Icon Gallerie zur VerfĂŒgung gestellt bekommt und die Icons direkt auf das Display laden könnt. Die App kostet fĂŒr iOs weniger als 4€ ( Stand: 16.12.2024), was ich fĂŒr den Funktionsumfang fĂŒr absolut gerechtfertigt halte. Es gilt zu beachten, wenn man die Icons von awtrix verwendet, dann mĂŒssen die Icon IDÂŽs angepasst werden.

awtrix – new app

Skripte

awtrix – new app

alias: awtrix - new app
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      evaluate_payload: false
      qos: 0
      retain: false
      topic: awtrix/custom/{{topicname}}
      payload: |-
        {
          "text": "{{text}}",
          "rainbow": {{rainbow|tojson}},
          "duration": "{{duration}}",
          "icon": "{{icon}}",
          "scrollSpeed": 80,
          "textCase": "{{textcase}}",
          "lifetime": "{{lifetime}}"
        }
  - if:
      - condition: template
        value_template: "{{ showimmediately == true or showimmediately == True}}"
    then:
      - action: mqtt.publish
        metadata: {}
        data:
          evaluate_payload: false
          qos: 0
          retain: false
          topic: awtrix/switch
          payload: "{\"name\": \"{{topicname}}\"}"
description: ""
icon: mdi:led-strip
fields:
  topicname:
    selector:
      text: null
    name: topicname
    required: true
    description: Name of the topic - one topic per app
  text:
    selector:
      text: null
    name: text
    required: true
    description: Text to be displayed
  icon:
    selector:
      number:
        min: 0
        max: 100000
    name: icon
    required: true
    description: Icon ID, needs to be present on the awtrix filesystem - default no icon
    default: 1
  rainbow:
    selector:
      boolean: {}
    name: rainbow
    default: false
    required: true
    description: Rainbow text yes/no
  lifetime:
    selector:
      number:
        min: 0
        max: 86400
        step: 1
    name: lifetime
    default: 0
    description: Discard app after X seconds - default 0 (never expire)
  duration:
    selector:
      number:
        min: 1
        max: 180
        step: 1
    name: duration
    default: 3
    description: How many seconds should the message be displayed - default 3
  textcase:
    selector:
      number:
        min: 0
        max: 2
        step: 1
    name: textCase
    default: 0
    description: >-
      Changes the Uppercase setting. 0=global setting, 1=forces uppercase;
      2=shows as it sent - default 0
  showimmediately:
    selector:
      boolean: {}
    name: showImmediately
    required: false
    description: Jumps the queue and displays the message immediately - default false
mode: parallel
max: 10

awtrix – delete app

alias: awtrix - delete app
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      evaluate_payload: false
      qos: 0
      retain: false
      topic: awtrix/custom/{{topicname}}
      payload: "{}"
description: ""
icon: mdi:led-strip
fields:
  topicname:
    selector:
      text: null
    name: topicname
    required: true
    description: Name of the app to be deleted
mode: parallel
max: 10

awtrix – indicator

Hinweis zur Verwendung: Wenn man den Indikator wieder deaktivieren ( nicht anzeigen ) lassen will, so muss lediglich die Farbe „schwarz“ selektiert werden.

alias: awtrix - indicator
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      evaluate_payload: false
      qos: 0
      retain: false
      topic: awtrix/indicator{{indicator}}
      payload: "{\"color\":{{colour}}, \"fade\":{{fade}}}"
description: ""
icon: mdi:led-strip
fields:
  indicator:
    selector:
      number:
        min: 1
        max: 3
        step: 1
    name: indicator
    required: true
    description: Index of the indicator
    default: 1
  colour:
    selector:
      color_rgb: {}
    default:
      - 255
      - 0
      - 0
    name: colour
    description: Colour of the indicator
    required: true
  fade:
    selector:
      number:
        min: 500
        max: 3000
        step: 100
    name: fade
    required: true
    default: 0
    description: >-
      Fade the indicator on and off with a fade interval in milliseconds - 0 is
      don't fade
mode: parallel
max: 10

awtrix – power off

alias: awtrix - power off
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      topic: awtrix/power
      payload: "{\"power\" : false}"
      evaluate_payload: false
      qos: 0
      retain: false
description: power off device
icon: mdi:led-strip
fields: {}
mode: parallel
max: 10

awtrix – power on

alias: awtrix - power on
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      topic: awtrix/power
      payload: "{\"power\" : true}"
      evaluate_payload: false
      qos: 0
      retain: false
description: power on device
icon: mdi:led-strip
fields: {}
mode: parallel
max: 10

awtrix – reboot

alias: awtrix - reboot
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      topic: awtrix/reboot
      payload: "{}"
      evaluate_payload: false
      qos: 0
      retain: false
description: reboot device
icon: mdi:led-strip
fields: {}
mode: parallel
max: 10

MĂŒllanzeige

Einleitung

FĂŒr die MĂŒllanzeige werden ein Input Button Helfer und ein Template Helfer benötigt.

Der Input Button Helfer ĂŒbernimmt bei BetĂ€tigung einen aktuellen Zeitstempel, welcher im Template „MĂŒllinformation“ verwendet wird.

Das Template MĂŒllinformation liest aus einem Kalender Zeitpunkte fĂŒr die jeweiligen MĂŒllabholungstermine aus und differenziert in diesem Beispiel nach

  • Gelber Sack
  • GrĂŒne Tonne
  • Graue Tonne

Template Helfer Sensor „MĂŒllinformation“

{% set last_pressed = as_datetime(states('input_button.mulltonne_rausgestellt')).date() %}
{% set start_time = state_attr('calendar.abfall', 'start_time') %}
{% if start_time %}
  {% set event_datetime = as_datetime(start_time) %}
  {% set event_date = event_datetime.date() %}
  {# Wenn der Button innerhalb des gĂŒltigen Zeitraums (heute oder gestern) gedrĂŒckt wurde und das Ereignis noch nicht vorbei ist #}
  {% if (last_pressed == event_date or last_pressed == event_date - timedelta(days=1))  %}
    Tonne wurde rausgestellt.
  {% else %}
    {# Am Tag vor dem Ereignis #}
    {% if (event_date - now().date()).days == 1 %}
      {{ state_attr('calendar.abfall', 'message') }} rausstellen!

    {# Am Tag des Ereignisses #}
    {% elif event_date == now().date() %}
      {{ state_attr('calendar.abfall', 'message') }} rausstellen!

    {# Ansonsten kein Termin #}
    {% else %}
      Kein MĂŒll
    {% endif %}
  {% endif %}
{% else %}
  Kein Termin
{% endif %}

1 Tag vor dem Abholungstermin bis zum Tag der Abholung, wird der Termin mit der jeweiligen herauszustellenden Tonne ĂŒber das Template angezeigt. Ich verwende dafĂŒr die HACS Mushroom Cards .

Tonne rausstellen (Mushroom Template-Badge)

Yaml Code:

type: custom:mushroom-template-badge
content: "{{ states('sensor.mullinformation') }}"
icon: mdi:trash-can
color: |-
  {% if states('sensor.mullinformation') == 'Gelber Sack rausstellen!' %}
  yellow
  {% elif states('sensor.mullinformation') == 'GrĂŒne Tonne rausstellen!' %}
  green
  {% elif states('sensor.mullinformation') == 'Graue Tonne rausstellen!' %}
  grey
  {% else %}
  white
  {% endif %}

Wurde die Tonne herausgestellt, kann ĂŒber den Input Button quittiert werden, dass die MĂŒlltonne herausgestellt wurde.

Wird der Vorgang quittiert, wird die Anzeige aktualisiert und auch auf dem Display die Nachricht entfernt.

MĂŒll quittieren ( Mushroom Template-Badge)

type: custom:mushroom-template-badge
content: MĂŒll quittieren
icon: mdi:trash-can
color: >-
  {% set last_pressed =
  as_datetime(states('input_button.mulltonne_rausgestellt')).date() %}

  {% set start_time = state_attr('calendar.abfall', 'start_time') %}

  {% if start_time %}
    {% set event_datetime = as_datetime(start_time) %}
    {% set event_date = event_datetime.date() %}
    {# Wenn der Button innerhalb des gĂŒltigen Zeitraums (heute oder gestern) gedrĂŒckt wurde und das Ereignis noch nicht vorbei ist #}
    {% if (last_pressed == event_date or last_pressed == event_date - timedelta(days=1))  %}
      green
    {% else %}
      blue
    {% endif %}
  {% endif %}
label: |2-


    
entity: input_button.mulltonne_rausgestellt
tap_action:
  action: toggle
visibility:
  - condition: and
    conditions:
      - condition: state
        entity: sensor.mullinformation
        state_not: Kein MĂŒll
      - condition: state
        entity: sensor.mullinformation
        state_not: Tonne wurde rausgestellt.
      - condition: and
        conditions: []

Die Automatisierung sieht dann wie folgt aus. Hier bitte die eigenen EntitÀten verwenden und nicht benötigte Anzeigen entfernen.

alias: awtrix Zustandstrigger
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.evcc_tariff_grid
      - sensor.evcc_pv_power
      - sensor.aussentemperatur_ds18b20_temperature
      - sensor.evcc_battery_soc
      - sensor.smart_home_more_views
      - sensor.mullinformation
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - trigger: state
    entity_id:
      - sensor.smart_home_more
    attribute: stars
    for:
      hours: 0
      minutes: 0
      seconds: 10
conditions: []
actions:
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: 3813
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 0
      topicname: Tibber
      text: "{{ states('sensor.evcc_tariff_grid') | round(3) }}"
    alias: "Skript new App : Tibber"
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: 37323
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 0
      topicname: PV
      text: "{{ states('sensor.evcc_pv_power') }}"
    alias: "Skript new App : Solar Power"
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: 2422
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 0
      topicname: Temperatur
      text: "{{ states('sensor.aussentemperatur_ds18b20_temperature') }} °"
    alias: "Skript new App : Aussentemperatur"
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: 389
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 0
      topicname: SOC
      text: "{{ states('sensor.evcc_battery_soc') }} %"
    alias: "Skript new App : SOC Hausspeicher"
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: 974
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 2
      topicname: Youtube
      text: >-
        {{ states('sensor.smart_home_more_views') }} -
        {{state_attr('sensor.smart_home_more', 'stars')}}
    alias: "Skript new App : YT Views und Likes"
  - alias: Indikator fĂŒr genĂŒgend PV oder gĂŒnstiger Preis
    if:
      - condition: or
        conditions:
          - condition: numeric_state
            entity_id: sensor.evcc_pv_power
            above: 1500
          - condition: numeric_state
            entity_id: sensor.evcc_tariff_grid
            below: 0.28
    then:
      - action: script.awtrix_indicator
        metadata: {}
        data:
          indicator: 1
          colour:
            - 30
            - 255
            - 0
          fade: 0
    else:
      - action: script.awtrix_indicator
        metadata: {}
        data:
          indicator: 1
          colour:
            - 255
            - 0
            - 0
          fade: 0
  - alias: Abfall Anzeige
    choose:
      - conditions:
          - condition: state
            entity_id: sensor.mullinformation
            state: Gelber Sack rausstellen!
        sequence:
          - action: script.awtrix_new_app
            metadata: {}
            data:
              icon: 56166
              rainbow: false
              lifetime: 0
              duration: 10
              textcase: 2
              topicname: Abfall
              text: "{{ states('sensor.mullinformation')}}"
      - conditions:
          - condition: state
            entity_id: sensor.mullinformation
            state: Graue Tonne rausstellen!
        sequence:
          - action: script.awtrix_new_app
            metadata: {}
            data:
              icon: 12155
              rainbow: false
              lifetime: 0
              duration: 10
              textcase: 2
              topicname: Abfall
              text: "{{ states('sensor.mullinformation')}}"
      - conditions:
          - condition: state
            entity_id: sensor.mullinformation
            state: GrĂŒne Tonne rausstellen!
        sequence:
          - action: script.awtrix_new_app
            metadata: {}
            data:
              icon: 56625
              rainbow: false
              lifetime: 0
              duration: 10
              textcase: 2
              topicname: Abfall
              text: "{{ states('sensor.mullinformation')}}"
    default:
      - action: script.awtrix_delete_app
        metadata: {}
        data:
          topicname: Abfall
  - alias: Abfall Anzeige
    choose:
      - conditions:
          - condition: or
            conditions:
              - condition: state
                entity_id: sensor.mullinformation
                state: Gelber Sack rausstellen!
              - condition: state
                entity_id: sensor.mullinformation
                state: Graue Tonne rausstellen!
              - condition: state
                entity_id: sensor.mullinformation
                state: GrĂŒne Tonne rausstellen!
            alias: Wenn eine der Tonnen rausgestellt werden muss
        sequence:
          - action: script.awtrix_new_app
            metadata: {}
            data:
              icon: 56166
              rainbow: false
              lifetime: 0
              duration: 10
              textcase: 2
              topicname: Abfall
              text: "{{ states('sensor.mullinformation')}}"
    default:
      - action: script.awtrix_delete_app
        metadata: {}
        data:
          topicname: Abfall
    enabled: false
  - alias: Reboot, wenn RAM knapp wird
    if:
      - condition: or
        conditions:
          - condition: numeric_state
            entity_id: sensor.awtrix_b3dc90_free_ram
            below: 50000
          - condition: numeric_state
            entity_id: sensor.awtrix_bebc10_free_ram
            below: 50000
    then:
      - action: script.awtrix_reboot
        metadata: {}
        data: {}
mode: single

FĂŒr MĂŒll quittieren, verwende ich ein Mushroom Template Badge.

Updates

27.11.2024 – dynamische Wetter-Icons

Das Thema beschĂ€ftigt mich weiterhin, so dass ich euch noch weitere ErgĂ€nzungen und Updates zum awtrix 3 zur VerfĂŒgung stellen möchte.

Angeregt durch einige Kommentare bzgl. einer in AbhĂ€ngigkeit vom aktuellen Wetter anzuzeigendes Icon , möchte ich euch eine Erweiterung der Automatisierung, bzw. des Skripts vorstellen, so dass ihr ohne eine zusĂ€tzliche Automatisierung oder Skript den Zustand des Wetters als Icon ( z.B. Sonnig, Regnerisch, Bewölkt etc.. ) nutzen könnt. Grundvoraussetzung dafĂŒr ist eine Wetterintegration wie z.B. der Deutsche Wetterdienst (GitHub – FL550/dwd_weather: Deutscher Wetterdienst integration for Home-Assistant)

Partly Cloudly

Rainy

Snowy

Bei dieser Lösung wird der aktuelle Zustand der Wetter EntitÀt ausgelesen und in der Automatisierung verwendet.

Wir benötigen dazu ein Template, welches den aktuellen Zustand des Wetters ausgibt. Die Ausgaben des Wetter Templates sind in jeder Integration identisch und können auf der Home Assistant Dokumentationsseite nachgelesen werden.

In meinem Beispiel heißt die EntitĂ€t “ weather.lahr „.

{{ states('weather.lahr') }}

RĂŒckgabe ist in diesem Beispiel bewölkt, also cloudy.

Es gibt nach der Home Assistant Dokumentation 15 unterschiedliche Wetter ZustĂ€nde. FĂŒr jeden der ZustĂ€nde habe ich uns ein Icon von der Seite LaMetric Icon Gallery herausgesucht und auf der awtrix 3 WeboberflĂ€che heruntergeladen.

ICON-IDWetter Zustand
2283cloudy
13505clear-night
8551fog
52386hail
21174lighting (thunderstorm)
51457lightning-rainy
2286partlycloudy
56677pouring
56548rainy
58081snowy
49301snowy-rainy
11201sunny
15618windy
62874windy-variant
56705exceptional

Ladet diese Icons ĂŒber die awtrix 3 WeboberflĂ€che herunter und speichert die Einstellungen.

Nachdem die Icons alle heruntergeladen sind, geht zum Tab Files und lasst euch dort alle Dateien im Verzeichnis ICONS anzeigen.

Dort gebt ihr den Dateien mit der jeweiligen ID den Namen aus der obigen Tabelle.

Die Beispiel ID 2283.gif, wird somit aus der Datei cloudy.gif umbenannt. Dieser Vorgang wird fĂŒr alle in der Tabelle enthaltenen IDs wiederholt.

Ist der Vorgang abgeschlossen, sollten folgende Bilddaten im Verzeichnis ICONS vorhanden sein.

Im Skript awtrix – new app muss eine Änderung vorgenommen werden.

Unter dem Feld icon, muss Zahl in Text geÀndert und gespeichert werden.

Ändern in Text:

Nach dem Speichern ist das Skript nun in der Lage ein Icon ĂŒber einen Namen ( wie z.B. cloudy oder sunny ) zu laden.

ĂŒberarbeitetes vollstĂ€ndiges Skript awtrix – new app mit dynamischen Wettericons

alias: awtrix - new app
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      evaluate_payload: false
      qos: 0
      retain: false
      topic: awtrix/custom/{{topicname}}
      payload: |-
        {
          "text": "{{text}}",
          "rainbow": {{rainbow|tojson}},
          "duration": "{{duration}}",
          "icon": "{{icon}}",
          "scrollSpeed": 80,
          "textCase": "{{textcase}}",
          "lifetime": "{{lifetime}}"
        }
  - if:
      - condition: template
        value_template: "{{ showimmediately == true or showimmediately == True}}"
    then:
      - action: mqtt.publish
        metadata: {}
        data:
          evaluate_payload: false
          qos: 0
          retain: false
          topic: awtrix/switch
          payload: "{\"name\": \"{{topicname}}\"}"
description: ""
icon: mdi:led-strip
fields:
  topicname:
    selector:
      text: null
    name: topicname
    required: true
    description: Name of the topic - one topic per app
  text:
    selector:
      text: null
    name: text
    required: true
    description: Text to be displayed
  icon:
    selector:
      text: {}
    name: icon
    required: true
    description: Icon ID, needs to be present on the awtrix filesystem - default no icon
  rainbow:
    selector:
      boolean: {}
    name: rainbow
    default: false
    required: true
    description: Rainbow text yes/no
  lifetime:
    selector:
      number:
        min: 0
        max: 86400
        step: 1
    name: lifetime
    default: 0
    description: Discard app after X seconds - default 0 (never expire)
  duration:
    selector:
      number:
        min: 1
        max: 180
        step: 1
    name: duration
    default: 3
    description: How many seconds should the message be displayed - default 3
  textcase:
    selector:
      number:
        min: 0
        max: 2
        step: 1
    name: textCase
    default: 0
    description: >-
      Changes the Uppercase setting. 0=global setting, 1=forces uppercase;
      2=shows as it sent - default 0
  showimmediately:
    selector:
      boolean: {}
    name: showImmediately
    required: false
    description: Jumps the queue and displays the message immediately - default false
mode: parallel
max: 10

In der Automatisierung kann nun das Skript fĂŒr die dynamischen Wettericons wie folgt aufgerufen werden, ich verwende es zusammen mit einem Außentemperatursensor und ĂŒbergebe als Icon den aktuellen Zustand der Wetter EntitĂ€t.

action: script.awtrix_new_app
metadata: {}
data:
  icon: "{{ states('weather.lahr') }}"
  rainbow: false
  lifetime: 0
  duration: 5
  textcase: 0
  topicname: Temperatur
  text: "{{ states('sensor.aussentemperatur_ds18b20_temperature') }} °"
alias: "Skript new App : Aussentemperatur"

vollstÀndige Automatisierung mit Wettericons

alias: awtrix Zustandstrigger
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.evcc_tariff_grid
      - sensor.evcc_pv_power
      - sensor.aussentemperatur_ds18b20_temperature
      - sensor.evcc_battery_soc
      - sensor.smart_home_more_views
      - sensor.mullinformation
      - weather.lahr
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - trigger: state
    entity_id:
      - sensor.smart_home_more
    attribute: stars
    for:
      hours: 0
      minutes: 0
      seconds: 10
conditions: []
actions:
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: 3813
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 0
      topicname: Tibber
      text: "{{ states('sensor.evcc_tariff_grid') | round(3) }}"
    alias: "Skript new App : Tibber"
  - if:
      - condition: numeric_state
        entity_id: sensor.evcc_pv_power
        above: 0
    then:
      - action: script.awtrix_new_app
        metadata: {}
        data:
          icon: 37323
          rainbow: false
          lifetime: 0
          duration: 5
          textcase: 0
          topicname: PV
          text: "{{ states('sensor.evcc_pv_power') }}"
        alias: "Skript new App : Solar Power"
    else:
      - action: script.awtrix_delete_app
        metadata: {}
        data:
          topicname: PV
    alias: "PV Ertrag vorhanden "
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: "{{ states('weather.lahr') }}"
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 0
      topicname: Temperatur
      text: "{{ states('sensor.aussentemperatur_ds18b20_temperature') }} °"
    alias: "Skript new App : Aussentemperatur"
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: 389
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 0
      topicname: SOC
      text: "{{ states('sensor.evcc_battery_soc') }} %"
    alias: "Skript new App : SOC Hausspeicher"
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: 974
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 2
      topicname: Youtube
      text: >-
        {{ states('sensor.smart_home_more_views') }} -
        {{state_attr('sensor.smart_home_more', 'stars')}}
    alias: "Skript new App : YT Views und Likes"
  - alias: Indikator fĂŒr genĂŒgend PV oder gĂŒnstiger Preis
    if:
      - condition: or
        conditions:
          - condition: numeric_state
            entity_id: sensor.evcc_pv_power
            above: 1500
          - condition: numeric_state
            entity_id: sensor.evcc_tariff_grid
            below: 0.28
    then:
      - action: script.awtrix_indicator
        metadata: {}
        data:
          indicator: 1
          colour:
            - 30
            - 255
            - 0
          fade: 0
    else:
      - action: script.awtrix_indicator
        metadata: {}
        data:
          indicator: 1
          colour:
            - 255
            - 0
            - 0
          fade: 0
  - alias: Abfall Anzeige
    choose:
      - conditions:
          - condition: state
            entity_id: sensor.mullinformation
            state: Gelber Sack rausstellen!
        sequence:
          - action: script.awtrix_new_app
            metadata: {}
            data:
              icon: 56166
              rainbow: false
              lifetime: 0
              duration: 10
              textcase: 2
              topicname: Abfall
              text: "{{ states('sensor.mullinformation')}}"
      - conditions:
          - condition: state
            entity_id: sensor.mullinformation
            state: Graue Tonne rausstellen!
        sequence:
          - action: script.awtrix_new_app
            metadata: {}
            data:
              icon: 12155
              rainbow: false
              lifetime: 0
              duration: 10
              textcase: 2
              topicname: Abfall
              text: "{{ states('sensor.mullinformation')}}"
      - conditions:
          - condition: state
            entity_id: sensor.mullinformation
            state: GrĂŒne Tonne rausstellen!
        sequence:
          - action: script.awtrix_new_app
            metadata: {}
            data:
              icon: 56625
              rainbow: false
              lifetime: 0
              duration: 10
              textcase: 2
              topicname: Abfall
              text: "{{ states('sensor.mullinformation')}}"
    default:
      - action: script.awtrix_delete_app
        metadata: {}
        data:
          topicname: Abfall
  - alias: Reboot, wenn RAM knapp wird
    if:
      - condition: or
        conditions:
          - condition: numeric_state
            entity_id: sensor.awtrix_b3dc90_free_ram
            below: 50000
          - condition: numeric_state
            entity_id: sensor.awtrix_bebc10_free_ram
            below: 50000
    then:
      - action: script.awtrix_reboot
        metadata: {}
        data: {}
mode: single

03.12.2024 Änderbare Textfarbe

Ich habe das Script noch erweitert, so dass auch eine RGB Farbe ĂŒbergeben werden kann. Defaultwert ist „weiß“ , es muss auch keine Farbe angegeben werden.

Der neue Parameter nennt sich textcolor. Im Beispiel ist die Schriftfarbe auf „rot“ gesetzt worden.

alias: awtrix - new app
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      evaluate_payload: false
      qos: 0
      retain: false
      topic: awtrix/custom/{{topicname}}
      payload: |-
        {
          "text": "{{text}}",
          "rainbow": {{rainbow|tojson}},
          "duration": "{{duration}}",
          "icon": "{{icon}}",
          "scrollSpeed": 80,
          "textCase": "{{textcase}}",
          "lifetime": "{{lifetime}}",
          "color": {{textcolor or [255, 255, 255] | tojson}}
        }
  - if:
      - condition: template
        value_template: "{{ showimmediately == true or showimmediately == TRUE }}"
    then:
      - action: mqtt.publish
        metadata: {}
        data:
          evaluate_payload: false
          qos: 0
          retain: false
          topic: awtrix/switch
          payload: "{\"name\": \"{{topicname}}\"}"
description: ""
icon: mdi:led-strip
fields:
  topicname:
    selector:
      text: null
    name: topicname
    required: true
    description: Name of the topic - one topic per app
  text:
    selector:
      text: null
    name: text
    required: true
    description: Text to be displayed
  icon:
    selector:
      text: {}
    name: icon
    required: true
    description: Icon ID, needs to be present on the awtrix filesystem - default no icon
  rainbow:
    selector:
      boolean: {}
    name: rainbow
    default: false
    required: true
    description: Rainbow text yes/no
  lifetime:
    selector:
      number:
        min: 0
        max: 86400
        step: 1
    name: lifetime
    default: 0
    description: Discard app after X seconds - default 0 (never expire)
  duration:
    selector:
      number:
        min: 1
        max: 180
        step: 1
    name: duration
    default: 3
    description: How many seconds should the message be displayed - default 3
  textcase:
    selector:
      number:
        min: 0
        max: 2
        step: 1
    name: textCase
    default: 0
    description: >-
      Changes the Uppercase setting. 0=global setting, 1=forces uppercase;
      2=shows as it sent - default 0
  showimmediately:
    selector:
      boolean: {}
    name: showImmediately
    required: false
    description: Jumps the queue and displays the message immediately - default false
  textcolor:
    selector:
      color_rgb: {}
    name: textcolor
    default:
      - 255
      - 255
      - 255
    required: false
    description: set text color
mode: parallel
max: 10

05.12.2024 – Fortschrittsanzeige

Desto mehr man mit dem Display arbeitet, desto mehr Dinge fallen einem ein, was man damit alles realisieren kann. Ich habe das Script ergĂ€nzt um eine Fortschrittsanzeige, so dass ihr z.B. den Fortschritt eures Waschvorgangs oder eurer GeschirrspĂŒlmaschine anzeigen lassen könnt. Dann hat man im Blick, wann man die WĂ€sche aufhĂ€ngen darf, oder das Geschirr ausrĂ€umen:-)

In diesem Beispiel habe ich einen GeschirrspĂŒler dargestellt, der gerade ca. 80% seines Vorgangs beendet hat.

Ein neues Feld wurde dazu im Script ergĂ€nzt. Im Feld „progress“ ĂŒbergebt ihr eure EntitĂ€t , die einen Fortschritt in Prozent enthĂ€lt ( 0-100% ).

Als Icon habe ich dafĂŒr die Nr. 55848 verwendet.

Das Feld muss nicht zwingend ĂŒbergeben werden, so dass eure Automatisierungen davon nicht betroffen sind. Wird kein Wert ĂŒbergeben, wird der Default Wert auf -1 gesetzt und kein Fortschritt wird angezeigt.

Das aktualisierte Script awtrix – new app

alias: awtrix - new app
sequence:
  - action: mqtt.publish
    metadata: {}
    data:
      evaluate_payload: false
      qos: 0
      retain: false
      topic: awtrix/custom/{{topicname}}
      payload: |-
        {
          "text": "{{text}}",
          "rainbow": {{rainbow|tojson}},
          "duration": "{{duration}}",
          "icon": "{{icon}}",
          "scrollSpeed": 80,
          "textCase": "{{textcase}}",
          "lifetime": "{{lifetime}}",
          "color": {{textcolor or [255, 255, 255] | tojson}},
          "progress": {{ progress or -1 }}
        }
  - if:
      - condition: template
        value_template: "{{ showimmediately == true or showimmediately == True}}"
    then:
      - action: mqtt.publish
        metadata: {}
        data:
          evaluate_payload: false
          qos: 0
          retain: false
          topic: awtrix/switch
          payload: "{\"name\": \"{{topicname}}\"}"
description: ""
icon: mdi:led-strip
fields:
  topicname:
    selector:
      text: null
    name: topicname
    required: true
    description: Name of the topic - one topic per app
  text:
    selector:
      text: null
    name: text
    required: true
    description: Text to be displayed
  icon:
    selector:
      text: {}
    name: icon
    required: true
    description: Icon ID, needs to be present on the awtrix filesystem - default no icon
  rainbow:
    selector:
      boolean: {}
    name: rainbow
    default: false
    required: true
    description: Rainbow text yes/no
  lifetime:
    selector:
      number:
        min: 0
        max: 86400
        step: 1
    name: lifetime
    default: 0
    description: Discard app after X seconds - default 0 (never expire)
  duration:
    selector:
      number:
        min: 1
        max: 180
        step: 1
    name: duration
    default: 3
    description: How many seconds should the message be displayed - default 3
  textcase:
    selector:
      number:
        min: 0
        max: 2
        step: 1
    name: textCase
    default: 0
    description: >-
      Changes the Uppercase setting. 0=global setting, 1=forces uppercase;
      2=shows as it sent - default 0
  showimmediately:
    selector:
      boolean: {}
    name: showImmediately
    required: false
    description: Jumps the queue and displays the message immediately - default false
  textcolor:
    selector:
      color_rgb: {}
    name: textcolor
    default:
      - 255
      - 255
      - 255
    required: false
    description: set text color
  progress:
    selector:
      number:
        min: 0
        max: 99
        step: 1
    name: progress
    description: "shows a progress bar (value range from 0-100) "
    default: 0
mode: parallel
max: 10

Die Automatisierung dazu habe ich so gestaltet, dass mir die Meldung und der Fortschritt nur dann angezeigt werden, wenn der Fortschritt > 0 % ist. Ansonsten wird die Meldung wieder entfernt. Getriggert wird auf Änderung des Fortschritts.

Der Teilabschnitt fĂŒr die Wenn/Dann Bedingung unter den Aktionen sieht wie folgt aus:

alias: GeschirrspĂŒler lĂ€uft
if:
  - condition: numeric_state
    entity_id: sensor.geschirrspuler_program_progress
    above: 0
then:
  - action: script.awtrix_new_app
    metadata: {}
    data:
      icon: 55848
      rainbow: false
      lifetime: 0
      duration: 5
      textcase: 0
      topicname: Dishwasher
      text: GeschirrspĂŒler lĂ€uft!
      progress: "{{ states('sensor.geschirrspuler_program_progress') | int }}"
    alias: "Skript new App : Fortschritt GeschirrspĂŒler"
    enabled: true
else:
  - action: script.awtrix_delete_app
    metadata: {}
    data:
      topicname: Dishwasher

📘 Home Assistant Helfer Kompendium 2/? đŸ“Č [ Statistik]

Optimierung von Home Assistant Automatisierungen mit dem Statistik-Helfer

In meinem heutigen Artikel möchte ich dir zeigen, wie du den Statistik-Helfer in Home Assistant effektiv nutzen kannst, um tiefere Einblicke in deine Smart Home-Daten zu erhalten. Durch die richtigen Berechnungen kannst du deine Automatisierungen noch prÀziser und smarter gestalten. Hier sind die wichtigsten Charakteristika, die du mit dem Statistik-Helfer auswerten kannst:

1. Absoluter Abstand

Der absolute Abstand zeigt dir den Unterschied zwischen zwei Messwerten, ohne die Richtung zu berĂŒcksichtigen. Diese Berechnung ist besonders nĂŒtzlich, wenn du Schwankungen in einem Wert ĂŒberwachen möchtest, ohne die genaue Richtung zu verfolgen. Ich nutze diese Methode oft, um schnelle VerĂ€nderungen zu erkennen.

2. Abstand von 95% und 99% der Werte

Mit dieser Berechnung kann ich herausfinden, wie sich ein Wert im Vergleich zu den meisten anderen Werten verhĂ€lt. Der Abstand von 95% und 99% der Werte hilft mir dabei, Ausreißer zu identifizieren und meine Automatisierungen so anzupassen, dass sie nur unter den typischen Bedingungen reagieren.

3. Ältester Zeitpunkt

Der Ă€lteste Zeitpunkt zeigt mir, wann der Ă€lteste Messwert aufgezeichnet wurde. Das ist besonders nĂŒtzlich, wenn ich nach Ă€lteren Daten suche oder herausfinden möchte, wie lange es her ist, dass ein Wert zuletzt aktualisiert wurde. Diese Information kann wichtige Auswirkungen auf Automatisierungen haben, die sich auf historische Daten stĂŒtzen.

4. Änderung

Die Änderung zeigt mir, wie stark sich ein Wert verĂ€ndert hat, sei es positiv oder negativ. Ich verwende diese Berechnung, um zu verstehen, wie schnell oder langsam sich Werte entwickeln, was fĂŒr zeitkritische Automatisierungen sehr hilfreich ist.

5. Anzahl der Werte

Die Anzahl der Werte gibt mir eine einfache Übersicht darĂŒber, wie viele Messwerte ĂŒber einen bestimmten Zeitraum hinweg erfasst wurden. Diese Zahl hilft mir dabei, Trends zu erkennen und zu ĂŒberprĂŒfen, ob die Sensoren korrekt arbeiten.

6. Arithmetisches Mittel

Das arithmetische Mittel (der Durchschnitt) ist eine der grundlegendsten Berechnungen und gibt mir eine Vorstellung vom allgemeinen Trend eines Messwerts. Ich nutze das Mittel, um Automatisierungen zu erstellen, die auf den durchschnittlichen Bedingungen basieren.

7. Durchschnittliche Änderung pro Probe oder Sekunde

Diese Berechnung zeigt mir, wie schnell sich ein Wert im Zeitverlauf verĂ€ndert. Ich finde diese Kennzahl besonders nĂŒtzlich bei der Überwachung von Sensoren, die schnelle Reaktionen erfordern, wie zum Beispiel Bewegungsmelder oder TemperaturfĂŒhler.

8. Gesamt

Die Gesamtberechnung summiert alle Werte innerhalb eines bestimmten Zeitrahmens. Ich verwende diese Methode oft, um den Gesamtverbrauch von Energie oder die Gesamtzahl von Ereignissen zu ermitteln. Diese Zahl ist besonders nĂŒtzlich, wenn ich die gesamte Leistung oder AktivitĂ€t ĂŒber einen lĂ€ngeren Zeitraum beobachten möchte.

9. Linearisierter Durchschnitt

Der linearisierte Durchschnitt hilft mir, Daten zu glĂ€tten und langfristige Trends zu erkennen. Diese Methode ist besonders hilfreich, wenn ich mit periodischen Schwankungen zu tun habe und die Daten auf eine lineare Skala ĂŒbertragen möchte, um langfristige Muster besser sichtbar zu machen.


Durch die Nutzung dieser Berechnungen und der Einblicke, die der Statistik-Helfer bietet, kann ich meine Automatisierungen in Home Assistant noch gezielter und effizienter gestalten. Egal, ob du den Abstand zwischen Messwerten ĂŒberwachen, die Änderungsgeschwindigkeit analysieren oder die Gesamttrends erkennen möchtest – dieser Helfer ist eine wertvolle UnterstĂŒtzung fĂŒr jede Home Assistant-Instanz.

In dieser Playlist findest du alle bisherigen und kommenden Videos zum Thema Home Assistant Helfer:

YouTube player

📘 Home Assistant Helfer Kompendium 1/? đŸ“Č Mehr Kontrolle, weniger Aufwand!

Du willst das Beste aus deinem Home Assistant herausholen und suchst nach Möglichkeiten, deine Automationen smarter und individueller zu gestalten? In diesem Beitrag stelle ich dir drei Home Assistant Helfer vor, die dir genau das ermöglichen: den Ableitungssensor, das Dropdown-MenĂŒ und den generischen Hygrostat. Mit diesen Tools kannst du prĂ€zise Automatisierungen erstellen, die deine WĂŒnsche und Anforderungen perfekt erfĂŒllen.

Inhalt

  1. Ableitungssensor – Dynamische Anpassungen leicht gemacht 🚀Der Ableitungssensor ist ein geniales Tool, wenn du auf dynamische VerĂ€nderungen reagieren möchtest. Er eignet sich zum Beispiel, um den Anstieg oder Abfall eines Werts (wie Temperatur oder Luftfeuchtigkeit) zu erfassen und daraus passende Aktionen abzuleiten. So lĂ€sst sich etwa erkennen, ob eine Temperatur schnell steigt oder sinkt, und dann eine entsprechende Automation aktivieren – perfekt fĂŒr Klimasteuerungen oder BelĂŒftungsmanagement!
  2. Dropdown – Auswahlmöglichkeiten im Smart Home schaffen 📋Mit Dropdown-Listen kannst du verschiedene Auswahloptionen fĂŒr dein Smart Home anlegen. Ob es sich um RĂ€ume, GerĂ€temodi oder Szenen handelt – Dropdown-MenĂŒs bieten dir eine bequeme und ĂŒbersichtliche Möglichkeit, Optionen zu verwalten und per Klick auszuwĂ€hlen. Damit sparst du dir manuelle Eingaben und kannst ĂŒber vordefinierte Auswahlfelder spezifische Aktionen und Automationen schnell und unkompliziert steuern.
  3. Generischer Hygrostat – Die perfekte Feuchtigkeitskontrolle đŸŒ«ïžDer generische Hygrostat ist dein Helfer, wenn es um die Steuerung der Luftfeuchtigkeit in deinem Zuhause geht. Gerade fĂŒr RĂ€ume wie das Badezimmer oder den Keller ist eine konstante Feuchtigkeitskontrolle entscheidend, um Schimmelbildung zu vermeiden und das Raumklima zu verbessern. Mit diesem Helfer kannst du gezielt LĂŒftungen oder Entfeuchter steuern und die Feuchtigkeit so optimal anpassen.

Fazit

Diese drei Home Assistant Helfer sind echte Multitalente und erweitern deine Möglichkeiten enorm. Von dynamischen Steuerungen mit dem Ableitungssensor ĂŒber bequeme Auswahlmöglichkeiten mit Dropdown-Listen bis hin zur genauen Feuchtigkeitsregulierung mit dem generischen Hygrostat – hier findest du die passenden Werkzeuge fĂŒr jede Automationsidee.

Falls du noch mehr ĂŒber diese und andere Home Assistant Helfer erfahren möchtest, schau gerne auch in das zugehörige Video rein! Ich zeige dir Schritt fĂŒr Schritt, wie du diese Helfer einrichten und nutzen kannst, um dein Smart Home noch intelligenter zu machen.


Willst du mehr solcher Smart-Home-Tipps und Ideen? Dann bleib dran – auf meinem Blog und YouTube-Kanal gibt’s regelmĂ€ĂŸig neue Inhalte, um dein Zuhause noch smarter zu gestalten!

In dieser Playlist findest du alle bisherigen und kommenden Videos zum Thema Home Assistant Helfer:

🔍 Überwache Dein Smart Home wie ein Profi! 📊 Home Assistant Systemmonitoring einfach erklĂ€rt 🚀

In diesem Video zeige ich dir, wie du dein Smart Home mit Home Assistant perfekt ĂŒberwachen kannst, damit alles reibungslos lĂ€uft! Durch das Systemmonitoring bleibst du immer ĂŒber den Zustand deines Systems informiert, erkennst Probleme rechtzeitig und hĂ€ltst die Leistung deines Smart Homes auf einem hohen Niveau. Gerade wenn du regelmĂ€ĂŸig GerĂ€te steuerst oder Automationen laufen lĂ€sst, ist ein zuverlĂ€ssiges Monitoring unverzichtbar. Es sorgt nicht nur fĂŒr Sicherheit, sondern gibt dir auch die Kontrolle, wie dein System „tickt“. Ich zeige dir, wie du das Monitoring-Tool in Home Assistant installieren und einrichten kannst – Schritt fĂŒr Schritt und einfach erklĂ€rt. Anschließend gehen wir darauf ein, wie die einzelnen Komponenten und Sensoren funktionieren, damit du genau weißt, welche Daten dir angezeigt werden und was diese bedeuten. Sensoren spielen hier eine zentrale Rolle, da sie dir wichtige Infos liefern: von der CPU-Auslastung ĂŒber die Temperatur bis hin zum freien Speicherplatz. So hast du alles auf einen Blick und kannst Störungen frĂŒhzeitig erkennen. Zum Schluss zeige ich dir, wie du diese Daten in eine kleine Automatisierung einbindest, sodass dein System im Notfall automatisch reagiert, etwa bei einem kritischen Speicherstand oder zu hoher Auslastung. Dein Home Assistant wird damit nicht nur smarter, sondern auch robuster. Perfekt fĂŒr Einsteiger und erfahrene Home-Assistant-Nutzer, die ihr System auf das nĂ€chste Level heben möchten. Abonniere, um keine Tipps rund um dein Smart Home zu verpassen, und lass uns loslegen! 🎉

Die Automatisierung aus dem Video:

alias: SystemzustĂ€nde ĂŒberwachen
description: >-
  Sendet eine Benachrichtigung, wenn wichtige SystemzustÀnde kritische Werte
  ĂŒberschreiten.
triggers:
  - entity_id: sensor.localhost_cpu_auslastung_2
    above: 80
    trigger: numeric_state
  - entity_id: sensor.localhost_speicherauslastung
    above: 75
    trigger: numeric_state
  - entity_id: sensor.localhost_data_datentragernutzung
    above: 90
    trigger: numeric_state
actions:
  - action: script.notify_all
    metadata: {}
    data:
      alexa: false
      message: "    Warnung: Ein kritischer Systemzustand wurde erreicht! {% if     trigger.entity_id == 'sensor.localhost_cpu_auslastung_2' %} CPU-Auslastung:     {{ states('sensor.localhost_cpu_auslastung_2') }}% {% elif trigger.entity_id     == 'sensor.localhost_speicherauslastung' %} RAM-Nutzung: {{     states('sensor.localhost_speicherauslastung') }}% {% elif trigger.entity_id     == 'sensor.localhost_data_datentragernutzung' %} Festplattennutzung: {{     states('sensor.localhost_data_datentragernutzung') }}% {% endif %}"
mode: single

Hinweis: In dieser Automatisierung wird ein Skript zur Ausgabe der Nachrichten verwendet. Weitere Informationen zum Skript findet ihr in hier. Bitte beachten, im Beispiel auf der verlinkten Seite nennt sich das Skript nicht „skript.notify_all“ sondern „script.notify_all_video2“. D.h. wenn ihr den Code kopieren wollt, mĂŒsst ihr den Namen des Skripts in der Automatisierung anpassen. Weitere Anpassungen von Device IDs und Notification EntitĂ€ten sind natĂŒrlich ebenfalls nach euren EntitĂ€ten anzupassen.

ErgĂ€nzend zum Blogbeitrag ĂŒber Skripte, möchte ich euch hier nochmal das passende Skript fĂŒr die obige Automatisierung veröffentlichen.

alias: notify_all
sequence:
  - action: notify.mobile_app_iphone_tobias
    metadata: {}
    data:
      message: "{{ message }}"
      title: "{{ title }}"
  - if:
      - condition: template
        value_template: "{{ alexa }}"
    then:
      - action: notify.alexa_media_keller
        metadata: {}
        data:
          message: "{{ message }}"
          title: "{{ title }}"
fields:
  message:
    selector:
      text: null
    name: message
  title:
    selector:
      text: null
    name: title
  alexa:
    selector:
      boolean: {}
    name: alexa
    default: false
description: ""

Brauchst du wirklich Skripte in Home Assistant? đŸ€” So holst du das Maximum raus! 🚀💡

In diesem Video dreht sich alles um Skripte in Home Assistant – von den Grundlagen bis hin zu fortgeschrittenen Funktionen! 💡 Skripte helfen dir, deine Automatisierungen noch flexibler und leistungsfĂ€higer zu gestalten. Ich zeige dir Schritt fĂŒr Schritt, wie du ein Skript fĂŒr Benachrichtigungen đŸ“Č erstellst, es in deine Automatisierungen integrierst ⚙ und mit erweiterten Features noch effizienter machst. Egal, ob du Einsteiger bist oder bereits tiefer in Home Assistant steckst – hier findest du wertvolle Tipps fĂŒr das nĂ€chste Level deines Smart Homes! 🚀

Ich möchte euch heute einen allgemeinen Amazon-Link teilen, ĂŒber den ihr eine Vielzahl von Produkten entdecken könnt. Egal, ob ihr nach Smart Home-GerĂ€ten, Gadgets oder anderen nĂŒtzlichen Artikeln sucht, Amazon hat fĂŒr jeden etwas zu bieten.

Wenn ihr ĂŒber diesen Link einkauft, unterstĂŒtzt ihr meinen Kanal, ohne dass es fĂŒr euch zusĂ€tzliche Kosten verursacht. Das hilft mir, weiterhin spannende Inhalte fĂŒr euch zu erstellen!

Hier ist der Link zu Amazon: https://amzn.to/3KsGngK

Vielen Dank fĂŒr eure UnterstĂŒtzung!

Skript mit Übergabeparametern

alias: Notify_ALL_Video2
sequence:
  - action: notify.mobile_app_iphone_tobias
    metadata: {}
    data:
      message: "{{ message }}"
      title: "{{ title }}"
  - if:
      - condition: template
        value_template: "{{ alexa }}"
    then:
      - action: notify.alexa_media_keller
        metadata: {}
        data:
          message: "{{ message }}"
          title: "{{ title }}"
fields:
  message:
    selector:
      text: null
    name: message
  title:
    selector:
      text: null
    name: title
  alexa:
    selector:
      boolean: {}
    name: alexa
    default: false
description: ""

Automatisierung in dem das Skript mit Übergabeparametern verwendet wird

alias: Notify All Video 2
description: ""
triggers: []
conditions: []
actions:
  - action: script.notify_all_video2
    metadata: {}
    data:
      alexa: false
      message: Es sind {{ states('sensor.temperatur_aussen_temperature') }} Grad
      title: " Information"
mode: single

Skript mit RĂŒckgabewerten

alias: RĂŒckgabewerte
sequence:
  - variables:
      ergebnis:
        value: "{{ states(a) | int + states(b) | float }}"
  - stop: Beendet
    response_variable: ergebnis
fields:
  b:
    selector:
      entity: {}
    name: b
  a:
    selector:
      entity: {}
    name: a
description: ""

Automatisierung zur Verwendung des Skripts mit RĂŒckgabewerten

alias: RĂŒckgabewerte
description: ""
triggers: []
conditions: []
actions:
  - action: script.ruckgabewerte
    metadata: {}
    data:
      b: sensor.temperatur_aussen_temperature
      a: sensor.temperatur_aussen_temperature
    response_variable: ergebnis
  - action: notify.mobile_app_iphone_tobias
    metadata: {}
    data:
      message: "{{ ergebnis.value}}"
  - action: notify.alexa_media_keller
    metadata: {}
    data:
      message: "{{ ergebnis.value}}"
mode: single

Home Assistant meets Community | Deine Automatisierungen im Spotlight! 💡🏡

In meinem neuesten Video „Home Assistant meets Community“ zeigen drei Mitglieder unserer tollen Smart Home-Community ihre beeindruckenden und auch praktischen Automatisierungen.

Die Vielfalt der Möglichkeiten, die Home Assistant bietet, direkt aus der Community.


Mach mit und prÀsentiere deine eigenen Automatisierungen!

Aber das ist erst der Anfang! In diesem neuen Format geht es darum, dass du als Teil der Community deine eigenen Automatisierungen vorstellst.

Erstelle dein eigenes Video!

Du hast die Chance, dein eigenes Video zu erstellen, in dem du deine Home Assistant-Projekte /oder Automatisierungen prĂ€sentierst. Diese Videos werden in zukĂŒnftigen Episoden von „Home Assistant meets Community“ gezeigt!


Wie kannst du mitmachen?

Auf meiner Blog-Seite findest du ein Formular, das dir Schritt fĂŒr Schritt erklĂ€rt, wie du mitmachen kannst. Es ist ganz einfach! Teile deine kreativen Lösungen und Automatisierungen mit der Community und werde Teil dieses neuen Formats!


Jetzt bist du dran!

Lass uns deine Home Assistant-Automatisierungen sehen und inspirieren wir uns gegenseitig mit neuen Ideen!

Schau dir das Video an und werde Teil unserer wachsenden Community!

Wie schon im Video erwĂ€hnt, möchte ich euch die Automatisierungen aus den Videos zur VerfĂŒgung stellen. Die BeitrĂ€ge werden noch auf dem Discord Server ergĂ€nzt werden.

Vielen Dank an dieser Stelle fĂŒr die tollen BeitrĂ€ge von Jonathan, Maikel und RenĂ©.

Community Beitrag 1 – Jonathan

alias: Licht aus um Mitternacht
description: ""
trigger:
  - platform: time
    at: "00:00:00"
condition: []
action:
  - target:
      label_id: power_off_at_midnight
    data: {}
    action: homeassistant.turn_off
mode: single

Community Beitrag 2 – Jonathan

alias: Erkenne unsauberen Neustart
description: ""
trigger:
  - platform: homeassistant
    event: start
    id: start
  - platform: homeassistant
    event: shutdown
    id: stop
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - stop
        sequence:
          - action: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.clean_shutdown
      - conditions:
          - condition: trigger
            id:
              - start
        sequence:
          - if:
              - condition: state
                entity_id: input_boolean.clean_shutdown
                state: "off"
            then:
              - action: notify.mobile_app_oneplus8
                metadata: {}
                data:
                  message: Unsauberer Neustart entdeckt
          - action: input_boolean.turn_off
            target:
              entity_id:
                - input_boolean.clean_shutdown
            data: {}
mode: single

Community Beitrag 3 – Jonathan

alias: Bewegungsmelder Keller
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.bewegungsmelder_keller_occupancy
    to: "on"
condition: []
action:
  - repeat:
      count: 10
      sequence:
        - metadata: {}
          data: {}
          target:
            entity_id: switch.jonathans_3_echo_dot_do_not_disturb_switch
          action: switch.toggle
        - delay:
            hours: 0
            minutes: 0
            seconds: 1
            milliseconds: 0
mode: single

Community Beitrag 4 – Maikel

FĂŒr die Automatisierung von Maikel werden drei Helfer benötigt.

  1. Helfer Taster Sommerzeit
  2. Helfer Taster Winterzeit
  3. Helfer Schalter : Sommerzeit/Winterzeit

Ebenfalls mĂŒssen zur Verwendung in der configuration.yaml zwei history_stats Sensoren angelegt werden, die beim jeweiligen Zeitpunkt der BetĂ€tigung dazu dienen , dass eine Zeit hochgezĂ€hlt wird.

History Statistik Sensor 1:

platform: history_stats
name: WG - Historysensor - Sommerzeit
entity_id: input_boolean.wg_helfer_schalter_sommerzeit_winterzeit
unique_id: 'wg_historysensor_sommerzeit'
state: "on"
type: time
start:  >
        {% set status= states('input_button.wg_helfer_taste_sommerzeit') %}
        {% if status in ['unknown', 'unavailable'] %}
        {{ now() }}
        {% else %}
        {{ status | as_datetime }}
        {% endif %}
end: "{{ now() }}"

History Statisik Sensor 2:

platform: history_stats
name: WG - Historysensor - Winterzeit
entity_id: input_boolean.wg_helfer_schalter_sommerzeit_winterzeit
unique_id: 'wg_historysensor_winterzeit'
state: "off"
type: time
start:  >
        {% set status= states('input_button.wg_helfer_taste_winterzeit') %}
        {% if status in ['unknown', 'unavailable'] %}
        {{ now() }}
        {% else %}
        {{ status | as_datetime }}
        {% endif %}
end: "{{ now() }}"

Automatisierung:

alias: "[WG] Sommer- Wintermodus"
description: ""
trigger:
  - platform: time_pattern
    hours: /1
    id: Jede Stunde
  - platform: numeric_state
    entity_id:
      - sensor.bk_thermometer_temperature
    below: 10
    id: 10 °C -
  - platform: numeric_state
    entity_id:
      - sensor.bk_thermometer_temperature
    above: 10
    id: 10 °C +
  - platform: numeric_state
    entity_id:
      - sensor.wg_historysensor_winterzeit
    above: 168
    id: History Sensor Wintermodus
  - platform: numeric_state
    entity_id:
      - sensor.wg_historysensor_sommerzeit
    above: 168
    id: History Sensor Sommerzeit
condition: []
action:
  - alias: Sommermodus
    if:
      - condition: trigger
        id:
          - History Sensor Sommerzeit
          - Jede Stunde
          - 10 °C +
    then:
      - alias: Sommermodus an
        if:
          - condition: numeric_state
            entity_id: sensor.bk_thermometer_temperature
            above: 10
          - condition: numeric_state
            entity_id: sensor.wg_historysensor_winterzeit
            above: 168
          - condition: state
            entity_id: input_boolean.wg_helfer_schalter_sommerzeit_winterzeit
            state: "off"
        then:
          - metadata: {}
            data: {}
            target:
              entity_id: input_boolean.wg_helfer_schalter_sommerzeit_winterzeit
            action: input_boolean.turn_on
          - metadata: {}
            data: {}
            target:
              entity_id:
                - input_button.wg_helfer_taste_sommerzeit
                - input_button.wg_helfer_taste_winterzeit
            action: input_button.press
          - metadata: {}
            data: {}
            action: script.wg_automationen_an
          - metadata: {}
            data: {}
            action: script.zs_wg_kalender_sonstiges_sommermodus
          - data:
              summary: Pfanzenzubehör wieder auf den Balkon rÀumen
              start_date_time: |
                {{ (now() + timedelta(days = 1)).strftime("%Y-%m-%d")}} 15:10:00
              end_date_time: |
                {{ (now() + timedelta(days = 1)).strftime("%Y-%m-%d")}} 15:11:00
            target:
              entity_id: calendar.garten
            action: calendar.create_event
      - alias: Sommermodus reset
        if:
          - condition: numeric_state
            entity_id: sensor.bk_thermometer_temperature
            above: 10
          - condition: state
            entity_id: input_boolean.wg_helfer_schalter_sommerzeit_winterzeit
            state: "on"
        then:
          - metadata: {}
            data: {}
            target:
              entity_id: input_button.wg_helfer_taste_sommerzeit
            action: input_button.press
  - alias: Wintermodus
    if:
      - condition: trigger
        id:
          - History Sensor Wintermodus
          - 10 °C -
          - Jede Stunde
    then:
      - alias: Wintermodus an
        if:
          - condition: numeric_state
            entity_id: sensor.bk_thermometer_temperature
            below: 10
          - condition: numeric_state
            entity_id: sensor.wg_historysensor_sommerzeit
            above: 168
          - condition: state
            entity_id: input_boolean.wg_helfer_schalter_sommerzeit_winterzeit
            state: "on"
        then:
          - target:
              entity_id:
                - input_boolean.wg_helfer_schalter_sommerzeit_winterzeit
            data: {}
            action: input_boolean.turn_off
          - metadata: {}
            data: {}
            target:
              entity_id:
                - input_button.wg_helfer_taste_winterzeit
                - input_button.wg_helfer_taste_sommerzeit
            action: input_button.press
          - metadata: {}
            data: {}
            action: script.wg_automationen_an
          - data: {}
            action: script.zs_wg_kalender_sonstiges_wintermodus
          - data:
              summary: Pfanzenzubehör wieder vom Balkon rÀumen
              start_date_time: |
                {{ (now() + timedelta(days = 1)).strftime("%Y-%m-%d")}} 15:10:00
              end_date_time: |
                {{ (now() + timedelta(days = 1)).strftime("%Y-%m-%d")}} 15:11:00
            target:
              entity_id: calendar.garten
            action: calendar.create_event
      - alias: Wintermodus reset
        if:
          - condition: numeric_state
            entity_id: sensor.bk_thermometer_temperature
            below: 10
          - condition: state
            entity_id: input_boolean.wg_helfer_schalter_sommerzeit_winterzeit
            state: "off"
        then:
          - metadata: {}
            data: {}
            target:
              entity_id:
                - input_button.wg_helfer_taste_winterzeit
            action: input_button.press
mode: parallel
max: 30