Skip to main content
loading
By Michal Novotný
December 17, 2025
Phase measurement of house consumption

In this post, we will show how to measure real-time consumption by phases in a family house. Various commercial devices can be used; unfortunately, we did not find any native MQTT devices. In our case, we opted for the Aeotec Home Energy Meter Gen5 due to the existing Z-Wave network.

 

Why is it useful to measure consumption by phases?

Unfortunately, this solution is a result of the incompetence of distribution companies, which should have already provided this measurement as part of their responsibilities and offered it online to customers as part of their considerable distribution fees. Phase-by-phase measurement clearly shows peaks on individual phases and the symmetry of consumption across phases (which should mainly concern the distributor). In our case, we found that under normal conditions we cannot reach the extreme limits of the 3x25A breaker, and we are paying for this reserved capacity unnecessarily. We could manage with 3x20A or even 3x16A, which could save 69 or 125 CZK per month just on the breaker at today's prices.

A significant benefit of measuring is for planning a PV system. A few months of measurement will help you tailor the inverter capacity, battery, and panels and save as much as possible in operation. Combined with a truly automated home, this allows you to switch on/off and schedule consumption in a family house (heating with electric boiler, heating, delayed washing, drying, dishwashing) depending on conditions.

 

Hardware

Aeotec Home Energy Meter Gen5

Part 8 - Wireless Standards: Z-Wave

Software

OpenHAB 3

 

Wiring

According to the manufacturer, the wiring diagram for 3 phases is as follows:

In our case, we mounted our own unit on the side of the distribution board. From the main residual-current device, we routed the individual phases to a separate three-phase breaker—preferably B6. All blue neutral wires ended on the common neutral bar of the main RCD.

WARNING: Perform the installation with the main switch turned off and preferably with the power supply to the house disconnected! If you have no experience with electricity, call a certified electrician! We are not responsible for any damage caused by improper handling!

 

How to do it

After wiring, pair the Aeotec Home Energy Meter according to the instructions in Part 8 - Wireless Standards: Z-Wave and in the Channels tab, select Add Equipment to Model. Choose which values provided by the Aeotec HEM you want to store. For us, all values shown in the screenshot below were useful. Check them and select Add to Model. Individual Items will be created.

Now you just need to organize these Items in some overview. I preferred placing the basic data on real-time and total consumption on the main screen, with navigation to a separate Page for more detailed information.

You can also import the entire Page with detailed information from the image above. Don’t forget to change the variable names according to your Items. The Code tab looks like this.

 

 

config:
  label: Energy
  sidebar: true
  order: ""
blocks:
  - component: oh-block
    config: {}
    slots:
      default:
        - component: oh-grid-row
          config: {}
          slots:
            default:
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        label: Energy meter
        - component: oh-grid-row
          config: {}
          slots:
            default:
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        title: Aktuální odběr
                        action: analyzer
                        actionAnalyzerItems:
                          - ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts
                        item: ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts
                        label: =items.ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts.displayState +
                          ' W '
                        trendItem: ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        title: Aktuální proud
                        action: analyzer
                        actionAnalyzerItems:
                          - ZWaveNode004ZW095HomeEnergyMeter_Electricmeteramps
                          - ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts
                        actionAnalyzerChartType: month
                        item: ZWaveNode004ZW095HomeEnergyMeter_Electricmeteramps
                        label: =items.ZWaveNode004ZW095HomeEnergyMeter_Electricmeteramps.displayState +
                          ' A'
                        trendItem: ZWaveNode004ZW095HomeEnergyMeter_Electricmeteramps
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        title: Aktuální napětí
                        action: analyzer
                        actionAnalyzerItems:
                          - ZWaveNode004ZW095HomeEnergyMeter_Electricmetervolts
                          - ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts
                        actionAnalyzerChartType: month
                        item: ZWaveNode004ZW095HomeEnergyMeter_Electricmetervolts
                        label: =items.ZWaveNode004ZW095HomeEnergyMeter_Electricmetervolts.displayState +
                          ' V '
                        trendItem: ZWaveNode004ZW095HomeEnergyMeter_Electricmetervolts
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        title: Celkem spotřebováno
                        action: analyzer
                        actionAnalyzerItems:
                          - ZWaveNode004ZW095HomeEnergyMeter_ElectricmeterkWh
                          - ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts
                        actionAnalyzerChartType: month
                        item: ZWaveNode004ZW095HomeEnergyMeter_ElectricmeterkWh
                        label: =items.ZWaveNode004ZW095HomeEnergyMeter_ElectricmeterkWh.displayState + '
                          kWh '
                        trendItem: ZWaveNode004ZW095HomeEnergyMeter_ElectricmeterkWh
        - component: oh-grid-row
          config: {}
          slots:
            default:
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        item: ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts1
                        label: =items.ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts1.displayState
                          + ' W
                          ('+items.ZWaveNode004ZW095HomeEnergyMeter_ElectricmeterkWh1.displayState
                          + ' kWh)'
                        title: L1 aktuální (celkem)
                        trendItem: ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts1
                        action: analyzer
                        actionAnalyzerItems:
                          - ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts1
                        actionAnalyzerChartType: month
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        item: ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts1
                        label: =items.ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts2.displayState
                          + ' W
                          ('+items.ZWaveNode004ZW095HomeEnergyMeter_ElectricmeterkWh2.displayState
                          + ' kWh)'
                        title: L2 aktuální (celkem)
                        trendItem: ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts2
                        action: analyzer
                        actionAnalyzerItems:
                          - ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts2
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-label-card
                      config:
                        item: ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts1
                        label: =items.ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts3.displayState
                          + ' W
                          ('+items.ZWaveNode004ZW095HomeEnergyMeter_ElectricmeterkWh3.displayState
                          + ' kWh)'
                        title: L3 aktuální (celkem)
                        action: analyzer
                        actionAnalyzerItems:
                          - ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts3
                        actionAnalyzerChartType: month
                        trendItem: ZWaveNode004ZW095HomeEnergyMeter_Electricmeterwatts3
        - component: oh-grid-row
          config: {}
          slots:
            default:
              - component: oh-grid-col
                config: {}
                slots:
                  default:
                    - component: oh-toggle-card
                      config:
                        item: ZWaveNode004ZW095HomeEnergyMeter_ResetMeter
                        title: Reset energy meter
masonry: null
grid: []
canvas: []

What’s next?

The values of the measured quantities are automatically stored in OpenHAB 3 and can be displayed in a graph. Various rules for controlling other appliances can then be linked to these values. From here, it’s up to you! If you use them in an interesting way, share your experience with us in the comments.

 

 

Tip: The Aeotec meter, by default, reports real-time consumption at roughly 30-minute intervals. If you want to shorten this interval, OpenHAB settings alone won’t work. However, it can be done using a short workaround.

1) Download the portable Z-Wave PC Controller program from the end of this link onto your Windows PC.

2) Extract it, open it, and connect the Z-Wave USB Controller from the Raspberry Pi to your PC.

3) Select Settings -> Detect -> Select

4) In the Command Class tab, select COMMAND_CLASS_ASSOCIATION_V1

5) Command Name: ASSOCIATION_SET

6) Set the NodeID to 01 for all three Groups (01, 02, 03)

[[{"fid":"688","view_mode":"wysiwyg","fields":{"format":"wysiwyg"},"type":"media","field_deltas":{"4":{"format":"wysiwyg"}},"attributes":{"style":"display: block; margin-left: auto; margin-right: auto;","class":"media-element file-wysiwyg","data-delta":"4"}}]]

7) Disconnect, reconnect to the RPi, and readings should now follow the value of parameter 111.

 

 

Tags

Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.