Ik was op zoek naar naar een automation om mijn badkamer fan aan te sturen. Ik had al een automation gemaakt waarbij ik gebruik maakte van vooraf bepaalde mate van luchtvochtigheid de fan aanging of uit ging. Dat werkt niet bij deze vochtige dagen, de fan slaat continu aan.
Ik wilde de luchtvochtigheid dus dynamisch bepaald hebben. Ik heb daarvoor een automation aangemaakt met een trend sensor. Zodra de trend sensor detecteert dat er iemand in de douche staat, schrijft hij de luchtvochtigheid van dat moment weg in twee variabelen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| - id: 7075278e-0553-4259-bea0-84847f5a3920
alias: Badkamer MV - bepaal luchtvochtigheid
trigger:
- platform: state
entity_id: binary_sensor.trend_badkamer_luchtvochtigheid
from: 'off'
to: 'on'
action:
- service: input_number.set_value
entity_id: input_number.badkamer_luchtvochtigheid_minimum
data_template:
value: "{{ states('sensor.badkamer_mv_luchtvochtigheid') }}"
- service: input_number.set_value
entity_id: input_number.badkamer_luchtvochtigheid_maximum
data_template:
value: "{{ states('sensor.badkamer_mv_luchtvochtigheid') }}"
initial_state: 'on'
mode: single |
Ik denk dat ik uiteindelijk naar één variabele kan in plaats van twee voor een maximum en een minimum.
Ik gebruik nu twee variabelen omdat ik deze automation van @septillion had gevonden.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| alias: '[KLIMAAT] - Badkamer : Ventilatie op basis van luchtvochtigheid (Duplicate)'
description: >-
Ventilatie aan bij hoge luchtvochtigheid & Ventilatie uit bij lage
luchtvochtigheid
trigger:
- platform: numeric_state
entity_id: sensor.klimaat_badkamer_humidity
above: input_number.badkamer_luchtvochtigheid_maximum
- platform: numeric_state
entity_id: sensor.klimaat_badkamer_humidity
below: input_number.badkamer_luchtvochtigheid_minimum
- platform: state
entity_id: timer.badkamer_maximum_looptijd
to: idle
- platform: state
entity_id: timer.badkamer_minimum_looptijd
to: idle
- platform: state
entity_id: switch.ventilator_badkamer
to: 'on'
- platform: state
entity_id: switch.ventilator_badkamer
to: 'off'
condition: []
action:
- choose:
- conditions:
- condition: or
conditions:
- condition: state
entity_id: switch.ventilator_badkamer
state: 'on'
- condition: numeric_state
entity_id: sensor.klimaat_badkamer_humidity
above: input_number.badkamer_luchtvochtigheid_maximum
- condition: not
conditions:
- condition: state
entity_id: timer.badkamer_luchtvochtigheid_maximum
state: idle
sequence:
- service: switch.turn_on
target:
entity_id: switch.ventilator_badkamer
- service: timer.start
data:
duration: '0'
target:
entity_id:
- timer.badkamer_maximum_looptijd
- timer.badkamer_minimum_looptijd
- conditions:
- condition: or
conditions:
- condition: and
conditions:
- condition: numeric_state
entity_id: sensor.klimaat_badkamer_humidity
below: input_number.badkamer_luchtvochtigheid_minimum
- condition: state
entity_id: timer.badkamer_minimum_looptijd
state: idle
- condition: state
entity_id: timer.badkamer_maximum_looptijd
state: idle
- condition: state
entity_id: switch.ventilator_badkamer
state: 'off'
sequence:
- service: switch.turn_off
target:
entity_id: switch.ventilator_badkamer
- service: timer.cancel
target:
entity_id:
- timer.badkamer_maximum_looptijd
- timer.badkamer_minimum_looptijd
default: []
mode: single |
Ik loop vast op dit stuk (regel 36 t/m 40 hierboven):
code:
1
2
3
4
5
| - condition: not
conditions:
- condition: state
entity_id: timer.badkamer_luchtvochtigheid_maximum
state: idle |
Mij viel op dat de entity id hier niet klopt.
De eerdere timer in de automation heet
timer.badkamer_maximum_looptijd en de maximum luchtvochtigheid heet
input_number.badkamer_luchtvochtigheid_maximum.
Ik ga ervanuit dat hier de timer gebruikt moest worden dus ik heb het aangepast naar
timer.badkamer_maximum_looptijd
Ten tweede werkte dit niet bij mij. De fan sloeg nooit aan. Ik ben eracher gekomen dat hij stukliep op diezelfde conditie.
Als ik de conditie goed snap dan mag de timer niet idle zijn (zie de NOT erboven).
Maar die situatie gaat niet voorkomen omdat bij start de timer juist altijd idle is.
Ik heb de code uiteindelijk als volgt gemaakt en moet de komende dagen nog aanzien of het werkt:
code:
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
| - choose:
- conditions:
- condition: and
conditions:
- condition: state
entity_id: input_boolean.mv_vergrendeld
state: 'off'
- condition: numeric_state
entity_id: sensor.badkamer_mv_luchtvochtigheid
above: input_number.badkamer_luchtvochtigheid_maximum
- condition: state
entity_id: timer.badkamer_maximum_looptijd
state: idle
sequence:
- service: mqtt.publish
data:
topic: itho/cmd
retain: true
payload: '220'
- service: timer.start
data:
duration: '0'
target:
entity_id:
- timer.badkamer_maximum_looptijd
- timer.badkamer_minimum_looptijd |
Ik heb geen switch voor mijn fan om deze aan of uit te zetten maar wel een vergrendeling zodat ik de automation kan overrulen. Als de vergrendeling aan staat dan gaat de automation niet lopen en bedien ik de fan met de hand. Ik ben benieuwd naar jullie feedback, vooral die van @
Septillion