Last active
December 16, 2025 18:16
-
-
Save FrankTub/75b37af55bb0132a29f8d393841143b4 to your computer and use it in GitHub Desktop.
CCA trace resident sensor turning of results in false opening of cover
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "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