dimmable led

This commit is contained in:
Zygfryd Homonto 2025-06-09 06:34:59 +01:00
parent 35d2705b90
commit c4cec09dd7

172
esp32c3-dimmable-LED.yaml Normal file
View File

@ -0,0 +1,172 @@
# LED GPIO = 1
# Button GPIO = 9 - same as boot
substitutions:
hostname: "moka1-led"
device_name: $hostname
wifi_update_interval: 15s
ch1_pwm_pin: "GPIO01"
debounce: "50ms"
Button1: GPIO09
esphome:
name: $hostname
friendly_name: $hostname
esp32:
board: esp32-c3-devkitm-1
framework:
type: arduino
api:
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: none
ap:
ssid: $hostname
password: "12345678"
captive_portal:
logger:
level: INFO
web_server:
port: 80
time:
platform: homeassistant
id: homeassistant_time
# default sensors
text_sensor:
- platform: wifi_info
ip_address:
name: "${hostname} IP"
icon: mdi:ip-network
ssid:
name: "${hostname} SSID"
bssid:
name: "${hostname} BSSID"
mac_address:
name: "${hostname} MAC"
icon: mdi:ip-network
- platform: template
name: "${hostname} Uptime Human"
id: uptime_human
icon: mdi:timer-sand
- platform: version
name: ${hostname} ESPHome Version
icon: mdi:numeric
sensor:
- platform: wifi_signal
name: "${hostname} RSSI"
update_interval: $wifi_update_interval
icon: mdi:signal
- platform: uptime
name: "${hostname} Uptime"
id: uptime_sensor
icon: mdi:timer-sand
update_interval: $wifi_update_interval
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_human
state: !lambda |-
int seconds = round(id(uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
(to_string(seconds) + "s")
).c_str();
# default controls
switch:
- platform: restart
id: restart_switch
name: "${hostname} Restart"
icon: mdi:restart
button:
- platform: restart
id: restart_button
name: "${hostname} Restart"
icon: mdi:restart
# device specific
output:
- platform: ledc
pin: $ch1_pwm_pin
id: ch1_pwm
frequency: "25000Hz"
min_power: 0.0
max_power: 1.0
light:
- platform: monochromatic
name: "$hostname light"
id: led1
output: ch1_pwm
default_transition_length: "1.0s"
restore_mode: RESTORE_DEFAULT_ON
binary_sensor:
- platform: status
name: "${hostname} Status"
icon: mdi:connection
# Button on mini switch
- platform: gpio
pin:
number: $Button1
mode: INPUT_PULLUP
inverted: true
name: "${hostname} Button"
disabled_by_default: false
internal: true
on_multi_click:
# 3 clicks: 50%
- timing:
- ON for at most 0.5s
- OFF for at most 0.5s
- ON for at most 0.5s
- OFF for at most 0.5s
then:
- light.turn_on:
id: led1
brightness: 50%
# short click: toggle
- timing:
- ON for at most 1s
- OFF for at least 0.2s
then:
- light.toggle: led1
# long click: 100%
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- light.turn_on:
id: led1
brightness: 100%