Skip to content

Instantly share code, notes, and snippets.

@FrankTub
Last active December 16, 2025 18:16
Show Gist options
  • Select an option

  • Save FrankTub/75b37af55bb0132a29f8d393841143b4 to your computer and use it in GitHub Desktop.

Select an option

Save FrankTub/75b37af55bb0132a29f8d393841143b4 to your computer and use it in GitHub Desktop.
CCA trace resident sensor turning of results in false opening of cover
{
"trace": {
"last_step": "action/4/choose/0/sequence/1/choose/1/sequence/3",
"run_id": "81d2cb89b387d6bd1c2e258d69437dc0",
"state": "stopped",
"script_execution": "finished",
"timestamp": {
"start": "2025-12-16T15:53:35.386686+00:00",
"finish": "2025-12-16T15:53:42.963613+00:00"
},
"domain": "automation",
"item_id": "1740225314027",
"trigger": "state of input_boolean.resident_sensor_maeve",
"trace": {
"trigger/5": [
{
"path": "trigger/5",
"timestamp": "2025-12-16T15:53:35.396066+00:00",
"changed_variables": {
"this": {
"entity_id": "automation.frummel_rolluik",
"state": "on",
"attributes": {
"id": "1740225314027",
"last_triggered": "2025-12-16T15:33:02.079567+00:00",
"mode": "single",
"current": 0,
"friendly_name": "Maeve rolluik"
},
"last_changed": "2025-12-15T14:23:12.587127+00:00",
"last_reported": "2025-12-16T15:33:02.162547+00:00",
"last_updated": "2025-12-16T15:33:02.162547+00:00",
"context": {
"id": "01KCKWP7ZNAM022VGZSEE370NK",
"parent_id": null,
"user_id": null
}
},
"trigger": {
"id": "t_open_6",
"idx": "5",
"alias": null,
"platform": "state",
"entity_id": "input_boolean.resident_sensor_maeve",
"from_state": {
"entity_id": "input_boolean.resident_sensor_maeve",
"state": "on",
"attributes": {
"editable": true,
"icon": "mdi:sleep",
"friendly_name": "Resident sensor Maeve"
},
"last_changed": "2025-12-16T14:30:43.678456+00:00",
"last_reported": "2025-12-16T14:30:43.678456+00:00",
"last_updated": "2025-12-16T14:30:43.678456+00:00",
"context": {
"id": "01KCKS456VCDKS17WFA2N8DEJE",
"parent_id": "01KCKS37X9AJ048QP7G3M6SJVG",
"user_id": null
}
},
"to_state": {
"entity_id": "input_boolean.resident_sensor_maeve",
"state": "off",
"attributes": {
"editable": true,
"icon": "mdi:sleep",
"friendly_name": "Resident sensor Maeve"
},
"last_changed": "2025-12-16T15:53:35.386296+00:00",
"last_reported": "2025-12-16T15:53:35.386296+00:00",
"last_updated": "2025-12-16T15:53:35.386296+00:00",
"context": {
"id": "01KCKXVWCQTPC4RJCWGAPPCSR1",
"parent_id": "01KCKXPCKMNZ34Y4BV1NM7XFZA",
"user_id": null
}
},
"for": null,
"attribute": null,
"description": "state of input_boolean.resident_sensor_maeve"
},
"blind": "cover.rolluik_maeve",
"open_position": 100,
"close_position": 0,
"ventilate_position": 13,
"shading_position": 25,
"position_tolerance": 0,
"open_tilt_position": 50,
"close_tilt_position": 50,
"ventilate_tilt_position": 50,
"shading_tilt_elevation_1": 20,
"shading_tilt_elevation_2": 30,
"shading_tilt_elevation_3": 48,
"shading_tilt_position_0": 0,
"shading_tilt_position_1": 20,
"shading_tilt_position_2": 37,
"shading_tilt_position_3": 50,
"auto_options": [
"auto_down_enabled",
"auto_sun_enabled",
"auto_ventilate_enabled",
"auto_shading_enabled",
"auto_up_enabled"
],
"time_up_early": "07:00:00",
"time_up_early_non_workday": "07:00:00",
"time_up_late": "09:00:00",
"time_up_late_non_workday": "09:00:00",
"time_down_early": "16:30:00",
"time_down_early_non_workday": "16:30:00",
"time_down_late": "18:00:00",
"time_down_late_non_workday": "18:00:00",
"workday_sensor_today": "binary_sensor.workday_sensor",
"workday_sensor_tomorrow": "binary_sensor.workday_tomorrow",
"default_brightness_sensor": [],
"brightness_up": 0,
"brightness_down": 0,
"default_sun_sensor": "sun.sun",
"sun_elevation_up": 0,
"sun_elevation_down": 0,
"resident_sensor": "input_boolean.resident_sensor_maeve",
"contact_window_tilted": "binary_sensor.raamsensor_maeve_openen",
"contact_window_opened": [],
"lockout_tilted_options": [],
"lockout_tilted_when_closing": false,
"lockout_tilted_when_shading_starts": false,
"lockout_tilted_when_shading_ends": false,
"prevent_opening_movement": "input_boolean.zonwering_buiten_mag_niet_omhoog_bewegen",
"time_control": "time_control_input",
"time_schedule_helper": [],
"shading_brightness_sensor": [],
"shading_temperatur_sensor1": "sensor.airco_maeve_kamertemperatuur",
"shading_temperatur_sensor2": "sensor.knmi_temperatuur",
"shading_min_temperatur1": 18,
"shading_min_temperatur2": 18,
"shading_temperature_hysteresis1": 0.5,
"shading_temperature_hysteresis2": 0.5,
"shading_azimuth_start": 290,
"shading_azimuth_end": 110,
"shading_elevation_min": 10,
"shading_elevation_max": 90,
"shading_sun_brightness_start": 35000,
"shading_sun_brightness_end": 25000,
"shading_forecast_sensor": "weather.knmi_thuis",
"shading_forecast_type": "daily",
"shading_forecast_temp": 18,
"shading_weather_conditions": [],
"is_shading_enabled": true,
"cover_tilt_config": "cover_tilt_disabled",
"is_cover_tilt_enabled": false,
"is_up_enabled": true,
"is_down_enabled": true,
"is_brightness_enabled": false,
"is_sun_elevation_enabled": true,
"is_ventilation_enabled": true,
"is_time_field_enabled": true,
"is_schedule_helper_enabled": false,
"is_time_control_disabled": false,
"reset_override_config": "reset_timeout",
"reset_override_time": "17:59:30",
"reset_override_timeout": 60,
"is_reset_disabled": false,
"is_reset_fixed_time": false,
"is_reset_timeout": true,
"cover_status_options": "cover_helper_enabled",
"cover_status_helper": "input_text.maeve_rolluik_helper",
"version": "2025.08.15",
"blind_entities": [
"cover.rolluik_maeve"
],
"current_position": 0,
"current_tilt_position": 101,
"current_sun_azimuth": 235.66,
"current_sun_elevation": -3.43,
"is_today_off": false,
"is_tomorrow_off": false,
"is_tomorrow_on": true,
"drive_delay_fix": 0,
"drive_delay_random": 5,
"drive_time": 90,
"time_up_early_today": "07:00:00",
"time_up_late_today": "09:00:00",
"time_down_early_today": "16:30:00",
"time_down_late_today": "18:00:00",
"auto_up_force": "input_boolean.ramenzemer_modus",
"auto_down_force": [],
"auto_ventilate_force": [],
"auto_shading_start_force": [],
"auto_up_force_disabled": true,
"auto_down_force_disabled": true,
"auto_ventilate_force_disabled": true,
"auto_shading_start_force_disabled": true,
"is_cover_tilt_enabled_and_possible": false,
"cover_tilt_reposition_config": "cover_tilt_reposition_disabled",
"is_cover_tilt_reposition_enabled": false,
"shading_tilt_position": 0,
"shading_waitingtime_start": 120,
"shading_waitingtime_end": 300,
"is_shading_end_immediate_by_sun_position": true,
"shading_start_behavior": "trigger_reset",
"shading_end_behavior": "open_position",
"start_shading_trigger_reset": true,
"start_shading_trigger_periodic": false,
"shading_config": [],
"is_shading_temp_comparison_independent": false,
"is_shading_compare_forecast_with_sensor2": false,
"is_status_helper_enabled": true,
"helper_state_json": {
"open": {
"a": 0,
"t": 1765871149
},
"close": {
"a": 1,
"t": 1765895526
},
"shading": {
"a": 0,
"t": 0,
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": 1765819395
},
"vfull": {
"a": 0,
"t": 0
},
"manual": {
"a": 0,
"t": 1765899182
},
"v": 5,
"t": 1765899182
},
"is_helper_open": false,
"is_helper_closed": true,
"is_helper_shaded": false,
"is_helper_shading_start": false,
"is_helper_shading_end": false,
"is_helper_vent_partial": false,
"is_helper_vent_full": false,
"is_helper_manual": false,
"ts_helper_open": 1765871149,
"ts_helper_closed": 1765895526,
"ts_helper_shaded": 0,
"ts_helper_vent_partial": 1765819395,
"ts_helper_vent_full": 0,
"ts_helper_manual": 1765899182,
"in_open_position": false,
"in_close_position": true,
"in_shading_position": false,
"in_ventilate_position": false,
"individual_config": [
"prevent_higher_position_closing",
"prevent_shading_end_if_closed"
],
"prevent_higher_position_closing": true,
"prevent_lowering_when_closing_if_shaded": false,
"prevent_forecast_service": false,
"prevent_shading_end_if_closed": true,
"prevent_opening_after_shading_end": false,
"prevent_opening_after_ventilation_end": false,
"prevent_default_cover_actions": false,
"prevent_shading_multiple_times": false,
"prevent_opening_multiple_times": false,
"prevent_closing_multiple_times": false,
"prevent_opening_movement_disabled": true,
"resident_config": [
"resident_opening_enabled"
],
"resident_opening_enabled": true,
"resident_closing_enabled": false,
"resident_allow_shading": false,
"resident_allow_opening": false,
"resident_allow_ventilation": false,
"ignore_after_manual_config": [
"ignore_opening_after_manual",
"ignore_ventilation_after_manual",
"ignore_closing_after_manual",
"ignore_shading_after_manual"
],
"override_opening_after_manual": true,
"override_closing_after_manual": true,
"override_ventilation_after_manual": true,
"override_shading_after_manual": true,
"auto_ventilate_options": [
"ventilation_delay_enabled"
],
"ventilation_delay_enabled": true,
"ventilation_if_lower_enabled": false,
"ventilation_after_shading_end": false,
"check_config": false,
"check_config_debuglevel": "info",
"check_status_helper_length": 254
}
}
],
"condition/0": [
{
"path": "condition/0",
"timestamp": "2025-12-16T15:53:35.396133+00:00",
"result": {
"result": true
}
}
],
"condition/1": [
{
"path": "condition/1",
"timestamp": "2025-12-16T15:53:35.396206+00:00",
"result": {
"result": true
}
}
],
"condition/1/conditions/0": [
{
"path": "condition/1/conditions/0",
"timestamp": "2025-12-16T15:53:35.396255+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"condition/1/conditions/1": [
{
"path": "condition/1/conditions/1",
"timestamp": "2025-12-16T15:53:35.396471+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"condition/2": [
{
"path": "condition/2",
"timestamp": "2025-12-16T15:53:35.396704+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/0": [
{
"path": "action/0",
"timestamp": "2025-12-16T15:53:35.397226+00:00",
"changed_variables": {
"context": {
"id": "01KCKXVWCTPK69PNTMMY65TX2A",
"parent_id": "01KCKXVWCQTPC4RJCWGAPPCSR1",
"user_id": null
},
"cover_move_action": {
"sequence": [
{
"repeat": {
"for_each": [
"cover.rolluik_maeve"
],
"sequence": [
{
"choose": [
{
"conditions": [
true,
false
],
"sequence": [
{
"alias": "Close Cover",
"service": "cover.close_cover",
"target": {
"entity_id": ""
}
}
]
},
{
"conditions": [
true,
false
],
"sequence": [
{
"alias": "Open Cover",
"service": "cover.open_cover",
"target": {
"entity_id": ""
}
}
]
},
{
"conditions": [
true,
true
],
"sequence": [
{
"alias": "Moving the cover to target position",
"service": "cover.set_cover_position",
"data": {
"position": 101
},
"target": {
"entity_id": ""
}
}
]
}
]
},
{
"delay": {
"seconds": 2
}
}
]
}
}
]
},
"tilt_move_action": {
"sequence": [
{
"if": [
true,
false,
false
],
"then": [
{
"repeat": {
"for_each": [
"cover.rolluik_maeve"
],
"sequence": [
{
"if": [
false
],
"then": [
{
"alias": "Reset Tilt",
"service": "cover.set_cover_tilt_position",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": ""
}
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"service": "cover.set_cover_tilt_position",
"data": {
"tilt_position": 101
},
"target": {
"entity_id": ""
}
},
{
"delay": {
"seconds": 2
}
}
]
}
}
]
}
]
},
"helper_update": {
"if": [
true
],
"then": [
{
"alias": "Update cover status helper",
"service": "input_text.set_value",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": {
"open": {
"a": 0,
"t": 1765871149
},
"close": {
"a": 1,
"t": 1765895526
},
"shading": {
"a": 0,
"t": 0,
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": 1765819395
},
"vfull": {
"a": 0,
"t": 0
},
"manual": {
"a": 0,
"t": 1765899182
},
"v": 5,
"t": 1765899182
}
}
}
]
},
"cover_move_and_tilt_and_update_helper": [
{
"if": [
{
"and": [
{
"or": [
true,
false
]
},
{
"or": [
true,
false
]
}
]
}
],
"then": [
{
"sequence": [
{
"repeat": {
"for_each": [
"cover.rolluik_maeve"
],
"sequence": [
{
"choose": [
{
"conditions": [
true,
false
],
"sequence": [
{
"alias": "Close Cover",
"service": "cover.close_cover",
"target": {
"entity_id": ""
}
}
]
},
{
"conditions": [
true,
false
],
"sequence": [
{
"alias": "Open Cover",
"service": "cover.open_cover",
"target": {
"entity_id": ""
}
}
]
},
{
"conditions": [
true,
true
],
"sequence": [
{
"alias": "Moving the cover to target position",
"service": "cover.set_cover_position",
"data": {
"position": 101
},
"target": {
"entity_id": ""
}
}
]
}
]
},
{
"delay": {
"seconds": 2
}
}
]
}
}
]
},
{
"sequence": [
{
"if": [
true,
false,
false
],
"then": [
{
"repeat": {
"for_each": [
"cover.rolluik_maeve"
],
"sequence": [
{
"if": [
false
],
"then": [
{
"alias": "Reset Tilt",
"service": "cover.set_cover_tilt_position",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": ""
}
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"service": "cover.set_cover_tilt_position",
"data": {
"tilt_position": 101
},
"target": {
"entity_id": ""
}
},
{
"delay": {
"seconds": 1
}
}
]
}
}
]
}
]
}
]
},
{
"if": [
{
"or": [
{
"and": [
{
"or": [
true,
false
]
},
{
"or": [
true,
false
]
}
]
},
false
]
}
],
"then": [
{
"if": [
true
],
"then": [
{
"alias": "Update cover status helper",
"service": "input_text.set_value",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": {
"open": {
"a": 0,
"t": 1765871149
},
"close": {
"a": 1,
"t": 1765895526
},
"shading": {
"a": 0,
"t": 0,
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": 1765819395
},
"vfull": {
"a": 0,
"t": 0
},
"manual": {
"a": 0,
"t": 1765899182
},
"v": 5,
"t": 1765899182
}
}
}
]
}
]
}
]
}
}
],
"action/1": [
{
"path": "action/1",
"timestamp": "2025-12-16T15:53:35.405428+00:00"
}
],
"action/1/if": [
{
"path": "action/1/if",
"timestamp": "2025-12-16T15:53:35.405684+00:00",
"result": {
"result": false
}
}
],
"action/1/if/condition/0": [
{
"path": "action/1/if/condition/0",
"timestamp": "2025-12-16T15:53:35.406283+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/1/if/condition/1": [
{
"path": "action/1/if/condition/1",
"timestamp": "2025-12-16T15:53:35.407292+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/1/if/condition/2": [
{
"path": "action/1/if/condition/2",
"timestamp": "2025-12-16T15:53:35.408286+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/1/if/condition/3": [
{
"path": "action/1/if/condition/3",
"timestamp": "2025-12-16T15:53:35.409281+00:00",
"result": {
"result": true,
"entities": [
"weather.knmi_thuis"
]
}
}
],
"action/1/if/condition/4": [
{
"path": "action/1/if/condition/4",
"timestamp": "2025-12-16T15:53:35.410336+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/1/if/condition/5": [
{
"path": "action/1/if/condition/5",
"timestamp": "2025-12-16T15:53:35.411343+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"action/2": [
{
"path": "action/2",
"timestamp": "2025-12-16T15:53:35.412575+00:00"
}
],
"action/2/if": [
{
"path": "action/2/if",
"timestamp": "2025-12-16T15:53:35.412807+00:00",
"result": {
"result": false
}
}
],
"action/2/if/condition/0": [
{
"path": "action/2/if/condition/0",
"timestamp": "2025-12-16T15:53:35.413381+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/2/if/condition/1": [
{
"path": "action/2/if/condition/1",
"timestamp": "2025-12-16T15:53:35.414584+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/2/if/condition/2": [
{
"path": "action/2/if/condition/2",
"timestamp": "2025-12-16T15:53:35.415591+00:00",
"result": {
"result": false
}
}
],
"action/2/if/condition/2/conditions/0": [
{
"path": "action/2/if/condition/2/conditions/0",
"timestamp": "2025-12-16T15:53:35.416167+00:00",
"result": {
"result": false,
"entities": [
"input_text.maeve_rolluik_helper"
]
}
}
],
"action/2/if/condition/2/conditions/1": [
{
"path": "action/2/if/condition/2/conditions/1",
"timestamp": "2025-12-16T15:53:35.417186+00:00",
"result": {
"result": false,
"entities": [
"input_text.maeve_rolluik_helper"
]
}
}
],
"action/3": [
{
"path": "action/3",
"timestamp": "2025-12-16T15:53:35.418466+00:00"
}
],
"action/3/if": [
{
"path": "action/3/if",
"timestamp": "2025-12-16T15:53:35.418695+00:00",
"result": {
"result": false
}
}
],
"action/3/if/condition/0": [
{
"path": "action/3/if/condition/0",
"timestamp": "2025-12-16T15:53:35.419263+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/3/if/condition/1": [
{
"path": "action/3/if/condition/1",
"timestamp": "2025-12-16T15:53:35.420251+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"action/4": [
{
"path": "action/4",
"timestamp": "2025-12-16T15:53:35.421456+00:00",
"changed_variables": {
"target_position": 100,
"target_tilt_position": 50,
"update_values": {
"open": {
"a": 1,
"t": 1765900420
},
"close": {
"a": 0,
"t": 1765895526
},
"shading": {
"a": 0,
"t": 0,
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": 1765819395
},
"vfull": {
"a": 0,
"t": 0
},
"manual": {
"a": 0,
"t": 1765899182
},
"t": 1765900420
}
},
"result": {
"choice": 0
}
}
],
"action/4/choose/0": [
{
"path": "action/4/choose/0",
"timestamp": "2025-12-16T15:53:35.421681+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/conditions/0": [
{
"path": "action/4/choose/0/conditions/0",
"timestamp": "2025-12-16T15:53:35.422263+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/1": [
{
"path": "action/4/choose/0/conditions/1",
"timestamp": "2025-12-16T15:53:35.423250+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/2": [
{
"path": "action/4/choose/0/conditions/2",
"timestamp": "2025-12-16T15:53:35.424237+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/3": [
{
"path": "action/4/choose/0/conditions/3",
"timestamp": "2025-12-16T15:53:35.425230+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/conditions/4": [
{
"path": "action/4/choose/0/conditions/4",
"timestamp": "2025-12-16T15:53:35.425819+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/conditions/4/conditions/0": [
{
"path": "action/4/choose/0/conditions/4/conditions/0",
"timestamp": "2025-12-16T15:53:35.426392+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/4/conditions/1": [
{
"path": "action/4/choose/0/conditions/4/conditions/1",
"timestamp": "2025-12-16T15:53:35.427470+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/4/conditions/2": [
{
"path": "action/4/choose/0/conditions/4/conditions/2",
"timestamp": "2025-12-16T15:53:35.428464+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/5": [
{
"path": "action/4/choose/0/conditions/5",
"timestamp": "2025-12-16T15:53:35.429459+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/conditions/5/conditions/0": [
{
"path": "action/4/choose/0/conditions/5/conditions/0",
"timestamp": "2025-12-16T15:53:35.430047+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/6": [
{
"path": "action/4/choose/0/conditions/6",
"timestamp": "2025-12-16T15:53:35.431045+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/7": [
{
"path": "action/4/choose/0/conditions/7",
"timestamp": "2025-12-16T15:53:35.432030+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/conditions/7/conditions/0": [
{
"path": "action/4/choose/0/conditions/7/conditions/0",
"timestamp": "2025-12-16T15:53:35.432604+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"action/4/choose/0/conditions/7/conditions/1": [
{
"path": "action/4/choose/0/conditions/7/conditions/1",
"timestamp": "2025-12-16T15:53:35.433582+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/8": [
{
"path": "action/4/choose/0/conditions/8",
"timestamp": "2025-12-16T15:53:35.434578+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/conditions/8/conditions/0": [
{
"path": "action/4/choose/0/conditions/8/conditions/0",
"timestamp": "2025-12-16T15:53:35.435155+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"action/4/choose/0/conditions/8/conditions/1": [
{
"path": "action/4/choose/0/conditions/8/conditions/1",
"timestamp": "2025-12-16T15:53:35.436147+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/9": [
{
"path": "action/4/choose/0/conditions/9",
"timestamp": "2025-12-16T15:53:35.437136+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/conditions/9/conditions/0": [
{
"path": "action/4/choose/0/conditions/9/conditions/0",
"timestamp": "2025-12-16T15:53:35.437744+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"action/4/choose/0/conditions/9/conditions/1": [
{
"path": "action/4/choose/0/conditions/9/conditions/1",
"timestamp": "2025-12-16T15:53:35.438743+00:00",
"result": {
"result": true,
"entities": [
"input_boolean.resident_sensor_maeve"
]
}
}
],
"action/4/choose/0/conditions/10": [
{
"path": "action/4/choose/0/conditions/10",
"timestamp": "2025-12-16T15:53:35.439775+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/conditions/10/conditions/0": [
{
"path": "action/4/choose/0/conditions/10/conditions/0",
"timestamp": "2025-12-16T15:53:35.440364+00:00",
"result": {
"result": false
}
}
],
"action/4/choose/0/conditions/10/conditions/0/conditions/0": [
{
"path": "action/4/choose/0/conditions/10/conditions/0/conditions/0",
"timestamp": "2025-12-16T15:53:35.440934+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"action/4/choose/0/conditions/10/conditions/1": [
{
"path": "action/4/choose/0/conditions/10/conditions/1",
"timestamp": "2025-12-16T15:53:35.441953+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/conditions/10/conditions/1/conditions/0": [
{
"path": "action/4/choose/0/conditions/10/conditions/1/conditions/0",
"timestamp": "2025-12-16T15:53:35.442522+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/10/conditions/1/conditions/1": [
{
"path": "action/4/choose/0/conditions/10/conditions/1/conditions/1",
"timestamp": "2025-12-16T15:53:35.443511+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/conditions/10/conditions/1/conditions/2": [
{
"path": "action/4/choose/0/conditions/10/conditions/1/conditions/2",
"timestamp": "2025-12-16T15:53:35.444555+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/0": [
{
"path": "action/4/choose/0/sequence/0",
"timestamp": "2025-12-16T15:53:35.445845+00:00",
"result": {
"delay": 5,
"done": true
}
}
],
"action/4/choose/0/sequence/1": [
{
"path": "action/4/choose/0/sequence/1",
"timestamp": "2025-12-16T15:53:40.448021+00:00",
"changed_variables": {
"target_position": 100,
"target_tilt_position": 50,
"update_values": {
"open": {
"a": 1,
"t": 1765900420
},
"close": {
"a": 0,
"t": 1765895526
},
"shading": {
"a": 0,
"t": 0,
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": 1765819395
},
"vfull": {
"a": 0,
"t": 0
},
"manual": {
"a": 0,
"t": 1765899182
},
"t": 1765900420
}
},
"result": {
"choice": 1
}
}
],
"action/4/choose/0/sequence/1/choose/0": [
{
"path": "action/4/choose/0/sequence/1/choose/0",
"timestamp": "2025-12-16T15:53:40.448291+00:00",
"result": {
"result": false
}
}
],
"action/4/choose/0/sequence/1/choose/0/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/0/conditions/0",
"timestamp": "2025-12-16T15:53:40.448877+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/0/conditions/1": [
{
"path": "action/4/choose/0/sequence/1/choose/0/conditions/1",
"timestamp": "2025-12-16T15:53:40.449960+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1",
"timestamp": "2025-12-16T15:53:40.450984+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/conditions/0",
"timestamp": "2025-12-16T15:53:40.451556+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/conditions/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/conditions/1",
"timestamp": "2025-12-16T15:53:40.452536+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/conditions/1/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/conditions/1/conditions/0",
"timestamp": "2025-12-16T15:53:40.453094+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/0",
"timestamp": "2025-12-16T15:53:40.454290+00:00",
"result": {
"choice": "default"
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/1",
"timestamp": "2025-12-16T15:53:40.454869+00:00",
"changed_variables": {
"target_position": 100,
"target_tilt_position": 50,
"update_values": {
"open": {
"a": 1,
"t": 1765900420
},
"close": {
"a": 0,
"t": 1765895526
},
"shading": {
"a": 0,
"t": 0,
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": 1765819395
},
"vfull": {
"a": 0,
"t": 0
},
"manual": {
"a": 0,
"t": 1765899182
},
"t": 1765900420
}
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2",
"timestamp": "2025-12-16T15:53:40.456978+00:00"
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0",
"timestamp": "2025-12-16T15:53:40.457296+00:00",
"result": {
"choice": "then"
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if",
"timestamp": "2025-12-16T15:53:40.457535+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0",
"timestamp": "2025-12-16T15:53:40.458124+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0/conditions/0",
"timestamp": "2025-12-16T15:53:40.458690+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0/conditions/0/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0/conditions/0/conditions/0",
"timestamp": "2025-12-16T15:53:40.459250+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0/conditions/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0/conditions/1",
"timestamp": "2025-12-16T15:53:40.460268+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0/conditions/1/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/if/condition/0/conditions/1/conditions/0",
"timestamp": "2025-12-16T15:53:40.460835+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0",
"timestamp": "2025-12-16T15:53:40.461973+00:00"
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0",
"timestamp": "2025-12-16T15:53:40.462273+00:00"
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0",
"timestamp": "2025-12-16T15:53:40.463037+00:00",
"changed_variables": {
"repeat": {
"first": true,
"index": 1,
"last": true,
"item": "cover.rolluik_maeve"
}
},
"result": {
"choice": 1
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/0",
"timestamp": "2025-12-16T15:53:40.463537+00:00",
"result": {
"result": false
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/0/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/0/conditions/0",
"timestamp": "2025-12-16T15:53:40.464432+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/0/conditions/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/0/conditions/1",
"timestamp": "2025-12-16T15:53:40.465976+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/1",
"timestamp": "2025-12-16T15:53:40.467483+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/1/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/1/conditions/0",
"timestamp": "2025-12-16T15:53:40.468373+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/1/conditions/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/1/conditions/1",
"timestamp": "2025-12-16T15:53:40.469863+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/1/sequence/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/0/choose/1/sequence/0",
"timestamp": "2025-12-16T15:53:40.472247+00:00",
"child_id": {
"domain": "automation",
"item_id": "1745343451841",
"run_id": "5aa05c9c055a19bbebe958e526bbc134"
},
"result": {
"params": {
"domain": "cover",
"service": "open_cover",
"service_data": {},
"target": {
"entity_id": [
"cover.rolluik_maeve"
]
}
},
"running_script": false
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/0/sequence/0/repeat/sequence/1",
"timestamp": "2025-12-16T15:53:40.942307+00:00",
"result": {
"delay": 2,
"done": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1",
"timestamp": "2025-12-16T15:53:42.946065+00:00"
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1/sequence/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1/sequence/0",
"timestamp": "2025-12-16T15:53:42.946488+00:00"
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1/sequence/0/if": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1/sequence/0/if",
"timestamp": "2025-12-16T15:53:42.946746+00:00",
"result": {
"result": false
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1/sequence/0/if/condition/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1/sequence/0/if/condition/0",
"timestamp": "2025-12-16T15:53:42.947344+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1/sequence/0/if/condition/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/0/then/1/sequence/0/if/condition/1",
"timestamp": "2025-12-16T15:53:42.948451+00:00",
"result": {
"result": false,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1",
"timestamp": "2025-12-16T15:53:42.950316+00:00",
"result": {
"choice": "then"
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if",
"timestamp": "2025-12-16T15:53:42.950550+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0",
"timestamp": "2025-12-16T15:53:42.951147+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0",
"timestamp": "2025-12-16T15:53:42.951714+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0/conditions/0",
"timestamp": "2025-12-16T15:53:42.952278+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0/conditions/0/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0/conditions/0/conditions/0",
"timestamp": "2025-12-16T15:53:42.952844+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0/conditions/1": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0/conditions/1",
"timestamp": "2025-12-16T15:53:42.953926+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0/conditions/1/conditions/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/if/condition/0/conditions/0/conditions/1/conditions/0",
"timestamp": "2025-12-16T15:53:42.954513+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/then/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/then/0",
"timestamp": "2025-12-16T15:53:42.955680+00:00",
"result": {
"choice": "then"
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/then/0/if": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/then/0/if",
"timestamp": "2025-12-16T15:53:42.955920+00:00",
"result": {
"result": true
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/then/0/if/condition/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/then/0/if/condition/0",
"timestamp": "2025-12-16T15:53:42.956497+00:00",
"result": {
"result": true,
"entities": []
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/then/0/then/0": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/2/sequence/1/then/0/then/0",
"timestamp": "2025-12-16T15:53:42.957604+00:00",
"result": {
"params": {
"domain": "input_text",
"service": "set_value",
"service_data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": {
"open": {
"a": 1,
"t": 1765900420
},
"close": {
"a": 0,
"t": 1765895526
},
"shading": {
"a": 0,
"t": 0,
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": 1765819395
},
"vfull": {
"a": 0,
"t": 0
},
"manual": {
"a": 0,
"t": 1765899182
},
"v": 5,
"t": 1765900420
}
},
"target": {}
},
"running_script": false
}
}
],
"action/4/choose/0/sequence/1/choose/1/sequence/3": [
{
"path": "action/4/choose/0/sequence/1/choose/1/sequence/3",
"timestamp": "2025-12-16T15:53:42.962255+00:00",
"result": {
"choice": "default"
}
}
]
},
"config": {
"trigger_variables": {
"blind": "cover.rolluik_maeve",
"open_position": 100,
"close_position": 0,
"ventilate_position": 13,
"shading_position": 25,
"position_tolerance": 0,
"open_tilt_position": 50,
"close_tilt_position": 50,
"ventilate_tilt_position": 50,
"shading_tilt_elevation_1": 20,
"shading_tilt_elevation_2": 30,
"shading_tilt_elevation_3": 48,
"shading_tilt_position_0": 0,
"shading_tilt_position_1": 20,
"shading_tilt_position_2": 37,
"shading_tilt_position_3": 50,
"auto_options": [
"auto_down_enabled",
"auto_sun_enabled",
"auto_ventilate_enabled",
"auto_shading_enabled",
"auto_up_enabled"
],
"time_up_early": "07:00:00",
"time_up_early_non_workday": "07:00:00",
"time_up_late": "09:00:00",
"time_up_late_non_workday": "09:00:00",
"time_down_early": "16:30:00",
"time_down_early_non_workday": "16:30:00",
"time_down_late": "18:00:00",
"time_down_late_non_workday": "18:00:00",
"workday_sensor_today": "binary_sensor.workday_sensor",
"workday_sensor_tomorrow": "binary_sensor.workday_tomorrow",
"default_brightness_sensor": [],
"brightness_up": 0,
"brightness_down": 0,
"default_sun_sensor": "sun.sun",
"sun_elevation_up": 0,
"sun_elevation_down": 0,
"resident_sensor": "input_boolean.resident_sensor_maeve",
"contact_window_tilted": "binary_sensor.raamsensor_maeve_openen",
"contact_window_opened": [],
"lockout_tilted_options": [],
"lockout_tilted_when_closing": "{{ 'lockout_tilted_closing' in lockout_tilted_options }}",
"lockout_tilted_when_shading_starts": "{{ 'lockout_tilted_shading_start' in lockout_tilted_options }}",
"lockout_tilted_when_shading_ends": "{{ 'lockout_tilted_shading_end' in lockout_tilted_options }}",
"prevent_opening_movement": "input_boolean.zonwering_buiten_mag_niet_omhoog_bewegen",
"time_control": "time_control_input",
"time_schedule_helper": [],
"shading_brightness_sensor": [],
"shading_temperatur_sensor1": "sensor.airco_maeve_kamertemperatuur",
"shading_temperatur_sensor2": "sensor.knmi_temperatuur",
"shading_min_temperatur1": 18,
"shading_min_temperatur2": 18,
"shading_temperature_hysteresis1": 0.5,
"shading_temperature_hysteresis2": 0.5,
"shading_azimuth_start": 290,
"shading_azimuth_end": 110,
"shading_elevation_min": 10,
"shading_elevation_max": 90,
"shading_sun_brightness_start": 35000,
"shading_sun_brightness_end": 25000,
"shading_forecast_sensor": "weather.knmi_thuis",
"shading_forecast_type": "daily",
"shading_forecast_temp": 18,
"shading_weather_conditions": [],
"is_shading_enabled": "{{ 'auto_shading_enabled' in auto_options }}",
"cover_tilt_config": "cover_tilt_disabled",
"is_cover_tilt_enabled": "{{ 'cover_tilt_enabled' in cover_tilt_config }}",
"is_up_enabled": "{{ 'auto_up_enabled' in auto_options }}",
"is_down_enabled": "{{ 'auto_down_enabled' in auto_options }}",
"is_brightness_enabled": "{{ 'auto_brightness_enabled' in auto_options }}",
"is_sun_elevation_enabled": "{{ 'auto_sun_enabled' in auto_options }}",
"is_ventilation_enabled": "{{ 'auto_ventilate_enabled' in auto_options }}",
"is_time_field_enabled": "{{ 'time_control_input' in time_control }}",
"is_schedule_helper_enabled": "{{ 'time_control_schedule' in time_control and time_schedule_helper != [] }}",
"is_time_control_disabled": "{{ 'time_control_disabled' in time_control }}",
"reset_override_config": "reset_timeout",
"reset_override_time": "17:59:30",
"reset_override_timeout": 60,
"is_reset_disabled": "{{ 'reset_disabled' in reset_override_config }}",
"is_reset_fixed_time": "{{ 'reset_fixed_time' in reset_override_config }}",
"is_reset_timeout": "{{ 'reset_timeout' in reset_override_config }}",
"cover_status_options": "cover_helper_enabled",
"cover_status_helper": "input_text.maeve_rolluik_helper"
},
"variables": {
"version": "2025.08.15",
"blind_entities": "{{ expand(blind) | map(attribute='entity_id') | list }}",
"current_position": "{{ state_attr(blind, 'current_position') | int(default=101) }}",
"current_tilt_position": "{{ state_attr(blind,'current_tilt_position') | int(default=101) }}",
"current_sun_azimuth": "{{ state_attr(default_sun_sensor, 'azimuth') }}",
"current_sun_elevation": "{{ state_attr(default_sun_sensor, 'elevation') }}",
"is_today_off": "{{ workday_sensor_today != [] and is_state(workday_sensor_today, 'off') }}",
"is_tomorrow_off": "{{ workday_sensor_tomorrow != [] and is_state(workday_sensor_tomorrow, 'off') }}",
"is_tomorrow_on": "{{ workday_sensor_tomorrow != [] and is_state(workday_sensor_tomorrow, 'on') }}",
"drive_delay_fix": 0,
"drive_delay_random": 5,
"drive_time": 90,
"time_up_early_today": "{{ time_up_early_non_workday if is_today_off else time_up_early }}",
"time_up_late_today": "{{ time_up_late_non_workday if is_today_off else time_up_late }}",
"time_down_early_today": "{{\n time_down_early_non_workday if is_tomorrow_off else\n time_down_early if is_tomorrow_on else\n time_down_early_non_workday if is_today_off else\n time_down_early\n}}",
"time_down_late_today": "{{\n time_down_late_non_workday if is_tomorrow_off else\n time_down_late if is_tomorrow_on else\n time_down_late_non_workday if is_today_off else\n time_down_late\n}}",
"auto_up_force": "input_boolean.ramenzemer_modus",
"auto_down_force": [],
"auto_ventilate_force": [],
"auto_shading_start_force": [],
"auto_up_force_disabled": "{{ auto_up_force == [] or (auto_up_force != [] and states(auto_up_force) in ['false', 'off']) }}",
"auto_down_force_disabled": "{{ auto_down_force == [] or (auto_down_force != [] and states(auto_down_force) in ['false', 'off']) }}",
"auto_ventilate_force_disabled": "{{ auto_ventilate_force == [] or (auto_ventilate_force != [] and states(auto_ventilate_force) in ['false', 'off']) }}",
"auto_shading_start_force_disabled": "{{ auto_shading_start_force == [] or (auto_shading_start_force != [] and states(auto_shading_start_force) in ['false', 'off']) }}",
"is_cover_tilt_enabled_and_possible": "{{ is_cover_tilt_enabled and state_attr(blind, 'current_tilt_position') != none }}",
"cover_tilt_reposition_config": "cover_tilt_reposition_disabled",
"is_cover_tilt_reposition_enabled": "{{ 'cover_tilt_reposition_enabled' in cover_tilt_reposition_config }}",
"shading_tilt_position": "{% set elevation = current_sun_elevation | int(default=0) %} {% if elevation >= shading_tilt_elevation_3 | int %}\n {{ shading_tilt_position_3 | int }}\n{% elif elevation >= shading_tilt_elevation_2 | int %}\n {{ shading_tilt_position_2 | int }}\n{% elif elevation >= shading_tilt_elevation_1 | int %}\n {{ shading_tilt_position_1 | int }}\n{% else %}\n {{ shading_tilt_position_0 | int }}\n{% endif %}",
"shading_waitingtime_start": 120,
"shading_waitingtime_end": 300,
"is_shading_end_immediate_by_sun_position": true,
"shading_start_behavior": "trigger_reset",
"shading_end_behavior": "open_position",
"start_shading_trigger_reset": "{{ 'trigger_reset' in shading_start_behavior }}",
"start_shading_trigger_periodic": "{{ 'trigger_periodic' in shading_start_behavior }}",
"shading_config": [],
"is_shading_temp_comparison_independent": "{{ 'shading_temp_comparison_independent' in shading_config }}",
"is_shading_compare_forecast_with_sensor2": "{{ 'shading_compare_forecast_with_sensor2' in shading_config }}",
"is_status_helper_enabled": "{{\n 'cover_helper_enabled' in cover_status_options and\n cover_status_helper != [] and\n states(cover_status_helper) not in ['', 'unknown', 'unavailable', 'none', []] and\n states(cover_status_helper) | regex_match(\"((\\[[^\\}]+)?\\{s*[^\\}\\{]{3,}?:.*\\}([^\\{]+\\])?)\")\n}}",
"helper_state_json": "{% if is_status_helper_enabled %}\n {{ states(cover_status_helper) | from_json }}\n{% else %}\n {{\n {\n 'open': {'a': 0, 't': 0},\n 'close': {'a': 0, 't': 0},\n 'shading': {'a': 0, 't': 0, 'p': 0, 'q': 0},\n 'vpart': {'a': 0, 't': 0},\n 'vfull': {'a': 0, 't': 0},\n 'manual': {'a': 0, 't': 0},\n 'v': 5,\n 't': as_timestamp(now()) | round(0)\n } | to_json | from_json\n }}\n{% endif %}\n",
"is_helper_open": "{{ is_status_helper_enabled and (helper_state_json | regex_search('open')) and (helper_state_json.open.a | default(false) | bool) }}",
"is_helper_closed": "{{ is_status_helper_enabled and (helper_state_json | regex_search('close')) and (helper_state_json.close.a | default(false) | bool) }}",
"is_helper_shaded": "{{\n 'shading' in helper_state_json and\n helper_state_json.shading.a | default(false) | bool and\n not (helper_state_json.shading.p | default(false) | bool)\n}}",
"is_helper_shading_start": "{{ is_status_helper_enabled and (helper_state_json | regex_search('shading')) and (helper_state_json.shading.p | default(false) | bool) }}",
"is_helper_shading_end": "{{ is_status_helper_enabled and (helper_state_json | regex_search('shading')) and (helper_state_json.shading.q | default(false) | bool) }}",
"is_helper_vent_partial": "{{ is_status_helper_enabled and (helper_state_json | regex_search('vpart')) and (helper_state_json.vpart.a | default(false) | bool) }}",
"is_helper_vent_full": "{{ is_status_helper_enabled and (helper_state_json | regex_search('vfull')) and (helper_state_json.vfull.a | default(false) | bool) }}",
"is_helper_manual": "{{ is_status_helper_enabled and (helper_state_json | regex_search('manual')) and (helper_state_json.manual.a | default(false) | bool) }}",
"ts_helper_open": "{{ helper_state_json.open.t | default(0) if (is_status_helper_enabled and (helper_state_json | regex_search('open'))) else 0 }}",
"ts_helper_closed": "{{ helper_state_json.close.t | default(0) if (is_status_helper_enabled and (helper_state_json | regex_search('close'))) else 0 }}",
"ts_helper_shaded": "{{ helper_state_json.shading.t | default(0) if (is_status_helper_enabled and (helper_state_json | regex_search('shading'))) else 0 }}",
"ts_helper_vent_partial": "{{ helper_state_json.vpart.t | default(0) if (is_status_helper_enabled and (helper_state_json | regex_search('vpart'))) else 0 }}",
"ts_helper_vent_full": "{{ helper_state_json.vfull.t | default(0) if (is_status_helper_enabled and (helper_state_json | regex_search('vfull'))) else 0 }}",
"ts_helper_manual": "{{ helper_state_json.manual.t | default(0) if (is_status_helper_enabled and (helper_state_json | regex_search('manual'))) else 0 }}",
"in_open_position": "{% set min = open_position - position_tolerance %} {% set max = open_position + position_tolerance %} {{\n (current_position >= min and current_position <= max)\n and (\n (not is_cover_tilt_enabled_and_possible)\n or (is_cover_tilt_enabled_and_possible and current_tilt_position == open_tilt_position)\n )\n}}",
"in_close_position": "{% set min = close_position - position_tolerance %} {% set max = close_position + position_tolerance %} {{\n (current_position >= min and current_position <= max)\n and (\n (not is_cover_tilt_enabled_and_possible)\n or (is_cover_tilt_enabled_and_possible and current_tilt_position == close_tilt_position)\n )\n}}",
"in_shading_position": "{% set min = shading_position - position_tolerance %} {% set max = shading_position + position_tolerance %} {{\n is_shading_enabled\n and (current_position >= min and current_position <= max)\n and (\n (not is_cover_tilt_enabled_and_possible)\n or (current_tilt_position == shading_tilt_position)\n )\n}}",
"in_ventilate_position": "{% set min = ventilate_position - position_tolerance %} {% set max = ventilate_position + position_tolerance %} {{\n is_ventilation_enabled\n and (current_position >= min and current_position <= max)\n and (\n (not is_cover_tilt_enabled_and_possible)\n or (current_tilt_position == ventilate_tilt_position)\n )\n}}",
"individual_config": [
"prevent_higher_position_closing",
"prevent_shading_end_if_closed"
],
"prevent_higher_position_closing": "{{ 'prevent_higher_position_closing' in individual_config }}",
"prevent_lowering_when_closing_if_shaded": "{{ 'prevent_lowering_when_closing_if_shaded' in individual_config }}",
"prevent_forecast_service": "{{ 'weather_attributes' in shading_forecast_type }}",
"prevent_shading_end_if_closed": "{{ 'prevent_shading_end_if_closed' in individual_config }}",
"prevent_opening_after_shading_end": "{{ 'prevent_opening_after_shading_end' in individual_config }}",
"prevent_opening_after_ventilation_end": "{{ 'prevent_opening_after_ventilation_end' in individual_config }}",
"prevent_default_cover_actions": "{{ 'prevent_default_cover_actions' in individual_config }}",
"prevent_shading_multiple_times": "{{ 'prevent_shading_multiple_times' in individual_config }}",
"prevent_opening_multiple_times": "{{ 'prevent_opening_multiple_times' in individual_config }}",
"prevent_closing_multiple_times": "{{ 'prevent_closing_multiple_times' in individual_config }}",
"prevent_opening_movement": "input_boolean.zonwering_buiten_mag_niet_omhoog_bewegen",
"prevent_opening_movement_disabled": "{{ prevent_opening_movement == [] or (prevent_opening_movement != [] and states(prevent_opening_movement) in ['false', 'off']) }}",
"resident_config": [
"resident_opening_enabled"
],
"resident_opening_enabled": "{{ 'resident_opening_enabled' in resident_config }}",
"resident_closing_enabled": "{{ 'resident_closing_enabled' in resident_config }}",
"resident_allow_shading": "{{ 'resident_allow_shading' in resident_config }}",
"resident_allow_opening": "{{ 'resident_allow_opening' in resident_config }}",
"resident_allow_ventilation": "{{ 'resident_allow_ventilation' in resident_config }}",
"ignore_after_manual_config": [
"ignore_opening_after_manual",
"ignore_ventilation_after_manual",
"ignore_closing_after_manual",
"ignore_shading_after_manual"
],
"override_opening_after_manual": "{{ 'ignore_opening_after_manual' in ignore_after_manual_config }}",
"override_closing_after_manual": "{{ 'ignore_closing_after_manual' in ignore_after_manual_config }}",
"override_ventilation_after_manual": "{{ 'ignore_ventilation_after_manual' in ignore_after_manual_config }}",
"override_shading_after_manual": "{{ 'ignore_shading_after_manual' in ignore_after_manual_config }}",
"auto_ventilate_options": [
"ventilation_delay_enabled"
],
"ventilation_delay_enabled": "{{ 'ventilation_delay_enabled' in auto_ventilate_options }}",
"ventilation_if_lower_enabled": "{{ 'ventilation_if_lower_enabled' in auto_ventilate_options }}",
"ventilation_after_shading_end": "{{ 'ventilation_after_shading_end' in auto_ventilate_options }}",
"check_config": false,
"check_config_debuglevel": "info",
"check_status_helper_length": "{{ state_attr(cover_status_helper, 'max') if cover_status_helper != [] else None }}"
},
"mode": "single",
"max_exceeded": "silent",
"triggers": [
{
"platform": "template",
"value_template": "{% set is_today_off = workday_sensor_today != [] and is_state(workday_sensor_today, 'off') %} {% set time_compare = time_up_early_non_workday if is_today_off else time_up_early %} {{ now() >= today_at(time_compare) }}",
"enabled": "{{ is_time_field_enabled }}",
"id": "t_open_1"
},
{
"platform": "template",
"value_template": "{% set is_today_off = workday_sensor_today != [] and is_state(workday_sensor_today, 'off') %} {% set early = time_up_early_non_workday if is_today_off else time_up_early %} {% set late = time_up_late_non_workday if is_today_off else time_up_late %} {{ early != late and now() >= today_at(late) }}",
"enabled": "{{ is_time_field_enabled }}",
"id": "t_open_2"
},
{
"platform": "template",
"value_template": "{{ states(time_schedule_helper) in ['true', 'on'] }}",
"enabled": "{{ is_schedule_helper_enabled and time_schedule_helper != [] }}",
"id": "t_open_3"
},
{
"platform": "template",
"value_template": "{{ states(default_brightness_sensor) | float(default=brightness_up) > brightness_up }}",
"for": {
"seconds": 30
},
"enabled": "{{ is_brightness_enabled and default_brightness_sensor != [] }}",
"id": "t_open_4"
},
{
"platform": "template",
"value_template": "{{ state_attr(default_sun_sensor, 'elevation') | float(default=sun_elevation_up) > sun_elevation_up }}",
"for": {
"seconds": 30
},
"enabled": "{{ is_sun_elevation_enabled and default_sun_sensor != [] }}",
"id": "t_open_5"
},
{
"platform": "state",
"entity_id": "input_boolean.resident_sensor_maeve",
"from": "on",
"to": "off",
"id": "t_open_6"
},
{
"platform": "state",
"entity_id": "input_boolean.zonwering_buiten_mag_niet_omhoog_bewegen",
"from": "on",
"to": "off",
"id": "t_open_7"
},
{
"platform": "state",
"entity_id": "input_boolean.ramenzemer_modus",
"from": "off",
"to": "on",
"id": "t_force_open"
},
{
"platform": "template",
"value_template": "{% set is_tomorrow_off = workday_sensor_tomorrow != [] and is_state(workday_sensor_tomorrow, 'off') %} {% set is_tomorrow_on = workday_sensor_tomorrow != [] and is_state(workday_sensor_tomorrow, 'on') %} {% set is_today_off = workday_sensor_today != [] and is_state(workday_sensor_today, 'off') %} {% set time_compare =\n time_down_early_non_workday if is_tomorrow_off else\n time_down_early if is_tomorrow_on else\n time_down_early_non_workday if is_today_off else\n time_down_early %}\n{{ now() >= today_at(time_compare) }}",
"enabled": "{{ is_time_field_enabled }}",
"id": "t_close_1"
},
{
"platform": "template",
"value_template": "{% set is_tomorrow_off = workday_sensor_tomorrow != [] and is_state(workday_sensor_tomorrow, 'off') %} {% set is_tomorrow_on = workday_sensor_tomorrow != [] and is_state(workday_sensor_tomorrow, 'on') %} {% set is_today_off = workday_sensor_today != [] and is_state(workday_sensor_today, 'off') %} {% set time_compare =\n time_down_late_non_workday if is_tomorrow_off else\n time_down_late if is_tomorrow_on else\n time_down_late_non_workday if is_today_off else\n time_down_late %}\n{{ (time_down_early_non_workday != time_compare and time_down_early != time_compare) and now() >= today_at(time_compare) }}",
"enabled": "{{ is_time_field_enabled }}",
"id": "t_close_2"
},
{
"platform": "template",
"value_template": "{{ states(time_schedule_helper) in ['false', 'off'] }}",
"enabled": "{{ is_schedule_helper_enabled and time_schedule_helper != [] }}",
"id": "t_close_3"
},
{
"platform": "template",
"value_template": "{{ states(default_brightness_sensor) | float(default=brightness_down) < brightness_down }}",
"for": {
"seconds": 30
},
"enabled": "{{ is_brightness_enabled and default_brightness_sensor != [] }}",
"id": "t_close_4"
},
{
"platform": "template",
"value_template": "{{ state_attr(default_sun_sensor, 'elevation') | float(default=sun_elevation_down) < sun_elevation_down }}",
"for": {
"seconds": 30
},
"enabled": "{{ is_sun_elevation_enabled and default_sun_sensor != [] }}",
"id": "t_close_5"
},
{
"platform": "state",
"entity_id": "input_boolean.resident_sensor_maeve",
"from": "off",
"to": "on",
"id": "t_close_6"
},
{
"platform": "state",
"entity_id": [],
"from": "off",
"to": "on",
"id": "t_force_close"
},
{
"platform": "template",
"value_template": "{{ states(contact_window_tilted) in ['true', 'on'] }}",
"enabled": "{{ is_ventilation_enabled and contact_window_tilted != [] }}",
"id": "t_contact_tilted_on",
"for": {
"seconds": 1
}
},
{
"platform": "template",
"value_template": "{{ states(contact_window_tilted) in ['false', 'off'] }}",
"enabled": "{{ is_ventilation_enabled and contact_window_tilted != [] }}",
"id": "t_contact_tilted_off",
"for": {
"seconds": 1
}
},
{
"platform": "template",
"value_template": "{{ states(contact_window_opened) in ['true', 'on'] }}",
"enabled": "{{ is_ventilation_enabled and contact_window_opened != [] }}",
"id": "t_contact_opened_on",
"for": {
"seconds": 1
}
},
{
"platform": "template",
"value_template": "{{ states(contact_window_opened) in ['false', 'off'] }}",
"enabled": "{{ is_ventilation_enabled and contact_window_opened != [] }}",
"id": "t_contact_opened_off",
"for": {
"seconds": 1
}
},
{
"platform": "state",
"entity_id": [],
"from": "off",
"to": "on",
"id": "t_force_vent"
},
{
"platform": "template",
"value_template": "{{\n state_attr(default_sun_sensor, 'azimuth') | float(default=shading_azimuth_start) > shading_azimuth_start and\n state_attr(default_sun_sensor, 'azimuth') | float(default=shading_azimuth_end) < shading_azimuth_end and\n state_attr(default_sun_sensor, 'elevation') | float(default=shading_elevation_min) > shading_elevation_min and\n state_attr(default_sun_sensor, 'elevation') | float(default=shading_elevation_max) < shading_elevation_max\n}}",
"enabled": "{{ is_shading_enabled and default_sun_sensor != [] }}",
"id": "t_shading_start_pending_1"
},
{
"platform": "template",
"value_template": "{{ states(shading_brightness_sensor) | float(default=shading_sun_brightness_start) > shading_sun_brightness_start }}",
"enabled": "{{ is_shading_enabled and shading_brightness_sensor != [] }}",
"id": "t_shading_start_pending_2"
},
{
"platform": "template",
"value_template": "{{ states(shading_temperatur_sensor1) | float(default=shading_min_temperatur1) > shading_min_temperatur1 }}",
"enabled": "{{ is_shading_enabled and shading_temperatur_sensor1 != [] }}",
"id": "t_shading_start_pending_3"
},
{
"platform": "template",
"value_template": "{{ states(shading_temperatur_sensor2) | float(default=shading_min_temperatur2) > shading_min_temperatur2 }}",
"enabled": "{{ is_shading_enabled and shading_temperatur_sensor2 != [] }}",
"id": "t_shading_start_pending_4"
},
{
"platform": "template",
"value_template": "{{ states(shading_forecast_sensor) in shading_weather_conditions }}",
"enabled": "{{ is_shading_enabled and shading_forecast_sensor != [] }}",
"id": "t_shading_start_pending_5"
},
{
"platform": "template",
"value_template": "{{ now() >= today_at([time_up_early, time_up_early_non_workday] | min) - timedelta(hours = 1) }}",
"enabled": "{{ is_shading_enabled }}",
"id": "t_shading_start_pending_6"
},
{
"platform": "template",
"value_template": "{{\n states(cover_status_helper) not in ['', 'unknown', 'unavailable', 'none', []] and\n states(cover_status_helper) | regex_match(\"((\\[[^\\}]+)?\\{s*[^\\}\\{]{3,}?:.*\\}([^\\{]+\\])?)\") and\n states(cover_status_helper)|from_json|regex_search('shading') and\n (states(cover_status_helper)|from_json).shading.p is defined and\n (states(cover_status_helper)|from_json).shading.p > 0 and\n now() >= ( (states(cover_status_helper)|from_json).shading.p) | as_datetime | as_local\n}}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] }}",
"id": "t_shading_start_execution"
},
{
"platform": "state",
"entity_id": [],
"from": "off",
"to": "on",
"id": "t_force_shading_start"
},
{
"platform": "template",
"value_template": "{{\n states(cover_status_helper) not in ['', 'unknown', 'unavailable', 'none'] and\n states(cover_status_helper) | regex_search('\"shading\"\\s*:\\s*\\{[^}]*\"a\"\\s*:\\s*1') and\n state_attr(default_sun_sensor, 'elevation') < shading_tilt_elevation_1\n}}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] and is_cover_tilt_enabled and default_sun_sensor != [] }}",
"id": "t_shading_tilt_1"
},
{
"platform": "template",
"value_template": "{{\n states(cover_status_helper) not in ['', 'unknown', 'unavailable', 'none'] and\n states(cover_status_helper) | regex_search('\"shading\"\\s*:\\s*\\{[^}]*\"a\"\\s*:\\s*1') and\n state_attr(default_sun_sensor, 'elevation') < shading_tilt_elevation_2 and\n state_attr(default_sun_sensor, 'elevation') >= shading_tilt_elevation_1\n}}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] and is_cover_tilt_enabled and default_sun_sensor != [] }}",
"id": "t_shading_tilt_2"
},
{
"platform": "template",
"value_template": "{{\n states(cover_status_helper) not in ['', 'unknown', 'unavailable', 'none'] and\n states(cover_status_helper) | regex_search('\"shading\"\\s*:\\s*\\{[^}]*\"a\"\\s*:\\s*1') and\n state_attr(default_sun_sensor, 'elevation') < shading_tilt_elevation_3 and\n state_attr(default_sun_sensor, 'elevation') >= shading_tilt_elevation_2\n}}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] and is_cover_tilt_enabled and default_sun_sensor != [] }}",
"id": "t_shading_tilt_3"
},
{
"platform": "template",
"value_template": "{{\n states(cover_status_helper) not in ['', 'unknown', 'unavailable', 'none'] and\n states(cover_status_helper) | regex_search('\"shading\"\\s*:\\s*\\{[^}]*\"a\"\\s*:\\s*1') and\n state_attr(default_sun_sensor, 'elevation') >= shading_tilt_elevation_3\n}}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] and is_cover_tilt_enabled and default_sun_sensor != [] }}",
"id": "t_shading_tilt_4"
},
{
"platform": "template",
"value_template": "{{ states(shading_temperatur_sensor1) | float(default=shading_min_temperatur1) < (shading_min_temperatur1 - shading_temperature_hysteresis1) }}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] and shading_temperatur_sensor1 != [] }}",
"id": "t_shading_end_pending_1"
},
{
"platform": "template",
"value_template": "{{ states(shading_temperatur_sensor2) | float(default=shading_min_temperatur2) < (shading_min_temperatur2 - shading_temperature_hysteresis2) }}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] and shading_temperatur_sensor2 != [] }}",
"id": "t_shading_end_pending_2"
},
{
"platform": "template",
"value_template": "{{ states(shading_brightness_sensor) | float(default=shading_sun_brightness_end) < shading_sun_brightness_end }}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] and shading_brightness_sensor != [] }}",
"id": "t_shading_end_pending_3"
},
{
"platform": "template",
"value_template": "{{ states(shading_forecast_sensor) not in shading_weather_conditions }}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] and shading_weather_conditions != [] and shading_forecast_sensor != [] }}",
"id": "t_shading_end_pending_4"
},
{
"platform": "template",
"value_template": "{{\n (state_attr(default_sun_sensor, 'azimuth') | float(default=shading_azimuth_end) > shading_azimuth_end) or\n (state_attr(default_sun_sensor, 'elevation') | float(default=shading_elevation_max) > shading_elevation_max) or\n (state_attr(default_sun_sensor, 'elevation') | float(default=shading_elevation_min) < shading_elevation_min)\n}}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] and default_sun_sensor != [] }}",
"id": "t_shading_end_pending_5"
},
{
"platform": "template",
"value_template": "{{\n states(cover_status_helper) not in ['', 'unknown', 'unavailable', 'none', []] and\n states(cover_status_helper) | regex_match(\"((\\[[^\\}]+)?\\{s*[^\\}\\{]{3,}?:.*\\}([^\\{]+\\])?)\") and\n states(cover_status_helper)|from_json|regex_search('shading') and\n (states(cover_status_helper)|from_json).shading.q is defined and\n (states(cover_status_helper)|from_json).shading.q > 0 and\n now() >= ( (states(cover_status_helper)|from_json).shading.q) | as_datetime | as_local\n}}",
"enabled": "{{ is_shading_enabled and cover_status_helper != [] }}",
"id": "t_shading_end_execution"
},
{
"platform": "template",
"value_template": "{{ now() >= today_at('23:55:00') }}",
"id": "t_shading_reset",
"enabled": "{{ is_shading_enabled }}"
},
{
"platform": "state",
"entity_id": "cover.rolluik_maeve",
"attribute": "current_position",
"id": "t_manual_1",
"for": "00:01:00"
},
{
"platform": "template",
"value_template": "{{ now() >= today_at(reset_override_time) }}",
"enabled": "{{ is_reset_fixed_time }}",
"id": "t_manual_2",
"for": "00:00:02"
},
{
"platform": "template",
"value_template": "{{\n states(cover_status_helper) not in ['', 'unknown', 'unavailable', 'none', []] and\n states(cover_status_helper) | regex_match(\"((\\[[^\\}]+)?\\{s*[^\\}\\{]{3,}?:.*\\}([^\\{]+\\])?)\") and\n states(cover_status_helper)|from_json|regex_search('manual') and\n (states(cover_status_helper)|from_json).manual.t is defined and\n (states(cover_status_helper)|from_json).manual.a is defined and\n (states(cover_status_helper)|from_json).manual.a | bool is true and\n now() >= ( (states(cover_status_helper)|from_json).manual.t + 60 * reset_override_timeout) | as_datetime | as_local\n }}",
"enabled": "{{ is_reset_timeout and cover_status_helper != [] }}",
"id": "t_manual_3",
"for": "00:00:02"
},
{
"platform": "state",
"entity_id": "cover.rolluik_maeve",
"attribute": "current_tilt_position",
"id": "t_manual_4",
"for": "00:01:00"
}
],
"conditions": [
{
"condition": []
},
{
"or": [
"{{ trigger.to_state is not defined }}",
"{{ trigger.to_state is defined and trigger.to_state.state not in ['unavailable', 'unknown','none', 'query failed'] }}"
]
},
{
"condition": "template",
"value_template": "{% if is_status_helper_enabled %}\n {% if trigger.id is match('^t_shading_start_pending_[1-5]$') %}\n {{ states(cover_status_helper) | regex_search('\"shading\"\\s*:\\s*\\{[^}]*\"a\"\\s*:\\s*0') }}\n {% elif trigger.id is match('^t_shading_end_pending_[1-5]$') %}\n {{ states(cover_status_helper) | regex_search('\"shading\"\\s*:\\s*\\{[^}]*\"a\"\\s*:\\s*1') }}\n {% else %}\n true\n {% endif %}\n{% else %}\n true\n{% endif %}"
}
],
"actions": [
{
"variables": {
"cover_move_action": {
"sequence": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"choose": [
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 0 }}"
],
"sequence": [
{
"alias": "Close Cover",
"service": "cover.close_cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 100 }}"
],
"sequence": [
{
"alias": "Open Cover",
"service": "cover.open_cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) not in [0, 100] }}"
],
"sequence": [
{
"alias": "Moving the cover to target position",
"service": "cover.set_cover_position",
"data": {
"position": "{{ target_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
}
]
}
]
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
},
"tilt_move_action": {
"sequence": [
{
"if": [
"{{ not prevent_default_cover_actions }}",
"{{ is_cover_tilt_enabled_and_possible }}",
"{{ expand(blind_entities) | selectattr('attributes.current_tilt_position', 'defined') | list | count > 0 }}"
],
"then": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"if": [
"{{ tilt_first | default(false) }}"
],
"then": [
{
"alias": "Reset Tilt",
"service": "cover.set_cover_tilt_position",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"service": "cover.set_cover_tilt_position",
"data": {
"tilt_position": "{{ target_tilt_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
}
]
},
"helper_update": {
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"service": "input_text.set_value",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
}
}
]
},
"cover_move_and_tilt_and_update_helper": [
{
"if": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
}
],
"then": [
{
"sequence": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"choose": [
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 0 }}"
],
"sequence": [
{
"alias": "Close Cover",
"service": "cover.close_cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 100 }}"
],
"sequence": [
{
"alias": "Open Cover",
"service": "cover.open_cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) not in [0, 100] }}"
],
"sequence": [
{
"alias": "Moving the cover to target position",
"service": "cover.set_cover_position",
"data": {
"position": "{{ target_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
}
]
}
]
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
},
{
"sequence": [
{
"if": [
"{{ not prevent_default_cover_actions }}",
"{{ is_cover_tilt_enabled_and_possible }}",
"{{ expand(blind_entities) | selectattr('attributes.current_tilt_position', 'defined') | list | count > 0 }}"
],
"then": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"if": [
"{{ tilt_first | default(false) }}"
],
"then": [
{
"alias": "Reset Tilt",
"service": "cover.set_cover_tilt_position",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"service": "cover.set_cover_tilt_position",
"data": {
"tilt_position": "{{ target_tilt_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
}
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
}
]
}
]
},
{
"if": [
{
"or": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
},
"{{ should_cover_move_and_tilt is defined }}"
]
}
],
"then": [
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"service": "input_text.set_value",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
}
}
]
}
]
}
]
}
},
{
"if": [
"{{ is_shading_enabled }}",
"{{ not prevent_forecast_service }}",
"{{ (shading_forecast_sensor != [] ) }}",
"{{ states(shading_forecast_sensor) not in ['unavailable', 'unknown', 'query failed'] }}",
"{{ trigger.id is defined }}",
"{{ trigger.id | regex_match('^(t_shading_start|t_open_1|t_open_3)') }}",
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('weather.') }}"
],
"then": [
{
"action": "weather.get_forecasts",
"target": {
"entity_id": "weather.knmi_thuis"
},
"data": {
"type": "daily"
},
"response_variable": "weather_forecast"
}
]
},
{
"if": [
"{{ 'cover_helper_enabled' in cover_status_options }}",
"{{ cover_status_helper != [] }}",
{
"or": [
"{{ states(cover_status_helper) in ['', 'unknown', 'unavailable', 'none'] }}",
"{{ not states(cover_status_helper) | regex_match(\"((\\[[^\\}]+)?\\{s*[^\\}\\{]{3,}?:.*\\}([^\\{]+\\])?)\") }}"
]
}
],
"then": [
{
"action": "input_text.set_value",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{{ helper_state_json | to_json }}"
}
}
]
},
{
"if": [
"{{ is_status_helper_enabled }}",
"{{ helper_state_json.v != 5 }}"
],
"then": [
{
"variables": {
"update_values": {
"open": {
"a": "{{ is_helper_open|int }}",
"t": "{{ ts_helper_open }}"
},
"close": {
"a": "{{ is_helper_closed|int }}",
"t": "{{ ts_helper_closed }}"
},
"shading": {
"a": "{{ is_helper_shaded|int }}",
"t": "{{ ts_helper_shaded }}",
"p": 0,
"q": 0
},
"vpart": {
"a": "{{ is_helper_vent_partial|int }}",
"t": "{{ ts_helper_vent_partial }}"
},
"vfull": {
"a": "{{ is_helper_vent_full|int }}",
"t": "{{ ts_helper_vent_full }}"
},
"manual": {
"a": "{{ is_helper_manual|int }}",
"t": "{{ ts_helper_manual }}"
},
"v": 5,
"t": "{{ helper_state_json.t | round(0) }}"
}
}
},
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
},
{
"choose": [
{
"alias": "Check for opening",
"conditions": [
"{{ is_up_enabled }}",
"{{ trigger.id is defined }}",
"{{ trigger.id | regex_match('^(t_open)') }}",
{
"condition": []
},
{
"and": [
"{{ auto_down_force_disabled }}",
"{{ auto_ventilate_force_disabled }}",
"{{ auto_shading_start_force_disabled }}"
]
},
{
"or": [
"{{ is_status_helper_enabled and not is_helper_open }}",
"{{ not in_open_position }}"
]
},
"{{ not (is_status_helper_enabled and is_helper_manual and override_opening_after_manual) }}",
{
"or": [
"{{ not is_status_helper_enabled }}",
"{{ not prevent_opening_multiple_times }}",
"{{ is_status_helper_enabled and prevent_opening_multiple_times and (now().day != ts_helper_open|timestamp_custom('%-d')|int) }}"
]
},
{
"or": [
"{{ trigger.id != 't_open_6' }}",
"{{ trigger.id == 't_open_6' and resident_opening_enabled }}"
]
},
{
"or": [
"{{ resident_sensor == [] }}",
"{{ states(resident_sensor) in ['false', 'off'] }}",
{
"and": [
"{{ resident_allow_opening }}",
"{{ states(resident_sensor) in ['true', 'on'] }}"
]
}
]
},
{
"or": [
{
"and": [
"{{ is_time_control_disabled }}"
]
},
{
"and": [
"{{ is_time_field_enabled }}",
"{{ now() >= today_at(time_up_late_today) }}",
"{{ now() <= today_at(time_down_late_today) - timedelta(seconds = 5) }}"
]
},
{
"and": [
"{{ is_schedule_helper_enabled }}",
"{{ time_schedule_helper != [] }}",
"{{ not is_brightness_enabled }}",
"{{ not is_sun_elevation_enabled }}",
"{{ is_state(time_schedule_helper, 'on') }}",
"{{ trigger.id in ['t_open_3', 't_open_6'] }}"
]
},
{
"and": [
{
"or": [
{
"and": [
"{{ is_time_control_disabled }}"
]
},
{
"and": [
"{{ is_time_field_enabled }}",
"{{ now() >= today_at(time_up_early_today) }}",
"{{ now() <= today_at(time_up_late_today) + timedelta(seconds = 5) }}"
]
},
{
"and": [
"{{ is_schedule_helper_enabled }}",
"{{ time_schedule_helper != [] }}",
"{{ is_state(time_schedule_helper, 'on') }}",
"{{ now() >= today_at([time_up_early, time_up_early_non_workday] | min) - timedelta(seconds = 5) }}",
"{{ now() <= today_at([time_up_late, time_up_late_non_workday] | max) + timedelta(seconds = 5) }}"
]
}
]
},
{
"or": [
{
"or": [
"{{ is_brightness_enabled and default_brightness_sensor == [] }}",
"{{ is_brightness_enabled and default_brightness_sensor != [] and (states(default_brightness_sensor) | float(default=brightness_up) > brightness_up) }}"
]
},
{
"or": [
"{{ is_sun_elevation_enabled and default_sun_sensor == [] }}",
"{{ is_sun_elevation_enabled and default_sun_sensor != [] and (current_sun_elevation | float(default=sun_elevation_up) > sun_elevation_up) }}"
]
}
]
}
]
}
]
}
],
"sequence": [
{
"delay": {
"seconds": "{{ range(drive_delay_fix|int(0), drive_delay_fix|int(0) + drive_delay_random|int(0) +1) | random }}"
}
},
{
"choose": [
{
"alias": "Shading detected. Move to shading position",
"conditions": [
"{{ is_status_helper_enabled }}",
"{{ is_helper_shaded }}",
"{{ not in_shading_position }}"
],
"sequence": [
{
"choose": [],
"default": []
},
{
"variables": {
"target_position": 25,
"target_tilt_position": "{{ shading_tilt_position | int }}",
"update_values": {
"open": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"close": {
"a": 0,
"t": "{{ helper_state_json.close.t }}"
},
"shading": {
"a": 1,
"t": "{{ helper_state_json.shading.t }}",
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": "{{ helper_state_json.vpart.t }}"
},
"vfull": {
"a": 0,
"t": "{{ helper_state_json.vfull.t }}"
},
"manual": {
"a": 0,
"t": "{{ helper_state_json.manual.t }}"
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"sequence": [
{
"if": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
}
],
"then": [
{
"sequence": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"choose": [
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 0 }}"
],
"sequence": [
{
"alias": "Close Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.close_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 100 }}"
],
"sequence": [
{
"alias": "Open Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.open_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) not in [0, 100] }}"
],
"sequence": [
{
"alias": "Moving the cover to target position",
"data": {
"position": "{{ target_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_position"
}
]
}
]
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
},
{
"sequence": [
{
"if": [
"{{ not prevent_default_cover_actions }}",
"{{ is_cover_tilt_enabled_and_possible }}",
"{{ expand(blind_entities) | selectattr('attributes.current_tilt_position', 'defined') | list | count > 0 }}"
],
"then": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"if": [
"{{ tilt_first | default(false) }}"
],
"then": [
{
"alias": "Reset Tilt",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"data": {
"tilt_position": "{{ target_tilt_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
}
]
}
]
},
{
"if": [
{
"or": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
},
"{{ should_cover_move_and_tilt is defined }}"
]
}
],
"then": [
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
}
]
},
{
"choose": [],
"default": []
}
]
},
{
"alias": "Normal opening of the cover",
"conditions": [
"{{ not in_shading_position }}",
{
"or": [
"{{ is_status_helper_enabled and not is_helper_open }}",
"{{ not in_open_position }}"
]
}
],
"sequence": [
{
"choose": [],
"default": []
},
{
"variables": {
"target_position": 100,
"target_tilt_position": "{{ open_tilt_position | int }}",
"update_values": {
"open": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"close": {
"a": 0,
"t": "{{ helper_state_json.close.t }}"
},
"shading": {
"a": 0,
"t": "{{ helper_state_json.shading.t }}",
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": "{{ helper_state_json.vpart.t }}"
},
"vfull": {
"a": 0,
"t": "{{ helper_state_json.vfull.t }}"
},
"manual": {
"a": 0,
"t": "{{ helper_state_json.manual.t }}"
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"sequence": [
{
"if": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
}
],
"then": [
{
"sequence": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"choose": [
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 0 }}"
],
"sequence": [
{
"alias": "Close Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.close_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 100 }}"
],
"sequence": [
{
"alias": "Open Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.open_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) not in [0, 100] }}"
],
"sequence": [
{
"alias": "Moving the cover to target position",
"data": {
"position": "{{ target_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_position"
}
]
}
]
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
},
{
"sequence": [
{
"if": [
"{{ not prevent_default_cover_actions }}",
"{{ is_cover_tilt_enabled_and_possible }}",
"{{ expand(blind_entities) | selectattr('attributes.current_tilt_position', 'defined') | list | count > 0 }}"
],
"then": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"if": [
"{{ tilt_first | default(false) }}"
],
"then": [
{
"alias": "Reset Tilt",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"data": {
"tilt_position": "{{ target_tilt_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
}
]
}
]
},
{
"if": [
{
"or": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
},
"{{ should_cover_move_and_tilt is defined }}"
]
}
],
"then": [
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
}
]
},
{
"choose": [],
"default": []
}
]
}
]
}
]
},
{
"alias": "Check for closing cover",
"conditions": [
"{{ is_down_enabled }}",
"{{ trigger.id is defined }}",
"{{ trigger.id | regex_match('^(t_close)') }}",
{
"condition": []
},
{
"and": [
"{{ auto_up_force_disabled }}",
"{{ auto_ventilate_force_disabled }}",
"{{ auto_shading_start_force_disabled }}"
]
},
{
"or": [
"{{ is_status_helper_enabled and not is_helper_closed }}",
"{{ not in_close_position }}"
]
},
"{{ not (is_status_helper_enabled and is_helper_manual and override_closing_after_manual) }}",
{
"or": [
"{{ not is_status_helper_enabled }}",
"{{ not prevent_closing_multiple_times }}",
"{{ is_status_helper_enabled and prevent_closing_multiple_times and (ts_helper_closed < today_at(time_down_early_today) | as_timestamp) }}"
]
},
{
"or": [
{
"and": [
"{{ is_time_control_disabled }}"
]
},
{
"and": [
"{{ is_time_field_enabled }}",
"{{ now() >= today_at(time_down_late_today) }}"
]
},
{
"and": [
"{{ is_schedule_helper_enabled }}",
"{{ time_schedule_helper != [] }}",
"{{ is_state(time_schedule_helper, 'off') }}",
"{{ trigger.id == 't_close_3' }}"
]
},
{
"and": [
{
"or": [
{
"and": [
"{{ is_time_control_disabled }}"
]
},
{
"and": [
"{{ is_time_field_enabled }}",
"{{ now() >= today_at(time_down_early_today) }}",
"{{ now() <= today_at(time_down_late_today) + timedelta(seconds = 5) }}"
]
},
{
"and": [
"{{ is_schedule_helper_enabled }}",
"{{ time_schedule_helper != [] }}",
"{{ is_state(time_schedule_helper, 'on') }}",
"{{ now() >= today_at([time_down_early, time_down_early_non_workday] | min) - timedelta(seconds = 5) }}",
"{{ now() <= today_at([time_down_late, time_down_late_non_workday] | max) + timedelta(seconds = 5) }}"
]
}
]
},
{
"or": [
{
"or": [
"{{ is_brightness_enabled and default_brightness_sensor == [] }}",
"{{ is_brightness_enabled and default_brightness_sensor != [] and (states(default_brightness_sensor) | float(default=brightness_down) < brightness_down) }}"
]
},
{
"or": [
"{{ is_sun_elevation_enabled and default_sun_sensor == [] }}",
"{{ is_sun_elevation_enabled and default_sun_sensor != [] and (current_sun_elevation | float(default=sun_elevation_down) < sun_elevation_down) }}"
]
}
]
}
]
},
{
"and": [
"{{ trigger.id == 't_close_6' }}",
"{{ resident_sensor != [] }}",
"{{ states(resident_sensor) in ['true', 'on'] }}",
"{{ resident_closing_enabled }}"
]
}
]
}
],
"sequence": [
{
"choose": [
{
"alias": "Lockout protection when closing",
"conditions": [
"{{ is_ventilation_enabled }}",
"{{ is_status_helper_enabled }}",
{
"or": [
{
"and": [
"{{ contact_window_opened != [] }}",
"{{ states(contact_window_opened) in ['true', 'on'] }}"
]
},
{
"and": [
"{{ lockout_tilted_when_closing }}",
"{{ contact_window_tilted != [] }}",
"{{ states(contact_window_tilted) in ['true', 'on'] }}"
]
}
]
}
],
"sequence": [
{
"variables": {
"update_values": {
"open": {
"a": 0,
"t": "{{ helper_state_json.open.t }}"
},
"close": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"shading": {
"a": 0,
"t": "{{ helper_state_json.shading.t }}",
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": "{{ helper_state_json.vpart.t }}"
},
"vfull": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"manual": {
"a": 0,
"t": "{{ helper_state_json.manual.t }}"
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
},
{
"alias": "Window tilted. No lockout. Move to ventilation position instead of closing",
"conditions": [
"{{ is_ventilation_enabled }}",
"{{ is_status_helper_enabled }}",
"{{ contact_window_tilted != [] }}",
"{{ states(contact_window_tilted) in ['true', 'on'] }}",
"{{ not lockout_tilted_when_closing }}",
{
"or": [
"{{ contact_window_opened == [] }}",
"{{ states(contact_window_opened) in ['false', 'off'] }}"
]
}
],
"sequence": [
{
"choose": [],
"default": []
},
{
"delay": {
"seconds": "{{ range(drive_delay_fix|int(0), drive_delay_fix|int(0) + drive_delay_random|int(0) +1) | random }}"
}
},
{
"variables": {
"target_position": 13,
"target_tilt_position": 50,
"update_values": {
"open": {
"a": 0,
"t": "{{ helper_state_json.open.t }}"
},
"close": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"shading": {
"a": 0,
"t": "{{ helper_state_json.shading.t }}",
"p": 0,
"q": 0
},
"vpart": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"vfull": {
"a": 0,
"t": "{{ helper_state_json.vfull.t }}"
},
"manual": {
"a": 0,
"t": "{{ helper_state_json.manual.t }}"
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"sequence": [
{
"if": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
}
],
"then": [
{
"sequence": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"choose": [
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 0 }}"
],
"sequence": [
{
"alias": "Close Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.close_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 100 }}"
],
"sequence": [
{
"alias": "Open Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.open_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) not in [0, 100] }}"
],
"sequence": [
{
"alias": "Moving the cover to target position",
"data": {
"position": "{{ target_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_position"
}
]
}
]
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
},
{
"sequence": [
{
"if": [
"{{ not prevent_default_cover_actions }}",
"{{ is_cover_tilt_enabled_and_possible }}",
"{{ expand(blind_entities) | selectattr('attributes.current_tilt_position', 'defined') | list | count > 0 }}"
],
"then": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"if": [
"{{ tilt_first | default(false) }}"
],
"then": [
{
"alias": "Reset Tilt",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"data": {
"tilt_position": "{{ target_tilt_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
}
]
}
]
},
{
"if": [
{
"or": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
},
"{{ should_cover_move_and_tilt is defined }}"
]
}
],
"then": [
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
}
]
},
{
"choose": [],
"default": []
}
]
},
{
"alias": "Only status change if cover is already 'near' the close position",
"conditions": [
{
"or": [
{
"and": [
"{{ is_status_helper_enabled }}",
"{{ prevent_lowering_when_closing_if_shaded }}",
"{{ is_helper_shaded }}",
"{{ close_position > shading_position }}"
]
},
{
"and": [
"{{ prevent_lowering_when_closing_if_shaded }}",
"{{ in_shading_position }}",
"{{ close_position > shading_position }}"
]
},
{
"and": [
"{{ prevent_higher_position_closing }}",
"{{ (current_position <= close_position) }}"
]
}
]
}
],
"sequence": [
{
"variables": {
"update_values": {
"open": {
"a": 0,
"t": "{{ helper_state_json.open.t }}"
},
"close": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"shading": {
"a": 0,
"t": "{{ helper_state_json.shading.t }}",
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": "{{ helper_state_json.vpart.t }}"
},
"vfull": {
"a": 0,
"t": "{{ helper_state_json.vfull.t }}"
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
}
],
"default": [
{
"choose": [],
"default": []
},
{
"alias": "Normal closing of the cover",
"delay": {
"seconds": "{{ range(drive_delay_fix|int(0), drive_delay_fix|int(0) + drive_delay_random|int(0) +1) | random }}"
}
},
{
"variables": {
"target_position": 0,
"target_tilt_position": 50,
"update_values": {
"open": {
"a": 0,
"t": "{{ helper_state_json.open.t }}"
},
"close": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"shading": {
"a": 0,
"t": "{{ helper_state_json.shading.t }}",
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": "{{ helper_state_json.vpart.t }}"
},
"vfull": {
"a": 0,
"t": "{{ helper_state_json.vfull.t }}"
},
"manual": {
"a": 0,
"t": "{{ helper_state_json.manual.t }}"
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"sequence": [
{
"if": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
}
],
"then": [
{
"sequence": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"choose": [
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 0 }}"
],
"sequence": [
{
"alias": "Close Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.close_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 100 }}"
],
"sequence": [
{
"alias": "Open Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.open_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) not in [0, 100] }}"
],
"sequence": [
{
"alias": "Moving the cover to target position",
"data": {
"position": "{{ target_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_position"
}
]
}
]
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
},
{
"sequence": [
{
"if": [
"{{ not prevent_default_cover_actions }}",
"{{ is_cover_tilt_enabled_and_possible }}",
"{{ expand(blind_entities) | selectattr('attributes.current_tilt_position', 'defined') | list | count > 0 }}"
],
"then": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"if": [
"{{ tilt_first | default(false) }}"
],
"then": [
{
"alias": "Reset Tilt",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"data": {
"tilt_position": "{{ target_tilt_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
}
]
}
]
},
{
"if": [
{
"or": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
},
"{{ should_cover_move_and_tilt is defined }}"
]
}
],
"then": [
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
}
]
},
{
"choose": [],
"default": []
}
]
}
]
},
{
"alias": "Check for shading start",
"conditions": [
"{{ is_shading_enabled }}",
"{{ trigger.id is defined }}",
"{{ trigger.id | regex_match('^(t_shading_start|t_open_1|t_open_3)') }}",
"{{ is_status_helper_enabled }}",
{
"condition": []
},
{
"and": [
"{{ auto_up_force_disabled }}",
"{{ auto_down_force_disabled }}",
"{{ auto_ventilate_force_disabled }}"
]
},
{
"or": [
"{{ not is_helper_shaded }}",
"{{ not (is_helper_vent_partial or is_helper_vent_full) }}"
]
},
{
"or": [
"{{ not is_cover_tilt_enabled_and_possible and not in_shading_position }}",
"{{ is_cover_tilt_enabled_and_possible }}"
]
},
"{{ not (is_helper_manual and override_shading_after_manual) }}",
{
"or": [
"{{ not prevent_shading_multiple_times }}",
"{{ prevent_shading_multiple_times and (now().day != ts_helper_shaded|timestamp_custom('%-d') | int) }}",
"{{ trigger.id | regex_match('^(t_shading_start_execution)') }}"
]
}
],
"sequence": [
{
"if": [
{
"or": [
{
"and": [
"{{ is_shading_temp_comparison_independent }}",
{
"or": [
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('sensor.') }}",
"{{ states(shading_forecast_sensor) | float(default=shading_forecast_temp - 1) > shading_forecast_temp }}"
]
},
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('weather.') }}",
"{{ prevent_forecast_service }}",
"{{ state_attr(shading_forecast_sensor, 'temperature') | float(default=shading_forecast_temp - 1) > shading_forecast_temp }}"
]
},
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('weather.') }}",
"{{ not prevent_forecast_service }}",
"{{ weather_forecast is defined }}",
"{{ weather_forecast[shading_forecast_sensor].forecast[0].temperature | float(default=shading_forecast_temp - 1) > shading_forecast_temp }}"
]
},
{
"and": [
"{{ is_shading_compare_forecast_with_sensor2 }}",
"{{ shading_temperatur_sensor2 != [] }}",
"{{ states(shading_temperatur_sensor2) | float(default=shading_forecast_temp) > shading_forecast_temp }}"
]
}
]
}
]
},
{
"and": [
"{{ current_sun_azimuth > shading_azimuth_start and current_sun_azimuth < shading_azimuth_end }}",
"{{ current_sun_elevation > shading_elevation_min and current_sun_elevation < shading_elevation_max }}",
{
"or": [
"{{ shading_brightness_sensor == [] }}",
"{{ states(shading_brightness_sensor) | float(default=shading_sun_brightness_start) > shading_sun_brightness_start }}"
]
},
{
"or": [
"{{ shading_temperatur_sensor1 == [] }}",
"{{ states(shading_temperatur_sensor1) | float(default=shading_min_temperatur1) > shading_min_temperatur1 }}"
]
},
{
"or": [
"{{ shading_temperatur_sensor2 == [] }}",
"{{ states(shading_temperatur_sensor2) | float(default=shading_min_temperatur2) > shading_min_temperatur2 }}"
]
},
{
"or": [
"{{ shading_forecast_sensor == [] }}",
"{{ shading_forecast_temp == [] }}",
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('sensor.') }}",
"{{ states(shading_forecast_sensor) | float(default=shading_forecast_temp - 1) > shading_forecast_temp }}"
]
},
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('weather.') }}",
"{{ prevent_forecast_service }}",
"{{ state_attr(shading_forecast_sensor, 'temperature') | float(default=shading_forecast_temp - 1) > shading_forecast_temp }}"
]
},
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('weather.') }}",
"{{ not prevent_forecast_service }}",
"{{ weather_forecast is defined }}",
"{{ weather_forecast[shading_forecast_sensor].forecast[0].temperature | float(default=shading_forecast_temp - 1) > shading_forecast_temp }}"
]
},
{
"and": [
"{{ is_shading_compare_forecast_with_sensor2 }}",
"{{ shading_temperatur_sensor2 != [] }}",
"{{ states(shading_temperatur_sensor2) | float(default=shading_forecast_temp) > shading_forecast_temp }}"
]
}
]
},
{
"or": [
"{{ shading_forecast_sensor == [] }}",
"{{ shading_weather_conditions == [] }}",
"{{ shading_forecast_sensor is string and shading_forecast_sensor.startswith('sensor.') }}",
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('weather.') }}",
"{{ prevent_forecast_service }}",
"{{ states(shading_forecast_sensor) in shading_weather_conditions }}"
]
},
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('weather.') }}",
"{{ not prevent_forecast_service }}",
"{{ weather_forecast is defined }}",
"{{ weather_forecast[shading_forecast_sensor].forecast[0].condition in shading_weather_conditions }}"
]
}
]
}
]
}
]
}
],
"then": [
{
"choose": [
{
"alias": "Shading detected. Save next execution time and pending status",
"conditions": [
"{{ trigger.id | regex_match('^(t_shading_start_pending)') }}",
"{{ not is_helper_shading_start }}"
],
"sequence": [
{
"variables": {
"update_values": {
"shading": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}",
"p": "{{ (as_timestamp(now()) | round(0) + (shading_waitingtime_start | int)) | round(0) }}",
"q": 0
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
},
{
"alias": "Consider lockout protection when shading starts",
"conditions": [
"{{ trigger.id | regex_match('^(t_shading_start_execution)') }}",
"{{ is_helper_shading_start }}",
"{{ is_ventilation_enabled }}",
{
"or": [
{
"and": [
"{{ contact_window_opened != [] }}",
"{{ states(contact_window_opened) in ['true', 'on'] }}"
]
},
{
"and": [
"{{ lockout_tilted_when_shading_starts }}",
"{{ contact_window_tilted != [] }}",
"{{ states(contact_window_tilted) in ['true', 'on'] }}"
]
}
]
}
],
"sequence": [
{
"variables": {
"update_values": {
"open": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"close": {
"a": 0,
"t": "{{ helper_state_json.close.t }}"
},
"shading": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}",
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": "{{ helper_state_json.vpart.t }}"
},
"vfull": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"manual": {
"a": 0,
"t": "{{ helper_state_json.manual.t }}"
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
},
{
"alias": "Start Shading",
"conditions": [
"{{ trigger.id | regex_match('^(t_shading_start_execution)') }}",
"{{ is_helper_shading_start }}",
{
"or": [
{
"and": [
"{{ not is_cover_tilt_enabled_and_possible }}",
"{{ current_position > shading_position }}"
]
},
{
"and": [
"{{ is_cover_tilt_enabled_and_possible }}",
"{{ current_position >= shading_position }}"
]
}
]
},
{
"or": [
{
"and": [
"{{ is_time_control_disabled }}"
]
},
{
"and": [
"{{ is_time_field_enabled }}",
"{{ now() >= today_at(time_up_early_today) }}",
"{{ now() <= today_at(time_down_late_today) + timedelta(seconds = 5) }}"
]
},
{
"and": [
"{{ is_schedule_helper_enabled }}",
"{{ time_schedule_helper != [] }}",
"{{ is_state(time_schedule_helper, 'on') }}"
]
}
]
},
{
"or": [
"{{ resident_sensor == [] }}",
"{{ states(resident_sensor) in ['false', 'off'] }}",
{
"and": [
"{{ resident_allow_shading }}",
"{{ states(resident_sensor) in ['true', 'on'] }}"
]
}
]
}
],
"sequence": [
{
"delay": {
"seconds": "{{ range(drive_delay_fix | int(0), drive_delay_fix | int(0) + drive_delay_random | int(0) +1) | random }}"
}
},
{
"choose": [],
"default": []
},
{
"variables": {
"target_position": 25,
"target_tilt_position": "{{ shading_tilt_position | int }}",
"update_values": {
"open": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}"
},
"close": {
"a": 0,
"t": "{{ helper_state_json.close.t }}"
},
"shading": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}",
"p": 0,
"q": 0
},
"vpart": {
"a": 0,
"t": "{{ helper_state_json.vpart.t }}"
},
"vfull": {
"a": 0,
"t": "{{ helper_state_json.vfull.t }}"
},
"manual": {
"a": 0,
"t": "{{ helper_state_json.manual.t }}"
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"sequence": [
{
"if": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
}
],
"then": [
{
"sequence": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"choose": [
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 0 }}"
],
"sequence": [
{
"alias": "Close Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.close_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) == 100 }}"
],
"sequence": [
{
"alias": "Open Cover",
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.open_cover"
}
]
},
{
"conditions": [
"{{ not prevent_default_cover_actions }}",
"{{ target_position | default(101) not in [0, 100] }}"
],
"sequence": [
{
"alias": "Moving the cover to target position",
"data": {
"position": "{{ target_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_position"
}
]
}
]
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
},
{
"sequence": [
{
"if": [
"{{ not prevent_default_cover_actions }}",
"{{ is_cover_tilt_enabled_and_possible }}",
"{{ expand(blind_entities) | selectattr('attributes.current_tilt_position', 'defined') | list | count > 0 }}"
],
"then": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"if": [
"{{ tilt_first | default(false) }}"
],
"then": [
{
"alias": "Reset Tilt",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"data": {
"tilt_position": "{{ target_tilt_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
}
]
}
]
},
{
"if": [
{
"or": [
{
"and": [
{
"or": [
"{{ prevent_opening_movement_disabled }}",
"{{ not prevent_opening_movement_disabled and (current_position >= target_position | default(101)) }}"
]
},
{
"or": [
"{{ should_cover_move_and_tilt is not defined }}",
"{{ should_cover_move_and_tilt is defined and should_cover_move_and_tilt }}"
]
}
]
},
"{{ should_cover_move_and_tilt is defined }}"
]
}
],
"then": [
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
}
]
},
{
"choose": [],
"default": []
}
]
},
{
"alias": "Save shading state for the future",
"conditions": [
"{{ trigger.id | regex_match('^(t_shading_start_execution)') }}",
"{{ is_helper_shading_start }}",
"{{ is_helper_closed }}"
],
"sequence": [
{
"variables": {
"update_values": {
"shading": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}",
"p": 0,
"q": 0
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
}
]
}
],
"else": [
{
"choose": [
{
"alias": "Shading conditions were not met consistently and it should be checked again periodically in a few seconds",
"conditions": [
"{{ trigger.id | regex_match('^(t_shading_start_execution)') }}",
"{{ is_helper_shading_start }}",
"{{ start_shading_trigger_periodic }}",
{
"or": [
{
"and": [
"{{ is_time_control_disabled }}",
"{{ is_helper_open }}"
]
},
{
"and": [
"{{ is_time_field_enabled }}",
"{{ now() >= today_at(time_up_early_today) }}",
"{{ now() <= today_at(time_down_late_today) + timedelta(seconds = 5) }}"
]
},
{
"and": [
"{{ is_schedule_helper_enabled }}",
"{{ time_schedule_helper != [] }}",
"{{ is_state(time_schedule_helper, 'on') }}"
]
}
]
}
],
"sequence": [
{
"variables": {
"update_values": {
"shading": {
"a": 1,
"t": "{{ as_timestamp(now()) | round(0) }}",
"p": "{{ (as_timestamp(now()) | round(0) + (shading_waitingtime_start | int)) | round(0) }}",
"q": 0
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
},
{
"alias": "Shading conditions were not consistently met and the next new trigger should be waited for",
"conditions": [
"{{ trigger.id | regex_match('^(t_shading_start_execution)') }}",
"{{ is_helper_shading_start }}",
"{{ start_shading_trigger_reset }}"
],
"sequence": [
{
"variables": {
"update_values": {
"shading": {
"a": 0,
"t": "{{ as_timestamp(now()) | round(0) }}",
"p": 0,
"q": 0
},
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
}
]
}
]
}
]
},
{
"alias": "Check for shading tilt",
"conditions": [
"{{ is_shading_enabled }}",
"{{ trigger.id is defined }}",
"{{ trigger.id | regex_match('^(t_shading_tilt)') }}",
"{{ is_status_helper_enabled }}",
{
"and": [
"{{ is_helper_shaded }}",
"{{ not is_helper_shading_start }}"
]
},
"{{ is_cover_tilt_enabled_and_possible }}",
{
"condition": []
},
{
"and": [
"{{ auto_up_force_disabled }}",
"{{ auto_down_force_disabled }}",
"{{ auto_ventilate_force_disabled }}"
]
},
"{{ not (is_helper_vent_partial or is_helper_vent_full) }}",
"{{ not (is_helper_manual and override_shading_after_manual) }}"
],
"sequence": [
{
"variables": {
"target_tilt_position": "{{ shading_tilt_position | int }}",
"tilt_first": "{{ is_cover_tilt_reposition_enabled | bool }}",
"update_values": {
"t": "{{ as_timestamp(now()) | round(0) }}"
}
}
},
{
"sequence": [
{
"if": [
"{{ not prevent_default_cover_actions }}",
"{{ is_cover_tilt_enabled_and_possible }}",
"{{ expand(blind_entities) | selectattr('attributes.current_tilt_position', 'defined') | list | count > 0 }}"
],
"then": [
{
"repeat": {
"for_each": "{{ blind_entities | list }}",
"sequence": [
{
"if": [
"{{ tilt_first | default(false) }}"
],
"then": [
{
"alias": "Reset Tilt",
"data": {
"tilt_position": 0
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": 0
}
}
]
},
{
"alias": "Tilt Delay",
"delay": {
"seconds": 0
}
},
{
"alias": "Moving the cover to tilt position",
"data": {
"tilt_position": "{{ target_tilt_position | default(101) }}"
},
"target": {
"entity_id": "{{ repeat.item if repeat is defined else '' }}"
},
"action": "cover.set_cover_tilt_position"
},
{
"delay": {
"seconds": "{{ (range(1, 3) | random | int) }}"
}
}
]
}
}
]
}
]
},
{
"if": [
"{{ is_status_helper_enabled }}"
],
"then": [
{
"alias": "Update cover status helper",
"data": {
"entity_id": "input_text.maeve_rolluik_helper",
"value": "{% set dict_var = helper_state_json %}\n{% set dict_new = dict(dict_var, **(update_values | default({})) ) %}\n{{ dict_new | to_json }}"
},
"action": "input_text.set_value"
}
]
}
]
},
{
"alias": "Check for shading end",
"conditions": [
"{{ is_shading_enabled }}",
"{{ trigger.id is defined }}",
"{{ trigger.id | regex_match('^(t_shading_end|t_open_7)') }}",
"{{ is_status_helper_enabled }}",
{
"condition": []
},
{
"and": [
"{{ auto_up_force_disabled }}",
"{{ auto_down_force_disabled }}",
"{{ auto_ventilate_force_disabled }}",
"{{ auto_shading_start_force_disabled }}"
]
},
{
"or": [
{
"and": [
"{{ is_time_control_disabled }}"
]
},
{
"and": [
"{{ is_time_field_enabled }}",
"{{ now() >= today_at(time_up_early_today) }}",
"{{ now() <= today_at(time_down_late_today) + timedelta(seconds = 5) }}"
]
},
{
"and": [
"{{ is_schedule_helper_enabled }}",
"{{ time_schedule_helper != [] }}",
"{{ is_state(time_schedule_helper, 'on') }}"
]
}
]
},
"{{ not (is_helper_manual and override_shading_after_manual) }}",
"{{ not is_helper_closed }}",
{
"or": [
"{{ is_helper_shaded }}",
"{{ in_shading_position }}"
]
},
{
"or": [
"{{ not prevent_shading_end_if_closed }}",
"{{ prevent_shading_end_if_closed and not in_close_position}}"
]
},
{
"or": [
"{{ resident_sensor == [] }}",
"{{ states(resident_sensor) in ['false', 'off'] }}"
]
}
],
"sequence": [
{
"if": [
{
"or": [
"{{ current_sun_azimuth > shading_azimuth_end }}",
"{{ current_sun_elevation > shading_elevation_max }}",
"{{ current_sun_elevation < shading_elevation_min}}",
"{{ states(shading_brightness_sensor) | float(default=shading_sun_brightness_end) < shading_sun_brightness_end }}",
"{{ states(shading_temperatur_sensor1) | float(default=shading_min_temperatur1) < (shading_min_temperatur1 - shading_temperature_hysteresis1) }}",
"{{ states(shading_temperatur_sensor2) | float(default=shading_min_temperatur2) < (shading_min_temperatur2 - shading_temperature_hysteresis2) }}",
{
"or": [
"{{ shading_forecast_sensor == [] }}",
"{{ shading_weather_conditions == [] }}",
"{{ shading_forecast_sensor is string and shading_forecast_sensor.startswith('sensor.') }}",
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('weather.') }}",
"{{ prevent_forecast_service }}",
"{{ states(shading_forecast_sensor) not in shading_weather_conditions }}"
]
},
{
"and": [
"{{ shading_forecast_sensor is string }}",
"{{ shading_forecast_sensor.startswith('weather.') }}",
"{{ not prevent_forecast_service }}",
"{{ weather_forecast is defined }}",
"{{ weather_forecast[shading_forecast_sensor].forecast[0].condition not in shading_weather_conditions }}"
]
}
]
}
]
}
],
"then": [
{
"choose": [
{
"alias": "Shading end detected. Save next execution time and pending status",
"conditions": [
"{{ trigger.id | regex_match('^(t_shading_end_pending)') }}",
"{{ not is_helper_shading_end }}"
],
"sequence": [
{
"variables": {
"local_waitingtime_end": "{% set local_waitingtime_end = shading_waitingtime_end | default(0) | int %} {% if (is_shading_end_immediate_by_sun_position | default(false)) | bool and trigger.id == 't_shading_end_pending_5' %} {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment