Need help in setting up sonoff switch in Home Assistant

Finally I flashed my sonoff basic with Tasmota. But I can’t find any perfect guide for setting up in Home Assistant :sob:

Can you guys help me out!!

try this:

Not sure what I’m missing. I can see the switch in Lovelace UI. (I added through entities). Tried turning on/off but it’s not working

I have a sonoff mini and have integrated into HA using ESPHOME. (addon for Hassio).

Once you have Tasmota on the Sonoff, use ESPHOME to compile new firmware and upload OTA.

Works like a charm. No need for MQTT, HA sees it as an integration.

My code

esphome:
  name: sonoff_mini
  platform: ESP8266
#  board: esp01_1m
  board: esp8285
  on_boot:
    priority: 600
    then: 
    - switch.turn_off: 
        id: relay
wifi:
  ssid: !secret ssid_iot
  password: !secret password_iot
  manual_ip:
    static_ip: 10.1.1.95
    gateway: 10.1.1.1
    subnet: 255.255.255.0  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Sonoff Mini Fallback Hotspot"
    password: "OWNYWRWjLNZJ"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: !secret esp_password
ota:
  password: !secret esp_password
web_server:
  port: 80
#  tasmota template: {"NAME":"Sonoff Mini","GPIO":[17,0,0,0,9,0,0,0,21,56,0,0,255],"FLAG":0,"BASE":1}
#  template decoded: GPIO: GPIO00 17 Button1, GPIO04 9 Switch1, GPIO12 21 Relay1, GPIO13 56 Led1i, GPIO16 255 userdef; BASE: Sonoff Basic

status_led:
  pin:
    number: GPIO13
    inverted: true

  - platform: gpio
    pin:
      number: GPIO4
      mode: INPUT_PULLUP
      inverted: True
    name: "Stair Lights Switch"
    on_press:
      - switch.turn_on: relay
    on_release:
      - switch.turn_off: relay    
switch:
  - platform: gpio
    name: "Stair Lights Relay"
    pin: GPIO12
    id: relay
#    restore_mode: ALWAYS_OFF


https://esphome.io/guides/migrate_sonoff_tasmota.html
I am running HA on a Pi4 in Docker.

1 Like

I’m keep getting this error in Sonoff Console.

04:53:15 MQT: Attempting connection...
04:53:15 MQT: Connect failed to 192.168.31.31:1883, rc 5. Retry in 10 sec

an you show your config and broker settings? Are these just switches?

Here is what’s inside configuration

{
  "logins": [],
  "anonymous": false,
  "customize": {
    "active": false,
    "folder": "mosquitto"
  },
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem",
  "require_certificate": false
}

Here is sonoff mqtt configuration

Here is configuration.yaml

switch:
  - platform: mqtt
    name: "Sonoff"
    state_topic: "stat/sonoff/POWER"
    command_topic: "cmnd/sonoff/POWER"
    availability_topic: "tele/sonoff/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
    retain: false

OK you CANNOT use a user called Homeassistant
Create a new user in HA for MQTT and configure devices for that. Your broker config will work.
Change the client id back to default as well.
image
I’d also suggest removing all config from config and using discovery (SetOption19 On)

Not sure about what I’m missing.

Changed like this buddy.

mqtt:
broker: core-mosquitto
username: mqtt
password: 123456
    
switch:
  - platform: mqtt
    name: "Sonoff"
    state_topic: "stat/sonoff/POWER"
    command_topic: "cmnd/sonoff/POWER"
    availability_topic: "tele/sonoff/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
    retain: false

hassio? if so delete everything mqtt: section and all from config also delete the switch and use discovery: SetOption19 On in Tasmota console.

SetOption19 On in Tasmota console returns this…

00:00:00 Project sonoff Sonoff (Topic sonoff, Fallback DVES_B0E649, GroupTopic sonoffs) Version 6.4.0(sonoff)-2_4_2
00:00:00 WIF: Connecting to AP1 Xiaomi Router 3C in mode 11N as sonoff-1609...
00:00:05 WIF: Connected
00:00:05 DNS: Initialized
00:00:05 HTP: Web server active on sonoff-1609.local with IP address 192.168.31.20
05:35:36 MQT: Attempting connection...
05:35:51 MQT: Connect failed to 192.168.31.31:1883, rc -4. Retry in 10 sec
05:35:57 CMD: SetOption19 On
05:35:57 RSL: homeassistant/light/B0E649_LI_1/config = 
05:35:57 RSL: homeassistant/switch/B0E649_RL_1/config = {"name":"Sonoff","command_topic":"sonoff/cmnd/POWER","state_topic":"sonoff/tele/STATE","value_template":"{{value_json.POWER}}","payload_off":"OFF","payload_on":"ON","availability_topic":"sonoff/tele/LWT","payload_available":"Online","payload_not_available":"Offline"}
05:35:57 RSL: homeassistant/light/B0E649_LI_2/config = 
05:35:57 RSL: homeassistant/switch/B0E649_RL_2/config = 
05:35:57 RSL: homeassistant/light/B0E649_LI_3/config = 
05:35:57 RSL: homeassistant/switch/B0E649_RL_3/config = 
05:35:57 RSL: homeassistant/light/B0E649_LI_4/config = 
05:35:57 RSL: homeassistant/switch/B0E649_RL_4/config = 
05:35:57 RSL: homeassistant/light/B0E649_LI_5/config = 
05:35:57 RSL: homeassistant/switch/B0E649_RL_5/config = 
05:35:57 RSL: homeassistant/light/B0E649_LI_6/config = 
05:35:57 RSL: homeassistant/switch/B0E649_RL_6/config = 
05:35:57 RSL: homeassistant/light/B0E649_LI_7/config = 
05:35:57 RSL: homeassistant/switch/B0E649_RL_7/config = 
05:35:57 RSL: homeassistant/light/B0E649_LI_8/config = 
05:35:57 RSL: homeassistant/switch/B0E649_RL_8/config = 
05:35:57 RSL: sonoff/stat/RESULT = {"SetOption19":"ON"}
05:36:01 MQT: Attempting connection...
05:36:16 MQT: Connect failed to 192.168.31.31:1883, rc -4. Retry in 10 sec
05:36:27 MQT: Attempting connection...
05:36:42 MQT: Connect failed to 192.168.31.31:1883, rc -4. Retry in 10 sec

FYI, I removed the Entity from Lovelace UI and Configuration.yml is like this below now.


# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
# http:
#   base_url: example.duckdns.org:8123

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

mqtt:
  discovery: true
  discovery_prefix: homeassistant

So that’s pretty old firmware. Which binary did you flash? Some of them don’t include discovery.
You don’t need ANY mqtt: section at all if you use hassio and the broker is on the same machine. You use the integration

I flashed Tasmota 6.4.0. And yes. Hassio and Broker running on same machina. i.e RaspberryPi Docker

yes but which binary specifically - they have minimal, etc like about 10 varieties… some don’t support discovery.
Can you update to a later version?

I flashed the latest tasmota.

Here is what I’m getting in the console

05:51:05 MQT: Attempting connection...
05:51:20 MQT: Connect failed to 192.168.31.31:1883, rc -4. Retry in 10 sec
05:51:26 CMD: SetOption19 On
05:51:26 RSL: sonoff/stat/RESULT = {"SetOption19":"ON"}
05:51:27 RSL: homeassistant/light/B0E649_LI_1/config = 
05:51:27 RSL: homeassistant/switch/B0E649_RL_1/config = {"name":"Sonoff","cmd_t":"~cmnd/POWER","stat_t":"~tele/STATE","val_tpl":"{{value_json.POWER}}","pl_off":"OFF","pl_on":"ON","avty_t":"~tele/LWT","pl_avail":"Online","pl_not_avail":"Offline","uniq_id":"B0E649_RL_1","device":{"identifiers":["B0E649"],"connections":[["mac","84:F3:EB:B0:E6:49"]]},"~":"sonoff/"}
05:51:27 RSL: homeassistant/light/B0E649_LI_2/config = 
05:51:27 RSL: homeassistant/switch/B0E649_RL_2/config = 
05:51:27 RSL: homeassistant/light/B0E649_LI_3/config = 
05:51:27 RSL: homeassistant/switch/B0E649_RL_3/config = 
05:51:27 RSL: homeassistant/light/B0E649_LI_4/config = 
05:51:27 RSL: homeassistant/switch/B0E649_RL_4/config = 
05:51:27 RSL: homeassistant/light/B0E649_LI_5/config = 
05:51:27 RSL: homeassistant/switch/B0E649_RL_5/config = 
05:51:27 RSL: homeassistant/light/B0E649_LI_6/config = 
05:51:27 RSL: homeassistant/switch/B0E649_RL_6/config = 
05:51:27 RSL: homeassistant/light/B0E649_LI_7/config = 
05:51:27 RSL: homeassistant/switch/B0E649_RL_7/config = 
05:51:27 RSL: homeassistant/light/B0E649_LI_8/config = 
05:51:27 RSL: homeassistant/switch/B0E649_RL_8/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_BTN_1/config = {"name":"Sonoff Button1","stat_t":"~stat/BUTTON1","avty_t":"~tele/LWT","pl_avail":"Online","pl_not_avail":"Offline","uniq_id":"B0E649_BTN_1","device":{"identifiers":["B0E649"],"connections":[["mac","84:F3:EB:B0:E6:49"]]},"~":"sonoff/","value_template":"{{value_json.STATE}}","pl_on":"TOGGLE","off_delay":1}
05:51:27 RSL: homeassistant/binary_sensor/B0E649_BTN_2/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_BTN_3/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_BTN_4/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_SW_1/config = {"name":"Sonoff Switch1","stat_t":"~stat/SWITCH1","avty_t":"~tele/LWT","pl_avail":"Online","pl_not_avail":"Offline","uniq_id":"B0E649_SW_1","device":{"identifiers":["B0E649"],"connections":[["mac","84:F3:EB:B0:E6:49"]]},"~":"sonoff/","value_template":"{%if is_state(entity_id,\"on\")-%}OFF{%-else-%}ON{%-endif%}"}
05:51:27 RSL: homeassistant/binary_sensor/B0E649_SW_2/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_SW_3/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_SW_4/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_SW_5/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_SW_6/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_SW_7/config = 
05:51:27 RSL: homeassistant/binary_sensor/B0E649_SW_8/config = 
05:51:27 RSL: homeassistant/sensor/B0E649_status/config = {"name":"Sonoff status","stat_t":"~HASS_STATE","avty_t":"~LWT","frc_upd":true,"pl_avail":"Online","pl_not_avail":"Offline","json_attributes_topic":"~HASS_STATE","unit_of_meas":" ","val_tpl":"{{value_json['RSSI']}}","ic":"mdi:information-outline","uniq_id":"B0E649_status","device":{"identifiers":["B0E649"],"connections":[["mac","84:F3:EB:B0:E6:49"]],"name":"Sonoff","model":"Sonoff Basic","sw_version":"8.1.0(tasmota)","manufacturer":"Tasmota"},"~":"sonoff/tele/"}

ok.
So configure>integrations… do you see a MQTT integration?
Do you see any switch entities?
Do you see anything in the log in Home Assistant for the Broker? The console log seems to indicate it’s not connecting to the broker
You created a Home Assistant User called mqtt right?
image
Mine is called MQTT-User

Yes. I see MQTT Mosquito Integration inside Configure -> Integrations

Nope. I don’t see any switch entities

This is inside log

Log Details (WARNING)
Fri Jan 31 2020 10:03:20 GMT+0530 (India Standard Time)

Config entry for mqtt not ready yet. Retrying in 5 seconds.

Yes. I created User named mqtt

I mean the log for the broker… Go to hassio side panel and click on MQTT - look in the log at the bottom. I assume you started the broker?

There should be no ‘config entry for mqtt’! Did you restart HA after you removed it from configuration.yaml?

Here is the log of MQTT Broker.

10:45:55] INFO: Setup mosquitto configuration
[10:45:55] WARNING: SSL not enabled - No valid certs found!
[10:45:55] INFO: No local user available
[10:45:55] INFO: Initialize system configuration.
[10:45:55] INFO: Initialize Hass.io Add-on services
[10:45:55] INFO: Initialize Home Assistant discovery
[10:45:55] INFO: Start Mosquitto daemon
1580447755: mosquitto version 1.6.3 starting
1580447755: Config loaded from /etc/mosquitto.conf.
1580447755: Loading plugin: /usr/share/mosquitto/auth-plug.so
1580447755: |-- *** auth-plug: startup
1580447755:  ├── Username/password checking enabled.
1580447755:  ├── TLS-PSK checking enabled.
1580447755:  └── Extended authentication not enabled.
1580447755: Opening ipv4 listen socket on port 1883.
1580447755: Opening ipv6 listen socket on port 1883.
1580447755: Opening websockets listen socket on port 1884.
1580447755: Warning: Mosquitto should not be run as root/administrator.
1580447805: New connection from 192.168.31.20 on port 1883.
[INFO] found mqtt on Home Assistant
1580447807: New client connected from 192.168.31.20 as DVES_B0E649 (p2, c1, k30, u'mqtt').

I configured it buddy.

Here is what I did.

Uninstalled MQTT Broker. Restarted Host Machine. Then Installed MQTT with discovery enabled.

Then went to configuration -> Integration.
Found MQTT Device. Added to Lovelace.

Thank you so much for your time and help.

Is it possible to enable my Google Home with Tasmota?