Advertisement
TDCroPower

Müllkalender - HA

Feb 18th, 2024 (edited)
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 7.90 KB | None | 0 0
  1. ##############################
  2. ###  Helper               ####
  3. ##############################
  4.  
  5. Hinweis:
  6. Es werden zwei Helfer hierfür benötigt:
  7. - MuellSchichtplan -> Typ: Text
  8. - NaechsteAbholung -> Typ: Text
  9.  
  10. ##############################
  11. ###  configuration.yaml   ####
  12. ##############################
  13.  
  14. Hinweis:
  15. Die Sensoren müssen um weitere Attribute erweitert werden !
  16. Hier können die Schichten pro Monat eingetragen werden,
  17. für keine Schicht einfach den jeweiligen Monat leer lassen
  18.  
  19. # HomeAssistant
  20. homeassistant:
  21.   customize:
  22.     sensor.altpapier:
  23.       friendly_name: "Blaue Tonne"
  24.       unit_of_measurement: Tage
  25.     sensor.bioabfall:
  26.       friendly_name: "Braune Tonne"
  27.       unit_of_measurement: Tage
  28.     sensor.gelber_sack:
  29.       friendly_name: "Gelben Säcke"
  30.       unit_of_measurement: Tage
  31.     sensor.restabfall:
  32.       friendly_name: "Schwarze Tonne"
  33.       unit_of_measurement: Tage
  34.     input_text.muellschichtplan:
  35.       January:
  36.       February: UserA,UserB
  37.       March: UserC
  38.       April:
  39.       May: UserC
  40.       June:
  41.       July: UserA,UserB
  42.       August: UserC
  43.       September:
  44.       October: UserC
  45.       November:
  46.       December: UserA,UserB
  47.  
  48. ###############################
  49. ###  Automation YAML Code  ####
  50. ###############################
  51.  
  52. Hinweis:
  53. Die Automation einfach als Yaml Code einfügen:
  54. alias: Müllkalender
  55. description: ""
  56. trigger:
  57.   - platform: time
  58.     at: "12:00:00"
  59.     enabled: true
  60.   - platform: time
  61.     at: "21:00:00"
  62.     enabled: true
  63. condition: []
  64. action:
  65.   - alias: Restabfall Prüfung
  66.     if:
  67.       - alias: Wenn Restabfall ist 1
  68.         condition: numeric_state
  69.         entity_id: sensor.restabfall
  70.         below: 2
  71.         above: 0
  72.     then:
  73.       - service: input_text.set_value
  74.         target:
  75.           entity_id: input_text.naechsteabholung
  76.         data_template:
  77.           value: |
  78.            {% set NaechsteAbholung = states('input_text.naechsteabholung') %}
  79.             {% set Name = state_attr('sensor.restabfall', 'friendly_name') %}
  80.             {% if NaechsteAbholung == '' %}
  81.               {{ Name }}
  82.             {% else %}  
  83.               {{ NaechsteAbholung }} und {{ Name }}
  84.             {% endif %}
  85.         alias: NaechsteAbholung befüllen
  86.   - alias: Gelber Sack Prüfung
  87.     if:
  88.       - condition: numeric_state
  89.         entity_id: sensor.gelber_sack
  90.         below: 2
  91.         above: 0
  92.         alias: Wenn Gelber Sack ist 1
  93.     then:
  94.       - service: input_text.set_value
  95.         target:
  96.           entity_id: input_text.naechsteabholung
  97.         data_template:
  98.           value: |
  99.            {% set NaechsteAbholung = states('input_text.naechsteabholung') %}
  100.             {% set Name = state_attr('sensor.gelber_sack', 'friendly_name') %}
  101.             {% if NaechsteAbholung == '' %}
  102.               {{ Name }}
  103.             {% else %}  
  104.               {{ NaechsteAbholung }} und {{ Name }}
  105.             {% endif %}
  106.         alias: NaechsteAbholung befüllen
  107.   - alias: Altpapier Prüfung
  108.     if:
  109.       - condition: numeric_state
  110.         entity_id: sensor.altpapier
  111.         below: 2
  112.         above: 0
  113.         alias: Wenn Altpapier ist 1
  114.     then:
  115.       - service: input_text.set_value
  116.         target:
  117.           entity_id: input_text.naechsteabholung
  118.         data_template:
  119.           value: |
  120.            {% set NaechsteAbholung = states('input_text.naechsteabholung') %}
  121.             {% set Name = state_attr('sensor.altpapier', 'friendly_name') %}
  122.             {% if NaechsteAbholung == '' %}
  123.               {{ Name }}
  124.             {% else %}  
  125.               {{ NaechsteAbholung }} und {{ Name }}
  126.             {% endif %}
  127.         alias: NaechsteAbholung befüllen
  128.   - alias: Bioabfall Prüfung
  129.     if:
  130.       - condition: numeric_state
  131.         entity_id: sensor.bioabfall
  132.         below: 2
  133.         above: 0
  134.         alias: Wenn Bioabfall ist 1
  135.     then:
  136.       - service: input_text.set_value
  137.         target:
  138.           entity_id: input_text.naechsteabholung
  139.         data_template:
  140.           value: |
  141.            {% set NaechsteAbholung = states('input_text.naechsteabholung') %}
  142.             {% set Name = state_attr('sensor.bioabfall', 'friendly_name') %}
  143.             {% if NaechsteAbholung == '' %}
  144.               {{ Name }}
  145.             {% else %}  
  146.               {{ NaechsteAbholung }} und {{ Name }}
  147.             {% endif %}
  148.         alias: NaechsteAbholung befüllen
  149.   - alias: Telegram Info um 12:00 senden
  150.     if:
  151.       - condition: template
  152.         value_template: "{{ states('input_text.naechsteabholung') != '' }}"
  153.         alias: Abholung morgen
  154.       - condition: time
  155.         after: "12:00:00"
  156.         before: "12:01:00"
  157.     then:
  158.       - alias: UserA und UserB Schicht ?
  159.         if:
  160.           - condition: template
  161.             value_template: >-
  162.               {% set Schicht = state_attr('input_text.muellschichtplan',
  163.               now().strftime('%B')) %}
  164.  
  165.               {{ Schicht is search('UserA|UserB') }}
  166.             alias: UserA und UserB Prüfung
  167.         then:
  168.           - service: notify.usera
  169.             metadata: {}
  170.             data:
  171.               message: >-
  172.                 Morgen wird die {{ states('input_text.naechsteabholung') }}
  173.                 abgeholt.
  174.             alias: an UserA senden...
  175.           - service: notify.userb
  176.             metadata: {}
  177.             data:
  178.               message: >-
  179.                 Morgen wird die {{ states('input_text.naechsteabholung') }}
  180.                 abgeholt.
  181.             alias: an UserB senden...
  182.       - alias: UserC Schicht ?
  183.         if:
  184.           - alias: UserC Prüfung
  185.             condition: template
  186.             value_template: >-
  187.               {% set Schicht = state_attr('input_text.muellschichtplan',
  188.               now().strftime('%B')) %}
  189.  
  190.               {{ Schicht is search('UserC') }}
  191.         then:
  192.           - service: notify.userc
  193.             metadata: {}
  194.             data:
  195.               message: >-
  196.                 Morgen wird die {{ states('input_text.naechsteabholung') }}
  197.                 abgeholt.
  198.             alias: an UserC senden...
  199.   - alias: Telegram Erinnerung um 21:00 senden
  200.     if:
  201.       - condition: template
  202.         value_template: "{{ states('input_text.naechsteabholung') != '' }}"
  203.         alias: Abholung notwendig ?
  204.       - condition: time
  205.         after: "21:00:00"
  206.         before: "21:01:00"
  207.     then:
  208.       - alias: UserA und UserB Schicht ?
  209.         if:
  210.           - condition: template
  211.             value_template: >-
  212.               {% set Schicht = state_attr('input_text.muellschichtplan',
  213.               now().strftime('%B')) %}
  214.  
  215.               {{ Schicht is search('UserA|UserB') }}
  216.             alias: UserA und UserB Schicht ?
  217.         then:
  218.           - service: notify.usera
  219.             metadata: {}
  220.             data:
  221.               message: >-
  222.                 Hast du die {{ states('input_text.naechsteabholung') }} raus
  223.                 gefahren?
  224.             alias: an UserA senden...
  225.           - service: notify.userb
  226.             metadata: {}
  227.             data:
  228.               message: >-
  229.                 Hast du die {{ states('input_text.naechsteabholung') }} raus
  230.                 gefahren?
  231.             alias: an UserB senden...
  232.       - alias: UserC Schicht ?
  233.         if:
  234.           - alias: UserC Prüfung
  235.             condition: template
  236.             value_template: >-
  237.               {% set Schicht = state_attr('input_text.muellschichtplan',
  238.               now().strftime('%B')) %}
  239.  
  240.               {{ Schicht is search('UserC') }}
  241.         then:
  242.           - service: notify.userc
  243.             metadata: {}
  244.             data:
  245.               message: >-
  246.                 Hast du die {{ states('input_text.naechsteabholung') }} raus
  247.                 gefahren?
  248.             alias: an UserC senden...
  249.   - alias: Leeren von NaechsteAbholung
  250.     service: input_text.set_value
  251.     metadata: {}
  252.     data:
  253.       value: ""
  254.     target:
  255.       entity_id: input_text.naechsteabholung
  256. mode: restart
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement