Müllkalender

Rat und Tat rings um Home Assistant Automationen.
Antworten
PX80
Beiträge: 43
Registriert: Do 21. Okt 2021, 13:09

Müllkalender

Beitrag von PX80 »

Hallo Forum,

ich frage mich, ob der Umweg über div. HACS Implementierungen wie hacs_waste_collection_schedule sinnvoll ist, wenn ich gleich den Abfallkalender als ical in den Calender importiere und mir darus direkt die Infos.

VG
Benutzeravatar
azrael783
Beiträge: 25
Registriert: Mi 27. Okt 2021, 08:57
Kontaktdaten:

Re: Müllkalender

Beitrag von azrael783 »

Hi,

ich habe noch vor der Nutzung von HA den Müllkalender meinem Google Kalender hinzugefügt und so ist er dann später auch in HA gelandet. Eine HACS Implentierung brauchts dafür denke ich nicht. Bei Interesse kann ich gerne meine Lösung posten ;)
Wer Rechtschreibfehler findet, darf sie gerne behalten :D
PX80
Beiträge: 43
Registriert: Do 21. Okt 2021, 13:09

Re: Müllkalender

Beitrag von PX80 »

Hi,

da die HACS Implementierung eh einen Kalender Eintrag vornimmt, überlege ich den Google Kalender gleich zu implementieren.

Gerne kannst du deine Umsetzung teilen.

Viele Grüße
Benutzeravatar
azrael783
Beiträge: 25
Registriert: Mi 27. Okt 2021, 08:57
Kontaktdaten:

Re: Müllkalender

Beitrag von azrael783 »

Also, kleine Vorwarnung: das wird ein etwas längerer Beitrag, bzw etwas mehr Code :mrgreen:
Deinen Google Kalender fügst du am einfachsten nach der Anleitung hier ein. Ist das geschafft, findest du in deinem "/config" Order von HA eine "google_calenders.yaml". Hier kannst du deinem Müllkalender eine eindeutige ID verpassen:

Code: Alles auswählen

- cal_id: xxxxxxx@import.calendar.google.com
  entities:
  - device_id: muellkalender
    ignore_availability: true
    name: Mein-Abfallkalender
    track: true
Bei mir ist es so, dass die Einträge für die Müllabfuhr ganztägige Termine sind, somit kannst du die Einträge nicht direkt für eine Benachrichtigung benutzen, da die entsprechende Entität (calendar.muellkalender) in HA immer um 0:00 auf "on" geht und du möchtest ja am besten am Abend vorher erinnert werden. Somit müssen wir uns einen Template Sensor anlegen, der x Stunden vorher auf "on" geht:

Code: Alles auswählen

- platform: template
    sensors:
      bins_out_offset:
        friendly_name: "Bins out offset"
        value_template: >
          {% if as_timestamp(states.calendar.muellkalender.attributes.start_time) - as_timestamp(strptime(states.sensor.date_time.state, "%Y-%m-%d, %H:%M" ) ) < 23400 and as_timestamp(states.calendar.muellkalender.attributes.end_time) > as_timestamp(strptime(states.sensor.date_time.state, "%Y-%m-%d, %H:%M" ) ) %}
            on
          {% else %}
            off
          {% endif %}
Du musst natürlich im Template "muellkalender" gegen die "device_id" deines Kalenders austauschen. In meinem Fall werde ich 23400 sec (=6h30min), also um 17:30 Uhr, vor dem eigentlichen Event benachrichtigt. Das kannst du dir ja aber auch noch entsprechend anpassen.
Jetzt kannst du dir bereits eine Automatisierung erstellen, die als Trigger den eben erstellen Sensor bentutzt und dir über deinen bereits eingerichteten Notify Dienst eine Nachricht schickt. Ich nutze dazu einen Telegram Bot. Dieser schickt mir eine Nachricht mit Inline Keyboard. Darüber kann ich die Erinnerung ausschalten, oder mich in gewissen Zeitabständen erneut erinnern lassen. Initiale Nachricht mit Inline Keyboard:

Code: Alles auswählen

- alias: Telegram Müllerinnerung
  trigger:
  - entity_id: sensor.bins_out_offset
    platform: state
    to: 'on'
  condition: []
  action:
  - service: notify.telegram
    data_template:
      message: '{{ states.calendar.muellkalender.attributes.message }}'
      data:
        inline_keyboard:
        - 10 Minuten:/10m, 30 Minuten:/30m, 1 Stunde:/1h
        - Aus:/removekeyboard
Bei mir ist es so, dass die Einträge im Kalender so heißen, wie die Mülltonne die abgeholt wird. Mit "states.calendar.muellkalender.attributes.message" landet diese Info direkt in der Nachricht.
Telegram erstellt jetzt in der Nachricht vier Buttons mit den Texten vor dem Doppelpunkt und schickt beim drücken einer der Buttons den Text hinter dem Doppelpunkt zurück an HA. Diese Nachrichten werden dann wieder in HA verarbeitet:

Code: Alles auswählen

- alias: Telegram callback Keyboard verstecken
  trigger:
    platform: event
    event_type: telegram_callback
    event_data:
      data: /removekeyboard
  action:
  - service: telegram_bot.answer_callback_query
    data_template:
      callback_query_id: '{{ trigger.event.data.id }}'
      message: OK
  - service: telegram_bot.edit_replymarkup
    data_template:
      message_id: '{{ trigger.event.data.message.message_id }}'
      chat_id: '{{ trigger.event.data.user_id }}'
      inline_keyboard: []
- alias: Telegram enrneute Müll Erinnerung in 10min
  trigger:
    platform: event
    event_type: telegram_callback
    event_data:
      data: /10m
  action:
  - service: telegram_bot.answer_callback_query
    data_template:
      callback_query_id: '{{ trigger.event.data.id }}'
      message: OK, reminding you in 10 minutes
  - service: telegram_bot.edit_replymarkup
    data_template:
      message_id: '{{ trigger.event.data.message.message_id }}'
      chat_id: '{{ trigger.event.data.user_id }}'
      inline_keyboard: []
  - delay: 00:10:00
  - service: notify.telegram
    data_template:
      message: '{{ trigger.event.data.message.text }}'
      data:
        inline_keyboard:
        - 10 Minuten:/10m, 30 Minuten:/30m, 1 Stunde:/1h
        - Aus:/removekeyboard
- alias: Telegram enrneute Müll Erinnerung in 30min
  trigger:
    platform: event
    event_type: telegram_callback
    event_data:
      data: /30m
  action:
  - service: telegram_bot.answer_callback_query
    data_template:
      callback_query_id: '{{ trigger.event.data.id }}'
      message: OK, reminding you in 30 minutes
  - service: telegram_bot.edit_replymarkup
    data_template:
      message_id: '{{ trigger.event.data.message.message_id }}'
      chat_id: '{{ trigger.event.data.user_id }}'
      inline_keyboard: []
  - delay: 00:30:00
  - service: notify.telegram
    data_template:
      message: '{{ trigger.event.data.message.text }}'
      data:
        inline_keyboard:
        - 10 Minutes:/10m, 30 Minuten:/30m, 1 Stunde:/1h
        - Aus:/removekeyboard
- alias: Telegram enrneute Müll Erinnerung in 1h
  trigger:
    platform: event
    event_type: telegram_callback
    event_data:
      data: /1h
  action:
  - service: telegram_bot.answer_callback_query
    data_template:
      callback_query_id: '{{ trigger.event.data.id }}'
      message: OK, reminding you in 1 hour
  - service: telegram_bot.edit_replymarkup
    data_template:
      message_id: '{{ trigger.event.data.message.message_id }}'
      chat_id: '{{ trigger.event.data.user_id }}'
      inline_keyboard: []
  - delay: 01:00:00
  - service: notify.telegram
    data_template:
      message: '{{ trigger.event.data.message.text }}'
      data:
        inline_keyboard:
        - 10 Minutes:/10m, 30 Minuten:/30m, 1 Stunde:/1h
        - Aus:/removekeyboard
Mit jeder weiteren Erinnerung wird auch wieder eine Inline Keyboard mitgesendet, so lange bis man die Erinnerung ausschaltet.
Zuletzt möchte ich noch erwähnen, dass ich meine Automatisierungen auf mehrere Yaml Dateien aufgeteilt habe. Die hier aufgeführten Automatisierungen haben daher keine "id:". Werden diese Automatisierungen jetzt in die "automations.yaml" eingefügt, muss eine eindeutige ID hinzugefügt werden, ansonsten kommt es zu Fehlermeldungen. Wer fragen hat, oder wenn etwas unklar ist, einfach melden ;)
Wer Rechtschreibfehler findet, darf sie gerne behalten :D
Benutzeravatar
Osorkon
Administrator
Beiträge: 188
Registriert: Sa 17. Jul 2021, 16:53
Wohnort: Langenargen
Kontaktdaten:

Re: Müllkalender

Beitrag von Osorkon »

Finde die custom integration einfach nur komfortabel.
Individuell nutzbar und flexibel. Auch was die integration in Lovelace angeht.
Nach dem Motto warum kompliziert, wenn es auch einfach geht. 😀

Aber viele Wege führen nach Rom.
Und jedem das Seine! 😀

Gruß
Osorkon
Dateianhänge
Als_nächstes_muss_raus.png
Als_nächstes_muss_raus.png (56.61 KiB) 70 mal betrachtet
Abfallkalender.png
Abfallkalender.png (55.41 KiB) 70 mal betrachtet
Einer muss ja für Ordnung sorgen. :D
Benutzeravatar
azrael783
Beiträge: 25
Registriert: Mi 27. Okt 2021, 08:57
Kontaktdaten:

Re: Müllkalender

Beitrag von azrael783 »

Finde die custom integration einfach nur komfortabel.
Das glaube ich dir gerne. Als ich mit Home-Assistant angefangen habe - ich glaube die erste Version, die ich installiert habe, war 0.63.0, oder so - gab es einfach noch nicht so viel. Die ganzen fancy Sachen sind alle erst mit der Zeit entstanden. Selbst HACS hatte ich damals noch nicht installiert - gab es auch glaube noch gar nicht, oder war mir zumindest nicht bekannt. Die Benachrichtigung habe ich allerdings schon recht früh eingerichtet und ich habe lediglich den Kalender links in der Seitenleiste, sonst ist der bei mir gar nicht in Lovelace vertreten.
Wer Rechtschreibfehler findet, darf sie gerne behalten :D
Benutzeravatar
Friedi
Beiträge: 115
Registriert: Do 22. Jul 2021, 16:57

Re: Müllkalender

Beitrag von Friedi »

azrael783 hat geschrieben: Do 4. Nov 2021, 10:00 Also, kleine Vorwarnung: das wird ein etwas längerer Beitrag, bzw etwas mehr Code :mrgreen:
Danke @azrael783 für diese Codeschnipsel.
Ich wollte demnächst nämlich meine Müllbenachrichtigungen auch in der Art anpassen und nun kann ich mir sehr viel Arbeit sparen :)
Benutzeravatar
azrael783
Beiträge: 25
Registriert: Mi 27. Okt 2021, 08:57
Kontaktdaten:

Re: Müllkalender

Beitrag von azrael783 »

Friedi hat geschrieben: Fr 5. Nov 2021, 11:32 Danke @azrael783 für diese Codeschnipsel.
Ich wollte demnächst nämlich meine Müllbenachrichtigungen auch in der Art anpassen und nun kann ich mir sehr viel Arbeit sparen :)
Sehr gerne :) Freut mich, wenn ich helfen konnte. Bei Rückfragen wenden sie sich bitte an ihren Systemadministrator :lol:
Wer Rechtschreibfehler findet, darf sie gerne behalten :D
PX80
Beiträge: 43
Registriert: Do 21. Okt 2021, 13:09

Re: Müllkalender

Beitrag von PX80 »

jetzt habe ich den eintrag auf FB endlich wieder gefunden:

anscheinend kann man sich direkt aus dem calendar bedienen und eben auf ein AddOn verzichten

BeispielCode:

Code: Alles auswählen

Und hier die Sensordefinition:
# Restabfall
- platform: template
sensors:
restabfall:
friendly_name: Restabfall
value_template: >
{{ as_timestamp(state_attr("calendar.restabfall", "start_time")) | timestamp_custom('%d.%m.%Y') }}
icon_template: >-
{% if state_attr('sensor.restabfall', 'days_left') == 0 %}
mdi:delete-empty
{% else %}
mdi:delete-outline
{% endif %}
attribute_templates:
weekday: >
{{ as_timestamp(state_attr("calendar.restabfall", "start_time")) | timestamp_custom('%w') }}
text: >
{% if state_attr('sensor.restabfall', 'days_left') == 0 %}
Heute
{% elif state_attr('sensor.restabfall', 'days_left') == 1 %}
Morgen
{% else %}
in {{ state_attr('sensor.restabfall', 'days_left') }} Tagen
{% endif %}
color: >
{% if state_attr('sensor.restabfall', 'days_left') == 0 %}
color="#ff6347"
{% elif state_attr('sensor.restabfall', 'days_left') == 1 %}
color="#ffae00"
{% endif %}
days_left: >
{{ ((as_timestamp(state_attr("calendar.restabfall", "start_time"))-as_timestamp(states.sensor.date.state+' '+'00:00:00')) / 86400) | int }}
Jmd. eine Idee wie ich den Kalender parse und daraus ein Sensor bauen kann?
PX80
Beiträge: 43
Registriert: Do 21. Okt 2021, 13:09

Re: Müllkalender

Beitrag von PX80 »

ich werde mir wohl erstmal die google calendar integration anschauen und den successor von atomic calendar

https://www.home-assistant.io/integrations/google
https://github.com/totaldebug/atomic-calendar-revive+

Nutzt jmd. den Atomic Calendar?
Benutzeravatar
azrael783
Beiträge: 25
Registriert: Mi 27. Okt 2021, 08:57
Kontaktdaten:

Re: Müllkalender

Beitrag von azrael783 »

Nö, ich habe meine Lösung ja weiter oben bereits gepostet. Da siehst du auch wie du dir ein Sensor für die Erinnerung direkt aus dem Abfallkalender baust.
Wer Rechtschreibfehler findet, darf sie gerne behalten :D
PX80
Beiträge: 43
Registriert: Do 21. Okt 2021, 13:09

Re: Müllkalender

Beitrag von PX80 »

Hintergedanke ist halt, gleich den kompletten Kalender mit in HA einzubinden und zu visualisieren.
Benutzeravatar
azrael783
Beiträge: 25
Registriert: Mi 27. Okt 2021, 08:57
Kontaktdaten:

Re: Müllkalender

Beitrag von azrael783 »

Das geht ja auch ohne irgendwelche zusätzlichen Sachen. Wenn du den Kalender in HA hinzugefügt hast, hast du in der Seitenleiste einen Eintrag "Kalender" und HA bietet auch eine Kalender Card für die Lovelace UI an.
Wer Rechtschreibfehler findet, darf sie gerne behalten :D
PX80
Beiträge: 43
Registriert: Do 21. Okt 2021, 13:09

Re: Müllkalender

Beitrag von PX80 »

lassen sich dann irgendwie sensoren damit bauen oder wie filtert man die Kalendar Einträge?
Benutzeravatar
azrael783
Beiträge: 25
Registriert: Mi 27. Okt 2021, 08:57
Kontaktdaten:

Re: Müllkalender

Beitrag von azrael783 »

Ja, klar. Hab ich ja im Code Beispiel auch getan ;)
Wer Rechtschreibfehler findet, darf sie gerne behalten :D
Antworten