Calibrating the power measurements on a Sonoff POW

Somewhat surprisingly, Sonoff POWs don't seem to be very well calibrated. This might just be an aspect of the design, or of course it might be that they get calibrated at the factory using the standard firmware, but after the device has been re-flashed with Tasmota, this calibration gets lost. Either way, it's likely that the power readings you get will be inaccurate until you've followed these instructions.

I bought four Sonoff POWs, and when they are all plugged in to the same power supply (which an independent meter tells me has a value of 225 volts), I get readings of:

  • 230v
  • 216v
  • 218v
  • 228v

Notice that:

  1. that's quite a wide range of voltage readings for four devices all connected to the same supply
  2. none of them is the correct reading

However, Tasmota has a very simple calibration facility:

Take the correct value of the voltage (if you have a meter which can tell you this), or alternatively just pick something plausible, like 225, and divide this by the voltage reading your Sonoff is showing, then multiply by 1950.

For example (for the four measurements shown above, and given a "correct" value of 225v):

  1. 225 / 230 * 1950 = 1907.6
  2. 225 / 216 * 1950 = 2031.25
  3. 225 / 218 * 1950 = 2012.6
  4. 225 / 228 * 1950 = 1924.3

Round the answer to the nearest integer and then tell the Sonoff to use this voltage calibration value (note: the following assumes you have changed the default "cmnd" to "command"):

$ mosquitto_pub -h mqtt.hostname.or.address -t Home/SonoffOne/command/VoltageCal -m 1908
$ mosquitto_pub -h mqtt.hostname.or.address -t Home/SonoffTwo/command/VoltageCal -m 2031
$ mosquitto_pub -h mqtt.hostname.or.address -t Home/SonoffThree/command/VoltageCal -m 2013
$ mosquitto_pub -h mqtt.hostname.or.address -t Home/SonoffFour/command/VoltageCal -m 1924

All your Sonoffs should now show (very nearly) the same voltage reading. If not, repeat the process, but using the newly-entered calibration value instead of 1950 when calculating the next calibration value:

  • next calibration value = true value / indicated value * last calibration value

You can do the same thing with current and power calibrations:

$ mosquitto_pub -h mqtt.hostname.or.address -t Home/SonoffOne/command/CurrentCal -m 3500
$ mosquitto_pub -h mqtt.hostname.or.address -t Home/SonoffOne/command/PowerCal -m 12530

Note that the number to multiply the ratio of (real / measured) by is different for the three measurements:

  • for voltage, multiply the ratio by 1950
  • for current, multiply the ratio by 3500
  • for power, multiply the ratio by 12530

If you need to find out what the current (as in now, not Amps) calibration values are, just use the above commands with -n at the end instead of -m value.


Go up
Return to main index.