-
-
Save zeroping/1679b9d32e38f6e982bc7e445548ff7b to your computer and use it in GitHub Desktop.
# Basic Config | |
#--- | |
#substitutions: | |
# # https://esphome.io/guides/configuration-types.html#substitutions | |
# device_name: esp-br3 # hostname & entity_id | |
# transition_length: 0s # transition when turning on/off | |
## Uses a JST24A triac and a second MCU for dimming | |
esphome: | |
# https://esphome.io/components/esphome | |
name: ${device_name} | |
on_boot: | |
priority: 400 | |
then: | |
- lambda: !lambda |- | |
ESP_LOGI("i2cdimmer", "send dimmer init" ); | |
const uint8_t tosend [] = {0x2A, 0x07, 0x56, 0x01, 0x11, 0xFF, 0x66}; | |
ErrorCode ret = myi2cbus->write(0x50, tosend, 7); | |
ESP_LOGI("i2cdimmer", "result: %d", (int)ret ); | |
esp32: | |
board: esp32dev | |
framework: | |
type: esp-idf | |
sdkconfig_options: | |
CONFIG_FREERTOS_UNICORE: y | |
wifi: | |
# should get set by wifi.yaml | |
#captive_portal: | |
# doesn't work under esp-idf | |
#web_server: | |
#port: 80 | |
# https://esphome.io/components/web_server.html | |
# doesn't work under esp-idf | |
logger: | |
# https://esphome.io/components/logger | |
api: | |
#password: !secret esphome_api_password | |
# https://esphome.io/components/api | |
reboot_timeout: 0s #disable auto-reboot if homeassistant is not connecting | |
ota: | |
#password: !secret esphome_ota_password | |
# https://esphome.io/components/ota | |
i2c: | |
sda: GPIO4 | |
scl: GPIO22 | |
sda_pullup_enabled: true | |
scl_pullup_enabled: true | |
frequency: 100kHz | |
scan: false | |
id: myi2cbus | |
#light: | |
#- platform: status_led | |
#name: "Switch state" | |
#pin: GPIO2 | |
light: | |
- platform: monochromatic | |
# https://esphome.io/components/light/monochromatic.html | |
name: ${device_name} dimmer | |
output: dimi2c | |
default_transition_length: ${transition_length} | |
#gamma_correct: 0 # if we want to disable | |
id: dimmer | |
on_turn_on: | |
- output.turn_on: | |
id: green_led | |
on_turn_off: | |
- output.turn_off: | |
id: green_led | |
- platform: binary | |
id: greenlight | |
name: ${device_name} green led | |
output: green_led | |
- platform: status_led | |
#id: redlight | |
name: ${device_name} red led | |
pin: GPIO26 | |
output: | |
- platform: template | |
id: dimi2c | |
type: float | |
min_power: 0.1 | |
zero_means_zero: true | |
write_action: | |
lambda: !lambda |- | |
uint8_t dim_val = 255 * state; | |
uint16_t chk = 65403-dim_val; | |
const uint8_t tosend [] = {0x2A, 0x09, 0x50 ,0x01, dim_val, 0x00, 0x00, (uint8_t)(chk>>8), (uint8_t)(chk)}; | |
ErrorCode ret = myi2cbus->write(0x50, tosend, 9); | |
ESP_LOGI("i2cdimmer", "result: %d", (int)ret ); | |
- platform: gpio | |
# https://esphome.io/components/output/gpio.html | |
pin: GPIO14 | |
inverted: false | |
id: green_led | |
binary_sensor: | |
- platform: gpio | |
# https://esphome.io/components/binary_sensor/gpio.html | |
pin: | |
number: GPIO32 | |
inverted: true | |
mode: INPUT_PULLUP | |
name: ${device_name} Top Button | |
internal: false | |
on_click: | |
- min_length: 50ms | |
max_length: 350ms | |
then: | |
- light.turn_on: | |
id: dimmer | |
brightness: 70% | |
on_multi_click: | |
- timing: | |
- ON for at least 350ms | |
then: | |
- light.turn_on: | |
id: dimmer | |
brightness: 100% | |
- platform: gpio | |
# https://esphome.io/components/binary_sensor/gpio.html | |
pin: | |
number: GPIO33 | |
inverted: true | |
mode: INPUT_PULLUP | |
name: ${device_name} Bottom Button | |
internal: False | |
on_click: | |
- min_length: 50ms | |
max_length: 350ms | |
then: | |
- light.turn_off: dimmer | |
on_multi_click: | |
- timing: | |
- ON for at least 400ms | |
then: | |
- light.turn_on: | |
id: dimmer | |
brightness: 35% | |
#- output.turn_on: led2 | |
@zeroping Having some troubles flashing this OTA. Any suggestions?
Well, dang. I ran into some trouble myself. I currently have one of mine pulled and plugged into a serial cable, trying to figure out what happened. I compiled a slightly-changed version (to enable esp32_ble_tracker and bluetooth_proxy), uploaded via OTA, and it never got back on wifi.
I'm working on this on my end, and will update once I get it working.
@jschwalbe did you also try enabling bluetooth? Or were you using the .yaml as it is above?
@zeroping & @jschwalbe
I was using this config and wanted to add BLE as well - flashed over serial and everything looked good.
When I went to OTA I got the error Error receiving acknowledge binary size: timed out
.
I did some digging, and found out that it's timing out during the upload.
SO - to fix it, comment out BLE and add the SDKConfig value CONFIG_ESP_TASK_WDT_TIMEOUT_S: "10"
.
Push this OTA to increase the timeout, then after that is successful, uncomment the BLE stuff and it will OTA without error.
I just did this a few minutes ago, and so far everything is working and looks good (I did reassemble the device and put it on mains so power wasn't an issue).
Cheers!
DeadEnd
New to ESPHome (hace used Tasmota on this switch)..... How add/activate BLE sensors?
@balvant813 when I tried a few months ago, this version of the ESP32 didn't support any of the new BLE code. No idea if it can work now, but I haven't tried it since.
No worries. If you can't figure it out, I might be able to look into it. I know I have seen people do similar stuff with ESPHome, but not exactly this. Not many devices with separate up/down buttons.
This may help (from a 3-button switch): https://community.home-assistant.io/t/martin-jerry-tessan-dimmer-automation-help-solved/107324/6
That said, it is not great having to write dimmer-controller logic code yourself. Would be great if that were a pre-written module you could just connect to the buttons and the output.