badkuip schreef op zondag 19 december 2021 @ 21:46:
Kunnen jullie naar een stukje code van mij kijken?
Ik
heb een automation (met triggers) die de mec
hanisc
he ventilatie aanstuurt van de badkamer.
De grenswaarde wordt opgeslagen als een input boolean bij aanvang van
het douc
hen en de ventilator slaat pas af wanneer de grenswaarde weer bereikt wordt.
Huidige trigger om af te slaan
YAML:
1
2
3
4
5
| trigger:
- platform: numeric_state
entity_id: sensor.badkamer_mv_luchtvochtigheid
below: input_number.badkamer_mv_luchtvochtigheid_grenswaarde
id: normale_snelheid |
Nu ben ik niet tevreden met deze trigger omdat de fan dan wel erg lang moet draaien, makkelijk 2 uur om weer op de grenswaarde te komen. Nu
had ik gedac
ht dat de fan al wel mag afslaan wanneer de grenswaarde + 5% bereikt
heeft. Stel dat de grenswaarde luc
htvoc
htig
heid dus 40% is, dan mag de trigger voor
het afslaan van de fan, al afgaan wanneer 45% luc
htvoc
htig
heid bereikt
heeft.
Nu ben ik nog niet zo bekend met templates gebruiken als een sensor, maar ik
had
het onderstaande stukje code in elkaar geklust:
YAML:
1
2
3
| - platform: template
value_template: '{{ states.sensor.badkamer_mv_luchtvochtigheid|float(0) }} < {{ states.input_number.badkamer_mv_luchtvochtigheid_grenswaarde|float(0) + 5}}'
id: testje |
Hopende dat je op deze manier on t
he fly 5% erbij op kan tellen...
Wat denken jullie ervan?
Deze door mijzelf bedac
hte code werkt dus niet. De fan slaat niet af bij grenswaarde + 5%.
Dat zou kunnen komen doordat ik er niet 5 bij op kan tellen in de trigger.
Missc
hien moet ik de automation zelf aanpassen zodat ik eerder in
het proces er 5 bij optel.
Maar dat lukt me niet. Ik gebruik de voorbeelden van
hier en
hier
Heb
het volgende al geprobeerd:
YAML:
1
2
3
4
5
6
7
8
9
10
| - service: input_number.set_value
target:
entity_id: input_number.badkamer_mv_luchtvochtigheid_grenswaarde
data:
value: {{ states('sensor.badkamer_mv_luchtvochtigheid') }}
- service: input_number.set_value
target:
entity_id: input_number.badkamer_mv_luchtvochtigheid_grenswaarde
data:
value: '{{ states.input_number.badkamer_mv_luchtvochtigheid_grenswaarde.state | int ) + 5 }}' |
In
het eerste blokje sc
hrijft ie de sensorwaarde weg in
het input number en in
het tweede blokje telt ie er 5 bij op
Het eerste blokje is bestaande code. Als ik dat alleen al copy paste in de
HA Ontwikkel
hulpmiddelen - services dan krijg ik deze foutmelding:
Kan service input_number.set_value niet aanroepen expected float for dictionary value @ data['value']. Got None
Ik kan de bestaande code dus niet gebruiken om te testen. Ik snap de foutmelding niet
helemaal, wat doe ik fout?
Ik
heb ook al dit geprobeerd:
YAML:
1
2
3
4
5
| - service: input_number.set_value
target:
entity_id: input_number.badkamer_mv_luchtvochtigheid_grenswaarde
data:
value: {{ states('sensor.badkamer_mv_luchtvochtigheid') | float + 5 }} |
Maar dan ook weer een melding over een dictionary value:
Kan service input_number.set_value niet aanroepen expected float for dictionary value @ data['value']. Got None
Of dit:
YAML:
1
2
3
4
5
| - service: input_number.set_value
target:
entity_id: input_number.badkamer_mv_luchtvochtigheid_grenswaarde
data:
value: {{ states('sensor.badkamer_mv_luchtvochtigheid.state) | float + 5 }} |
Hier ook weer een foutmelding over dat stomme woordenboek (dictionary)
Op internet staan de voorbeelden met een |int maar ik denk dat ik een float moet gebruiken omdat de waarde een getal is met een komma erin.
Wat zie ik over
het
hoofd?