3674 lines
108 KiB
YAML
3674 lines
108 KiB
YAML
- id: airco_kinderen_start_on_timer_start
|
|
alias: Start de airco van de kinderen als de timer start
|
|
description: Turn on the AC when the timer starts
|
|
triggers:
|
|
- trigger: event
|
|
event_type: timer.started
|
|
event_data:
|
|
entity_id: timer.airco_mini_sleeptimer
|
|
variables:
|
|
airco: climate.airco_slaapkamer_t
|
|
temp_sensor: sensor.xiaomi_temperature_humidity_sensor_3_temperature
|
|
- trigger: event
|
|
event_type: timer.started
|
|
event_data:
|
|
entity_id: timer.airco_puber_sleeptimer
|
|
variables:
|
|
airco: climate.airco_slaapkamer_m
|
|
temp_sensor: sensor.xiaomi_temperature_humidity_sensor_4_temperature
|
|
actions:
|
|
- action: climate.set_hvac_mode
|
|
target:
|
|
entity_id: '{{airco}}'
|
|
data:
|
|
hvac_mode: '{{ ''heat'' if (states(temp_sensor) | float(0)) < 21 else ''cool''
|
|
}}'
|
|
- id: airco_sleeptimer_kinderen
|
|
alias: Sleeptimer voor de aircos van de kinderen
|
|
description: Turn off AC at the end of the timer
|
|
triggers:
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.airco_mini_sleeptimer
|
|
variables:
|
|
entity: climate.airco_slaapkamer_t
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.airco_puber_sleeptimer
|
|
variables:
|
|
entity: climate.airco_slaapkamer_m
|
|
actions:
|
|
- action: climate.set_hvac_mode
|
|
target:
|
|
entity_id: '{{entity}}'
|
|
data:
|
|
hvac_mode: 'off'
|
|
- id: airco_automatisch_uit
|
|
alias: Zet airco automatisch uit einde avond
|
|
description: Turn off ACs automatically so we won't forget
|
|
triggers:
|
|
- trigger: time
|
|
at: '23:00:00'
|
|
variables:
|
|
target: airco_children
|
|
- trigger: time
|
|
at: input_datetime.time_turn_off_airco
|
|
variables:
|
|
target: climate.airco_woonkamer
|
|
actions:
|
|
- choose:
|
|
- conditions: '{{ target == ''airco_children'' }}'
|
|
sequence:
|
|
- if:
|
|
- '{{ states(''timer.airco_mini_sleeptimer'') != ''active'' }}'
|
|
then:
|
|
- action: climate.set_hvac_mode
|
|
target:
|
|
entity_id: climate.airco_slaapkamer_t
|
|
data:
|
|
hvac_mode: 'off'
|
|
- if:
|
|
- '{{ states(''timer.airco_puber_sleeptimer'') != ''active'' }}'
|
|
then:
|
|
- action: climate.set_hvac_mode
|
|
target:
|
|
entity_id: climate.airco_slaapkamer_m
|
|
data:
|
|
hvac_mode: 'off'
|
|
- conditions: '{{ target == ''climate.airco_woonkamer'' }}'
|
|
sequence:
|
|
- action: climate.set_hvac_mode
|
|
target:
|
|
entity_id: '{{target}}'
|
|
data:
|
|
hvac_mode: 'off'
|
|
- id: turn_off_when_away
|
|
alias: Zet de airco en verwarming uit als we weg zijn
|
|
description: 'Climate: Turn off heating when away'
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: zone.home
|
|
to: '0'
|
|
for:
|
|
minutes: 30
|
|
actions:
|
|
- alias: Turn off Tado devices that are on (and leave others in current state)
|
|
action: climate.set_hvac_mode
|
|
data:
|
|
hvac_mode: auto
|
|
target:
|
|
entity_id: '{{ integration_entities(''tado'') | select(''is_state'', ''heat'')
|
|
| list }}'
|
|
- alias: Turn off A/Cs
|
|
action: climate.set_hvac_mode
|
|
data:
|
|
hvac_mode: 'off'
|
|
target:
|
|
entity_id:
|
|
- climate.airco_master_bedroom
|
|
- climate.airco_slaapkamer_m
|
|
- climate.airco_slaapkamer_t
|
|
- climate.airco_woonkamer
|
|
- id: airco_kinderen_limit_setpoint
|
|
alias: Zet airco kinderen automatisch op een normale temperatuur
|
|
description: Set the kid's AC automatically to a more normal temperature (to prevent
|
|
user error and save energy)
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- climate.airco_slaapkamer_m
|
|
- climate.airco_slaapkamer_t
|
|
attribute: temperature
|
|
variables:
|
|
current_mode: '{{ states(trigger.entity_id) }}'
|
|
set_temp: '{{ state_attr(trigger.entity_id, ''temperature'') | float(0) }}'
|
|
condition: []
|
|
actions:
|
|
- choose:
|
|
- conditions: '{{ current_mode in [''cool'', ''dry''] and set_temp < 20 }}'
|
|
sequence:
|
|
- action: climate.set_temperature
|
|
target:
|
|
entity_id: '{{ trigger.entity_id }}'
|
|
data:
|
|
temperature: 22
|
|
- conditions: '{{ current_mode == ''heat'' and set_temp > 21 }}'
|
|
sequence:
|
|
- action: climate.set_temperature
|
|
target:
|
|
entity_id: '{{ trigger.entity_id }}'
|
|
data:
|
|
temperature: 19.5
|
|
- id: weerhuisje_update_air_quality_sensors
|
|
alias: Stuur Air Quality sensors van het weerhuisje door
|
|
mode: queued
|
|
triggers:
|
|
- trigger: time_pattern
|
|
minutes: /1
|
|
conditions:
|
|
not:
|
|
- '{{ states(''sensor.weerhuisje_particulate_matter_2_5_m_concentration'') in
|
|
[''unknown'',''unavailable''] }}'
|
|
- '{{ states(''sensor.weerhuisje_particulate_matter_10_0_m_concentration'') in
|
|
[''unknown'',''unavailable''] }}'
|
|
- '{{ states(''sensor.weerhuisje_temperature'') in [''unknown'',''unavailable'']
|
|
}}'
|
|
- '{{ states(''sensor.weerhuisje_humidity'') in [''unknown'',''unavailable'']
|
|
}}'
|
|
- '{{ states(''sensor.weerhuisje_pressure'') in [''unknown'',''unavailable'']
|
|
}}'
|
|
actions:
|
|
- alias: Send TPH to Luftdaten / Sensor.Community API
|
|
action: rest_command.send_luftdaten_tph
|
|
continue_on_error: true
|
|
- alias: Send data to OpenSenseMap
|
|
action: rest_command.post_opensensebox
|
|
continue_on_error: true
|
|
- alias: Send updates to Madavi.de for statistics.
|
|
action: rest_command.send_madavi
|
|
continue_on_error: true
|
|
- alias: Send PM to Luftdaten / Sensor.Community API
|
|
action: rest_command.send_luftdaten_pm
|
|
continue_on_error: true
|
|
- id: awtrix_turn_on_or_off
|
|
alias: Zet Awtrix aan of uit 🌛
|
|
description: Turn off the Awtrix screen at 20:30 and turn it back on at 08:00
|
|
triggers:
|
|
- alias: Ga sowieso uit om 20u30
|
|
trigger: time
|
|
at: '20:30:00'
|
|
id: turn_off
|
|
- alias: Ga weer aan om 8u
|
|
trigger: time
|
|
at: 08:00:00
|
|
id: turn_on
|
|
condition: []
|
|
actions:
|
|
- action: homeassistant.{{trigger.id}}
|
|
data:
|
|
entity_id:
|
|
- light.awtrix_6caff8_matrix
|
|
- id: awtrix_switch_between_clock_and_apps
|
|
alias: Schakel Awtrix tussen de klok en de apps
|
|
description: Set Awtrix to clock only by pressing the middle button or when I turn
|
|
off my monitor
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.awtrix_6caff8_button_select
|
|
to: 'on'
|
|
id: toggle
|
|
- trigger: numeric_state
|
|
entity_id: sensor.bureau_kantoor_power
|
|
above: 25
|
|
id: turn_on
|
|
- trigger: numeric_state
|
|
entity_id: sensor.bureau_kantoor_power
|
|
below: 25
|
|
for: 00:05:00
|
|
id: turn_off
|
|
condition: []
|
|
actions:
|
|
choose:
|
|
- alias: Do we need to turn on Awtrix?
|
|
conditions:
|
|
- '{{ trigger.id == ''turn_on'' }}'
|
|
sequence:
|
|
- alias: Start transition and set time color to white again
|
|
action: mqtt.publish
|
|
data:
|
|
topic: awtrix_6caff8/settings
|
|
payload: '{ "WD": true, "TMODE":"1", "TIME_COL": [255,255,255], "ABRI":
|
|
true, "ATRANS": true }'
|
|
- alias: Do we need to turn off Awtrix?
|
|
conditions:
|
|
- '{{ trigger.id == ''turn_off'' }}'
|
|
sequence:
|
|
- alias: Swith to time
|
|
action: mqtt.publish
|
|
data:
|
|
topic: awtrix_6caff8/switch
|
|
payload: '{"name":"Time"}'
|
|
- alias: Set low brightness and red color and fix to time app
|
|
action: mqtt.publish
|
|
data:
|
|
topic: awtrix_6caff8/settings
|
|
payload: '{ "WD": false, "TMODE":"0", "TIME_COL": [255,0,0], "BRI": 1, "ABRI":
|
|
false, "ATRANS": false }'
|
|
- alias: Do we need to toggle Awtrix?
|
|
conditions:
|
|
- '{{ trigger.id == ''toggle'' }}'
|
|
sequence:
|
|
- if:
|
|
- alias: 'Transition is on, so we are in day mode: toggle to night mode'
|
|
condition: state
|
|
entity_id: switch.awtrix_6caff8_transition
|
|
state: 'on'
|
|
then:
|
|
- alias: Swith to time
|
|
action: mqtt.publish
|
|
data:
|
|
topic: awtrix_6caff8/switch
|
|
payload: '{"name":"Time"}'
|
|
- alias: Set low brightness and red color and fix to time app
|
|
action: mqtt.publish
|
|
data:
|
|
topic: awtrix_6caff8/settings
|
|
payload: '{ "WD": false, "TMODE":"0", "TIME_COL": [255,0,0], "BRI": 1,
|
|
"ABRI": false, "ATRANS": false }'
|
|
else:
|
|
- alias: Start transition and set time color to white again
|
|
action: mqtt.publish
|
|
data:
|
|
topic: awtrix_6caff8/settings
|
|
payload: '{ "WD": true, "TMODE":"1", "TIME_COL": [255,255,255], "ABRI":
|
|
true, "ATRANS": true }'
|
|
- id: awtrix_start_custom_apps_on_reboot
|
|
alias: Start alle Awtrix apps na een reboot
|
|
description: Start custom apps on Awtrix reboot
|
|
mode: single
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: switch.awtrix_6caff8_transition
|
|
from: 'off'
|
|
to: 'on'
|
|
condition: []
|
|
actions:
|
|
- action: automation.trigger
|
|
target:
|
|
entity_id:
|
|
- automation.awtrix_send_outside_temperature_to_awtrix
|
|
- delay: 5
|
|
- action: automation.trigger
|
|
target:
|
|
entity_id:
|
|
- automation.awtrix_solar_energy_monitor
|
|
- delay: 5
|
|
- action: automation.trigger
|
|
target:
|
|
entity_id:
|
|
- automation.awtrix_send_today_s_energy_production_to_awtrix
|
|
- delay: 5
|
|
- action: automation.trigger
|
|
target:
|
|
entity_id:
|
|
- automation.awtrix_send_ev_battery_level
|
|
- id: awtrix_temperature
|
|
alias: Stuur de buitentemperatuur naar Awtrix
|
|
description: Send outside temperature to Awtrix
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.knmi_temperatuur
|
|
condition: []
|
|
actions:
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: awtrix_6caff8/custom/outside_temp
|
|
payload: ' { "text": "{{ states(''sensor.knmi_temperatuur'') }}°C", "icon":
|
|
"56840", "color": "#f21f1f", "duration": 7 } '
|
|
- id: awtrix_production
|
|
alias: Stuur vandaags productie van de zonnepanelen naar Awtrix
|
|
description: 'Awtrix: Send today''s energy production to Awtrix'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.today_s_pv_generation
|
|
condition: []
|
|
actions:
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: awtrix_6caff8/custom/production_today
|
|
payload: ' { "text": "{{ states(''sensor.todays_total_production_preserved'')
|
|
}} kWh", "icon": "52456", "color": "#7bf21f", "duration": 7} '
|
|
- id: awtrix_current_production
|
|
alias: Stuur de huidige opbrengst van de zonnepanelen naar Awtrix
|
|
description: This will show the current solar energy received.
|
|
mode: queued
|
|
variables:
|
|
device_topic: awtrix_6caff8/custom/current_production
|
|
power_sensor: sensor.pv_power
|
|
power_level: '{{ states[power_sensor].state | int(0) | abs }}'
|
|
threshold_low: 1500
|
|
threshold_high: 2500
|
|
power_level_icon: '{%- if power_level > threshold_high %}{{54156}}{%- endif %}
|
|
{%- if (power_level <= threshold_high) and (power_level > threshold_low) %}{{50557}}{%-
|
|
endif %} {%- if power_level <= threshold_low %}{{50546}}{%- endif %}'
|
|
power_level_color: '{%- if power_level > threshold_high %}{{"#04FE04"}}{%- endif
|
|
%} {%- if (power_level <= threshold_high) and (power_level > threshold_low)
|
|
%}{{"#FCFEFC"}}{%- endif %} {%- if power_level <= threshold_low %}{{"#FF4E1A"}}{%-
|
|
endif %}'
|
|
power_level_text: '{%- if power_level > 1000 %}{{ ((power_level | float(default=0))
|
|
/ 1000) | round(1)}} kW{%- else %}{{power_level | round(0)}} W{%- endif %}'
|
|
skip_if_zero_watts: true
|
|
skip_during_night_hours: true
|
|
payload: '{"icon":"{{ power_level_icon }}", "text": "{{ power_level_text }}", "color":
|
|
"{{ power_level_color }}"}'
|
|
night_start: '{{ as_timestamp(state_attr(''sun.sun'',''next_setting''))| timestamp_custom("%H:%M:%S")}}'
|
|
night_end: '{{ as_timestamp(state_attr(''sun.sun'',''next_rising''))| timestamp_custom("%H:%M:%S")}}'
|
|
triggers:
|
|
- trigger: time_pattern
|
|
minutes: /5
|
|
condition: []
|
|
actions:
|
|
- choose:
|
|
- alias: Skipping if it is night time
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{% set now_time = now().strftime("%H:%M") %} {% set night_start
|
|
= night_start %} {% set night_end = night_end %} {{ (skip_during_night_hours
|
|
and ((now_time < night_end) or (now_time > night_start))) or (skip_if_zero_watts
|
|
and (power_level == 0)) }}
|
|
|
|
'
|
|
sequence:
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: '{{ device_topic }}'
|
|
payload: '{}'
|
|
- alias: Not skipping when it is day time
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{% set now_time = now().strftime("%H:%M") %} {% set night_start
|
|
= night_start %} {% set night_end = night_end %} {{ not((skip_during_night_hours
|
|
and ((now_time < night_end) or (now_time > night_start))) or (skip_if_zero_watts
|
|
and (power_level == 0))) }}
|
|
|
|
'
|
|
sequence:
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: '{{ device_topic }}'
|
|
payload: '{{ payload }}
|
|
|
|
'
|
|
- id: awtrix_ev_battery
|
|
alias: Stuur het batterijniveau van de auto naar Awtrix
|
|
description: 'Awtrix: Send the battery level of my EV to Awtrix'
|
|
mode: queued
|
|
variables:
|
|
threshold_low: 30
|
|
threshold_high: 60
|
|
power_level: '{{ states(''sensor.tucson_ev_battery_level'') | int(default=0) }}'
|
|
power_level_color: '{%- if power_level > threshold_high %}{{"#04FE04"}}{%- endif
|
|
%} {%- if (power_level <= threshold_high) and (power_level > threshold_low)
|
|
%}{{"#FCFEFC"}}{%- endif %} {%- if power_level <= threshold_low %}{{"#FF4E1A"}}{%-
|
|
endif %}'
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.tucson_ev_battery_level
|
|
condition: []
|
|
actions:
|
|
- action: mqtt.publish
|
|
data:
|
|
topic: awtrix_6caff8/custom/ev_battery
|
|
payload: ' { "text": "{{ states(''sensor.tucson_ev_battery_level'') }} %", "icon":
|
|
"2817", "color": "{{ power_level_color }}", "duration": 7} '
|
|
- id: battery_low_check
|
|
alias: Wekelijkse check voor lege batterijen
|
|
description: Check whether a battery is low
|
|
mode: single
|
|
triggers:
|
|
- trigger: time
|
|
at: '12:00:00'
|
|
weekday:
|
|
- sat
|
|
action:
|
|
- service: battery_notes.check_battery_low
|
|
- id: battery_low_notification
|
|
alias: Bericht over lege batterijen
|
|
description: Battery Low Notification with auto dismiss
|
|
mode: queued
|
|
variables:
|
|
title: '{{ trigger.event.data.device_name }}'
|
|
message: "\U0001FAAB {{ trigger.event.data.device_name }} {%- if trigger.event.data.battery_level\
|
|
\ is defined -%}\n heeft een batterijniveau van {{trigger.event.data.battery_level}}%.\n\
|
|
{%- else -%}\n is leeg.\n{%- endif %} Je hebt {{trigger.event.data.battery_quantity\
|
|
\ }}x {{trigger.event.data.battery_type }} nodig om de batterij te vervangen."
|
|
id: '{{ trigger.event.data.device_id }}'
|
|
navigate: /config/devices/device/{{id}}
|
|
triggers:
|
|
- trigger: event
|
|
event_type: battery_notes_battery_threshold
|
|
event_data:
|
|
battery_low: true
|
|
id: low
|
|
alias: Battery went low
|
|
- trigger: event
|
|
event_type: battery_notes_battery_threshold
|
|
event_data:
|
|
battery_low: false
|
|
id: high
|
|
alias: Battery went high
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id: low
|
|
sequence:
|
|
- action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: '{{title}}'
|
|
message: '{{message}}'
|
|
data:
|
|
notification_icon: mdi:battery-alert-variant
|
|
clickAction: '{{navigate}}'
|
|
tag: '{{id}}'
|
|
- action: persistent_notification.create
|
|
data:
|
|
title: '{{title}}'
|
|
notification_id: '{{id}}'
|
|
message: '{{message}} {{ ''
|
|
|
|
|
|
'' -}} [Link naar apparaat pagina]({{navigate}})'
|
|
- conditions:
|
|
- condition: trigger
|
|
id: high
|
|
sequence:
|
|
- action: notify.mobile_app_sm_a556b
|
|
data:
|
|
message: clear_notification
|
|
data:
|
|
tag: '{{id}}'
|
|
- action: persistent_notification.dismiss
|
|
data:
|
|
notification_id: '{{id}}'
|
|
- id: battery_replaced
|
|
alias: Batterijen vervangen
|
|
mode: queued
|
|
triggers:
|
|
- trigger: event
|
|
event_type: battery_notes_battery_increased
|
|
actions:
|
|
- action: battery_notes.set_battery_replaced
|
|
data:
|
|
device_id: '{{ trigger.event.data.device_id }}'
|
|
source_entity_id: '{{ trigger.event.data.source_entity_id }}'
|
|
- action: persistent_notification.create
|
|
data:
|
|
title: '{{ trigger.event.data.device_name }} Battery Increased
|
|
|
|
'
|
|
message: 'The device has increased its battery level, I''ve marked it as replaced
|
|
|
|
'
|
|
- alias: Verwijder fietsenhok alert
|
|
id: clear_bikeshed_door_alert
|
|
trigger:
|
|
- platform: state
|
|
entity_id: alert.bikeshed_door
|
|
from: 'on'
|
|
to:
|
|
- idle
|
|
- 'off'
|
|
action:
|
|
- service: notify.mobile_devices_adults
|
|
data:
|
|
message: clear_notification
|
|
data:
|
|
tag: bikeshed_door_alert
|
|
- alias: Verwerk actie om alert uit te zetten
|
|
id: mute_door_alerts
|
|
trigger:
|
|
- platform: event
|
|
event_type: mobile_app_notification_action
|
|
event_data:
|
|
action: mute_alert_bikeshed
|
|
action:
|
|
- service: alert.turn_off
|
|
target:
|
|
entity_id: alert.bikeshed_door
|
|
- id: schuur_fietslader
|
|
alias: Fietsaccu lader in de schuur uitschakelen na laden
|
|
description: Fietsaccu lader in de schuur uitschakelen na laden
|
|
mode: single
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.fietslader_links_power
|
|
for:
|
|
minutes: 5
|
|
below: 5
|
|
variables:
|
|
switch: switch.fietslader_links
|
|
- trigger: numeric_state
|
|
entity_id: sensor.fietslader_rechts_power
|
|
for:
|
|
minutes: 5
|
|
below: 5
|
|
variables:
|
|
switch: switch.fietslader_rechts
|
|
conditions:
|
|
- alias: Please, not on restarts
|
|
condition: template
|
|
value_template: '{{ trigger.from_state.state | is_number }}'
|
|
actions:
|
|
- alias: Lader uitschakelen
|
|
action: switch.turn_off
|
|
target:
|
|
entity_id: '{{ switch }}'
|
|
- alias: Sending push notification
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Fietslader uitgeschakeld
|
|
message: De {{ state_attr(switch, 'friendly_name') }} is automatisch uitgeschakeld
|
|
({{ now().strftime('%H:%M') }})
|
|
data:
|
|
notification_icon: mdi:bicycle-electric
|
|
ttl: 0
|
|
priority: high
|
|
clickAction: /lovelace/other
|
|
- id: deurbel_met_ai_beschrijving
|
|
alias: Deurbel met AI beschrijving
|
|
description: Stuur een notificatie met beschrijving als iemand aanbelt
|
|
variables:
|
|
group: deurbel_camera
|
|
tag: '{{ group + int(as_timestamp(now()))|string }}'
|
|
title: De deurbel gaat
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.voordeur_bezoeker
|
|
from: 'off'
|
|
to: 'on'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_deurbel
|
|
state: 'on'
|
|
actions:
|
|
- alias: Analyze event
|
|
action: llmvision.image_analyzer
|
|
response_variable: response
|
|
data:
|
|
image_entity:
|
|
- camera.voordeur_vloeiend
|
|
provider: 01JDVWVP7N8E70XMH6HMYWBCAN
|
|
model: gemini-2.0-flash
|
|
message: 'Dit is een foto van mijn voordeur camera. Help me door te beschrijven
|
|
of dit een bezorger of bezoeker is. Beschrijf de scène niet! Als de persoon
|
|
een pakje of doos vast heeft is het vrijwel zeker een bezorger. Als je denkt
|
|
dat het een bezorger is probeer dan in te schatten van welk bedrijf de bezorger
|
|
is. Als de persoon kleding met oranje accenten aan heeft is het een PostNL
|
|
bezorger. Heeft de persoon gele bovenkleding dan is het een DHL bezorger.
|
|
Heeft de persoon rode kleding aan en in plaats van een pakje of doos plastic
|
|
tassen in zijn/haar hand, dan is het een bezorger van Picnic. Misschien zie
|
|
je een bestelauto in de foto: PostNL bezorgers rijden vaak in een witte bestelbus,
|
|
terwijl DHL bezorgers vaak een gele bestelwagen rijden. Wij rijden zelf een
|
|
kleine gele personenauto, verwar die niet met een bestelbus. Weet je niet
|
|
zeker van welk bedrijf het is? Zeg dat dan. Antwoord met een korte zin in
|
|
het Nederlands.'
|
|
remember: false
|
|
include_filename: false
|
|
max_tokens: 25
|
|
temperature: 0.1
|
|
expose_images: true
|
|
- repeat:
|
|
for_each: "{{\n (expand(state_attr('zone.home', 'persons'))\n | map(attribute='attributes.source')\n\
|
|
\ | map('replace', 'device_tracker.', 'notify.mobile_app_')\n | list + ['notify.mobile_app_sm_a556b'])\n\
|
|
\ | unique | list\n}}\n"
|
|
sequence:
|
|
- alias: Update notification to notify devices
|
|
action: '{{ repeat.item }}'
|
|
data:
|
|
title: '{{ title }}'
|
|
message: '{{ response.response_text }}'
|
|
data:
|
|
image: '{{response.key_frame.replace(''/config/www/'',''/local/'') }}'
|
|
clickAction: /lovelace/camera
|
|
tag: '{{ tag }}'
|
|
group: '{{ group }}'
|
|
notification_icon: mdi:doorbell-video
|
|
priority: high
|
|
timeout: 60
|
|
ttl: 0
|
|
visibility: public
|
|
- id: deurbel_stream_to_kiosk
|
|
alias: Stream de deurbel naar de kiosks
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.voordeur_bezoeker
|
|
from: 'off'
|
|
to: 'on'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_deurbel
|
|
state: 'on'
|
|
actions:
|
|
- action: browser_mod.popup
|
|
data:
|
|
dismissable: true
|
|
autoclose: false
|
|
browser_id:
|
|
- kiosk1
|
|
- kiosk2
|
|
timeout: 60000
|
|
size: fullscreen
|
|
content:
|
|
type: custom:advanced-camera-card
|
|
cameras:
|
|
- camera_entity: camera.voordeur_vloeiend
|
|
- action: number.set_value
|
|
data:
|
|
value: '255'
|
|
target:
|
|
entity_id:
|
|
- number.kiosk1_schermhelderheid
|
|
- number.kiosk2_schermhelderheid
|
|
- id: deurbel_turn_off_chime
|
|
alias: Zet de deurbel boven uit na bepaalde tijd
|
|
description: Zet de deurbel boven uit na bepaalde tijd
|
|
mode: single
|
|
triggers:
|
|
- trigger: time
|
|
at: '21:00:00'
|
|
id: 'off'
|
|
- trigger: time
|
|
at: 09:00:00
|
|
id: hophop
|
|
conditions: []
|
|
actions:
|
|
- action: select.select_option
|
|
data:
|
|
option: '{{ trigger.id }}'
|
|
target:
|
|
entity_id: select.reolink_chime_boven_beltoon_bij_bezoeker
|
|
- id: ev_handle_automatic_cheapest_charge
|
|
alias: Laad de auto tijdens de goedkoopste uren
|
|
description: Automatically charge my car in the cheapest hours
|
|
mode: single
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.ev_smart_charging_charging
|
|
to: 'on'
|
|
id: ev_cheapest_charge_start
|
|
- trigger: state
|
|
entity_id: sensor.ev_smart_charging_charging
|
|
to: 'off'
|
|
id: ev_cheapest_charge_stop
|
|
actions:
|
|
- alias: Choose to start or stop charging
|
|
choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id: ev_cheapest_charge_start
|
|
- not:
|
|
- condition: state
|
|
entity_id: select.smartevse_6360_mode
|
|
state: Smart
|
|
sequence:
|
|
- alias: Select SMART charging option
|
|
action: select.select_option
|
|
target:
|
|
entity_id: select.smartevse_6360_mode
|
|
data:
|
|
option: Smart
|
|
- alias: Sending push notification
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Automatic cheapest EV charging started
|
|
message: Automatisch laden van de auto is gestart. ({{ now().strftime('%H:%M')
|
|
}}).
|
|
data:
|
|
notification_icon: mdi:ev-station
|
|
ttl: 0
|
|
priority: high
|
|
clickAction: /lovelace/car
|
|
- conditions:
|
|
- condition: trigger
|
|
id: ev_cheapest_charge_stop
|
|
- not:
|
|
- condition: state
|
|
entity_id: select.smartevse_6360_mode
|
|
state: 'Off'
|
|
sequence:
|
|
- alias: Select charging option OFF
|
|
action: select.select_option
|
|
target:
|
|
entity_id: select.smartevse_6360_mode
|
|
data:
|
|
option: 'Off'
|
|
- alias: Sending push notification
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Automatic cheapest EV charging stopped
|
|
message: Automatisch laden van de auto is gestopt ({{ now().strftime('%H:%M')
|
|
}})
|
|
data:
|
|
notification_icon: mdi:ev-station
|
|
ttl: 0
|
|
priority: high
|
|
clickAction: /lovelace/car
|
|
- alias: Stel in of de auto verbonden is
|
|
id: ev_set_smart_charging_connected_sensor
|
|
description: Set Smart Charging EV connected sensor
|
|
mode: single
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.smartevse_6360_evplugstate
|
|
actions:
|
|
- if:
|
|
- condition: state
|
|
entity_id: sensor.smartevse_6360_evplugstate
|
|
state: Connected
|
|
then:
|
|
- action: switch.turn_on
|
|
target:
|
|
entity_id: switch.ev_smart_charging_ev_connected
|
|
else:
|
|
- if:
|
|
- condition: state
|
|
entity_id: sensor.smartevse_6360_evplugstate
|
|
state: Disconnected
|
|
then:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.ev_smart_charging_ev_connected
|
|
- id: ev_create_monthly_total_notification
|
|
alias: Stuur een maandelijks overzicht van de laadkosten van de auto
|
|
description: Create a monthly overview of the amount of energy charged for billing
|
|
purposes
|
|
mode: single
|
|
variables:
|
|
title: EV charging monthly total
|
|
message: 'This month you have charged your EV with a total of {{ states(''sensor.smartevse_monthly_total'')
|
|
| round(1) }} kWh. The total meter reading at {{now().strftime("%d-%m-%Y %H:%M")}}
|
|
was {{ states(''sensor.smartevse_6360_evtotalenergycharged'') | round(1) }}
|
|
kWh.
|
|
|
|
'
|
|
triggers:
|
|
- trigger: time
|
|
at: '23:59:45'
|
|
conditions:
|
|
- alias: Only on last day of the month
|
|
condition: template
|
|
value_template: '{{ (now() + timedelta(days=1)).strftime(''%-d'') == ''1'' }}'
|
|
actions:
|
|
- alias: Create a persistant notification with the monthly charged totals
|
|
action: persistent_notification.create
|
|
data:
|
|
notification_id: ev_monthly_total
|
|
title: '{{ title }}'
|
|
message: '{{ message }}'
|
|
- alias: Send an email with the monthly charged totals
|
|
action: notify.email
|
|
data:
|
|
title: '{{ title }}'
|
|
message: '{{ message }}'
|
|
- id: ev_force_update_while_charging
|
|
alias: Forceer nieuwe Hyundai informatie tijdens het laden
|
|
description: Force update the values of the Hyundai component while charging
|
|
mode: single
|
|
triggers:
|
|
- trigger: time_pattern
|
|
minutes: /15
|
|
conditions:
|
|
- alias: Only when we are actually charging
|
|
condition: state
|
|
entity_id: sensor.smartevse_6360_state
|
|
state: Charging
|
|
actions:
|
|
- action: kia_uvo.force_update
|
|
data:
|
|
device_id: 5a94e1b7fbce614053e4f5b8dfd6209b
|
|
- id: garden_turn_on
|
|
alias: Zet de tuinverlichting aan of uit
|
|
mode: single
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.garden_lights
|
|
- trigger: homeassistant
|
|
event: start
|
|
- trigger: event
|
|
event_type: automation_reloaded
|
|
conditions:
|
|
- alias: Do we have a valid state
|
|
condition: template
|
|
value_template: '{{ states(''sensor.garden_lights'') not in [''unknown'',''unavailable'',''none'']
|
|
}}'
|
|
- alias: Only continue if not overridden
|
|
condition: state
|
|
entity_id: input_boolean.garden_lights_override
|
|
state: 'off'
|
|
actions:
|
|
- action: homeassistant.turn_{{ states('sensor.garden_lights') }}
|
|
target:
|
|
entity_id:
|
|
- light.verlichting_tuin
|
|
- id: garden_turn_on_tree_lights
|
|
alias: Zet de boomverlichting aan of uit
|
|
mode: single
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.tree_lights
|
|
- trigger: homeassistant
|
|
event: start
|
|
- trigger: event
|
|
event_type: automation_reloaded
|
|
conditions:
|
|
- alias: Do we have a valid state
|
|
condition: template
|
|
value_template: '{{ states(''sensor.tree_lights'') not in [''unknown'',''unavailable'',''none'']
|
|
}}'
|
|
- alias: Only continue if not overridden
|
|
condition: state
|
|
entity_id: input_boolean.garden_lights_override
|
|
state: 'off'
|
|
actions:
|
|
- action: homeassistant.turn_{{ states('sensor.tree_lights') }}
|
|
target:
|
|
entity_id:
|
|
- light.tuin_spot_boom
|
|
- id: garden_turn_on_coming_home
|
|
alias: Zet de tuinverlichting aan als ik thuis kom
|
|
mode: single
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.poort_contact
|
|
from: 'off'
|
|
to: 'on'
|
|
conditions:
|
|
- alias: Are the lights off?
|
|
condition: state
|
|
entity_id: light.verlichting_tuin
|
|
state: 'off'
|
|
- alias: Is the sun down?
|
|
condition: state
|
|
entity_id: sun.sun
|
|
state: below_horizon
|
|
actions:
|
|
- action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.garden_lights_override
|
|
- action: homeassistant.turn_on
|
|
target:
|
|
entity_id: light.verlichting_tuin
|
|
- delay: 00:03:00
|
|
- action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.garden_lights_override
|
|
- action: automation.trigger
|
|
target:
|
|
entity_id: automation.lights_garden_turn_on
|
|
- id: backgate_alert
|
|
alias: Waarschuw als iemand door de poort komt of het fietsenhok opent
|
|
description: Alert when someone enters the backgate of our garden or opens the bike
|
|
shed
|
|
mode: single
|
|
max_exceeded: silent
|
|
trace:
|
|
stored_traces: 20
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.poort_contact
|
|
- binary_sensor.fietsenhok_contact
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- alias: Turn on speaker
|
|
action: switch.turn_on
|
|
target:
|
|
entity_id: switch.alarmspeaker_alarm
|
|
- alias: Do nothing for 1 minute to prevent bouncing triggers
|
|
delay: 00:01:00
|
|
- id: achtertuin_stream_to_kiosk
|
|
alias: Stream de achtertuin naar de kiosks
|
|
mode: single
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.achtertuin_persoon
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: browser_mod.popup
|
|
data:
|
|
dismissable: true
|
|
autoclose: true
|
|
browser_id:
|
|
- kiosk1
|
|
- kiosk2
|
|
timeout: 90000
|
|
size: fullscreen
|
|
content:
|
|
type: custom:advanced-camera-card
|
|
cameras:
|
|
- camera_entity: camera.achtertuin_vloeiend
|
|
- action: number.set_value
|
|
data:
|
|
value: '255'
|
|
target:
|
|
entity_id:
|
|
- number.kiosk1_schermhelderheid
|
|
- number.kiosk2_schermhelderheid
|
|
- alias: Do nothing for 92 seconds to prevent bouncing triggers
|
|
delay: 00:01:32
|
|
- id: notification_benzine_price_changed
|
|
alias: Verstuur melding dat de benzineprijzen gewijzigd zijn
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.benzine
|
|
- input_number.benzineprijs_esso
|
|
not_from:
|
|
- unknown
|
|
- unavailable
|
|
- none
|
|
not_to:
|
|
- unknown
|
|
- unavailable
|
|
- none
|
|
variables:
|
|
station: '{{ ''Tinq'' if trigger.entity_id == ''sensor.benzine'' else ''Esso''
|
|
}}'
|
|
conditions:
|
|
- alias: Check if price really changed
|
|
condition: template
|
|
value_template: '{{ trigger.to_state.state = trigger.from_state.state }}'
|
|
- condition: state
|
|
entity_id: input_boolean.vacation_mode_away
|
|
state: 'off'
|
|
actions:
|
|
- action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: '{{ iif(trigger.to_state.state < trigger.from_state.state, "Benzine wordt
|
|
goedkoper", "Benzine wordt duurder") }}'
|
|
message: '⛽ De {{ station }} benzineprijs is {{ iif(trigger.to_state.state <
|
|
trigger.from_state.state, "gezakt.", "gestegen.") }} Nieuwe prijs: {{ trigger.to_state.state
|
|
}}. Oude prijs: {{ trigger.from_state.state }}.'
|
|
data:
|
|
tag: benzine
|
|
channel: benzine
|
|
notification_icon: mdi:gas-station
|
|
- id: update_benzineprijs
|
|
alias: Werk de Esso benzine prijs bij
|
|
triggers:
|
|
trigger: time
|
|
at:
|
|
- 06:45:00
|
|
- '18:45:00'
|
|
conditions: []
|
|
actions:
|
|
- delay: '{{ range(30*60) | random }}'
|
|
alias: Random delay between now and 30mins
|
|
- action: downloader.download_file
|
|
data:
|
|
overwrite: true
|
|
url: secret scrape_url_esso
|
|
filename: esso.png
|
|
- action: llmvision.data_analyzer
|
|
data:
|
|
provider: 01JDVWVP7N8E70XMH6HMYWBCAN
|
|
message: Wat kost Euro95 bij dit tankstation? Geef me alleen de prijs, zonder
|
|
het euroteken en verdere tekst - echt alleen de prijs. Gebruik een . als decimaalteken.
|
|
image_file: /config/downloads/esso.png
|
|
sensor_entity: input_number.benzineprijs_esso
|
|
include_filename: true
|
|
max_tokens: 1000
|
|
response_variable: response
|
|
- id: set_google_home_volume
|
|
alias: Stel de Google Home volumes in
|
|
description: 'Volume: Set Google Home Volume'
|
|
triggers:
|
|
- trigger: time
|
|
id: time
|
|
at:
|
|
- 07:00:00
|
|
- 09:00:00
|
|
- '19:30:00'
|
|
- '20:30:00'
|
|
- trigger: homeassistant
|
|
event: start
|
|
id: ha_start
|
|
actions:
|
|
- alias: Check if this is triggered by HA restart
|
|
if:
|
|
condition: trigger
|
|
id: ha_start
|
|
then:
|
|
- delay:
|
|
minutes: 1
|
|
- alias: Checking what time it is...
|
|
choose:
|
|
- alias: It's between 7hrs and 09:00
|
|
conditions:
|
|
- condition: time
|
|
after: 06:59:59
|
|
before: 09:00:00
|
|
sequence:
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id:
|
|
- media_player.kiosk1_fkb
|
|
- media_player.nest_hub_woonkamer
|
|
volume_level: 0.7
|
|
- alias: It's between 09:00 and 19hrs
|
|
conditions:
|
|
- condition: time
|
|
after: 08:59:59
|
|
before: '19:00:00'
|
|
sequence:
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id:
|
|
- media_player.slaapkamer_t
|
|
- media_player.zolder
|
|
volume_level: 0.6
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id: media_player.kantoor
|
|
volume_level: 0.2
|
|
- alias: It's between 19hrs and 20:30
|
|
conditions:
|
|
- condition: time
|
|
after: '18:59:59'
|
|
before: '20:30:00'
|
|
sequence:
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id:
|
|
- media_player.kiosk1_fkb
|
|
- media_player.nest_hub_woonkamer
|
|
volume_level: 0.6
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id:
|
|
- media_player.slaapkamer_t
|
|
- media_player.zolder
|
|
volume_level: 0.2
|
|
- alias: It's between 20:30 and 7hrs
|
|
conditions:
|
|
- condition: time
|
|
after: '20:29:59'
|
|
before: 07:00:00
|
|
sequence:
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id:
|
|
- media_player.kiosk1_fkb
|
|
- media_player.nest_hub_woonkamer
|
|
volume_level: 0.4
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id: media_player.kantoor
|
|
volume_level: 0.1
|
|
- id: notification_kid_left_location
|
|
alias: Verstuur een melding dat een kind van een locatie vertrekt
|
|
mode: parallel
|
|
triggers:
|
|
- trigger: zone
|
|
entity_id: device_tracker.sm_a236b
|
|
event: leave
|
|
zone: zone.school
|
|
variables:
|
|
name: '{{states(''input_text.naam_mini'')}}'
|
|
location: school
|
|
- trigger: zone
|
|
entity_id: device_tracker.sm_a236b
|
|
event: leave
|
|
zone: zone.mc
|
|
variables:
|
|
name: '{{states(''input_text.naam_mini'')}}'
|
|
location: MC
|
|
- trigger: zone
|
|
entity_id: device_tracker.sm_a236b
|
|
event: leave
|
|
zone: zone.scouting
|
|
variables:
|
|
name: '{{states(''input_text.naam_mini'')}}'
|
|
location: scouting
|
|
- trigger: zone
|
|
entity_id: device_tracker.schaduwspeler
|
|
event: leave
|
|
zone: zone.school
|
|
variables:
|
|
name: '{{states(''input_text.naam_puber'')}}'
|
|
location: school
|
|
- trigger: zone
|
|
entity_id: device_tracker.schaduwspeler
|
|
event: leave
|
|
zone: zone.scouting
|
|
variables:
|
|
name: '{{states(''input_text.naam_puber'')}}'
|
|
location: scouting
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- or:
|
|
- and:
|
|
- '{{ location == "school" }}'
|
|
- not:
|
|
- condition: time
|
|
after: '12:00:00'
|
|
before: '17:30:00'
|
|
weekday:
|
|
- mon
|
|
- tue
|
|
- wed
|
|
- thu
|
|
- fri
|
|
- and:
|
|
- '{{ location == "scouting" }}'
|
|
- not:
|
|
- or:
|
|
- condition: time
|
|
after: '12:00:00'
|
|
before: '14:00:00'
|
|
weekday:
|
|
- sat
|
|
- condition: time
|
|
after: '21:00:00'
|
|
before: '22:00:00'
|
|
weekday:
|
|
- mon
|
|
sequence:
|
|
- stop: Likely false positive, stopping sequence
|
|
default:
|
|
- action: notify.mobile_devices_adults
|
|
data:
|
|
title: ♥ {{ name }} is op weg naar huis!
|
|
message: '{{ name }} is rond {{now().strftime("%H:%M")}} van {{ location }}
|
|
vertrokken.
|
|
|
|
'
|
|
data:
|
|
clickAction: /lovelace-map/map
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:map-marker-radius
|
|
- id: notification_kids_battery_low_parents
|
|
alias: Verstuur een melding dat batterij van kind bijna leeg is
|
|
mode: parallel
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.sm_a236b_battery_level
|
|
below: 15
|
|
variables:
|
|
name: '{{states(''input_text.naam_mini'')}}'
|
|
- trigger: numeric_state
|
|
entity_id: sensor.schaduwspeler_batterijniveau
|
|
below: 15
|
|
variables:
|
|
name: '{{states(''input_text.naam_puber'')}}'
|
|
variables:
|
|
target: '{% if trigger.entity_id == "sensor.schaduwspeler_batterijniveau" %}notify.mobile_app_schaduwspeler
|
|
{% elif trigger.entity_id == "sensor.sm_a236b_battery_level" %}notify.mobile_app_sm_a236b
|
|
{% else %}notify.bogus {% endif %}
|
|
|
|
'
|
|
conditions:
|
|
or:
|
|
- and:
|
|
- '{{ trigger.entity_id == ''sensor.schaduwspeler_batterijniveau'' }}'
|
|
- '{{ not is_state(''device_tracker.schaduwspeler'', ''home'') }}'
|
|
- and:
|
|
- '{{ trigger.entity_id == ''sensor.sm_a236b_battery_level'' }}'
|
|
- '{{ not is_state(''device_tracker.sm_a236b'', ''home'') }}'
|
|
actions:
|
|
- action: notify.mobile_devices_adults
|
|
data:
|
|
title: 🔋 Batterijwaarschuwing
|
|
message: 'De telefoon van {{ name }} is bijna leeg. Updates van zijn locatie
|
|
zullen snel stoppen.
|
|
|
|
'
|
|
data:
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:battery-alert-variant
|
|
- action: '{{ target }}'
|
|
data:
|
|
message: command_high_accuracy_mode
|
|
data:
|
|
command: turn_off
|
|
priority: high
|
|
ttl: 0
|
|
- action: '{{ target }}'
|
|
data:
|
|
title: 🔋 Batterijwaarschuwing
|
|
message: 'Je moet je telefoon even opladen....
|
|
|
|
'
|
|
data:
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:battery-alert-variant
|
|
- alias: Schakel high accuracy mode in of uit
|
|
id: kids_turn_gps_on_or_off
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- device_tracker.schaduwspeler
|
|
- device_tracker.sm_a236b
|
|
to:
|
|
- not_home
|
|
id: leave
|
|
- trigger: state
|
|
entity_id:
|
|
- device_tracker.schaduwspeler
|
|
- device_tracker.sm_a236b
|
|
not_to:
|
|
- not_home
|
|
- unavailable
|
|
id: enter
|
|
variables:
|
|
target: '{% if trigger.entity_id == "device_tracker.schaduwspeler" %}notify.mobile_app_schaduwspeler
|
|
{% elif trigger.entity_id == "device_tracker.sm_a236b" %}notify.mobile_app_sm_a236b
|
|
{% else %}notify.bogus {% endif %}
|
|
|
|
'
|
|
actions:
|
|
- action: '{{ target }}'
|
|
data:
|
|
message: command_high_accuracy_mode
|
|
data:
|
|
command: '{{ ''turn_on'' if trigger.id == ''leave'' else ''turn_off'' }}'
|
|
priority: high
|
|
ttl: 0
|
|
- id: kiosk_screensaver
|
|
alias: Schakel de screensaver van de kiosks in of uit
|
|
mode: parallel
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: switch.kiosk1_screensaver
|
|
variables:
|
|
device: kiosk1
|
|
brightness: number.kiosk1_schermhelderheid
|
|
path: /tsv-dashboards/tsv1
|
|
- trigger: state
|
|
entity_id: switch.kiosk2_screensaver
|
|
variables:
|
|
device: kiosk2
|
|
brightness: number.kiosk2_schermhelderheid
|
|
path: /tsv-dashboards/tsv2
|
|
actions:
|
|
- choose:
|
|
- conditions: '{{ trigger.to_state.state == ''on'' }}'
|
|
sequence:
|
|
- alias: Schakel de screensaver in
|
|
action: browser_mod.navigate
|
|
data:
|
|
path: /tsv-dashboards/screensaver
|
|
browser_id:
|
|
- '{{ device }}'
|
|
- action: number.set_value
|
|
data:
|
|
value: 10
|
|
target:
|
|
entity_id: '{{ brightness }}'
|
|
- conditions: '{{ trigger.to_state.state == ''off'' }}'
|
|
sequence:
|
|
- alias: Schakel de screensaver uit
|
|
action: browser_mod.navigate
|
|
data:
|
|
path: '{{ path }}'
|
|
browser_id:
|
|
- '{{ device }}'
|
|
- action: number.set_value
|
|
data:
|
|
value: '{{255 if is_state(''sun.sun'', ''above_horizon'') else 125}}'
|
|
target:
|
|
entity_id: '{{ brightness }}'
|
|
- id: kiosk1_screen
|
|
alias: Schakel het scherm van kiosk 1 in of uit
|
|
trigger:
|
|
- alias: Schakel uit als we de lampen uitzetten
|
|
trigger: state
|
|
entity_id: light.verlichting_woonkamer
|
|
to: 'off'
|
|
id: turn_off
|
|
- alias: Ga sowieso uit om 23:00
|
|
trigger: time
|
|
at: '23:00:00'
|
|
id: turn_off
|
|
- alias: Ga weer aan om 06:30
|
|
trigger: time
|
|
at: 06:30:00
|
|
id: turn_on
|
|
actions:
|
|
- alias: Checking what to do
|
|
choose:
|
|
- alias: Do we need to turn off the screen for the night?
|
|
conditions:
|
|
- '{{ trigger.id == ''turn_off'' }}'
|
|
- condition: time
|
|
after: '21:00:00'
|
|
sequence:
|
|
- delay: 00:00:10
|
|
- action: homeassistant.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.kiosk1_bewegingsdetectie
|
|
- switch.kiosk1_scherm
|
|
- alias: Do we need to turn on the screen?
|
|
conditions:
|
|
- '{{ trigger.id == ''turn_on'' }}'
|
|
sequence:
|
|
- action: homeassistant.turn_on
|
|
data:
|
|
entity_id:
|
|
- switch.kiosk1_bewegingsdetectie
|
|
- switch.kiosk1_scherm
|
|
- action: homeassistant.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.kiosk1_screensaver
|
|
- id: kiosk2_screen
|
|
alias: Schakel het scherm van kiosk 2 in of uit
|
|
trigger:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.bureau_kantoor_power
|
|
above: 25
|
|
id: turn_on
|
|
- trigger: numeric_state
|
|
entity_id: sensor.bureau_kantoor_power
|
|
below: 25
|
|
for: 00:05:00
|
|
id: turn_off
|
|
actions:
|
|
- alias: Checking what to do
|
|
choose:
|
|
- alias: Do we need to turn on the screen?
|
|
conditions:
|
|
- '{{ trigger.id == ''turn_on'' }}'
|
|
sequence:
|
|
- action: homeassistant.turn_on
|
|
data:
|
|
entity_id:
|
|
- switch.kiosk2_bewegingsdetectie
|
|
- switch.kiosk2_scherm
|
|
- alias: Do we need to turn off the screen?
|
|
conditions:
|
|
- '{{ trigger.id == ''turn_off'' }}'
|
|
sequence:
|
|
- action: homeassistant.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.kiosk2_bewegingsdetectie
|
|
- switch.kiosk2_scherm
|
|
- action: homeassistant.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.kiosk2_screensaver
|
|
- id: kiosk_restart_at_9
|
|
alias: Kiosk herstart browser om 09:00 of bij HA herstart
|
|
triggers:
|
|
- trigger: time
|
|
at: 08:59:30
|
|
- trigger: homeassistant
|
|
event: start
|
|
actions:
|
|
- delay: 00:00:30
|
|
- action: script.kiosk_restart_browser
|
|
- id: lights_t_remote_control
|
|
alias: Mini's afstandsbediening
|
|
mode: restart
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: event.drukknop_t_action
|
|
not_from:
|
|
- unavailable
|
|
- unknown
|
|
variables:
|
|
event: '{{ trigger.to_state.attributes.event_type | default(''unknown'', true)
|
|
}}'
|
|
actions:
|
|
- choose:
|
|
- conditions: '{{ event == ''on'' }}'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.plafondlamp_t_kleurige_verlichting
|
|
- delay:
|
|
seconds: 2
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.ledstrip_bureau_mini
|
|
data:
|
|
rgb_color:
|
|
- 89
|
|
- 255
|
|
- 0
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.plafondlamp_t_1
|
|
- light.plafondlamp_t_2
|
|
- light.plafondlamp_t_3
|
|
data:
|
|
effect: colorloop
|
|
- conditions: '{{ event == ''off'' }}'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.plafondlamp_t
|
|
- light.ledstrip_bureau_mini
|
|
- id: lights_t_lightswitch
|
|
alias: Lichtschakelaar mini
|
|
mode: restart
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: event.lichtschakelaar_t_action
|
|
not_from:
|
|
- unavailable
|
|
- unknown
|
|
variables:
|
|
event: '{{ trigger.to_state.attributes.event_type | default(''unknown'', true)
|
|
}}'
|
|
actions:
|
|
- choose:
|
|
- conditions: '{{ event == ''single_left'' }}'
|
|
sequence:
|
|
- choose:
|
|
- conditions: '{{ is_state(''light.ledstrip_bed_mini'', ''on'') }}'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.ledstrip_bed_mini
|
|
- conditions: '{{ is_state(''light.ledstrip_bed_mini'', ''off'') }}'
|
|
sequence:
|
|
- action: light.turn_on
|
|
data:
|
|
color_temp_kelvin: 2500
|
|
target:
|
|
entity_id: light.ledstrip_bed_mini
|
|
- conditions: '{{ event == ''single_right'' }}'
|
|
sequence:
|
|
- choose:
|
|
- conditions: '{{ is_state(''light.plafondlamp_t'', ''on'') }}'
|
|
sequence:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.plafondlamp_t
|
|
- conditions: '{{ is_state(''light.plafondlamp_t'', ''off'') }}'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.plafondlamp_t_wit
|
|
- conditions: '{{ event == ''single_both'' }}'
|
|
sequence: []
|
|
- conditions: '{{ event == ''double_left'' }}'
|
|
sequence:
|
|
- action: light.turn_on
|
|
data:
|
|
rgb_color:
|
|
- 0
|
|
- 255
|
|
- 30
|
|
brightness_pct: 100
|
|
target:
|
|
entity_id: light.ledstrip_bed_mini
|
|
- conditions: '{{ event == ''double_right'' }}'
|
|
sequence:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.plafondlamp_t_kleurige_verlichting
|
|
- delay:
|
|
seconds: 2
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.plafondlamp_t_1
|
|
- light.plafondlamp_t_2
|
|
- light.plafondlamp_t_3
|
|
data:
|
|
effect: colorloop
|
|
- conditions: '{{ event == ''double_both'' }}'
|
|
sequence: []
|
|
- id: lights_gang
|
|
alias: Zet de gangverlichting aan of uit
|
|
mode: restart
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_gang
|
|
from: 'off'
|
|
to: 'on'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_pir_gang_automations
|
|
state: 'on'
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
attribute: elevation
|
|
below: 5
|
|
actions:
|
|
- alias: Gang lamp aan...
|
|
action: switch.turn_on
|
|
target:
|
|
entity_id: switch.gang
|
|
- alias: Wacht tot er geen motion meer is...
|
|
wait_for_trigger:
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_gang
|
|
from: 'on'
|
|
to: 'off'
|
|
- alias: Lamp uit..
|
|
action: switch.turn_off
|
|
target:
|
|
entity_id: switch.gang
|
|
- id: set_lights_before_sunset
|
|
alias: Zet de verlichting aan bij zonsondergang
|
|
triggers:
|
|
trigger: sun
|
|
event: sunset
|
|
offset: -00:45:00
|
|
conditions:
|
|
and:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_woonkamer_sunset_automations
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: group.all_adults
|
|
state: home
|
|
actions:
|
|
- action: light.turn_on
|
|
data:
|
|
brightness_pct: 20
|
|
target:
|
|
entity_id: light.spots_vaas
|
|
- id: salon_remote_control
|
|
alias: Schakelaar salon
|
|
description: 'Control some lights with an Aqara H1 double wireless remote switch
|
|
(WRS-R02 / WXKG15LM)
|
|
|
|
'
|
|
mode: restart
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: event.schakelaar_salon_action
|
|
not_from:
|
|
- unavailable
|
|
- unknown
|
|
variables:
|
|
event: '{{ trigger.to_state.attributes.event_type | default(''unknown'', true)
|
|
}}'
|
|
actions:
|
|
- choose:
|
|
- conditions: '{{ event == ''single_left'' }}'
|
|
sequence:
|
|
- action: light.toggle
|
|
target:
|
|
entity_id: light.sfeerverlichting_salon
|
|
- conditions: '{{ event == ''single_right'' }}'
|
|
sequence:
|
|
- action: light.toggle
|
|
target:
|
|
entity_id:
|
|
- light.tv_kastje
|
|
- conditions: '{{ event == ''single_both'' }}'
|
|
sequence: []
|
|
- conditions: '{{ event == ''double_left'' }}'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.salon
|
|
data:
|
|
brightness_pct: 100
|
|
- conditions: '{{ event == ''double_right'' }}'
|
|
sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.salon
|
|
data:
|
|
brightness_pct: 25
|
|
- conditions: '{{ event == ''double_both'' }}'
|
|
sequence: []
|
|
- conditions: '{{ event == ''triple_left'' }}'
|
|
sequence: []
|
|
- conditions: '{{ event == ''triple_right'' }}'
|
|
sequence: []
|
|
- conditions: '{{ event == ''triple_both'' }}'
|
|
sequence: []
|
|
- conditions: '{{ event == ''hold_left'' }}'
|
|
sequence: []
|
|
- conditions: '{{ event == ''hold_right'' }}'
|
|
sequence: []
|
|
- conditions: '{{ event == ''hold_both'' }}'
|
|
sequence: []
|
|
- id: lights_frontdoor
|
|
alias: Zet de voordeurlamp aan of uit
|
|
triggers:
|
|
- trigger: sun
|
|
event: sunset
|
|
offset: -00:10:00
|
|
variables:
|
|
action: turn_on
|
|
- trigger: sun
|
|
event: sunrise
|
|
variables:
|
|
action: turn_off
|
|
actions:
|
|
- action: switch.{{ action }}
|
|
target:
|
|
entity_id: switch.voordeur
|
|
- id: lights_mbr_inloopkast
|
|
alias: Zet de verlichting van de inloopkast op de MBR aan of uit
|
|
mode: restart
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_inloopkast_occupancy
|
|
to: 'on'
|
|
from: 'off'
|
|
variables:
|
|
action: turn_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_inloopkast_occupancy
|
|
to: 'off'
|
|
from: 'on'
|
|
variables:
|
|
action: turn_off
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_pir_inloopkast_automations
|
|
state: 'on'
|
|
actions:
|
|
- alias: Inloopkast lamp bedienen...
|
|
action: switch.{{ action }}
|
|
target:
|
|
entity_id: switch.inloopkast
|
|
- id: warn_power_usage_after_bedtime_minicave
|
|
alias: Waarschuwing dat de minicave nog stroom verbruikt
|
|
mode: queued
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.mini_cave_power
|
|
above: 80
|
|
id: PC
|
|
- trigger: state
|
|
entity_id: binary_sensor.minicave_tv
|
|
to: 'on'
|
|
id: TV
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.notify_power_use_minicave
|
|
state: 'on'
|
|
- condition: time
|
|
after: input_datetime.time_poweruse_minicave
|
|
actions:
|
|
- action: notify.mobile_devices_adults
|
|
data:
|
|
title: Minicave {{ trigger.id }}
|
|
message: "{% if trigger.id == \"PC\" %}\n De computer van de mini staat nog\
|
|
\ aan... ({{ now().strftime('%H:%M') }}).\n{% else %}\n De TV van de mini\
|
|
\ staat nog aan... ({{ now().strftime('%H:%M') }}).\n{% endif %}"
|
|
data:
|
|
tag: minicave
|
|
notification_icon: mdi:home-lightning-bolt
|
|
ttl: 0
|
|
priority: high
|
|
- id: warn_pc_time_over_minicave
|
|
alias: Waarschuwing dat de mini te lang op de PC zit
|
|
mode: queued
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.minicave_pc_on_today
|
|
above: input_number.mini_pc_time_weekday
|
|
id: weekday
|
|
- trigger: numeric_state
|
|
entity_id: sensor.minicave_pc_on_today
|
|
above: input_number.mini_pc_time_weekend
|
|
id: weekend
|
|
- trigger: time
|
|
at: input_datetime.time_maxi_gametime_over
|
|
id: all_days
|
|
conditions:
|
|
- or:
|
|
- and:
|
|
- '{{ trigger.id == "weekday" }}'
|
|
- condition: time
|
|
weekday:
|
|
- mon
|
|
- tue
|
|
- wed
|
|
- thu
|
|
- fri
|
|
- and:
|
|
- '{{ trigger.id == "weekend" }}'
|
|
- condition: time
|
|
weekday:
|
|
- sat
|
|
- sun
|
|
- and:
|
|
- '{{ trigger.id == "all_days" }}'
|
|
- condition: state
|
|
entity_id: binary_sensor.minicave_pc
|
|
state: 'on'
|
|
actions:
|
|
- parallel:
|
|
- sequence:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.ledstrip_bureau_mini
|
|
- light.plafondlamp_t
|
|
data:
|
|
color_name: red
|
|
- delay:
|
|
seconds: 2
|
|
- repeat:
|
|
count: 10
|
|
sequence:
|
|
- action: light.toggle
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- light.ledstrip_bureau_mini
|
|
- light.plafondlamp_t
|
|
- delay:
|
|
seconds: 1
|
|
milliseconds: 500
|
|
- action: tts.microsoft_say
|
|
data:
|
|
entity_id: media_player.slaapkamer_t
|
|
message: Je tijd is op. Sluit je af?
|
|
- action: notify.mobile_app_sm_a236b
|
|
data:
|
|
title: Tijd is om
|
|
message: Je tijd is op. Sluit je af?
|
|
data:
|
|
tag: mini_pc
|
|
notification_icon: mdi:desktop-classic
|
|
priority: high
|
|
ttl: 0
|
|
- action: notify.mobile_devices_adults
|
|
data:
|
|
title: Mini's gametijd
|
|
message: De Mini heeft nu lang genoeg achter de PC gezeten ({{ now().strftime('%H:%M')
|
|
}}).
|
|
data:
|
|
tag: mini_pc
|
|
notification_icon: mdi:desktop-classic
|
|
priority: high
|
|
ttl: 0
|
|
- id: morning_briefing
|
|
alias: Verstuur ochtendbriefing
|
|
description: 'Notifications: Morning briefing'
|
|
triggers:
|
|
trigger: time
|
|
at: input_datetime.time_morning_briefing
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.vacation_mode_away
|
|
state: 'off'
|
|
actions:
|
|
- action: notify.mobile_devices_papa_and_mini
|
|
data:
|
|
title: Good morning sunshine!
|
|
message: Vandaag komt de zon op om {{ as_timestamp(state_attr('sun.sun', 'next_rising')) |
|
|
timestamp_custom("%H:%M") }} en wordt het {{ states('sensor.knmi_max_temperatuur_vandaag',
|
|
with_unit=True)}}. Momenteel is het {{ states('sensor.knmi_temperatuur', with_unit=True)
|
|
}} en {{ states('sensor.knmi_omschrijving') | lower}}. {{ states('sensor.knmi_weersverwachting')
|
|
}}.
|
|
data:
|
|
tag: morning-brief
|
|
notification_icon: mdi:weather-sunset-up
|
|
- alias: Melding met de goedkoopste uren om de vaatwasser te gebruiken
|
|
id: vaatwasser_melding
|
|
triggers:
|
|
- trigger: time
|
|
at: input_datetime.time_dishwasher_notification
|
|
conditions:
|
|
- alias: Do we want notifications?
|
|
condition: state
|
|
entity_id: input_boolean.notify_dishwasher
|
|
state: 'on'
|
|
- alias: Don't send when we're not at home
|
|
condition: state
|
|
entity_id: input_boolean.vacation_mode_away
|
|
state: 'off'
|
|
actions:
|
|
- alias: Sending push notification
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Vaatwasser
|
|
message: Het beste start je de vaatwasser om {{states('sensor.vaatwasser_goedkoopste_tijd')}}
|
|
data:
|
|
channel: notification-dishwasher
|
|
tag: notification-dishwasher
|
|
notification_icon: mdi:dishwasher
|
|
ttl: 0
|
|
importance: low
|
|
clickAction: /lovelace/energy
|
|
- id: picnic_order_window_closing
|
|
alias: 'Picnic: Order window closing'
|
|
mode: single
|
|
max_exceeded: silent
|
|
description: Send a notification when there are 2 hours left to submit the current
|
|
order
|
|
trigger:
|
|
- platform: template
|
|
value_template: "{% if states('sensor.picnic_maximale_besteltijd_voor_het_geselecteerde_tijdslot')\
|
|
\ not in ['unknown','unavailable','none'] %}\n {{ 14400 > (as_timestamp(states('sensor.picnic_maximale_besteltijd_voor_het_geselecteerde_tijdslot'))\
|
|
\ - as_timestamp(now(), 0)) > 0}}\n{% endif %}"
|
|
variables:
|
|
message: De Picnic bestelling is nog niet verzonden! Na {{ as_timestamp(states("sensor.picnic_maximale_besteltijd_voor_het_geselecteerde_tijdslot"))
|
|
| timestamp_custom("%H:%M") }} kan het niet meer.
|
|
- platform: template
|
|
value_template: "{% if states('sensor.picnic_max_order_time_of_last_order') not\
|
|
\ in ['unknown','unavailable','none'] %}\n {{ 14400 > (as_timestamp(states('sensor.picnic_max_order_time_of_last_order'))\
|
|
\ - as_timestamp(now(), 0)) > 0}}\n{% endif %}"
|
|
variables:
|
|
message: Wil je nog iets toevoegen aan je volgende Picnic bestelling? Na {{
|
|
as_timestamp(states("sensor.picnic_max_order_time_of_last_order")) | timestamp_custom("%H:%M")
|
|
}} kan het niet meer.
|
|
action:
|
|
- alias: Schakel bewegingsdetectie & eventuele screensaver uit
|
|
action: homeassistant.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.kiosk1_bewegingsdetectie
|
|
- switch.kiosk2_bewegingsdetectie
|
|
- switch.kiosk1_screensaver
|
|
- switch.kiosk2_screensaver
|
|
- alias: Schakel screensaver timeout uit
|
|
action: number.set_value
|
|
data:
|
|
value: 0
|
|
target:
|
|
entity_id:
|
|
- number.kiosk1_screensaver_timer
|
|
- number.kiosk2_screensaver_timer
|
|
- alias: Zet schermhelderheid op goed leesbaar niveau
|
|
action: number.set_value
|
|
data:
|
|
value: '{{255 if is_state(''sun.sun'', ''above_horizon'') else 125}}'
|
|
target:
|
|
entity_id:
|
|
- number.kiosk1_schermhelderheid
|
|
- number.kiosk2_schermhelderheid
|
|
- alias: Laat dashboard zien op kiosk
|
|
action: browser_mod.navigate
|
|
data:
|
|
path: /tsv-dashboards/picnic-order-closing
|
|
browser_id:
|
|
- kiosk1
|
|
- kiosk2
|
|
- action: timer.start
|
|
target:
|
|
entity_id: timer.picnic
|
|
data:
|
|
duration: 00:30:00
|
|
- id: picnic_delivery_known
|
|
alias: 'Picnic: Delivery soon'
|
|
mode: single
|
|
max_exceeded: silent
|
|
description: Send a notification when the short window of the picnic delivery is
|
|
near
|
|
trigger:
|
|
- platform: template
|
|
value_template: "{% if states('sensor.picnic_verwacht_begin_van_de_volgende_bestelling')\
|
|
\ not in ['unknown','unavailable','none'] %}\n {{ 901 > (as_timestamp(states('sensor.picnic_verwacht_begin_van_de_volgende_bestelling'),\
|
|
\ 0) - as_timestamp(now(), 0)) > 840}}\n{% endif %}"
|
|
action:
|
|
- if:
|
|
- alias: Check if push message should be sent
|
|
condition: state
|
|
entity_id: input_boolean.notify_picnic_push
|
|
state: 'on'
|
|
then:
|
|
- service: notify.mobile_devices_adults
|
|
data:
|
|
title: Picnic komt eraan!
|
|
message: 'Picnic bezorgt tussen {{ states(''sensor.picnic_next_delivery_eta_start_time'')
|
|
}} en {{ states(''sensor.picnic_next_delivery_eta_end_time'') }}!
|
|
|
|
'
|
|
data:
|
|
clickAction: app://com.picnic.android
|
|
icon_url: https://d2jxuf8ovdiw8x.cloudfront.net/uploads/sites/18/2020/11/logo.svg
|
|
notification_icon: mdi:cart
|
|
tag: picnic_alert
|
|
timeout: 1800
|
|
color: '#eb4034'
|
|
ttl: 0
|
|
priority: high
|
|
- alias: Schakel bewegingsdetectie uit
|
|
action: homeassistant.turn_off
|
|
data:
|
|
entity_id:
|
|
- switch.kiosk1_bewegingsdetectie
|
|
- switch.kiosk2_bewegingsdetectie
|
|
- switch.kiosk1_screensaver
|
|
- switch.kiosk2_screensaver
|
|
- alias: Schakel screensaver timeout uit
|
|
action: number.set_value
|
|
data:
|
|
value: 0
|
|
target:
|
|
entity_id:
|
|
- number.kiosk1_screensaver_timer
|
|
- number.kiosk2_screensaver_timer
|
|
- alias: Zet schermhelderheid op goed leesbaar niveau
|
|
action: number.set_value
|
|
data:
|
|
value: '{{255 if is_state(''sun.sun'', ''above_horizon'') else 125}}'
|
|
target:
|
|
entity_id:
|
|
- number.kiosk1_schermhelderheid
|
|
- number.kiosk2_schermhelderheid
|
|
- alias: Laat dashboard zien op kiosk
|
|
action: browser_mod.navigate
|
|
data:
|
|
path: /tsv-dashboards/picnic-eta
|
|
browser_id:
|
|
- kiosk1
|
|
- kiosk2
|
|
- action: timer.start
|
|
target:
|
|
entity_id: timer.picnic
|
|
data:
|
|
duration: 00:30:00
|
|
- id: picnic_delivery_complete
|
|
alias: 'Picnic: Delivery completed'
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.picnic_status_van_de_laatste_bestelling
|
|
to: COMPLETED
|
|
from: CURRENT
|
|
actions:
|
|
- action: timer.finish
|
|
target:
|
|
entity_id: timer.picnic
|
|
- id: picnic_reset_view
|
|
alias: 'Kiosk: terug vanaf Picnic naar startscherm'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.picnic
|
|
actions:
|
|
- alias: Ga weer terug naar startscherm
|
|
action: browser_mod.navigate
|
|
data:
|
|
path: /tsv-dashboards/tsv1
|
|
browser_id:
|
|
- kiosk1
|
|
- kiosk2
|
|
- alias: Schakel bewegingsdetectie in
|
|
action: homeassistant.turn_on
|
|
data:
|
|
entity_id:
|
|
- switch.kiosk1_bewegingsdetectie
|
|
- switch.kiosk2_bewegingsdetectie
|
|
- alias: Schakel screensaver timeout in
|
|
action: number.set_value
|
|
data:
|
|
value: 120
|
|
target:
|
|
entity_id:
|
|
- number.kiosk1_screensaver_timer
|
|
- number.kiosk2_screensaver_timer
|
|
- id: picnic_update_eta
|
|
alias: 'Picnic: update ETA'
|
|
mode: single
|
|
max_exceeded: silent
|
|
description: Update Picnic sensors more frequently if delivery is near
|
|
trigger:
|
|
- platform: time_pattern
|
|
minutes: /2
|
|
condition:
|
|
- '{{ 2100 > (as_timestamp(states(''sensor.picnic_verwacht_einde_van_de_volgende_bestelling''),
|
|
0) - as_timestamp(now(), 0)) > 0}}'
|
|
action:
|
|
- service: homeassistant.update_entity
|
|
entity_id:
|
|
- sensor.picnic_verwacht_begin_van_de_volgende_bestelling
|
|
- sensor.picnic_status_van_de_laatste_bestelling
|
|
- postcodeloterij_package:
|
|
rest_command:
|
|
postcodeloterij:
|
|
url: https://www.postcodeloterij.nl/public/rest/drawresults/winnings/NPL/P_{{
|
|
'E' if extra | default(false) | bool(false) else 'M' }}T_P{{ month | default((now().replace(day=1)
|
|
- timedelta(days=1)).strftime("%Y%m")) }}/?resultSize=10
|
|
method: POST
|
|
payload: secret postcodeloterij_postcode
|
|
headers:
|
|
Content-Type: application/x-www-form-urlencoded
|
|
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
|
|
(KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36
|
|
template:
|
|
- trigger:
|
|
- trigger: time
|
|
at: '18:00'
|
|
- trigger: event
|
|
event_type: update_postcodeloterij_prizes
|
|
id: manual
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ trigger.id == ''manual'' or now().day in [1,2,3] }}'
|
|
action:
|
|
- variables:
|
|
month: "{{\n trigger.event.data.month | int\n if\n trigger.platform\
|
|
\ == 'event'\n and trigger.event.data is defined\n and 'month' in\
|
|
\ trigger.event.data\n else\n (now().replace(day=1) - timedelta(days=1)).strftime(\"\
|
|
%Y%m\") | int\n}}\n"
|
|
month_formatted: '{% set months = [''januari'', ''februari'', ''maart'',
|
|
''april'', ''mei'', ''juni'', ''juli'', ''augustus'', ''september'', ''october'',
|
|
''november'', ''december''] %} {{ months[month % 100 -1] ~ '' '' ~ month
|
|
// 100 }}
|
|
|
|
'
|
|
- action: rest_command.postcodeloterij
|
|
data:
|
|
month: '{{ month }}'
|
|
response_variable: prizes
|
|
- action: rest_command.postcodeloterij
|
|
data:
|
|
extra: true
|
|
month: '{% set y = month // 100 %} {% set m = month % 100 %} {% set mapping
|
|
= {6: 13, 12: 14} %} {{ y * 100 + mapping[m] | default(m) }}
|
|
|
|
'
|
|
response_variable: prizes_extra
|
|
- variables:
|
|
prizecount: '{{ prizes.content.prizeCount }}'
|
|
prizes: "{% set ns = namespace(prizes=[]) %} {% for p in prizes.content.wonPrizes\
|
|
\ %}\n {% set ns.prizes = ns.prizes + [p.description ~ ' (€ ' ~'{:.2f}'.format(p.prizeValue\
|
|
\ / 100) ~ ')'] %}\n{% endfor %} {{ ns.prizes }}\n"
|
|
prize_text: "{% if prizecount > 0 %}\n {% set m = 'prijs' if prizecount\
|
|
\ == 1 else (prizecount ~ ' prijzen') %}\n {{ m }} in de trekking van\
|
|
\ {{ month_formatted }}: {{ prizes | join(', ') }}\n{% endif %}\n"
|
|
prizecount_extra: '{{ prizes_extra.content.prizeCount }}'
|
|
prizes_extra: "{% set ns = namespace(prizes=[]) %} {% for p in prizes_extra.content.wonPrizes\
|
|
\ %}\n {% set ns.prizes = ns.prizes + [p.description ~ ' (€ ' ~'{:.2f}'.format(p.prizeValue\
|
|
\ / 100) ~ ')'] %}\n{% endfor %} {{ ns.prizes }}\n"
|
|
prize_text_extra: "{% if prizecount_extra > 0 %}\n {% set m = 'prijs' if\
|
|
\ prizecount_extra == 1 else (prizecount_extra ~ ' prijzen') %}\n {{\
|
|
\ m }} in de extra trekking: {{ prizes_extra | join(', ') }}\n{% endif\
|
|
\ %}\n"
|
|
prizecount_total: '{{ prizecount + prizecount_extra }}'
|
|
prize_text_full: 'We hebben {{ [prize_text, prize_text_extra] | select()
|
|
| join('' en '') }}
|
|
|
|
'
|
|
- if: "{{\n prizecount_total | default(0) > 0\n and month_formatted = state_attr('sensor.postcodeloterij',\
|
|
\ 'month')\n}}\n"
|
|
then:
|
|
- alias: Send notification
|
|
action: notify.mobile_devices_adults
|
|
data:
|
|
title: 🎁 Winnen doe je bij...
|
|
message: '{{ prize_text_full }}'
|
|
data:
|
|
channel: LotteryPrize
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:gift
|
|
tag: LotteryPrize
|
|
sensor:
|
|
- name: Postcodeloterij
|
|
unique_id: 12f71395-3d76-434a-a3d0-9f01a03b834c
|
|
icon: '{{ ''mdi:gift'' if prizecount > 0 else ''mdi:emoticon-cry'' }}'
|
|
state: '{{ prizecount + prizecount_extra }}'
|
|
attributes:
|
|
prizes: '{{ prizes }}'
|
|
month: '{{ month_formatted }}'
|
|
extra: '{{ month % 100 in [6, 12] }}'
|
|
prizes_extra: '{{ prizes_extra }}'
|
|
last_updated: '{{ now().strftime(''%d-%m-%Y %H:%M'') }}'
|
|
- id: warn_pc_time_duration_pubercave
|
|
alias: Waarschuwing dat de puber te lang op de PC zit
|
|
mode: queued
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.pubercave_pc_on_today
|
|
above: input_number.maxi_pc_time_weekday
|
|
id: weekday
|
|
- trigger: numeric_state
|
|
entity_id: sensor.pubercave_pc_on_today
|
|
above: input_number.maxi_pc_time_weekend
|
|
id: weekend
|
|
conditions:
|
|
- or:
|
|
- and:
|
|
- '{{ trigger.id == "weekday" }}'
|
|
- condition: time
|
|
weekday:
|
|
- mon
|
|
- tue
|
|
- wed
|
|
- thu
|
|
- fri
|
|
- and:
|
|
- '{{ trigger.id == "weekend" }}'
|
|
- condition: time
|
|
weekday:
|
|
- sat
|
|
- sun
|
|
actions:
|
|
- action: tts.microsoft_say
|
|
data:
|
|
entity_id: media_player.zolder
|
|
message: Je tijd is op. Sluit je af?
|
|
- action: notify.mobile_devices_adults
|
|
data:
|
|
title: Puber PC
|
|
message: De puber heeft vandaag lang genoeg achter de PC gezeten ({{ now().strftime('%H:%M')
|
|
}}).
|
|
data:
|
|
tag: puber_pc
|
|
notification_icon: mdi:desktop-classic
|
|
priority: high
|
|
ttl: 0
|
|
- action: notify.mobile_app_schaduwspeler
|
|
data:
|
|
title: Gametijd
|
|
message: Je zit vandaag al lang genoeg achter de PC ({{ now().strftime('%H:%M')
|
|
}}).
|
|
data:
|
|
tag: puber_pc
|
|
notification_icon: mdi:desktop-classic
|
|
priority: high
|
|
ttl: 0
|
|
- action: automation.trigger
|
|
target:
|
|
entity_id: automation.knipper_de_lampen_als_de_puber_pc_tijd_over_is
|
|
- id: flash_lights_pc_time_over_pubercave
|
|
alias: Knipper de lampen als de puber PC tijd over is
|
|
mode: queued
|
|
triggers:
|
|
- trigger: time
|
|
at: input_datetime.time_maxi_gametime_over
|
|
conditions:
|
|
- condition: state
|
|
alias: Check if PC is on
|
|
entity_id: binary_sensor.pubercave_pc
|
|
state: 'on'
|
|
actions:
|
|
- action: scene.create
|
|
data:
|
|
scene_id: snapshot_pubercave
|
|
snapshot_entities:
|
|
- light.sonoff_l1
|
|
- light.battletron_ball_light_m
|
|
- delay:
|
|
seconds: 5
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.sonoff_l1
|
|
data:
|
|
color_name: red
|
|
effect: DIY Pulse
|
|
brightness_pct: 100
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.battletron_ball_light_m
|
|
data:
|
|
color_name: red
|
|
- delay:
|
|
seconds: 1
|
|
milliseconds: 200
|
|
- repeat:
|
|
count: 5
|
|
sequence:
|
|
- action: light.toggle
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- light.battletron_ball_light_m
|
|
- delay:
|
|
seconds: 1
|
|
milliseconds: 200
|
|
- action: light.toggle
|
|
data: {}
|
|
target:
|
|
entity_id:
|
|
- light.battletron_ball_light_m
|
|
- delay:
|
|
seconds: 1
|
|
milliseconds: 200
|
|
- delay:
|
|
seconds: 5
|
|
- action: scene.turn_on
|
|
data:
|
|
entity_id: scene.snapshot_pubercave
|
|
- id: warn_power_usage_after_bedtime_attic
|
|
alias: Waarschuwing dat de pubercave nog stroom verbruikt
|
|
description: 'Reading light: the kid shouldn''t be reading after bedtime, so we
|
|
track the power usage of his bedside light with an always on switch Pubercave:
|
|
mancave for the adolescent kid. It has a TV that obviously shouldn''t be on after
|
|
bedtime... So let''s trigger a notification if it is :)'
|
|
mode: queued
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.leeslampje_zolder_power
|
|
above: 3
|
|
for:
|
|
minutes: 2
|
|
id: Leeslampje
|
|
- trigger: numeric_state
|
|
entity_id: sensor.pubercave_tv_power
|
|
above: 25
|
|
id: TV
|
|
- trigger: state
|
|
entity_id: binary_sensor.schoollaptop_m
|
|
to: 'on'
|
|
for:
|
|
minutes: 2
|
|
id: Schoollaptop
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.notify_power_use_attic
|
|
state: 'on'
|
|
- condition: time
|
|
after: input_datetime.time_leeslampje_attic
|
|
actions:
|
|
- action: notify.mobile_devices_adults
|
|
data:
|
|
title: Pubercave {{ trigger.id }}
|
|
message: "{% if trigger.id == \"Leeslampje\" %}\n Het lampje op zolder staat\
|
|
\ nog aan... ({{ now().strftime('%H:%M') }}).\n{% elif trigger.id == \"Schoollaptop\"\
|
|
\ %}\n De schoollaptop op zolder staat nog aan... ({{ now().strftime('%H:%M')\
|
|
\ }}).\n{% else %}\n De TV op zolder staat nog aan... ({{ now().strftime('%H:%M')\
|
|
\ }}).\n{% endif %}"
|
|
data:
|
|
tag: pubercave
|
|
notification_icon: mdi:home-lightning-bolt
|
|
ttl: 0
|
|
priority: high
|
|
- id: power_logging_attic
|
|
alias: Log stroomverbruik in de pubercave
|
|
description: Because the switch is always on and only used for power tracking, we
|
|
need another way to track this switch in the logbook. We use 25 watts as crossover
|
|
point, because the PS4 sometimes charges the controllers and thus consumes a bit
|
|
of power.
|
|
mode: queued
|
|
triggers:
|
|
- trigger: numeric_state
|
|
entity_id: sensor.pubercave_tv_power
|
|
above: 25
|
|
id: pubercave
|
|
- trigger: numeric_state
|
|
entity_id: sensor.pubercave_tv_power
|
|
below: 25
|
|
id: pubercave
|
|
- trigger: numeric_state
|
|
entity_id: sensor.leeslampje_zolder_power
|
|
above: 3
|
|
id: leeslampje
|
|
- trigger: numeric_state
|
|
entity_id: sensor.leeslampje_zolder_power
|
|
below: 3
|
|
id: leeslampje
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
condition: trigger
|
|
id: pubercave
|
|
sequence:
|
|
- action: logbook.log
|
|
data:
|
|
name: Pubercave zolder
|
|
entity_id: sensor.pubercave_tv_power
|
|
message: '{{ iif(states(''sensor.pubercave_tv_power'') | float(0) > 25,
|
|
"is aan", "is uit" )}}'
|
|
- conditions:
|
|
condition: trigger
|
|
id: leeslampje
|
|
sequence:
|
|
- action: logbook.log
|
|
data:
|
|
name: Leeslampje zolder
|
|
entity_id: sensor.leeslampje_zolder_power
|
|
message: '{{ iif(states(''sensor.leeslampje_zolder_power'') | float(0) >
|
|
3, "is aan", "is uit" )}}'
|
|
- id: lights_schuur
|
|
alias: Zet de verlichting van de schuur aan of uit
|
|
mode: restart
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_schuur_occupancy
|
|
to: 'on'
|
|
from: 'off'
|
|
variables:
|
|
action: turn_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_schuur_occupancy
|
|
to: 'off'
|
|
from: 'on'
|
|
variables:
|
|
action: turn_off
|
|
conditions: []
|
|
actions:
|
|
- alias: Lamp schuur bedienen...
|
|
action: switch.{{ action }}
|
|
target:
|
|
entity_id: switch.schuur
|
|
- id: wakeup_light_mini
|
|
alias: Wakeup light mini
|
|
mode: single
|
|
triggers:
|
|
- trigger: time
|
|
at: sensor.home_mini_slaapkamer_t_alarms
|
|
conditions: []
|
|
actions:
|
|
- delay: 00:00:01
|
|
- action: light.turn_on
|
|
data:
|
|
brightness_pct: 5
|
|
target:
|
|
entity_id:
|
|
- light.ledstrip_bed_mini
|
|
- delay: 00:00:02
|
|
- repeat:
|
|
sequence:
|
|
- service: light.turn_on
|
|
data:
|
|
entity_id: light.ledstrip_bed_mini
|
|
brightness: '{{ state_attr(''light.ledstrip_bed_mini'', ''brightness'')
|
|
| int + 15 }}'
|
|
- delay: 2
|
|
until:
|
|
condition: or
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ state_attr(''light.ledstrip_bed_mini'', ''brightness'')
|
|
| int >= 191 }}'
|
|
- condition: state
|
|
entity_id: light.ledstrip_bed_mini
|
|
state: 'off'
|
|
- delay: 00:10:00
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.ledstrip_bed_mini
|
|
- id: turn_off_lights_t_when_starting_google_home_sleeping_sounds
|
|
alias: Lampen slaapkamer T uit als 'zomerse nachtgeluiden' beginnen
|
|
mode: queued
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: media_player.slaapkamer_t
|
|
attribute: app_id
|
|
to: 9731D581
|
|
for: 00:00:02
|
|
conditions: null
|
|
actions:
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id: media_player.slaapkamer_t
|
|
volume_level: 0.4
|
|
- if:
|
|
- condition: state
|
|
entity_id: light.ledstrip_bed_mini
|
|
state: 'on'
|
|
then:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.ledstrip_bed_mini
|
|
data:
|
|
transition: 5
|
|
- delay: 00:40:00
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id: media_player.slaapkamer_t
|
|
volume_level: 0.3
|
|
- delay: 00:05:00
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id: media_player.slaapkamer_t
|
|
volume_level: 0.1
|
|
- action: media_player.turn_off
|
|
data:
|
|
entity_id: media_player.slaapkamer_t
|
|
- id: solar_upload_to_pvoutput
|
|
alias: Stuur solar informatie naar PVOutput
|
|
description: Upload values to PVOutput
|
|
triggers:
|
|
- trigger: time_pattern
|
|
minutes: /5
|
|
seconds: '0'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: sensor.work_mode
|
|
state: Normal
|
|
actions:
|
|
- action: rest_command.update_pvoutput
|
|
data: {}
|
|
mode: single
|
|
- id: solar_handle_pv_off
|
|
alias: Zet de zonnepanelen uit
|
|
description: Automation to automatically turn off my solar system when electricity
|
|
prices are below 0. This can be done automatically or by time schedule based on
|
|
input_datetime. It works by setting the "grid_export_limit" in the GoodWe integration
|
|
to 0%, effectively instructing the inverter that it isn't allowed to export (produce)
|
|
any power. Setting it back to 100% restarts the production again to the maximum
|
|
capacity of the inverter.
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.negatieve_stroomprijs
|
|
attribute: position
|
|
to: below
|
|
from: above
|
|
id: automatic_start
|
|
variables:
|
|
message: Je zonnepanelen zijn automatisch uitgeschakeld omdat de stroomprijs
|
|
negatief is.
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.negatieve_stroomprijs
|
|
attribute: position
|
|
to: above
|
|
from: below
|
|
id: automatic_stop
|
|
variables:
|
|
message: Je zonnepanelen zijn weer ingeschakeld omdat de stroomprijs positief
|
|
is.
|
|
- trigger: time
|
|
at: input_datetime.solar_pv_off_start
|
|
id: scheduled_start
|
|
variables:
|
|
message: Je zonnepanelen zijn uitgeschakeld op basis van je schedule.
|
|
- trigger: time
|
|
at: input_datetime.solar_pv_off_end
|
|
id: scheduled_stop
|
|
variables:
|
|
message: Je zonnepanelen zijn weer ingeschakeld op basis van je schedule.
|
|
conditions:
|
|
- alias: Check if inverter is actually working
|
|
condition: state
|
|
entity_id: sensor.work_mode
|
|
state: Normal
|
|
actions:
|
|
- alias: Choose what to execute
|
|
choose:
|
|
- conditions:
|
|
- condition: trigger
|
|
id: automatic_start
|
|
sequence:
|
|
- if:
|
|
- alias: Check if we enabled automatic turning on/off
|
|
condition: state
|
|
entity_id: input_boolean.solar_pv_off_automatic
|
|
state: 'on'
|
|
then:
|
|
- alias: Set grid export limit to 0% to turn off PV production
|
|
action: number.set_value
|
|
target:
|
|
entity_id: number.grid_export_limit
|
|
data:
|
|
value: '0'
|
|
else:
|
|
- stop: Stopping because automatic turning on/off is not enabled
|
|
- conditions:
|
|
- condition: trigger
|
|
id: automatic_stop
|
|
sequence:
|
|
- if:
|
|
- alias: Check if we enabled automatic turning on/off
|
|
condition: state
|
|
entity_id: input_boolean.solar_pv_off_automatic
|
|
state: 'on'
|
|
then:
|
|
- alias: Set grid export limit to 100% to turn on PV production
|
|
action: number.set_value
|
|
target:
|
|
entity_id: number.grid_export_limit
|
|
data:
|
|
value: '100'
|
|
else:
|
|
- stop: Stopping because automatic turning on/off is not enabled
|
|
- conditions:
|
|
- condition: trigger
|
|
id: scheduled_start
|
|
sequence:
|
|
- if:
|
|
- alias: Check if we enabled scheduled turning on/off
|
|
condition: state
|
|
entity_id: input_boolean.solar_pv_off_schedule
|
|
state: 'on'
|
|
then:
|
|
- alias: Set grid export limit to 0% to turn off PV production
|
|
action: number.set_value
|
|
target:
|
|
entity_id: number.grid_export_limit
|
|
data:
|
|
value: '0'
|
|
else:
|
|
- stop: Stopping because scheduled turning on/off is not enabled
|
|
- conditions:
|
|
- condition: trigger
|
|
id: scheduled_stop
|
|
sequence:
|
|
- if:
|
|
- alias: Check if we enabled scheduled turning on/off
|
|
condition: state
|
|
entity_id: input_boolean.solar_pv_off_schedule
|
|
state: 'on'
|
|
then:
|
|
- alias: Set grid export limit to 100% to turn on PV production
|
|
action: number.set_value
|
|
target:
|
|
entity_id: number.grid_export_limit
|
|
data:
|
|
value: '100'
|
|
- alias: Disable PV off schedule
|
|
action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.solar_pv_off_schedule
|
|
else:
|
|
- stop: Stopping because scheduled turning on/off is not enabled
|
|
- alias: Sending push notification
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Zonnepanelen update
|
|
message: '{{ message }}'
|
|
data:
|
|
tag: notification-solar
|
|
notification_icon: mdi:solar-power-variant
|
|
ttl: 0
|
|
priority: high
|
|
clickAction: /lovelace-admin/solar
|
|
- id: set_theme
|
|
alias: Stel thema in
|
|
triggers:
|
|
- trigger: homeassistant
|
|
event: start
|
|
- trigger: state
|
|
entity_id: sun.sun
|
|
actions:
|
|
- if: '{{ is_state(''sun.sun'', ''above_horizon'')}}'
|
|
then:
|
|
- action: frontend.set_theme
|
|
data:
|
|
name: Hmmbob light theme
|
|
mode: dark
|
|
else:
|
|
- action: frontend.set_theme
|
|
data:
|
|
name: Hmmbob dark theme
|
|
mode: dark
|
|
- id: ui_set_end_date
|
|
alias: Stel de datum van het eindveld op dezelfde dag in als de begindatum
|
|
description: 'System: Fix the UI - set date of end field to date of start field'
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: input_datetime.solar_pv_off_start
|
|
variables:
|
|
end_entity_id: input_datetime.solar_pv_off_end
|
|
actions:
|
|
- alias: Set date of desired end field
|
|
action: input_datetime.set_datetime
|
|
target:
|
|
entity_id: '{{ end_entity_id }}'
|
|
data:
|
|
date: '{{states(trigger.entity_id) | truncate(10, ''False'', '''') }}'
|
|
- alias: Stuur een melding dat er een nieuwe Home Assistant versie is
|
|
id: system_update_available_notification
|
|
description: Send notification on Home Assistant update available
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.latest_version
|
|
not_to:
|
|
- unknown
|
|
- unavailable
|
|
- none
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ states(''sensor.latest_version'') != states(''sensor.current_version'')
|
|
}}
|
|
|
|
'
|
|
actions:
|
|
- action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Upgrade time!
|
|
message: 'There is an upgrade for Home Assistant container pending! Version
|
|
{{ states(''sensor.latest_version'') }} just got released!
|
|
|
|
'
|
|
data:
|
|
tag: System
|
|
channel: System
|
|
notification_icon: mdi:cellphone-arrow-down
|
|
actions:
|
|
- action: URI
|
|
title: Open Changelog
|
|
uri: https://github.com/home-assistant/core/releases/tag/{{states('sensor.latest_version')}}
|
|
- alias: Verstuur melding welk afval opgehaald wordt
|
|
id: afval_meldingen
|
|
triggers:
|
|
- trigger: time
|
|
at: input_datetime.time_trash_warning_today
|
|
id: vandaag
|
|
- trigger: time
|
|
at: input_datetime.time_trash_warning_tomorrow
|
|
id: morgen
|
|
variables:
|
|
sensor: sensor.afvalinfo_home_{{ trigger.id }}
|
|
trash_descr:
|
|
PBD: plastic
|
|
GFT: GFT
|
|
Restafval: restafval
|
|
Papier: oud papier
|
|
PBD, Papier: plastic en oud papier
|
|
Papier, PBD: plastic en oud papier
|
|
afval: '{{ trash_descr.get(states(sensor), "onbekend") }}
|
|
|
|
'
|
|
conditions:
|
|
- alias: Do we want notifications?
|
|
condition: state
|
|
entity_id: input_boolean.notify_trash
|
|
state: 'on'
|
|
- alias: Do we have a valid state
|
|
condition: template
|
|
value_template: '{{ states(sensor) not in [''unknown'',''unavailable'',''none'',''geen'']
|
|
}}'
|
|
- condition: state
|
|
entity_id: input_boolean.vacation_mode_away
|
|
state: 'off'
|
|
actions:
|
|
- if:
|
|
- '{{trigger.id == "morgen" }}'
|
|
then:
|
|
- alias: New round of notifications, so resetting helper for next round
|
|
action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.trash_outside
|
|
- if:
|
|
- '{{trigger.id == "vandaag" }}'
|
|
- alias: Check if trash is outside already
|
|
condition: state
|
|
entity_id: input_boolean.trash_outside
|
|
state: 'on'
|
|
then:
|
|
- stop: Stopping notification sequence as trash is already outside
|
|
else:
|
|
- alias: Sending push notification
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Afvalinzameling
|
|
message: '{{ trigger.id | capitalize }} wordt het {{ afval }} opgehaald.'
|
|
data:
|
|
tag: notification-trash
|
|
notification_icon: mdi:delete
|
|
actions:
|
|
- action: trash_outside
|
|
title: Jep, staat buiten
|
|
ttl: 0
|
|
priority: high
|
|
- alias: Check if TTS should be played
|
|
condition: state
|
|
entity_id: input_boolean.notify_trash_voice
|
|
state: 'on'
|
|
- action: media_player.volume_set
|
|
data:
|
|
entity_id: media_player.kiosk1_fkb
|
|
volume_level: 0.9
|
|
- alias: Play TTS
|
|
action: tts.microsoft_say
|
|
entity_id: media_player.kiosk1_fkb
|
|
data:
|
|
message: '{{ trigger.id }} wordt het {{ afval }} opgehaald.'
|
|
- action: browser_mod.popup
|
|
data:
|
|
dismissable: true
|
|
autoclose: false
|
|
browser_id:
|
|
- kiosk1
|
|
- kiosk2
|
|
timeout: 60000
|
|
size: fullscreen
|
|
content:
|
|
type: picture
|
|
image: '{{ states(''input_text.trash_url_'' ~ states(sensor).replace(''
|
|
'', '''')) }}'
|
|
card_mod:
|
|
style:
|
|
ha-dialog$: "div.mdc-dialog .mdc-dialog__container .mdc-dialog__surface\
|
|
\ {\n background: black important;\n border: none important;\n border-style:\
|
|
\ solid important;\n border-color: black important;\n}\n"
|
|
- alias: Verwerk dat het afval buitengezet is
|
|
id: afval_process_reminder_status
|
|
triggers:
|
|
- trigger: event
|
|
event_type: mobile_app_notification_action
|
|
event_data:
|
|
action: trash_outside
|
|
actions:
|
|
- action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.trash_outside
|
|
- id: update_waze_to_home
|
|
alias: Werk Waze reistijd bij
|
|
description: 'Update: Waze travel time to home'
|
|
triggers:
|
|
- trigger: time_pattern
|
|
minutes: /5
|
|
seconds: 0
|
|
actions:
|
|
- action: homeassistant.update_entity
|
|
entity_id: sensor.reistijd_bob_naar_huis
|
|
- id: location_ask_to_send_notification_hmmbob_left
|
|
alias: Vraag of we een melding moeten versturen dat Bob vertrekt
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.sm_a556b_android_auto
|
|
from: 'off'
|
|
to: 'on'
|
|
conditions:
|
|
- not:
|
|
- or:
|
|
- condition: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
zone: zone.home
|
|
- condition: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
zone: zone.breda
|
|
- condition: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
zone: zone.vkl
|
|
- condition: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
zone: zone.adr
|
|
- condition: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
zone: zone.amc
|
|
- alias: Don't run if we already sent a message
|
|
condition: state
|
|
entity_id: input_boolean.location_bob_travelling_home
|
|
state: 'on'
|
|
actions:
|
|
- alias: Sending push notification
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Reistijd
|
|
message: Wil je een melding versturen?
|
|
data:
|
|
car_ui: true
|
|
notification_icon: mdi:car-side
|
|
actions:
|
|
- action: send_traveltime
|
|
title: Ja
|
|
tag: ask-waze
|
|
ttl: 0
|
|
priority: high
|
|
- id: location_notification_hmmbob_left_work
|
|
alias: Verstuur melding dat Bob van het werk vertrekt
|
|
triggers:
|
|
- trigger: event
|
|
event_type: mobile_app_notification_action
|
|
event_data:
|
|
action: send_traveltime
|
|
- trigger: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
event: leave
|
|
zone: zone.breda
|
|
- trigger: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
event: leave
|
|
zone: zone.vkl
|
|
- trigger: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
event: leave
|
|
zone: zone.adr
|
|
- trigger: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
event: leave
|
|
zone: zone.amc
|
|
conditions:
|
|
- condition: time
|
|
after: '14:00:00'
|
|
before: '19:00:00'
|
|
weekday:
|
|
- mon
|
|
- tue
|
|
- wed
|
|
- thu
|
|
- fri
|
|
actions:
|
|
- alias: Register that Bob is travelling home
|
|
action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.location_bob_travelling_home
|
|
- alias: Update Waze sensor (it doesn't update automatically)
|
|
action: homeassistant.update_entity
|
|
entity_id: sensor.reistijd_bob_naar_huis
|
|
- alias: Wait for the update to finish
|
|
delay:
|
|
seconds: 10
|
|
- alias: Ok, let's tell the people!
|
|
action: notify.mobile_devices_adults
|
|
data:
|
|
title: ♥ Bob is op weg naar huis!
|
|
message: 'Waze denkt dat hij om {{ (now() + timedelta(minutes=(3 + states("sensor.reistijd_bob_naar_huis")
|
|
| int))).strftime("%H:%M") }} thuis is.
|
|
|
|
'
|
|
data:
|
|
alert_once: true
|
|
car_ui: true
|
|
clickAction: /lovelace/locations
|
|
notification_icon: mdi:car-side
|
|
persistent: true
|
|
priority: high
|
|
sticky: true
|
|
tag: waze
|
|
ttl: 0
|
|
- action: notify.mobile_app_sm_a556b
|
|
data:
|
|
message: clear_notification
|
|
data:
|
|
tag: ask-waze
|
|
ttl: 0
|
|
priority: high
|
|
- action: automation.turn_on
|
|
target:
|
|
entity_id: automation.update_waze_travel_time_to_home
|
|
- id: location_update_traveltime_notification_hmmbob
|
|
alias: Werk reistijd notificatie bij met nieuwe gegevens
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.reistijd_bob_naar_huis
|
|
conditions:
|
|
- alias: Check if we still think he's travelling home
|
|
condition: state
|
|
entity_id: input_boolean.location_bob_travelling_home
|
|
state: 'on'
|
|
actions:
|
|
- alias: Estimated time of arrival is updated, let's inform the people
|
|
action: notify.mobile_devices_adults
|
|
data:
|
|
title: ♥ Bob is op weg naar huis!
|
|
message: 'Waze denkt dat hij om {{ (now() + timedelta(minutes=(3 + states("sensor.reistijd_bob_naar_huis")
|
|
| int))).strftime("%H:%M") }} thuis is.
|
|
|
|
'
|
|
data:
|
|
alert_once: true
|
|
car_ui: true
|
|
clickAction: /lovelace/locations
|
|
notification_icon: mdi:car-side
|
|
persistent: true
|
|
priority: high
|
|
sticky: true
|
|
tag: waze
|
|
ttl: 0
|
|
- id: location_clear_traveltime_notification
|
|
alias: Verwijder reistijd notificatie als ik weer thuis ben
|
|
triggers:
|
|
- trigger: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
event: enter
|
|
zone: zone.home
|
|
conditions:
|
|
- alias: Check if we still think he's travelling home
|
|
condition: state
|
|
entity_id: input_boolean.location_bob_travelling_home
|
|
state: 'on'
|
|
actions:
|
|
- action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.location_bob_travelling_home
|
|
- action: notify.mobile_devices_adults
|
|
data:
|
|
message: clear_notification
|
|
data:
|
|
tag: waze
|
|
ttl: 0
|
|
priority: high
|
|
- action: automation.turn_off
|
|
target:
|
|
entity_id: automation.update_waze_travel_time_to_home
|
|
- id: location_send_ev_charger_status
|
|
alias: Verstuur een melding om te laten weten of de laadpaal vrij is
|
|
triggers:
|
|
- trigger: zone
|
|
entity_id: device_tracker.sm_a556b
|
|
event: enter
|
|
zone: zone.laadpaal_waarschuwing
|
|
actions:
|
|
- variables:
|
|
laadpalen_werk:
|
|
- sensor.laadpaal_werk_1
|
|
- sensor.laadpaal_werk_2
|
|
laadpalen_extra:
|
|
- sensor.laadpaal_werk_3
|
|
- sensor.laadpaal_werk_4
|
|
message: "{{'Er is een laadpaal vrij bij het station!' if (laadpalen_werk |\
|
|
\ select('is_state', 'Available') | list | count > 0) \n else 'Er is een\
|
|
\ laadpaal vrij in de wijk!' if (laadpalen_extra | select('is_state', 'Available')\
|
|
\ | list | count > 0) \n else 'Helaas, geen laadpaal vrij.'}}"
|
|
- alias: Sending push notification
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Laadpaal
|
|
message: '{{ message }}'
|
|
data:
|
|
car_ui: true
|
|
notification_icon: mdi:ev-station
|
|
tag: charger_available
|
|
ttl: 0
|
|
priority: high
|
|
- id: ups_notification
|
|
alias: Verstuur een melding als we op de UPS draaien
|
|
mode: single
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- sensor.ups_battery_charge
|
|
- sensor.ups_status_data
|
|
variables:
|
|
runtime_left: '{% set runtime = states("sensor.ups_battery_runtime") | int %}
|
|
{% set hours = runtime // 3600 %} {% set minutes = (runtime % 3600) // 60 %}
|
|
{{ ''%du'' % hours if hours else '''' }}{{ ''%dm'' % minutes if minutes else
|
|
'''' }}
|
|
|
|
'
|
|
conditions:
|
|
- alias: Previous state of triggers is not unavailable or unkown
|
|
condition: template
|
|
value_template: '{{ trigger.from_state.state not in [''unavailable'', ''unknown'']
|
|
}}'
|
|
actions:
|
|
- alias: Choose our status
|
|
choose:
|
|
- conditions:
|
|
- alias: If we are On Battery DISCHaRGing
|
|
condition: state
|
|
entity_id: sensor.ups_status_data
|
|
state: OB DISCHRG
|
|
sequence:
|
|
- alias: We're running on battery!
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: 🪫 UPS ingeschakeld!
|
|
message: 'De servers draaien op UPS. Er is nog {{ runtime_left }} runtime
|
|
over.
|
|
|
|
'
|
|
data:
|
|
tag: UPS
|
|
alert_once: true
|
|
sticky: true
|
|
persistent: true
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:home-battery-outline
|
|
car_ui: true
|
|
- conditions:
|
|
- alias: If we are On Line CHaRGing
|
|
condition: state
|
|
entity_id: sensor.ups_status_data
|
|
state: OL CHRG
|
|
sequence:
|
|
- alias: We're back online, charging the UPS battery!
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: 🔋 UPS weer online & aan het opladen!
|
|
message: 'Er is weer stroom. De UPS laadt weer op en is {{ states("sensor.ups_battery_charge")
|
|
}}% vol.
|
|
|
|
'
|
|
data:
|
|
tag: UPS
|
|
alert_once: true
|
|
sticky: true
|
|
persistent: true
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:power-plug-battery-outline
|
|
car_ui: true
|
|
- conditions:
|
|
- alias: If we are back OnLine
|
|
condition: state
|
|
entity_id: sensor.ups_status_data
|
|
state: OL
|
|
sequence:
|
|
- action: notify.mobile_app_sm_a556b
|
|
data:
|
|
message: clear_notification
|
|
data:
|
|
tag: UPS
|
|
- id: warn_for_power_fail
|
|
alias: Stuur notificatie als een van de fases wegvalt
|
|
mode: parallel
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- binary_sensor.slimmelezer_power_failure_l1
|
|
- binary_sensor.slimmelezer_power_failure_l2
|
|
- binary_sensor.slimmelezer_power_failure_l3
|
|
to: 'on'
|
|
from: 'off'
|
|
conditions: []
|
|
actions:
|
|
- alias: Power failure
|
|
action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Power failure
|
|
message: '{{ state_attr(trigger.entity_id, ''friendly_name'') }}
|
|
|
|
'
|
|
data:
|
|
tag: power_failure
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:transmission-tower-off
|
|
car_ui: true
|
|
- id: lights_bijkeuken
|
|
alias: Zet de verlichting in de bijkeuken aan of uit
|
|
mode: restart
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_bijkeuken_occupancy
|
|
to: 'on'
|
|
from: 'off'
|
|
variables:
|
|
action: turn_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_bijkeuken_occupancy
|
|
to: 'off'
|
|
from: 'on'
|
|
variables:
|
|
action: turn_off
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.enable_pir_bijkeuken_automations
|
|
state: 'on'
|
|
actions:
|
|
- alias: Bijkeuken lamp bedienen...
|
|
action: switch.{{ action }}
|
|
target:
|
|
entity_id: switch.bijkeuken
|
|
- id: vacation_turn_on_time
|
|
alias: Zet de verlichting aan tijdens vakantie
|
|
initial_state: true
|
|
triggers:
|
|
trigger: time
|
|
at: input_datetime.time_vacation_lights_start
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.vacation_mode_away
|
|
state: 'on'
|
|
actions:
|
|
- delay: '{{ range(30*60) | random }}'
|
|
alias: Random delay between now and 30mins
|
|
- action: homeassistant.turn_on
|
|
entity_id:
|
|
- light.spots_woonkamer
|
|
- light.spots_eetkamer
|
|
- action: logbook.log
|
|
data:
|
|
name: Vacation
|
|
message: Lights turned on at {{ now().strftime('%H:%M') }}.
|
|
domain: light
|
|
- action: notify.mobile_app_sm_a556b
|
|
data:
|
|
message: I turned your vacation lights on at {{ now().strftime('%H:%M') }}.
|
|
title: Vacation lights
|
|
data:
|
|
ttl: 0
|
|
priority: high
|
|
- id: vacation_turn_off_time
|
|
alias: Zet de verlichting uit tijdens vakantie
|
|
triggers:
|
|
trigger: time
|
|
at: input_datetime.time_vacation_lights_end
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.vacation_mode_away
|
|
state: 'on'
|
|
actions:
|
|
- delay: '{{ range(15*60) | random }}'
|
|
alias: Random delay between now and 30mins
|
|
- action: homeassistant.turn_off
|
|
entity_id:
|
|
- light.spots_woonkamer
|
|
- light.spots_eetkamer
|
|
- action: logbook.log
|
|
data:
|
|
name: Vacation
|
|
message: Lights turned off at {{ now().strftime('%H:%M') }}.
|
|
domain: light
|
|
- action: notify.mobile_app_sm_a556b
|
|
data:
|
|
message: I turned your lights off at {{ now().strftime('%H:%M') }}.
|
|
title: Vacation lights
|
|
data:
|
|
ttl: 0
|
|
priority: high
|
|
- id: vacation_movement_inside
|
|
alias: Beweging gedetecteerd tijdens vakantie
|
|
trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- binary_sensor.fietsenhok_contact
|
|
- binary_sensor.pir_bijkeuken_occupancy
|
|
- binary_sensor.pir_gang_kapstok_motion_detection
|
|
- binary_sensor.pir_gang_meterkast_motion_detection
|
|
- binary_sensor.pir_inloopkast_occupancy
|
|
- binary_sensor.poort_contact
|
|
from: 'off'
|
|
to: 'on'
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.vacation_mode_away
|
|
state: 'on'
|
|
action:
|
|
- service: notify.mobile_app_sm_a556b
|
|
data:
|
|
message: Er is beweging gedetecteerd door {{ trigger.from_state.attributes.friendly_name
|
|
}} ({{ now().strftime('%H:%M') }})
|
|
title: Movement in the house
|
|
data:
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:shield-home
|
|
- service: logbook.log
|
|
data:
|
|
name: Vacation
|
|
message: Er is beweging gedetecteerd door {{ trigger.from_state.attributes.friendly_name
|
|
}}.
|
|
domain: binary_sensor
|
|
- alias: Vraag of Rocky moet stofzuigen
|
|
id: vacuum_ask_to_run
|
|
variables:
|
|
notification_service: '{% if is_state("device_tracker.sm_a566b", "home") and is_state("device_tracker.sm_a556b",
|
|
"home") %}notify.mobile_devices_adults {% elif is_state("device_tracker.sm_a566b",
|
|
"home") %}notify.mobile_app_sm_a566b {% elif is_state("device_tracker.sm_a556b",
|
|
"home") %}notify.mobile_app_sm_a556b {% else %}notify.bogus {% endif %}
|
|
|
|
'
|
|
triggers:
|
|
- trigger: time
|
|
at: input_datetime.vacuum_ask_for_cleaning_time
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.vacuum_enable_ask_for_cleaning
|
|
state: 'on'
|
|
- '{{ as_timestamp(now()) - as_timestamp(states(''sensor.rocky_last_clean_start''))
|
|
> 86100 }}'
|
|
- condition: state
|
|
entity_id: input_boolean.vacation_mode_away
|
|
state: 'off'
|
|
actions:
|
|
- alias: Vraag of Rocky een rondje moet doen
|
|
action: '{{ notification_service }}'
|
|
data:
|
|
message: Zal ik gaan stofzuigen? 🧹🧹
|
|
title: Rocky
|
|
data:
|
|
tag: vacuum
|
|
actions:
|
|
- action: vacuum_start_yes
|
|
title: 🧹 Ja, graag!
|
|
- action: vacuum_start_no
|
|
title: Nee, dank je.
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:robot-vacuum
|
|
- alias: Wacht op antwoord...
|
|
wait_for_trigger:
|
|
- trigger: event
|
|
event_type: mobile_app_notification_action
|
|
event_data:
|
|
action: vacuum_start_yes
|
|
timeout: 01:00:00
|
|
continue_on_timeout: false
|
|
- alias: Start Rocky na bevestiging
|
|
action: vacuum.start
|
|
target:
|
|
entity_id: vacuum.rocky
|
|
- alias: Stuur Rocky naar de vuilnisbak
|
|
id: vacuum_drive_to_trash
|
|
initial_state: 'on'
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: vacuum.rocky
|
|
from: cleaning
|
|
to: returning
|
|
actions:
|
|
- alias: Stop Rocky before sending goto command
|
|
action: vacuum.stop
|
|
entity_id: vacuum.rocky
|
|
- delay: 00:00:02
|
|
- alias: Send Rocky to the trash can
|
|
action: vacuum.send_command
|
|
data:
|
|
command: app_goto_target
|
|
params:
|
|
- 30301
|
|
- 29421
|
|
target:
|
|
entity_id: vacuum.rocky
|
|
- alias: Wait for Rocky to arrive at trash can
|
|
wait_for_trigger:
|
|
- trigger: state
|
|
entity_id: vacuum.rocky
|
|
to: idle
|
|
timeout: 00:05:00
|
|
continue_on_timeout: false
|
|
- action: notify.mobile_devices_adults
|
|
data:
|
|
message: 🧹 Hi! Ik moet geleegd worden en sta al bij de prullenbak. Druk na het
|
|
legen op mijn 🏠 toets en ik ga terug naar mijn dock.
|
|
title: Rocky
|
|
data:
|
|
tag: vacuum
|
|
actions:
|
|
- action: vacuum_return_to_dock
|
|
title: Keer terug naar je dock
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:robot-vacuum
|
|
- alias: Stuur Rocky terug naar het dock
|
|
id: vacuum_return_to_dock
|
|
initial_state: 'on'
|
|
triggers:
|
|
- trigger: event
|
|
event_type: mobile_app_notification_action
|
|
event_data:
|
|
action: vacuum_return_to_dock
|
|
actions:
|
|
- action: vacuum.return_to_base
|
|
alias: Returning to dock
|
|
target:
|
|
entity_id: vacuum.rocky
|
|
- alias: Melding dat Rocky aan het stofzuigen is
|
|
id: vacuum_notification_cleaning_started
|
|
initial_state: 'on'
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: vacuum.rocky
|
|
from: docked
|
|
to: cleaning
|
|
actions:
|
|
- action: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Rocky
|
|
message: Rocky doet zijn rondje! 🧹🧹
|
|
data:
|
|
tag: vacuum
|
|
notification_icon: mdi:robot-vacuum
|
|
- alias: Verwijder notificaties van Rocky
|
|
id: vacuum_clear_messages
|
|
initial_state: 'on'
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.rocky_vacuum_error
|
|
to: none
|
|
- trigger: state
|
|
entity_id: vacuum.rocky
|
|
from: returning
|
|
to: docked
|
|
actions:
|
|
- action: notify.mobile_devices_adults
|
|
data:
|
|
message: clear_notification
|
|
data:
|
|
tag: vacuum
|
|
ttl: 0
|
|
priority: high
|
|
- alias: Melding dat Rocky in foutmodus staat
|
|
id: vacuum_notification_error
|
|
initial_state: 'on'
|
|
variables:
|
|
notification_service: '{% if is_state("device_tracker.sm_a566b", "home") and is_state("device_tracker.sm_a556b",
|
|
"home") %}notify.mobile_devices_adults {% elif is_state("device_tracker.sm_a566b",
|
|
"home") %}notify.mobile_app_sm_a566b {% elif is_state("device_tracker.sm_a556b",
|
|
"home") %}notify.mobile_app_sm_a556b {% else %}notify.bogus {% endif %}
|
|
|
|
'
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.rocky_vacuum_error
|
|
conditions:
|
|
- condition: not
|
|
conditions:
|
|
- condition: state
|
|
entity_id: sensor.rocky_vacuum_error
|
|
state: none
|
|
- condition: state
|
|
entity_id: sensor.rocky_vacuum_error
|
|
state: unavailable
|
|
actions:
|
|
- action: '{{ notification_service }}'
|
|
data:
|
|
title: Rocky heeft een probleem
|
|
message: 'Foutmelding: {{state_translated(''sensor.rocky_vacuum_error'')}}'
|
|
data:
|
|
tag: vacuum
|
|
ttl: 0
|
|
priority: high
|
|
notification_icon: mdi:robot-vacuum
|
|
- alias: Waarschuw als Rocky onderhoud nodig heeft
|
|
id: vacuum_consumable_warning
|
|
initial_state: 'on'
|
|
mode: queued
|
|
variables:
|
|
consumables:
|
|
- sensor: sensor.rocky_filter_time_left
|
|
button: button.rocky_reset_air_filter_consumable
|
|
name: filter
|
|
- sensor: sensor.rocky_main_brush_time_left
|
|
button: button.rocky_reset_main_brush_consumable
|
|
name: hoofd borstel
|
|
- sensor: sensor.rocky_sensor_time_left
|
|
button: button.rocky_reset_sensor_consumable
|
|
name: sensor
|
|
- sensor: sensor.rocky_side_brush_time_left
|
|
button: button.rocky_reset_side_brush_consumable
|
|
name: zijborstel
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id:
|
|
- sensor.rocky_filter_time_left
|
|
- sensor.rocky_main_brush_time_left
|
|
- sensor.rocky_sensor_time_left
|
|
- sensor.rocky_side_brush_time_left
|
|
below: 0
|
|
action:
|
|
- variables:
|
|
triggered_sensor: '{{ trigger.entity_id }}'
|
|
consumable: '{{ consumables | selectattr(''sensor'', ''eq'', triggered_sensor)
|
|
| list | first }}'
|
|
- service: notify.mobile_app_sm_a556b
|
|
data:
|
|
title: Rocky onderhoud nodig
|
|
message: De {{ consumable.name }} van Rocky moet worden vervangen of schoongemaakt.
|
|
Wil je de teller resetten?
|
|
data:
|
|
tag: rocky_maintenance
|
|
notification_icon: mdi:robot-vacuum
|
|
actions:
|
|
- action: reset_consumable
|
|
title: Reset teller
|
|
- action: ignore
|
|
title: Later
|
|
ttl: 0
|
|
priority: high
|
|
- wait_for_trigger:
|
|
- platform: event
|
|
event_type: mobile_app_notification_action
|
|
event_data:
|
|
action: reset_consumable
|
|
timeout: 01:00:00
|
|
continue_on_timeout: false
|
|
- choose:
|
|
- conditions: '{{ wait.trigger is not none }}'
|
|
sequence:
|
|
- service: button.press
|
|
target:
|
|
entity_id: '{{ consumable.button }}'
|
|
- conditions: '{{ wait.trigger is none }}'
|
|
sequence:
|
|
- service: persistent_notification.create
|
|
data:
|
|
title: Rocky onderhoud niet gereset
|
|
message: De {{ consumable.name }} teller is niet gereset. Vergeet het niet
|
|
als je onderhoud hebt gedaan!
|
|
notification_id: rocky_maintenance_{{ consumable.name }}
|
|
- id: ventilation_handle_button
|
|
alias: Start de ventilatie timer als we op een knop drukken
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- event.drukknop_badkamer_action
|
|
- event.drukknop_badkamer_zolder_action
|
|
- event.drukknop_bijkeuken_action
|
|
to: null
|
|
variables:
|
|
event: '{{ trigger.to_state.attributes.event_type | default(''unknown'', true)
|
|
}}'
|
|
conditions:
|
|
- '{{ event not in [''unknown'',''unavailable''] }}'
|
|
actions:
|
|
- action: timer.start
|
|
target:
|
|
entity_id: timer.fan_runtime
|
|
data:
|
|
duration: '{{''01:00:00'' if event in [''brightness_move_up'',''1_long_press'']
|
|
else ''00:30:00''}}'
|
|
- id: ventilation_boost_speed
|
|
alias: Stel een hogere ventilatiesnelheid in als de timer start
|
|
triggers:
|
|
- trigger: event
|
|
event_type: timer.started
|
|
event_data:
|
|
entity_id: timer.fan_runtime
|
|
actions:
|
|
- alias: Boost ventilation on request
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.open_air_mini
|
|
data:
|
|
percentage: 80
|
|
- id: ventilation_set_speed
|
|
alias: Stel de ventilatiesnelheid in
|
|
mode: queued
|
|
triggers:
|
|
- trigger: time
|
|
id: time
|
|
at:
|
|
- 07:00:00
|
|
- 09:00:00
|
|
- '21:15:00'
|
|
- trigger: homeassistant
|
|
event: start
|
|
id: ha_start
|
|
- trigger: event
|
|
event_type: automation_reloaded
|
|
id: automation_reload
|
|
- trigger: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.fan_runtime
|
|
actions:
|
|
- alias: Check if this is triggered by HA restart
|
|
if:
|
|
condition: trigger
|
|
id: ha_start
|
|
then:
|
|
- delay:
|
|
minutes: 1
|
|
- alias: Cancel any running timers
|
|
action: timer.cancel
|
|
target:
|
|
entity_id: timer.fan_runtime
|
|
- alias: Checking what time it is...
|
|
choose:
|
|
- alias: It's between 7hrs and 09:00 and on a working day
|
|
conditions:
|
|
- condition: time
|
|
after: 06:59:59
|
|
before: 09:00:00
|
|
- condition: state
|
|
entity_id: binary_sensor.werkdag
|
|
state: 'on'
|
|
sequence:
|
|
- alias: Boost during morning hours because of showering
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.open_air_mini
|
|
data:
|
|
percentage: 70
|
|
- alias: It's between 09hrs and 21hrs
|
|
conditions:
|
|
- condition: time
|
|
after: 08:59:59
|
|
before: '21:00:00'
|
|
sequence:
|
|
- alias: Run at half speed during the day
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.open_air_mini
|
|
data:
|
|
percentage: 50
|
|
- alias: It's between 21hrs and 7hrs
|
|
conditions:
|
|
- condition: time
|
|
after: '20:59:59'
|
|
before: 07:00:00
|
|
sequence:
|
|
- alias: Sleep tight
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.open_air_mini
|
|
data:
|
|
percentage: 20
|
|
- id: wakeup_light_maxi
|
|
alias: Wakeup light maxi
|
|
mode: single
|
|
triggers:
|
|
- trigger: time
|
|
at: sensor.zolder_alarms
|
|
conditions: []
|
|
actions:
|
|
- action: light.turn_on
|
|
data:
|
|
brightness_pct: 100
|
|
color_temp_kelvin: 3500
|
|
target:
|
|
entity_id: light.sonoff_l1
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.battletron_ball_light_m
|
|
- delay: 00:05:00
|
|
- service: light.turn_off
|
|
entity_id:
|
|
- light.battletron_ball_light_m
|
|
- light.sonoff_l1
|
|
- id: lights_wc_beneden
|
|
alias: Zet de verlichting van de WC beneden aan of uit
|
|
mode: restart
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_wc_beneden_occupancy
|
|
to: 'on'
|
|
from: 'off'
|
|
variables:
|
|
action: turn_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_wc_beneden_occupancy
|
|
to: 'off'
|
|
from: 'on'
|
|
for: 00:01:00
|
|
variables:
|
|
action: turn_off
|
|
conditions: []
|
|
actions:
|
|
- alias: Lamp WC beneden bedienen...
|
|
action: switch.{{ action }}
|
|
target:
|
|
entity_id: switch.wc_beneden
|
|
- id: ventilation_wc_beneden
|
|
alias: Ventilatie aan als iemand lang op de WC beneden zit
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: switch.wc_beneden
|
|
to: 'on'
|
|
for: 00:03:00
|
|
conditions:
|
|
- alias: Als de ventilatie timer nog niet loopt
|
|
condition: state
|
|
entity_id: timer.fan_runtime
|
|
state: idle
|
|
actions:
|
|
- alias: Afzuiging aanzetten
|
|
action: timer.start
|
|
target:
|
|
entity_id: timer.fan_runtime
|
|
data:
|
|
duration: 00:10:00
|
|
- id: lights_wc_boven
|
|
alias: Zet de verlichting van de WC boven aan of uit
|
|
mode: restart
|
|
max_exceeded: silent
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_wc_boven_occupancy
|
|
to: 'on'
|
|
from: 'off'
|
|
id: turn_on
|
|
- trigger: state
|
|
entity_id: binary_sensor.pir_wc_boven_occupancy
|
|
to: 'off'
|
|
from: 'on'
|
|
id: turn_off
|
|
conditions: []
|
|
actions:
|
|
- alias: Checking what to do
|
|
choose:
|
|
- alias: Do we need to turn on the lights?
|
|
conditions:
|
|
- '{{ trigger.id == ''turn_on'' }}'
|
|
sequence:
|
|
- if:
|
|
- alias: Is het tijdens de donkere uren?
|
|
condition: time
|
|
after: '22:30:00'
|
|
before: 06:45:00
|
|
then:
|
|
- alias: Lamp WC boven gedimd aan...
|
|
action: light.turn_on
|
|
target:
|
|
entity_id: light.wc_boven
|
|
data:
|
|
brightness: 80
|
|
else:
|
|
- alias: Lamp WC boven voluit aan...
|
|
action: light.turn_on
|
|
target:
|
|
entity_id: light.wc_boven
|
|
data:
|
|
brightness: 255
|
|
- alias: Do we need to turn off the lights?
|
|
conditions:
|
|
- '{{ trigger.id == ''turn_off'' }}'
|
|
sequence:
|
|
- alias: Lamp WC boven uitzetten...
|
|
action: light.turn_off
|
|
target:
|
|
entity_id: light.wc_boven
|
|
- id: ventilation_wc_boven
|
|
alias: Ventilatie aan als iemand lang op de WC zit
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: light.wc_boven
|
|
to: 'on'
|
|
for: 00:03:00
|
|
conditions:
|
|
- alias: Als de ventilatie timer nog niet loopt
|
|
condition: state
|
|
entity_id: timer.fan_runtime
|
|
state: idle
|
|
actions:
|
|
- alias: Afzuiging aanzetten
|
|
action: timer.start
|
|
target:
|
|
entity_id: timer.fan_runtime
|
|
data:
|
|
duration: 00:10:00
|
|
- id: rotate_turns
|
|
alias: Wissel de beurt voor het tafeldekken
|
|
triggers:
|
|
- trigger: time
|
|
at:
|
|
- 00:01:00
|
|
weekday:
|
|
- mon
|
|
actions:
|
|
- action: input_select.select_next
|
|
target:
|
|
entity_id: input_select.tafeldekken_beurt
|