I recently installed a Sonoff Mini thinking it was the solution for wanting a physical switch to control my existing yeelight smart bulb setup. However I’m now experiencing the situation where the Sonoff will cut power to the bulb rendering it unavailable.
Ideally I would like to retain colour/voice control etc for the bulb and be able to use the physical switch in my wall when desired. Is there a way to configure the Sonoff Mini to only send On/Off signals to the bulb when the physical switch is toggled and have the actual power cut be limited to a specific command through HA?
If the Sonoff Mini was infact the wrong way to go about this could anybody recommend a better route?
I have flashed it with Tasmota and have the MQTT settings according to the Drzzs video. Everything works in terms of toggling the switch power, either through HA or the physical switch. The problem remains however that when the on/off is actioned by the Sonoff it makes the Yeelight bulb become unavailable.
Go to your Tasmota web console and type SwitchMode1 5, then SetOption32 10. Now create this two rules in the console:
This rule send a toggle message to topic “cmnd/LohaLed1/power” with a single press and send a toogle message to the topic “cmnd/kitchen_leds/power” when the button is press and hold.
rule1 on switch1#state=2 do publish cmnd/LohaLed1/power toggle endon on switch1#state=3 do publish cmnd/kitchen_leds/power toggle endon
rule1 1
I use this rule to disable the rule 1 and use switch as normal in case the wifi or the Mqtt connection is lost.
rule2 on Mqtt#Disconnected do rule1 0 endon on Mqtt#Connected do rule1 1 endon
rule2 1
Change the topics to your needs. If your yeelight bulb doesn’t have Mqtt you need to create an automation to toggle your lights when message is received on those topics.
With Tasmota on the Mini and connected to MQTT broker on Home Assistant, go to the Tasmota console. There are only three commands needed:
PowerOnState 1
SwitchMode1 0
SetOption114 1
PowerOnState 1 turns the relay on upon start. SeitchMode1 0 reports a TOGGLE whenever the Mini switch detects a change (on-to-off or off-to-on) on MQTT for your Mini topic (will use this later). And the real magic is SetOption114 1 which disconnects the switch from the relay. Toggling the switch now physically does nothing to the relay.
Now you need an Automation in HA. Create one with the following Trigger and Condition setup:
With these settings when there is power loss and the lights were off, they will turn on when electricity is back. Of course it can be solved with HA with automations but the lights will be on for around 2-3 minutes until HA starts and automation is executed. I wonder if it is possible to create a rule in Tasmota which will power on the relay on boot (so PowerOnState 1 as it is) then detached should be switched off somehow and after HA boots up previous state should be recovered (on or off).
This would be far easier with esphome. Just follow the guide.
Then comment out the relay parts and it will stay on.
But far easier just to wire the mains input to the mini and the bulb and ignore the output from the relay.
But this solution has weak point - when HA is down for some reason you will loose possibility to control the lights. With the rule “when mqtt or wifi is disconnected then attach relay to switch” you can still control the lights old fashioned way.
Thanks a lot for helping me. I switched to ESPHome from Tasmota.
Here is my yaml:
substitutions:
device_name: sonoffmini_1
device_ip: 192.168.x.x
esphome:
name: ${device_name}
friendly_name: Łazienka Góra Włącznik Światła
platform: ESP8266
board: esp8285
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: ${device_ip}
gateway: 192.168.x.x
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Lazienka-Gora-Wlacznik-Swiatla"
password: "xxx"
logger:
api:
reboot_timeout: 15min
encryption:
key: "xxx"
ota:
password: "xxx"
# the web_server & sensor components can be removed without affecting core functionaility.
web_server:
port: 80
sensor:
- platform: wifi_signal
name: Wifi
update_interval: 60s
- platform: uptime
name: Czas włączenia
#######################################
# Device specific Config Begins Below #
#######################################
binary_sensor:
- platform: gpio
pin: GPIO00
id: reset
internal: true
filters:
- invert:
- delayed_off: 10ms
on_press:
- switch.toggle:
id: relay_1
- platform: gpio
name: Włącznik
icon: "mdi:lightbulb"
pin: GPIO04
id: switch_1
on_state:
then:
- homeassistant.service:
service: light.toggle
data:
entity_id: light.lazienka_gora
switch:
- platform: gpio
name: Zasilanie
icon: "mdi:power"
pin: GPIO12
id: relay_1
restore_mode: ALWAYS_ON
- platform: restart
name: "Restart"
status_led:
pin:
number: GPIO13
inverted: true
output:
- platform: esp8266_pwm
id: blue_led
pin: GPIO13
inverted: True
light:
# the 4 lines below define the Blue LED light on Sonoff Mini, to expose in HomeAssistant remove line "internal: true"
- platform: monochromatic
name: ${device_name}_blueled
output: blue_led
internal: true # hides the Blue LED from HomeAssistant
I have Wiz bulbs which have memory after power but for some reason it doesn’t work (lights turn on after power cut off). I suppose I should run some “on_boot” commands but I have no idea how to start…
Don’t forget it’s esphome here and you have full control and ownership to do all the things that you want, like checking for api and/or wifi connection and fire commands differently