Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Find below some background and other information.
Topic, GroupTopic and FallBack Topic
Initially I had one MQTT configurable topic planned called TOPIC but soon found out that when two sonoffs come online with the same topic this would be a challenge at least...
I then introduced a unique, non-configurable topic which I call fallback topic that allows me to always change the MQTT configurable topic to a new unique topic. This fallback topic is just what it is meant to be: A FALLBACK TOPIC in case of emergency.
All MQTT status messages will be sent using the configurable TOPIC which should be made unique by the user. It might be called bedroom but it could also have been called titanic10 as long as the user knows what it is and where to find it.
Having two sonoffs with the same topic allowed for MQTT commands to be sent once to make them act in sono. That inspired me to add a third topic to subscribe to which I call GROUPTOPIC. Sonoffs with the same GROUPTOPIC will react to the same MQTT command. I use it to update firmware to all my sonoffs using separate groups for plain sonoff, pow sonoffs and th sonoffs.
BTW changing TOPIC can be done online using the fallback topic and is only needed once. There is no need to change user_config.h all the time, as many users seem to think they have to do with any new release. All changes are stored in flash and I make a lot of effort to keep these changes available between versions.
For Flash afficionados
To stop saving parameter changes to Flash or Spiffs use command
To stop saving power changes only to Flash or Spiffs use command
SetOption0 off. This will disable the relay from returning to the same state after power on UNLESS you use the MQTT retain flag in which case the MQTT broker will send the last known MQTT state on restart or power on. The command
ButtonRetain onwill configure the button to send a MQTT command with Topic and the MQTT retain flag set.
For debugging purposes you can use the serial interface with command
SerialLog 4and the Arduino IDE set to 115200 baud (19200 for Sonoff Dual) and both NL & CR or the web console with command
Debugging the Sonoff Pow is a bit tricky as the serial interface has a direct connection to one of the AC power lines. I designed below schematic using two opto couplers seperating the AC connection on the left from the low voltage connection on the right allowing for serial control at 115200 baud and uploading of firmware up to 57600 baud while AC is connected.
- To aid in finding the IP address of sonoff the network name will be
<MQTT_TOPIC>-<last 4 decimal chars of MAC address>. So the default name is
sonoff-1234. Another option is MQTT command