Sonoff POW R2 Smart Switch power consumption mod

Modifying a Sonoff POWR2 Smart Switch with energy monitoring to reduce its power consumption when being used to monitor a device's energy usage

Table of Contents

Please support the blog by shopping at abelectronics

Please support the blog and our projects by buying your Raspberry Pi development boards from our online store at AB Electronics UK.

Date 15 August 2021
Views 11,982
Time to read 6 minutes read

Time for another addition to our ongoing home automation project, which Home Assistant powers on our small Linux server

I decided it would be interesting to monitor the power consumption of our Miele washing machine and found the Sonoff POWR2 Smart Switch, which is rated for 15 amps. This should be more than enough for the power consumption of the washing machine during a washing cycle.

Case
The Sonoff Case

Our washing machine has a built-in timer to allow scheduled wash cycles, which we usually set at night to run early in the morning, so we didn’t need the Sonoff POWR2 to power the washing machine down. The easiest way was to remove the relay and bridge across the contacts with a thick wire while retaining the power-measuring functionality.

I also wanted to generate a notification when the wash cycle was complete based on the power consumption data.

I have done this with the Kasa Smart Plug by TP-Link model HS10 modification to reduce its power consumption when monitoring the network cupboard.

Installing the Tasmota firmware

Before modifying the Sonoff POW R2, I had to install the Tasmota firmware using the excellent guide from notenoughtech.com and the Tasmotizer software.

installing the firmware
Installing the custom firmware

The device was then connected to our Wi-Fi network, and the MQTT settings were updated to send and receive data from our MQTT server.

Using our Hopi power meter, we measured the power consumption of the Sonoff POW R2 and found that the average consumption was 0.6 watts with the relay turned off and 0.9 watts with the relay active.

Top of the Sonoff
Top of the PCB

Using the console on the devices web page, I set the initial power-on state to be powered on using the following:

PowerOnState 1
restart 1

The default period of the Tasmota firmware is to send the data every 300 seconds to the MQTT server, but as I wanted more frequent updates, this was changed with the following commands:

TelePeriod 10
restart 1
        

This set the data period to be every 10 seconds allowing our Home Assistant software to show much more detailed data for the energy usage of the washing machine.

To set a fixed IP address rather than use the DHCP server, this was changed with the following commands:

IPAddress1 10.0.0.125
restart 1
        

The complete list of available Tasmota commands is on their website at tasmota.github.io/docs/Commands/

Removing the Relay

Base of the PCB
Base of the PCB

With the PCB removed from the plastic case for the firmware flashing, the relay was unsoldered using a pair of soldering irons and a flat blade to prise it away from the PCB.

A short length of 2mm copper wire was then soldered across the relay contact pins to bridge the circuit alongside the R10 current sense resistor.

Link wire added
Link wire added

The unit was reassembled, a short power cable was connected to the input side, and a single trailing socket was fitted to the output to connect the washing machine.

Setting up Home Assistant

In the sensor.yaml file, the following lines were added to access the washing machine data within Home Assistant:

- platform: mqtt
  state_topic: "/home/devices/washingmachine/SENSOR"
  name: 'Washing Machine Reactive Power'
  unit_of_measurement: 'VA'
  value_template: "{{ value_json.ENERGY.ReactivePower }}"
- platform: mqtt
  state_topic: "/home/devices/washingmachine/SENSOR"
  name: 'Washing Machine Total Power'
  unit_of_measurement: 'kwh'
  value_template: "{{ value_json.ENERGY.Total }}"
- platform: mqtt
  state_topic: "/home/devices/washingmachine/SENSOR"
  name: 'Washing Machine Today Power'
  unit_of_measurement: 'kwh'
  value_template: "{{ value_json.ENERGY.Today }}"
- platform: mqtt
  state_topic: "/home/devices/washingmachine/SENSOR"
  name: 'Washing Machine Power'
  value_template: "{{ value_json.ENERGY.Power }}"
- platform: mqtt
  state_topic: "/home/devices/washingmachine/SENSOR"
  name: 'Washing Machine Current'
  unit_of_measurement: 'A'
  value_template: "{{ value_json.ENERGY.Current }}"

To be able to record daily usage within the new Energy tab within Home Assistant, a template sensor was added with the last_reset, state_class and device_class attributes with the following:

- platform: template
  sensors:  
    main_washingmachine_energy:
      device_class: energy
      friendly_name: "Energy Washing Machine"
      attribute_templates:
        last_reset: '1970-01-01T00:00:00+00:00'
        state_class: measurement
        device_class: energy
      unit_of_measurement: 'kWh'
      value_template: "{{ states('sensor.washing_machine_total_power') }}"
      icon_template: mdi:mdi-current-ac

The screenshot below shows the new washing machine page I have added to Home Assistant, showing the different sensor readings and a daily usage graph.

Home assistant washing machine page
Home assistant washing machine page

The Energy page now has the washing machine added to the Monitor individual devices section, and the screenshot below shows the usage after 3 wash cycles today.

Energy Page
Energy Page

1 Comments

  • User Image

    Utkarsh Dixit

    13 February 2022 at 5:52 pm

    I want to use sonoff powr 2 to monitor run hours of a machine along with amp ,volt and power data. Switch will disconnect from power frequently witch makes all consumption data values to disappear in ewelink can you help me with a custom firmware to solve this problem.
    I know nothing about programming.


Leave a comment

Your email address will not be published.

Please enter the text from the image below to prove you are a human
Verify you are human

Share

Share to Bluesky

Share to X / Twitter

Share to Facebook

Share to linkedin

Share to Pinterest

Copy Link