MQTT : How to Retain Sonoff Switch Setting across Restarts of HA

So instead of “/Sonoff_2/#” in the setup of ESP easy I have to write "/Sonoff_2/relais/STATE and then the same in my yaml?

Yes, just make sure you include something that specifically identifies that Sonoff (maybe that it is the 2) so that you can have different topics for different switches.

I’m not sure what happens if you publish something with a ‘#’ in the topic, but its definitely something to avoid, just to stop confusion.

I get the following when I connect:

$mosquitto_sub -u tom -P xxxxxxxx  -t "#" -v
   cmnd/sonoff/power ON
   tele/sonoff/LWT Online

Where do I enter this command?

Thanks all for your help!

Tom

Hi @eBoon, just type it in your browser, or browse to ip of the sonoff, go to ‘Console’ and type the Command PowerRetain 1
After monkey_of_hill’s tip, i found this about the commands.

8 Likes

THANK YOU! That did it. Is that something I will need to do everytime I power up the Sonoff? Guess I should probably modify the Sonoff code to set that by default.

Thanks again!

Tom

Found it…

user_config.h (MQTT_POWER_RETAIN) :

#define MQTT_BUTTON_RETAIN     0                 // [ButtonRetain] Button may send retain flag (0 = off, 1 = on)
#define MQTT_POWER_RETAIN      1                 // [PowerRetain] Power status message may send retain flag (0 = off, 1 = on)
#define MQTT_SWITCH_RETAIN     0                 // [SwitchRetain] Switch may send retain flag (0 = off, 1 = on)

Hello, easier to use your web browser to connect to your sonoff module URL > " http://sonoff.ip.addrs ", then click on “Console” button, and enter the command " PowerRetain 1 " …

2 Likes

Yes you are absolutely correct. I was worried that the setting would not be retained across power cycles - but have confirmed that it is!

Yes, and while you are in the console, if you send a HASS command to your sonoff modules, you will see : MQTT: stat/sonoff1/POWER = ON (retained) ! ain’t that cute !

2 Likes

Thanks for this
I’m surprised this wasn’t enabled by default or was it?

1 Like

@jeanrocco
Thank you very much for this tip. This has been nagging me since I installed the Sonoff and have tried other useless approaches.

1 Like

I have enabled PowerRetain via the Console in the web interface of a sonoff switch, however it still doesn’t retain when HA is restarted. Is this because I’m using the internal MQTT broker?

Using an mqtt client on my phone, I can see the Sonoff stat messages say “not retained”.

Yes, the built-in broker does not seem to honor the retain flag.

Just to add, it works perfectly with the hassio add on though if you’re inclined to change

1 Like

I installed mosquitto last night and connected my sonoffs and HA to it. Haven’t had a chance to properly test it but in my android client the messages still show up as not retained.

EDIT: Having messed about for a bit, it now works as expected. If a device is on when HA restarts then it will be know it’s on. So migrating to mosquitto solved the problem for me.

1 Like

That’s always been ‘the cure’ but a guy came up with a fix using the built in broker the other day. Can’t comment on it myself as I use hassio though.

PowerRetain 1 seems to work perfect, on every HA restart it will keep last button states.
The problem now to solve is that if you do a hassio host reboot, the son off is not able to conect to mqtt host, you need to restart sonoff for all go back to normal
Anyway to solve this?

Hi I have the same problem but I notice that the problem come out when I reboot mqtt or the sonoff loose connection…

Super! Works for me!

Hi,

I have the following problem with MQTT and Sonofff SV. After reboot stays ON:
Background of the problem:

  • Sonoff SV was responsible for opening my main door
  • the solution was working perfectly for close to 10 days
  • after some of the reboots I did while modifying hassio setup I noticed that the door is buzzing constantly (as somebody has pressed the button to open a door). I switched off the power to my Sonoff as a temp solution

Here is what I tried and the different outcomes:

  • changed the settings of the Sonoff not to be linked to the build in MQTT broker - upon restart it was in OFF state as expected. Conclusion Broker is triggering the state to be ON
  • changed the state of the Sonoff from the console to be Retain status OFF after reboot
  • after connecting to the Broker the problem came back. Conclusion as it was also described in different posts Broker is overwriting the state in the Sonoff. The problem seems to be in the broker.
  • I did uninstall of the Mosquito build in Broker and after that installed again. The setup to open the door worked fine for a short time. When I did occasional reboot of the Raspberry PI the Sonoff was again in ON state.

I am not sure how I can overcome the problem.
My next step will be to try using Broker that will be running on Ubuntu Server and connecting to it from HA.

Any help on the matter will be appreciated.