-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathpixel-clock-1.yaml
368 lines (334 loc) · 8.27 KB
/
pixel-clock-1.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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
# https://github.com/lubeda/EsphoMaTrix/blob/main/README.md#services
substitutions:
friendly_name: Pixel clock 1
id: pixel_clock1
hostname: pixel-clock1
#font_file: "common/fonts/Calcium.ttf"
font_file: "common/fonts/iPixelSans.ttf"
#font_file: "common/fonts/NotSoTallPixelRRR.ttf" # Sans serif narrow
#font_file: "common/fonts/PixelType2.ttf" # Sans serif square
#font_file: "common/fonts/RetaFontsZasicFontPixel.ttf" # Sans serif wide
# Pin definition from https://github.com/aptonline/PixelIt_Ulanzi
battery_pin: GPIO34
ldr_pin: GPIO35
matrix_pin: GPIO32
left_button_pin: GPIO26
mid_button_pin: GPIO27
right_button_pin: GPIO14
buzzer_pin: GPIO15
scl_pin: GPIO22
sda_pin: GPIO21
external_components:
- source:
type: git
url: https://github.com/lubeda/EsphoMaTrix
refresh: 60s
components: [ ehmtx ]
esphome:
friendly_name: $friendly_name
name: $hostname
comment: "Ulanzi TC001 pixel clock"
on_boot:
- priority: 100
then:
- ds1307.read_time:
esp32:
board: esp32dev
<<: !include common/wifi.yaml
<<: !include common/ota.yaml
<<: !include common/logger.yaml
<<: !include common/api.yaml
web_server:
font:
# adapt the filename to your local settings
# public domain font https://www.pentacom.jp/pentacom/bitfontmaker2/gallery/?id=5993
# or https://github.com/darkpoet78/MatrixClockFonts
- file: $font_file
id: ehmtx_font
size: 16
glyphs: |
! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz°
# Added in proposed pull request #101 <https://github.com/dennisse/EsphoMaTrix/tree/dennisse>.
globals:
- id: autoadjust_brightness
type: "bool"
restore_value: true
initial_value: "true"
binary_sensor:
- !include common/binary_sensors/status.yaml
# Buttons
- platform: gpio
name: "Left button"
entity_category: diagnostic
pin:
number: $left_button_pin
inverted: true
on_press:
lambda:
id(rgb8x32)->skip_screen();
- platform: gpio
name: "Middle button"
entity_category: diagnostic
pin:
inverted: true
number: $mid_button_pin
mode: INPUT_PULLUP
on_press:
lambda:
id(rgb8x32)->hold_screen();
- platform: gpio
name: "Right button"
entity_category: diagnostic
pin:
number: $right_button_pin
inverted: true
on_press:
lambda:
id(rgb8x32)->skip_screen();
# Enable Home Assistant API
api:
services:
- service: alarm
variables:
icon_name: string
text: string
then:
lambda: |-
id(rgb8x32)->add_screen(icon_name,text,7,30,true);
id(rgb8x32)->force_screen(icon_name);
- service: screen
variables:
icon_name: string
text: string
then:
- ehmtx.add.screen:
id: rgb8x32
text: !lambda return text;
icon_name: !lambda return icon_name;
alarm: false
# - service: tuneplay
# variables:
# tune: string
# then:
# - rtttl.play:
# rtttl: !lambda 'return tune;'
number:
- platform: template
name: "Brightness"
min_value: 0
max_value: 255
step: 1
lambda: |-
return id(rgb8x32)->get_brightness();
set_action:
lambda: |-
id(rgb8x32)->set_brightness(x);
switch:
- platform: template
name: "Display"
icon: "mdi:power"
restore_mode: ALWAYS_ON
lambda: |-
return id(rgb8x32)->show_display;
turn_on_action:
lambda: |-
id(rgb8x32)->set_display_on();
turn_off_action:
lambda: |-
id(rgb8x32)->set_display_off();
# Added in proposed pull request #101 <https://github.com/dennisse/EsphoMaTrix/tree/dennisse>.
- platform: template
name: "Auto-adjust brightness"
id: switch_autobrightness
icon: mdi:brightness-auto
restore_mode: RESTORE_DEFAULT_ON
lambda: |-
if (id(autoadjust_brightness)) {
return true;
} else {
return false;
}
turn_on_action:
then:
lambda: |-
id(autoadjust_brightness) = true;
turn_off_action:
then:
lambda: |-
id(autoadjust_brightness) = false;
sensor:
- !include common/sensors/uptime.yaml
- !include common/sensors/wifi_signal.yaml
- platform: sht3xd
temperature:
name: "Internal temperature"
humidity:
name: "Internal relative humidity"
update_interval: 60s
- platform: adc
pin: $battery_pin
name: "battery"
id: battery_voltage
update_interval: 10s
device_class: battery
accuracy_decimals: 0
attenuation: auto
filters:
- sliding_window_moving_average:
window_size: 15
send_every: 15
send_first_at: 1
- multiply: 1.6
- lambda: |-
auto r = ((x - 3) / 0.69 * 100.00);
if (r >= 100) return 100;
if (r > 0) return r;
if (r <= 0) return 1;
return 0;
unit_of_measurement: '%'
- platform: adc
id: light_sensor
name: "Illuminance"
pin: $ldr_pin
update_interval: 10s
attenuation: auto
unit_of_measurement: lx
accuracy_decimals: 0
filters:
- lambda: |-
return (x / 10000.0) * 2000000.0 - 15 ;
# Added in proposed pull request #101 <https://github.com/dennisse/EsphoMaTrix/tree/dennisse>.
on_value:
then:
- lambda: |-
if ( id(autoadjust_brightness) ) {
int n = x / 4 * 1.1 > 255 ? 255 : x / 4 * 1.1; // new value
int c = id(rgb8x32)->get_brightness(); // current value
int d = (n - c) * 100 / c; // diff in %
if ( abs(d) > 2 ) id(rgb8x32)->set_brightness(n);
}
output:
- platform: ledc
pin: $buzzer_pin
id: rtttl_out
rtttl:
output: rtttl_out
i2c:
sda: 21
scl: 22
scan: true
id: bus_a
light:
- platform: neopixelbus
id: ehmtx_light
type: GRB
variant: WS2812
pin: $matrix_pin
num_leds: 256
color_correct: [30%, 30%, 30%]
name: "Light"
restore_mode: ALWAYS_OFF
on_turn_on:
lambda: |-
id(ehmtx_display)->set_enabled(false);
on_turn_off:
lambda: |-
id(ehmtx_display)->set_enabled(true);
time:
- platform: homeassistant
on_time_sync:
then:
ds1307.write_time:
- platform: ds1307
update_interval: never
id: ehmtx_time
display:
- platform: addressable_light
id: ehmtx_display
addressable_light_id: ehmtx_light
width: 32
height: 8
pixel_mapper: |-
if (y % 2 == 0) {
return (y * 32) + x;
}
return (y * 32) + (31 - x);
rotation: 0°
update_interval: 16ms
auto_clear_enabled: true
lambda: |-
id(rgb8x32)->tick();
id(rgb8x32)->draw();
ehmtx:
id: rgb8x32
matrix_component: ehmtx_display
time_component: ehmtx_time
font_id: ehmtx_font
yoffset: 8
clock_time: 30
screen_time: 30
show_date: false
show_dow: false # dow = day of week
date_format: "%m.%d"
time_format: "%I:%M"
icons2html: true
icons:
# https://developer.lametric.com/icons
- id: info
lameid: 620
- id: warning
lameid: 2012
- id: question
lameid: 35088
# - id: question2
# lameid: 918
# - id: question3
# lameid: 35017
- id: alert
lameid: 2012
- id: redalert
lameid: 3491
- id: yellowalert
lameid: 35029
- id: bell
lameid: 43573
- id: doorbell
lameid: 43573
- id: drop
lameid: 12184
- id: food
lameid: 40496
- id: temperature
lameid: 2262
- id: temperature_inside
lameid: 8441
- id: weather_chance_of_rain
lameid: 12184
- id: weather_cloudy
lameid: 2283
- id: weather_fog
lameid: 17055
- id: weather_hail
lameid: 51398
- id: weather_lightning
lameid: 49299
- id: weather_night
lameid: 13345
- id: weather_partly_cloudy
lameid: 12183
- id: weather_pouring
lameid: 49300
- id: weather_rainy
lameid: 26565
- id: weather_snowy
lameid: 2289
- id: weather_snowy_rainy
lameid: 49301
- id: weather_sunny
lameid: 4785
- id: weather_unknown
lameid: 52176
- id: weather_windy
lameid: 52169
# - id: ha
# url: https://github.com/home-assistant/assets/raw/master/logo/logo-small.png