blueprint:
  name: HASPone activates a selected page after a specified period of inactivity
  description: '

    ## Blueprint Version: `1.05.00`


    # Description


    Activates a selected page after a specified period of inactivity.


    ## HASPone Page and Button Reference


    The images below show each available HASPone page along with the layout of available
    button objects.


    <details>


    | 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)


    </details>

    '
  domain: automation
  input:
    haspdevice:
      name: HASPone Device
      description: Select the HASPone device
      selector:
        device:
          integration: mqtt
          manufacturer: HASwitchPlate
          model: HASPone v1.0.0
          multiple: false
    targetpage:
      name: Page to activate
      description: Select a destination page for this button to activate.
      default: 1
      selector:
        number:
          min: 1.0
          max: 11.0
          mode: slider
          unit_of_measurement: page
          step: 1.0
    idletime:
      name: Idle Time
      description: Idle time in seconds
      default: 30
      selector:
        number:
          min: 5.0
          max: 900.0
          step: 5.0
          mode: slider
          unit_of_measurement: seconds
  source_url: https://github.com/HASwitchPlate/HASPone/blob/main/Home_Assistant/blueprints/hasp_Activate_Page_on_Idle.yaml
mode: restart
max_exceeded: silent
variables:
  haspdevice: !input haspdevice
  haspname: "{%- for entity in device_entities(haspdevice) -%}\n  {%- if entity|regex_search(\"^sensor\\..+_sensor(?:_\\d+|)$\")
    -%}\n    {{- entity|regex_replace(find=\"^sensor\\.\", replace=\"\", ignorecase=true)|regex_replace(find=\"_sensor(?:_\\d+|)$\",
    replace=\"\", ignorecase=true) -}}\n  {%- endif -%}\n{%- endfor -%}"
  targetpage: !input targetpage
  idletime: !input idletime
  pagecommandtopic: '{{ "hasp/" ~ haspname ~ "/command/page" }}'
  activepage: "{%- set activepage = namespace() -%} {%- for entity in device_entities(haspdevice)
    -%}\n  {%- if entity|regex_search(\"^number\\..*_active_page(?:_\\d+|)$\") -%}\n
    \   {%- set activepage.entity=entity -%}\n  {%- endif -%}\n{%- endfor -%} {{ states(activepage.entity)
    | int(default=-1) }}"
trigger_variables:
  haspdevice: !input haspdevice
  haspname: "{%- for entity in device_entities(haspdevice) -%}\n  {%- if entity|regex_search(\"^sensor\\..+_sensor(?:_\\d+|)$\")
    -%}\n    {{- entity|regex_replace(find=\"^sensor\\.\", replace=\"\", ignorecase=true)|regex_replace(find=\"_sensor(?:_\\d+|)$\",
    replace=\"\", ignorecase=true) -}}\n  {%- endif -%}\n{%- endfor -%}"
  haspsensor: "{%- for entity in device_entities(haspdevice) -%}\n  {%- if entity|regex_search(\"^sensor\\..+_sensor(?:_\\d+|)$\")
    -%}\n    {{ entity }}\n  {%- endif -%}\n{%- 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: "{{-\n  (trigger.payload_json.event is defined)\nand\n  (trigger.payload_json.event
    == 'page')\nand\n  (trigger.payload_json.value is defined)\nand\n  (trigger.payload_json.value
    != targetpage)\n-}}"
action:
- delay:
    seconds: '{{idletime|int}}'
- condition: template
  value_template: "{%- set currentpage = namespace() -%} {%- for entity in device_entities(haspdevice)
    -%}\n  {%- if entity|regex_search(\"^number\\..*_active_page(?:_\\d+|)$\") -%}\n
    \   {%- set currentpage.entity=entity -%}\n  {%- endif -%}\n{%- endfor -%} {%-
    if states(currentpage.entity) == targetpage -%}\n  {{false}}\n{%- else -%}\n  {{true}}\n{%-
    endif -%}"
- service: mqtt.publish
  data:
    topic: '{{pagecommandtopic}}'
    payload: '{{targetpage}}'
    retain: true
