Sonoff R3 DIY mode & why it sucks

Sonoff R3 DIY mode is here and... it's pants!

Sonoff Basic line just got upgraded. You can now purchase Sonoff Basic R3 and Sonoff RF R3. Both devices are compatible with DIY mode, something I mentioned a while back. I finally got the devices shipped to me so I can test the Sonoff R3 & DIY mode. I noticed that people praise the Sonoff DIY mode for completely wrong reasons. A closer look is needed.

Sonoff Basic R3 & Sonoff RF R3

It’s hard to tell which one is which

Both devices are basically the iterations of well known and respected Sonoff Basic which is an ESP8266 based relay. Sonoff devices are popular among the makers, as come with exposed GPIOs (often extra ones) and are flashable with Tasmota (flashing Sonoff Basic) and AFE Firmware (using AFE Firmware).

Sonoff Basic R3:

  • Max Current: 10A;
  • Max Power: 2200W;
  • Power Supply: AC 100-240V;
  • Gang: 1;
  • Wireless Standard: IEEE 802.11 b/g/n 2.4GHz;

Sonoff RF R3:

  • Max Current: 10A;
  • Max Power: 2200W;
  • Power Supply: AC 100-240V;
  • Gang: 1;
  • Wireless Standard: IEEE 802.11 b/g/n 2.4GHz, 433.92MHZ;

The internet is impressed with R3 DIY and the ability to push the Tasmota or AFE Firmware via OTA, I’m not that bothered mainly, because I could probably flash the chip quicker in a traditional way then faffing about with Sonoff R3 plagued with the issues listed below.

What made the Tasmota and AFE Firmware popular was the API access to the sonoff device (MQTT and REST) and exposed pins which could be used as LED drivers, temp sensor hook-ups and much more. Sonoff R3 DIY already provides you with REST API that can be used with NodeRED and HA (offline) which makes the entire operation slightly pointless if you are not going to take the advantage of the extra features offered by the custom software.

Firmware update issues

I guess it’s off to a bad start, both devices caused issues during the firmware update. The progress halts on 90% and refuses to move any further. Fortunately, there is a way to bypass this issue, although it’s a rather bizarre one!

Solving firmware update issues
To upgrade the firmware, create a hotspot with another device (yes, you will need another phone) remove the device and connect your Sonoff R3 to that hotspot. Then run the firmware update. On one of my units, the firmware did not show as updating, but the firmware update has been completed and I could see the new firmware version once the Sonoff R3 had been rebooted.

Why Sonoff R3 DIY mode sucks

Use the supplied jumper to enable DIY mode

To “enable” DIY mode, you have to put the jumper on the designated pins on the Sonoff R3 board. Since this is a hardware implementation, it means that you won’t see the DIY mode on other than “enabled” devices. That’s rather disappointing for anyone hoping to use Sonoff DIY mode on older devices.

Take extra care when opening Sonoff R3. The button with the long actuator is prone to accidental damage. Sonoff R3 shell consists of 2elements – remove one by one to decrease the risk of breaking the button.

Unfortunately, this is not over. When Sonoff R3 is powered on while the jumper is installed, it will try to connect to the following WiFi credentials:

SSID: sonofDiy
Password: 201706018sn

To change this, you will need to create a hotspot with these credentials on your phone (or use the guest network if your router supports it), then download the special DIY tool on your computer. Note that both, Sonoff R3 and DIY Tool have to be on the same network.

I’m not sure why such a convoluted way to something so simple, but I decided to roll with it. I changed the WiFi credentials and I could use this cumbersome tool to toggle the status ON and OFF. It was time to see if I can issue commands.

At first, the official documentation was very poor. I had to use WireShark and Fing app to figure out the port that is open on Sonoff R3: 8081, but despite knowing that and the path (/zeroconf/switch) for a POST request, neither of my requests were accepted. I struggled to send the requests until a new version of the firmware got released (3.3.0). Since then the docs have been updated a fair bit and they are finally useful.

But the worst thing is…

My assumption was that I use the Sonoff R3 DIY mode to submit POST request without losing the eWeLink integration. It’s something that Yeelight Smart Bulbs do incredibly well. You can use the REST API and take advantage of the app and all available integrations at the same time.

Can you do the same with Sonoff R3 DIY mode?

NO

As soon as you activate the DIY mode the device becomes not responsive in the eWeLink app and you no longer can use it, even if you select LAN mode. Now that sucks!

Controlling Sonoff R3 in NodeRED

Since I have the Sonoff R3 DIY mode enabled, I will show you how to get the basics done in NodeRED if you want to use that instead of actually getting the flash done.

Once you have the DIY tool working, start with changing the SSID and password so the Sonoff R3 was on the same network as the rest of the home automation. Since we are dealing with REST API we will need the IP of the device to send the request to. Sonoff R3 hosts a server using port 8081 and the available URLs are:

  • /zeroconf/switch (change status)
  • /zeroconf/info (get device info)
  • /zeroconf/startup (initial power state)
  • /zeroconf/signal_strength (WiFi signal strength)
  • /zeroconf/pulse (inching setting)
  • /zeroconf/wifi (set WiFi setting)
  • /zeroconf/ota_unlock (OTA unlock status)
  • /zeroconf/ota_flash (flash OTA firmware)

A sample of the correct URL for the API calls:

http://192.168.1.12:8081/zeroconfig/info

Since you need the device ID and the device IP to configure the REST request, I have written a tiny configurator. Just enter these details in the inject node and these will be saved as your flow variables. Make sure you have the variables preserved, so you don’t have to inject it every time your NodeRED reboots.

I have formatted the request so you can simply inject different types of payload and topic configuration. The response is a JSON formatted payload.

Getting the info

To get the information, submit the payload to the URL: http://192.168.1.12:8081/zeroconfig/info

{"deviceid": "yourdeviceid", "data":{}};

And you receive the status update that contains the most useful info about the Sonoff R3 status and the current configuration:

{"seq":2,"error":0,
     "data":{"switch":"on",
             "startup":"on",
             "pulse":"off",
             "pulseWidth":2000,
             "ssid":"SlowFrog",
             "otaUnlock":true}}

Toggle the switch

To turn the Sonoff R3 on/off simply submit the correct value to the URL: http://192.168.1.12:8081/zeroconfig/switch

{"deviceid":"10008xxxx",
 "data":{"switch":"off"}}
OR
 {"deviceid":"10008xxxx",
 "data":{"switch":"on"}} 

The response will contain the number of the request and the error code.

{"seq":3,"error":0}

Inching settings

Inching emulates a “long press of a push-button”. This will enable the relay for a short time then automatically turn the relay off. To use the setting you have to enable it and provide the pulse duration in ms (and increments of 500) in the range of 500 – 36 000 000. (0.5 sec – 10h). Submit the values to URL: http://192.168.1.12:8081/zeroconfig/pulse

{"deviceid":"10008fxxx","data":{"pulse":"on","pulseWidth":2000}}
OR
{"deviceid":"10008fxxx","data":{"pulse":"off"}}

Startup status

You can configure the “power-up” state of your Sonoff R3 and set it to ON|OFF|STAY to preserve the previous value. Submit the payload to URL: http://192.168.1.12:8081/zeroconfig/startup

{"deviceid":"10008fxxx","data":{"startup":"on"}}
OR
{"deviceid":"10008fxxx","data":{"startup":"off"}}
OR
{"deviceid":"10008fxxx","data":{"startup":"stay"}}

WiFi signal and settings

To monitor the WiFi signal and receive the strength of the link, submit the payload to URL: http://192.168.1.12:8081/zeroconfig/signal_strength

{"deviceid":"10008fxxx","data":{}}

And the response will contain the value in dB:

{"seq":6,"error":0,"data":{"signalStrength":-67}}

If you want to change the WiFi credentials submit your new credentials to URL: http://192.168.1.12:8081/zeroconfig/wifi

{"deviceid":"10008fxxx",
 "data":{{"ssid": "yourSSID", "password": "yourPASS"}} 

OTA commands

You can also unlock the Sonoff R3 and push the new firmware to it. Yes, it’s possible to load Tasmota or AFE firmware this way, but I would still recommend you to make the back up of the original one just in case. Once the firmware is overridden, you won’t be able to go back without that image. To unlock submit the payload to URL: http://192.168.1.12:8081/zeroconfig/ota_unlock

{"deviceid":"10008fxxx","data":{}}

To flash new firmware, use URL: http://192.168.1.12:8081/zeroconfig/ota_flash and push the correct firmware details:

 {"deviceid":"10008fxxx",
 "data":{"downloadUrl": "http://192.168.1.112/ota/firmware.bin",
         "sha256sum"  : "123sa32s1da2354f9874fewsd21s6afd49wf4wefs1df59"}} 

I would still recommend you to go through the method of flashing Sonoffs detailed here.

Conclusion

Sonoff R3 DIY mode is disappointing. The clunky implementation, unreliable ways of updating the firmware and inability to use the eWeLink app alongside the REST API makes this mode hard to recommend over flashing Tasmota or AFE Firmware.

I will simply flash Tasmota or AFE Firmware and enjoy the redesigned hardware my way. I’m pretty sure you will appreciate the tutorial describing just that. If you have any questions or comments, feel free to use this Reddit thread.

Support NotEnoughTech
A lot of time and effort goes into keeping NotEnoughTech alive! If my work helped you out, consider buying me a coffee or check out exclusive rewards available to Patreon supporters.
SHARE