dotcom87 schreef op dinsdag 21 februari 2023 @ 13:31:
[...]
Nogmaals dank voor de feedback!
Ik heb nu het volgende:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| - trigger:
- platform: numeric_state
entity_id: sensor.smart_plug_washing_machine_active_power
for:
hours: 0
minutes: 0
seconds: 20
above: 10
id: running
- platform: numeric_state
entity_id: sensor.smart_plug_washing_machine_active_power
below: 3
id: complete
- platform: state
entity_id: binary_sensor.door_sensor_washing_machine_opening
from: "off"
to: "on"
id: idle
sensor:
- unique_id: 09f289c3-ad4d-44ab-91e5-8b8f1053d116
name: Washing Machine Status Template
state: >-
{%- if trigger.id == 'running'
and
(
is_state('sensor.washing_machine_status_template', 'Idle')
or is_state('sensor.washing_machine_status_template', 'Complete')
)
%}
Running
{%- elif trigger.id == 'complete' and is_state('sensor.washing_machine_status_template', 'Running') %}
Complete
{%- elif trigger.id == 'idle' %}
Idle
{%- endif %} |
En op het eerste zicht lijkt dat te werken

Zie jij nog ruimte voor verbetering @
TheFes ?
1) je eerste statement heeft bij dat trigger.id als enige andere mogelijkheid dat hij al "Running" is, mocht dat voorkomen (wat theoretisch gezien kan, als je power even terugvalt naar 8, wat dus nog niet de "complete" trigger triggert, en dan weer naar boven de 10 gaat) dan wil je neem ik aan dat hij "Running" blijft. Met je huidige template wordt hij dan "unavailable" (of None, dat weet ik even niet helemaal zeker) omdat er aan geen enkele statement voldaan wordt. Dus daar zou alleen het trigger.id gebruiken beter zijn naar mijn idee.
2) Bij "completed" geldt ongeveer hetzelfde. Wat als hij vanaf idle even kortstonding wat power gebruikt, of een meetfoutje heeft, en dus even naar 5 schiet. Dat triggert nog niets, maar als hij dan weer terugvalt naar 0, triggert wel je "completed" trigger. Dat zal ook weer geen match geven met een statement.
Wat je zou kunnen doen is een else meegeven en daar gewoon de huidige state gebruiken (waar je ook naar kunt verwijzen met
this.state, maar ik zou hier denk ik de state meegegeven met de trigger in een trigger variable en dat gebruiken:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| - trigger:
- platform: numeric_state
entity_id: sensor.smart_plug_washing_machine_active_power
for:
hours: 0
minutes: 0
seconds: 20
above: 10
variables:
sensor_state: "Running"
- platform: numeric_state
entity_id: sensor.smart_plug_washing_machine_active_power
below: 3
variables:
sensor_state: "{{ 'Complete' if this.state == 'Running' else this.state }}"
- platform: state
entity_id: binary_sensor.door_sensor_washing_machine_opening
from: "off"
to: "on"
variables:
sensor_state: "Idle"
sensor:
- unique_id: 09f289c3-ad4d-44ab-91e5-8b8f1053d116
name: Washing Machine Status Template
state: "{{ sensor_state }}" |
PS, als je op 2 waardes wil checken kan dat sinds een paar maanden ook gewoon in een
is_state() Voorbeeldje
is_state('sensor.foo', ['banana', 'whale'])
Daarvoor kon het ook al in één test met
states('sensor.foo') in ['banana', 'whale']