-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathm5-atom-lite-ld2410.yaml
191 lines (174 loc) · 5.44 KB
/
m5-atom-lite-ld2410.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
---
substitutions:
devicename: m5-lite-ld2410
upper_devicename: M5 Atom Lite with LD2410
ld2410_tx_pin: "22"
ld2410_rx_pin: "19"
packages:
device_base: !include common/device_base.yaml
#device_esp32: !include common/device_esp32.yaml
m5lite: !include common/m5-atom-lite.yaml
ld2410: !include common/ld2410.yaml
wifi:
manual_ip:
# pour une connection rapide, et pour que le conteneur docker esphome puisse trouver l'ESP sans mDNS
static_ip: 192.168.1.163
gateway: 192.168.1.1
subnet: 255.255.255.0
## Device-specific
logger:
level: DEBUG
logs:
sensor: INFO
api:
services:
- service: remote_ir_rc5
variables:
address: int
command: int
then:
- remote_transmitter.transmit_rc5:
address: !lambda 'return address;'
command: !lambda 'return command;'
button:
# https://www.sbprojects.net/knowledge/ir/rc5.php
- platform: template
name: "IR standby"
on_press:
- remote_transmitter.transmit_rc5:
address: 0x05
command: 0x0B
number:
- platform: template
id: display_luminosity
name: luminosité de l'afficheur 7 segments
restore_value: yes
initial_value: 0
optimistic: yes
min_value: 0
max_value: 7
step: 1
globals:
- id: display_active
type: bool
restore_value: no
initial_value: "false"
time:
- platform: homeassistant
id: homeassistant_time
timezone: Europe/Paris
# doublon du capteur de mouvement LD2410
# afin de pouvoir mettre une "automation" sur le déclenchement
binary_sensor:
- platform: copy
source_id: has_moving_target
id: ld2410_motion_internal
internal: true
on_press:
then:
- logger.log: "détection de mouvement"
- script.execute: display_flash
switch:
- platform: template
name: "Afficheur 7 segments"
id: display_switch
lambda: 'return id(display_active);'
turn_on_action:
- logger.log: "allumage de l'afficheur 7 segments"
- script.execute:
id: display_toggle
active: true
turn_off_action:
- logger.log: "extinction de l'afficheur 7 segments"
- script.execute:
id: display_toggle
active: false
script:
# allume l'afficheur 7 segments pendant un temps court
# il ne fait que déclencher un script background, ce qui permet depuis ce script de vérifier si le background est déjà lancé
- id: display_flash
mode: restart
then:
- logger.log: "flash de l'afficheur 7 segments - AVANT IF"
# ne pas exécuter le mode flash si l'afficheur est déjà allumé par un toggle permanent
- if:
# | allumé | script background ON | STATUS |
# |--------|-------------------------|--------|
# | 0 | 1 | 1 |
# | 0 | 0 | 1 |
# | 1 | 1 | 1 |
# | 1 | 0 | 0 |
condition:
or:
# pas allumé
- lambda: 'return !id(display_active);'
# allumé par une autre instance de ce script flash
- and:
# allumé
- lambda: 'return id(display_active);'
# par ce script
- script.is_running: display_flash_background_runner
then:
- logger.log: "flash de l'afficheur 7 segments - APRES IF"
- script.execute: display_flash_background_runner
# script qui reste actif tant que l'afficheur doit rester allumé
- id: display_flash_background_runner
# pour permettre de rester allumé plus longtemps si le déclencheur est toujours actif
mode: restart
then:
- logger.log: "flash de l'afficheur 7 segments - BACKGROUND"
- globals.set:
id: display_active
value: "true"
- delay: 10s
- logger.log: "extinction de l'afficheur 7 segments - BACKGROUND"
- globals.set:
id: display_active
value: "false"
# allume l'afficheur 7 segments jusqu'à nouvel ordre
- id: display_toggle
parameters:
active: bool
then:
- logger.log:
format: "TOGGLE de l'afficheur 7 segments %s"
args: [ 'active ? "ON" : "OFF"']
# si l'afficheur est déjà allumé et doit s'éteindre bientôt, on stoppe le script qui va l'éteindre
- script.stop: display_flash
- globals.set:
id: display_active
value: !lambda 'return active;'
display:
platform: tm1637
clk_pin: 23
dio_pin: 33
update_interval: 500ms
intensity: 4
lambda: |-
static int i = 0;
i++;
if (id(display_active))
{
it.set_on(true);
if ((i % 2) == 0)
it.strftime("%H.%M", id(homeassistant_time).now());
else
it.strftime("%H%M", id(homeassistant_time).now());
it.set_intensity(id(display_luminosity).state);
} else {
it.set_on(false);
}
sensor:
- platform: homeassistant
id: room_light_level
entity_id: sensor.esp32_rf_861390_luminosity
on_value:
then:
- lambda: |-
if (id(room_light_level).state < 20) {
id(display_luminosity).publish_state(0);
} else if (id(room_light_level).state > 60) {
id(display_luminosity).publish_state(7);
} else {
id(display_luminosity).publish_state(int(1 + (id(room_light_level).state - 20) * 5 / 40));
}