Skip to content

Instantly share code, notes, and snippets.

@mstump
Created September 23, 2022 01:33
Show Gist options
  • Select an option

  • Save mstump/af7cf1f4f55740476547055ce59e6d9c to your computer and use it in GitHub Desktop.

Select an option

Save mstump/af7cf1f4f55740476547055ce59e6d9c to your computer and use it in GitHub Desktop.

Revisions

  1. mstump created this gist Sep 23, 2022.
    58 changes: 58 additions & 0 deletions blueprint.yaml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,58 @@
    blueprint:
    name: Low moisture level detection & notification for all plant sensors
    description: Regularly test all plant sensors with 'moisture' crossing
    under their threshold.
    domain: automation
    input:
    time:
    name: Time to test on
    description: Test is run at configured time
    default: '10:00:00'
    selector:
    time: {}
    day:
    name: Weekday to test on
    description: 'Test is run at configured time either everyday (0) or on a given
    weekday (1: Monday ... 7: Sunday)'
    default: 0
    selector:
    number:
    min: 0.0
    max: 7.0
    mode: slider
    step: 1.0
    exclude:
    name: Excluded Sensors
    description: Plant sensors (e.g. cactus) to exclude from detection. Only entities are supported, devices must be expanded!
    default: {entity_id: []}
    selector:
    target:
    entity:
    domain: plant
    actions:
    name: Actions
    description: Notifications or similar to be run. {{sensors}} is replaced with
    the names of sensors being low on moisture.
    selector:
    action: {}
    variables:
    day: !input 'day'
    exclude: !input 'exclude'
    sensors: >-
    {% set result = namespace(sensors=[]) %}
    {% for state in states.plant if 'moisture low' in state.attributes.problem %}
    {% if not state.entity_id in exclude.entity_id %}
    {% set result.sensors = result.sensors + [state.attributes.friendly_name] %}
    {% endif %}
    {% endfor %}
    {{result.sensors|join(', ')}}
    trigger:
    - platform: time
    at: !input 'time'
    condition:
    - '{{ sensors != '''' and (day | int == 0 or day | int == now().isoweekday()) }}'
    action:
    - choose: []
    default: !input 'actions'
    mode: single