oled display gaat aan en uit nu
This commit is contained in:
276
esphome-web-a17130.yaml
Normal file
276
esphome-web-a17130.yaml
Normal file
@ -0,0 +1,276 @@
|
||||
substitutions:
|
||||
device_name: a17130
|
||||
friendly_name: Zwembad
|
||||
displayDelay: 5s
|
||||
esp32:
|
||||
board: esp32-c3-devkitm-1
|
||||
framework:
|
||||
type: esp-idf
|
||||
esphome:
|
||||
name: ${device_name}
|
||||
friendly_name: ${friendly_name}
|
||||
min_version: 2025.5.0
|
||||
name_add_mac_suffix: true
|
||||
# Enable logging
|
||||
logger:
|
||||
level: DEBUG
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
manual_ip:
|
||||
static_ip: 192.168.1.165
|
||||
gateway: 192.168.1.254
|
||||
subnet: 255.255.255.0
|
||||
dns1: 192.168.1.1
|
||||
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||
ap:
|
||||
ssid: !secret ap_ssid
|
||||
password: !secret ap_password
|
||||
captive_portal:
|
||||
web_server:
|
||||
port: 80
|
||||
version: 3
|
||||
ota:
|
||||
- platform: !secret ota_platform
|
||||
password: !secret ota_password
|
||||
# Enable Home Assistant API
|
||||
api:
|
||||
|
||||
i2c:
|
||||
sda: GPIO20
|
||||
scl: GPIO21
|
||||
scan: true
|
||||
id: bus_a
|
||||
frequency: 400kHz
|
||||
font:
|
||||
- file: "fonts/Helvetica.ttf"
|
||||
id: helvetica
|
||||
size: 10
|
||||
- file: "fonts/Helvetica.ttf"
|
||||
id: small_font
|
||||
size: 9
|
||||
# Display configuration (SSD1306 128x64 OLED)
|
||||
display:
|
||||
- platform: ssd1306_i2c
|
||||
model: "SH1106 128x64"
|
||||
address: 0x3C
|
||||
update_interval: 0.5s
|
||||
id: my_display
|
||||
pages:
|
||||
- id: page1
|
||||
lambda: |-
|
||||
it.print(0, 0, id(helvetica), "Overzicht");
|
||||
it.printf(1,15,id(helvetica),"Sensor aanvoer: %8f.0", id(aanvoerTemp).state);
|
||||
it.printf(1,25,id(helvetica),"Sensor retour: %8f.0", id(retourTemp).state);
|
||||
it.printf(1,35,id(helvetica),"Dak: %8f.0", id(dakTemp).state);
|
||||
it.printf(1,45,id(helvetica),"Bad: %8f.0", id(badTemp).state);
|
||||
|
||||
- id: page2
|
||||
lambda: |-
|
||||
it.print(0, 0, id(helvetica), "Page 2");
|
||||
it.print(0, 20, id(helvetica), "Settings");
|
||||
- id: page3
|
||||
lambda: |-
|
||||
it.print(0, 0, id(helvetica), "Page 3");
|
||||
it.print(0, 20, id(helvetica), "Status");
|
||||
- id: page4
|
||||
lambda: |-
|
||||
it.print(0, 0, id(helvetica), "Hardware");
|
||||
it.printf(0, 15, id(helvetica), "Uptime: %s", id(uptime_sensor).state.c_str());
|
||||
it.printf(0, 25, id(helvetica), "IP: %s", id(ip_addr).state.c_str());
|
||||
it.printf(0, 35, id(helvetica), "WiFi RSSI: %d dBm", (int)id(wifi_signal1).state);
|
||||
|
||||
time:
|
||||
- platform: homeassistant
|
||||
id: my_time
|
||||
|
||||
# Button configuration
|
||||
binary_sensor:
|
||||
- platform: gpio
|
||||
pin: GPIO03
|
||||
name: "Menu Button"
|
||||
on_press:
|
||||
- logger.log: "Button pressed"
|
||||
- script.execute: reset_oled_timeout
|
||||
|
||||
light:
|
||||
- platform: monochromatic
|
||||
name: displayBL
|
||||
id: displayBL
|
||||
output: my_display1
|
||||
# restore_mode: ALWAYS_ON
|
||||
initial_state:
|
||||
state: true
|
||||
on_turn_on:
|
||||
- logger.log:
|
||||
format: "Display On begin: %d"
|
||||
args: [ 'id(oled_on)' ]
|
||||
- lambda: id(my_display).turn_on();
|
||||
# - delay: !lambda 'return id(displayDelay);'
|
||||
- lambda: id(my_display).turn_off();
|
||||
on_turn_off:
|
||||
then:
|
||||
- logger.log:
|
||||
format: "Display Off: %d"
|
||||
args: [ 'id(oled_on)' ]
|
||||
- lambda: id(my_display).turn_off();
|
||||
output:
|
||||
- platform: template
|
||||
id: my_display1
|
||||
type: float
|
||||
write_action:
|
||||
then:
|
||||
- lambda: id(my_display).set_contrast(state);
|
||||
|
||||
|
||||
# status_led:
|
||||
# pin:
|
||||
# number: GPIO08
|
||||
# inverted: true
|
||||
# time:
|
||||
# - platform: sntp
|
||||
# id: sntp_time
|
||||
|
||||
# DS18B20 Temperature Sensor
|
||||
one_wire:
|
||||
- platform: gpio
|
||||
pin: GPIO5
|
||||
id: bus1
|
||||
- platform: gpio
|
||||
pin: GPIO6
|
||||
id: bus2
|
||||
- platform: gpio
|
||||
pin: GPIO7
|
||||
id: bus3
|
||||
- platform: gpio
|
||||
pin: GPIO8
|
||||
id: bus4
|
||||
|
||||
sensor:
|
||||
- platform: dallas_temp
|
||||
one_wire_id: bus1
|
||||
name: "aanvoer"
|
||||
id: aanvoerTemp
|
||||
#address: 0x1b3c01d607832828
|
||||
- platform: dallas_temp
|
||||
one_wire_id: bus2
|
||||
name: "retour"
|
||||
id: retourTemp
|
||||
#address: 0x813c01d6076ecf28
|
||||
- platform: dallas_temp
|
||||
one_wire_id: bus3
|
||||
name: "dak"
|
||||
id: dakTemp
|
||||
#address: 0x94041722904dff28
|
||||
- platform: dallas_temp
|
||||
one_wire_id: bus4
|
||||
name: "bad"
|
||||
id: badTemp
|
||||
#address: 0xe6031722aa43ff28
|
||||
|
||||
# Rotary encoder configuration
|
||||
- platform: rotary_encoder
|
||||
name: "Rotary Encoder"
|
||||
id: my_encoder
|
||||
pin_a: GPIO00
|
||||
pin_b: GPIO01
|
||||
min_value: 0
|
||||
max_value: 3
|
||||
resolution: 1
|
||||
on_value:
|
||||
then:
|
||||
- script.execute: reset_oled_timeout
|
||||
on_clockwise:
|
||||
- display.page.show_next: my_display
|
||||
on_anticlockwise:
|
||||
- display.page.show_previous: my_display
|
||||
- platform: uptime
|
||||
name: Uptime Sensor
|
||||
id: uptime_seconds
|
||||
update_interval: 5s
|
||||
internal: true
|
||||
on_value:
|
||||
then:
|
||||
- lambda: |-
|
||||
int secs = int(x);
|
||||
int mins = secs / 60;
|
||||
int hrs = mins / 60;
|
||||
int days = hrs / 24;
|
||||
char buf[32];
|
||||
sprintf(buf, "%dD %02d:%02d:%02d", days, hrs % 24, mins % 60, secs % 60);
|
||||
id(uptime_sensor).publish_state(buf);
|
||||
|
||||
- platform: wifi_signal
|
||||
name: "WiFi Signal"
|
||||
id: wifi_signal1
|
||||
update_interval: 5s
|
||||
internal: true
|
||||
|
||||
globals:
|
||||
- id: oled_on
|
||||
type: bool
|
||||
restore_value: no
|
||||
initial_value: "true"
|
||||
|
||||
interval:
|
||||
- interval: 1s
|
||||
then:
|
||||
- if:
|
||||
condition:
|
||||
- not:
|
||||
- script.is_running: oled_timeout
|
||||
then:
|
||||
- script.execute: oled_timeout
|
||||
|
||||
script:
|
||||
- id: reset_oled_timeout
|
||||
then:
|
||||
- lambda: |-
|
||||
id(oled_on) = true;
|
||||
# - display.page.show: my_display
|
||||
- lambda: id(my_display).turn_on();
|
||||
- script.stop: oled_timeout
|
||||
- script.execute: oled_timeout
|
||||
|
||||
- id: oled_timeout
|
||||
mode: restart
|
||||
then:
|
||||
- delay: 5s
|
||||
- lambda: |-
|
||||
id(oled_on) = false;
|
||||
# - display.page.show: my_display
|
||||
- lambda: id(my_display).turn_off();
|
||||
|
||||
|
||||
|
||||
text_sensor:
|
||||
- platform: wifi_info
|
||||
ip_address:
|
||||
name: ESP32 IP Address
|
||||
id: ip_addr
|
||||
internal: true
|
||||
|
||||
- platform: template
|
||||
name: "Uptime Readable"
|
||||
id: uptime_sensor
|
||||
internal: true
|
||||
# Example configuration entry
|
||||
switch:
|
||||
- platform: gpio
|
||||
pin: GPIO04
|
||||
id: relay
|
||||
inverted: true
|
||||
name: "Zwembadpomp"
|
||||
icon: "mdi:pump"
|
||||
on_turn_on:
|
||||
- delay: 500ms
|
||||
- switch.turn_off: relay
|
||||
# - platform: gpio
|
||||
# pin: GPIO10
|
||||
# id: relay2
|
||||
# inverted: true
|
||||
# name: "Zwembadpomp 2"
|
||||
# icon: "mdi:pump"
|
||||
# on_turn_on:
|
||||
# - delay: 500ms
|
||||
# - switch.turn_off: relay2
|
Reference in New Issue
Block a user