Reading Schneider PowerTags using Modbus and Acti9 Smartlink SI D

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
    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:

modbus:
- name: "hub1"
    type: tcp
    host: 192.168.x.x
    port: 502
    sensors:
      - name: "some other sensor"
        slave: 151
        address: 3059
        count: 2
        precision: 1
        scan_interval: 2
        data_type: float

- name: "hub2"
    type: tcp
    host: 192.168.x.x
    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

If you want more sensors you can find the registrer list here: https://www.se.com/in/en/faqs/FA379753/