From c4cec09dd7e9dbe6c476d16ae8c6550655278db2 Mon Sep 17 00:00:00 2001 From: Zygfryd Homonto <> Date: Mon, 9 Jun 2025 06:34:59 +0100 Subject: [PATCH] dimmable led --- esp32c3-dimmable-LED.yaml | 172 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 esp32c3-dimmable-LED.yaml diff --git a/esp32c3-dimmable-LED.yaml b/esp32c3-dimmable-LED.yaml new file mode 100644 index 0000000..b36315e --- /dev/null +++ b/esp32c3-dimmable-LED.yaml @@ -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% + \ No newline at end of file