half working first version

Signed-off-by: Stefan H. <silson@noreply.example.org>
This commit is contained in:
Stefan H. 2023-01-26 15:21:59 +01:00
parent 2e29ac1309
commit 89da0c9340

142
unhb-clock.yaml Normal file
View file

@ -0,0 +1,142 @@
esphome:
name: unhb-uhr
esp8266:
board: d1_mini
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "HzC8U2bilNubXw3t8wA1iH7+5LtNJ+kFY60WcU7NleE="
ota:
password: "a834c6d49c662e76ccac1e4d52c217cc"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.10.192
gateway: 192.168.10.1
subnet: 255.255.255.0
dns1: 192.168.10.1
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Unhb-Uhr Fallback Hotspot"
password: "VRduM2tepC49"
captive_portal:
web_server:
port: 80
mqtt:
broker: mqtt.int.weltendiskus.de
topic_prefix: uhr/01
time:
- platform: sntp
id: sntp_time
light:
- platform: neopixelbus
type: GRBW
variant: SK6812
pin: GPIO2
num_leds: 19
name: "NeoPixel Light"
gamma_correct: 1.7
method:
type: esp8266_uart
bus: 1
async: false
effects:
- addressable_scan:
- addressable_color_wipe:
- addressable_rainbow:
- addressable_fireworks:
- addressable_lambda:
name: "Uhr-Sek-Zufall"
update_interval: 1000ms
lambda: |-
// it.size() - Number of LEDs
// it[num] - Access the LED at index num.
// Set the LED at num to the given r, g, b values
// it[num] = Color(r, g, b);
// Get the color at index num (Color instance)
// it[num].get();
// Example: Simple color wipe
for (int i = it.size()-1 ; i >= 0; i--) {
it[i] = Color::random_color();
}
// it[0] = Color::random_color();
// Bonus: use .range() and .all() to set many LEDs without having to write a loop.
// it.range(0, 50) = Color::BLACK;
// it.all().fade_to_black(10);
- addressable_lambda:
name: "Uhr-Sekunden"
update_interval: 1000ms
lambda: |-
auto sek_offset=9;
// it.size() - Number of LEDs
// it[num] - Access the LED at index num.
// Set the LED at num to the given r, g, b values
// it[num] = Color(r, g, b);
// Get the color at index num (Color instance)
// it[num].get();
auto time = id(sntp_time).now();
// Example: Simple color wipe
for (int i = it.size()-1 ; i >= 0; i--) {
it[i] = Color(0,0,0);
}
auto center=time.second%it.size();;
it[(center)]=Color(255,0,0);
// it[0] = Color::random_color();
// Bonus: use .range() and .all() to set many LEDs without having to write a loop.
// it.range(0, 50) = Color::BLACK;
// it.all().fade_to_black(10);
- addressable_lambda:
name: "Uhr-Sekunden-Linie"
update_interval: 500ms
lambda: |-
auto time = id(sntp_time).now();
auto sek_offset=9;
int sek, i;
it.range(0, it.size()) = Color::BLACK;
sek = time.second*19;
i=0;
while(sek>=60) {
it[i] = Color(255,0,0);
sek-=60; i++;
}
if (sek!=0) it[i] = Color(sek*4, 0, 0);
- addressable_lambda:
name: "Uhr-Sekunden-Punkt"
update_interval: 1000ms
lambda: |-
auto time = id(sntp_time).now();
auto sek_offset=9;
int sek, i;
it.range(0, it.size()) = Color::BLACK;
sek = time.second*19;
i=sek/60;
sek=sek%60;
if (sek!=0) {
it[i] = Color((sek*4)+10, 0, 0);
it[(i+it.size()-1)%it.size()] = Color((60-sek)*4+10, 0, 0);
}
else { it[i] = Color(255, 0, 0); }