I am writing this because it took me so long to figure it out on my own as I did not find a guide from anybody else.
My PowerTag setup includes:
1x Acti 9 Smartlink SI D (A9XMWA20)
2x Acti 9 PowerTag 1p+N (A9MEM1521)
Setting up the Smartlink is relatively easy so I will not go over it here. But when you do it, will ask you what Phase is connected to the device, this is important for later. Smartlink will automatically address the devices from 150 and up.
In the configuration.yaml add the following:
modbus:
- name: "hub2"
type: tcp
host: 192.168.x.x (replace the x with your own address)
port: 502
sensors:
- name: "Powertag: Name 1"
device_class: power
state_class: measurement
slave: 151
address: 3059
unit_of_measurement: W
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 1 power_factor"
device_class: power_factor
slave: 151
address: 3083
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 1 totalt enegry"
device_class: energy
state_class: total_increasing
unit_of_measurement: Wh
slave: 151
address: 3203
count: 4
precision: 1
scan_interval: 2
data_type: int
- name: "Powertag: Name 1 tempratur"
device_class: temperature
state_class: measurement
slave: 151
address: 3131
unit_of_measurement: "°C"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 1 voltage L1-N"
device_class: voltage
state_class: measurement
slave: 151
address: 3027
unit_of_measurement: "V"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 1 voltage L2-N"
device_class: voltage
state_class: measurement
slave: 151
address: 3029
unit_of_measurement: "V"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 1 voltage L3-N"
device_class: voltage
state_class: measurement
slave: 151
address: 3024
unit_of_measurement: "V"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 1 current L1"
device_class: current
state_class: measurement
slave: 151
address: 2999
unit_of_measurement: "A"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 1 current L2"
device_class: current
state_class: measurement
slave: 151
address: 3001
unit_of_measurement: "A"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 1 current L3"
device_class: current
state_class: measurement
slave: 151
address: 3003
unit_of_measurement: "A"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 2 power"
device_class: power
slave: 150
address: 3059
unit_of_measurement: W
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 2 power_factor"
device_class: power_factor
slave: 150
address: 3083
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 2 totalt enegry"
device_class: energy
state_class: total_increasing
unit_of_measurement: Wh
slave: 150
address: 3203
count: 4
precision: 1
scan_interval: 2
data_type: int
- name: "Powertag: Name 2 tempratur"
device_class: temperature
state_class: measurement
slave: 150
address: 3131
unit_of_measurement: "°C"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 2 voltage L1-N"
device_class: voltage
state_class: measurement
slave: 150
address: 3027
unit_of_measurement: "V"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 2 voltage L2-N"
device_class: voltage
state_class: measurement
slave: 150
address: 3029
unit_of_measurement: "V"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 2 voltage L3-N"
device_class: voltage
state_class: measurement
slave: 150
address: 3024
unit_of_measurement: "V"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 2 current L1"
device_class: current
state_class: measurement
slave: 150
address: 2999
unit_of_measurement: "A"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 2 current L2"
device_class: current
state_class: measurement
slave: 150
address: 3001
unit_of_measurement: "A"
count: 2
precision: 1
scan_interval: 2
data_type: float
- name: "Powertag: Name 2 current L3"
device_class: current
state_class: measurement
slave: 150
address: 3003
unit_of_measurement: "A"
count: 2
precision: 1
scan_interval: 2
data_type: float
I have not been able to get a reading from the temperature sensors, but the address is there. There might be that my version of the PowerTag does not have a temperature senor in it.
If you have multiple Modbus adapters you can do til like this:
Thanks for sharing this. Being a total beginner using modbus, I’m trying to setup a modbus sensor reading from Acti9 Powertag Link (manual with registers here), but so far I haven’t succeed.
Have you been able to connect directly to the device using software on your computer? I used Modbus Client X so I was sure that it worked before importing it to Home Assistant ModbusClientX - Modbus Tool download | SourceForge.net
Also using “count: 2” is telling home assistant to read address 3060 and 3061, by adding datatype float32 to the mix might confuse it to read 3060-3063 as one modbus address is only 16 bit big.
I also had a lot of problems using any different names than hub and a number when setting it up originally. For some reason only i was only able to get hub1 and hub2 working.
One more thing. the reason that I read from address 3059 instead of 3060 is because of an peculiar way home assistant handles addresses. It start reading address 1 as 0, at least it does for the Flexit unit I am also using on Modbus. You therefore need to subtract 1 for every address in the Schneider provided to get the values to line up. At least it seems to work that way, because it is the only way I am able to get any sensible numbers form the system. Modbus Client X also reads the address the same way, but have big problems reading floats, so I have not been able to read the values directly from it. You will however see if the slave address is correct, and that the value address is present.
It is difficult to tell. It looks like we have different hubs for the Powertags. I am not able to change the mod-bus address on mine. But comparing my setup vs yours I think the problem lies in the address if it worked before.
I have also put everything in my main config file and it starts like this:
- name: "hub2"
type: tcp
host: 192.168.x.x (replace the x with your own address)
port: 502
sensors:
- name: "Powertag: Name 1 current L1"
device_class: current
state_class: measurement
slave: 151
address: 2999
unit_of_measurement: "A"
count: 2
precision: 1
scan_interval: 2
data_type: float
I do not have the hub as an entry on the sensor like you. I also had problems naming the hub anything else than “hub” and a number. Every time I tried it fails.
You put register but I used address. also my address number is 1 lower than yours. I found that some products use 0 as the first address and some others uses 1. This is apparently a common problem and was the same for my Flexit ventilation system.
I’m setting up a few powertag link’s and thankfully got to this post, very helpful.
I was trying to add the mains powertag link to Home Assistant’s Energy dashboard (or others as a device) but I haven’t been able to yet.
I’m following the same logic used for some Sonoff or Shelly devices, by creating a kWh template based on a working one, it doesn’t appear as a selection:
(deleted, check next post)
Does anyone have some info on how to get the data on the energy dashboard?
This would be great if we could comunicate with the powertag directly, without the Smartlink SI D. This way the powertag will be, probally, the best energy analyser in the market.
Hey, I’m interested in the powertag. Do you think it would be compatible with ZHA?
I have some of the wiser switches working with ZHA using the conbee 2
Thanks a lot AKRANO for sharing this. It works very easily for me after 1st test.
The hub name was not a problem for me.
It saved me a lot of time and frustration to achieve to find the good values !