143 lines
3.1 KiB
YAML
143 lines
3.1 KiB
YAML
external_components:
|
|
- source: my_components
|
|
components: [waveshare_epaper]
|
|
|
|
esphome:
|
|
name: doorwhat
|
|
friendly_name: doorwhat
|
|
on_boot:
|
|
priority: -100
|
|
then:
|
|
- lambda: |-
|
|
id(sensor_ready) = true;
|
|
- delay: 2s # 2 Sekunden Verzögerung für Stabilität
|
|
|
|
esp32:
|
|
board: esp32dev
|
|
framework:
|
|
type: esp-idf
|
|
|
|
logger:
|
|
|
|
api:
|
|
encryption:
|
|
key: "gLfRXKqMU9IvvwZnIdrWYIclAnc4q5sHVwTkRzUxKyw="
|
|
|
|
ota:
|
|
- platform: esphome
|
|
password: "1618b7dc423684c5d3661481ce284359"
|
|
|
|
wifi:
|
|
ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
|
|
ap:
|
|
ssid: "Doorwhat Fallback Hotspot"
|
|
password: "KBiNyP7EkHCJ"
|
|
|
|
captive_portal:
|
|
|
|
time:
|
|
- platform: homeassistant
|
|
id: ha_time
|
|
|
|
sensor:
|
|
- platform: homeassistant
|
|
entity_id: sensor.shellyhtg3_8cbfeaa53d88_humidity
|
|
id: bad_feuchtigkeit
|
|
|
|
spi:
|
|
clk_pin: 2
|
|
mosi_pin: 15
|
|
|
|
color:
|
|
- id: red
|
|
hex: "FF0000"
|
|
- id: black
|
|
hex: "FFFFFF"
|
|
|
|
font:
|
|
- file: "gfonts://Roboto"
|
|
id: my_font
|
|
size: 18
|
|
|
|
image:
|
|
- file: "cat.svg"
|
|
id: cat_img
|
|
resize: 64x64
|
|
type: BINARY
|
|
|
|
globals:
|
|
- id: last_on_time
|
|
type: std::string
|
|
restore_value: no
|
|
initial_value: '"Noch nie"'
|
|
- id: previous_on_time
|
|
type: std::string
|
|
restore_value: no
|
|
initial_value: '"Noch nie"'
|
|
- id: sensor_ready
|
|
type: bool
|
|
restore_value: no
|
|
initial_value: 'true' # Direkt auf 'true' setzen, damit der Sensor immer bereit ist
|
|
|
|
text_sensor:
|
|
- platform: template
|
|
name: "Letzter Gong"
|
|
id: letzter_gong_sensor
|
|
- platform: template
|
|
name: "Vorheriger Gong"
|
|
id: vorheriger_gong_sensor
|
|
|
|
binary_sensor:
|
|
- platform: gpio
|
|
pin:
|
|
number: 21
|
|
mode: INPUT_PULLUP
|
|
inverted: True
|
|
id: opto_in
|
|
name: "Optokoppler Eingang"
|
|
internal: false
|
|
publish_initial_state: true
|
|
filters:
|
|
- delayed_off: 20ms
|
|
on_press:
|
|
then:
|
|
- delay: 1s
|
|
- lambda: |-
|
|
if (!id(sensor_ready)) return;
|
|
auto time = id(ha_time).now();
|
|
std::string new_time;
|
|
if (time.is_valid()) {
|
|
new_time = time.strftime("%Y-%m-%d %H:%M:%S");
|
|
} else {
|
|
new_time = "Zeit unbekannt";
|
|
}
|
|
id(previous_on_time) = id(last_on_time);
|
|
id(last_on_time) = new_time;
|
|
id(letzter_gong_sensor).publish_state(id(last_on_time));
|
|
id(vorheriger_gong_sensor).publish_state(id(previous_on_time));
|
|
- component.update: my_display
|
|
|
|
|
|
display:
|
|
- platform: waveshare_epaper
|
|
model: 2.90in3c
|
|
cs_pin: 4
|
|
dc_pin: 16
|
|
reset_pin: 17
|
|
busy_pin: 5
|
|
rotation: 90
|
|
reset_duration: 2ms
|
|
id: my_display
|
|
update_interval: 600s
|
|
|
|
lambda: |-
|
|
it.print(0, 4, id(my_font), id(black), "DoorWhat v1.0");
|
|
it.print(170, 65, id(my_font), id(red), "Meow!");
|
|
it.image(186, 1, id(cat_img));
|
|
it.print(0, 30, id(my_font), id(black), "Letzter Gong:");
|
|
it.print(0, 50, id(my_font), id(red), id(last_on_time).c_str());
|
|
it.print(0, 70, id(my_font), id(black), "Vorheriger Gong:");
|
|
it.print(0, 90, id(my_font), id(red), id(previous_on_time).c_str());
|