From 9e1e6236f0d2fa3e4536a27c4515932101537a10 Mon Sep 17 00:00:00 2001 From: aderusha Date: Thu, 4 Mar 2021 08:00:52 -0500 Subject: [PATCH] Add Activate Page on Idle --- .../hasp_Activate_Page_on_Idle.yaml | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 Home_Assistant/blueprints/hasp_Activate_Page_on_Idle.yaml diff --git a/Home_Assistant/blueprints/hasp_Activate_Page_on_Idle.yaml b/Home_Assistant/blueprints/hasp_Activate_Page_on_Idle.yaml new file mode 100644 index 0000000..1637580 --- /dev/null +++ b/Home_Assistant/blueprints/hasp_Activate_Page_on_Idle.yaml @@ -0,0 +1,114 @@ +blueprint: + name: "HASP p[x].b[y] activates a selected page after a specified period of inactivity" + description: | + + # Description + + Activates a selected page after a specified period of inactivity. + + ## HASP Page and Button Reference + + The images below show each available HASP page along with the layout of available button objects. + +
+ + | Page 0 | Pages 1-3 | Pages 4-5 | + |--------|-----------|-----------| + | ![Page 0](https://raw.githubusercontent.com/HASwitchPlate/HASPone/main/images/NextionUI_p0_Init_Screen.png) | ![Pages 1-3](https://raw.githubusercontent.com/HASwitchPlate/HASPone/main/images/NextionUI_p1-p3_4buttons.png) | ![Pages 4-5](https://raw.githubusercontent.com/HASwitchPlate/HASPone/main/images/NextionUI_p4-p5_3sliders.png) | + + | Page 6 | Page 7 | Page 8 | + |--------|--------|--------| + | ![Page 6](https://raw.githubusercontent.com/HASwitchPlate/HASPone/main/images/NextionUI_p6_8buttons.png) | ![Page 7](https://raw.githubusercontent.com/HASwitchPlate/HASPone/main/images/NextionUI_p7_12buttons.png) | ![Page 8](https://raw.githubusercontent.com/HASwitchPlate/HASPone/main/images/NextionUI_p8_5buttons+1slider.png) | + + | Page 9 | Page 10 | Page 11 | + |--------|---------|---------| + | ![Page 9](https://raw.githubusercontent.com/HASwitchPlate/HASPone/main/images/NextionUI_p9_9buttons.png) | ![Page 10](https://raw.githubusercontent.com/HASwitchPlate/HASPone/main/images/NextionUI_p10_5buttons.png) | ![Page 11](https://raw.githubusercontent.com/HASwitchPlate/HASPone/main/images/NextionUI_p11_1button+1slider.png) + +
+ + source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Activate_Page_on_Idle.yaml" + domain: automation + input: + haspdevice: + name: "HASP Device" + description: "Select the HASP device" + selector: + device: + integration: mqtt + manufacturer: "HASwitchPlate" + model: "HASPone v1.0.0" + targetpage: + name: "Page to activate" + description: "Select a destination page for this button to activate." + default: 1 + selector: + number: + min: 1 + max: 11 + mode: slider + unit_of_measurement: page + idletime: + name: "Idle Time" + description: "Idle time in seconds" + default: 30 + selector: + number: + min: 5 + max: 900 + step: 5 + mode: slider + unit_of_measurement: seconds + +mode: restart +max_exceeded: silent + +variables: + haspdevice: !input haspdevice + haspname: >- + {%- for entity in device_entities(haspdevice) -%} + {%- if entity|regex_search("^sensor\.") -%} + {{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}} + {{ break }} + {%- endif -%} + {%- endfor -%} + targetpage: !input targetpage + idletime: !input idletime + pagecommandtopic: '{{ "hasp/" ~ haspname ~ "/command/page" }}' + +trigger_variables: + haspdevice: !input haspdevice + haspname: >- + {%- for entity in device_entities(haspdevice) -%} + {%- if entity|regex_search("^sensor\.") -%} + {{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}} + {{ break }} + {%- endif -%} + {%- endfor -%} + haspsensor: >- + {%- for entity in device_entities(haspdevice) -%} + {%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%} + {{ entity }} + {{ break }} + {%- endif -%} + {%- endfor -%} + jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}' + targetpage: !input targetpage + pagejsonpayload: '{"event":"page","value":{{targetpage}}}' + +trigger: + - platform: mqtt + topic: "{{jsontopic}}" + +condition: + - condition: template + value_template: "{{ is_state(haspsensor, 'ON') }}" + - condition: template + value_template: "{{ not( (trigger.payload_json.event is defined) and (trigger.payload_json.event == 'page') and (trigger.payload_json.value is defined) and (trigger.payload_json.value == targetpage) ) }}" + +action: + - delay: + seconds: "{{idletime|int}}" + - service: mqtt.publish + data: + topic: "{{pagecommandtopic}}" + payload: "{{targetpage}}"