question

jmq1961 avatar image
jmq1961 asked

Modbus ID and register address of the VM-3P75CT

I have a VM-3P75CT in my system.


The VM-3P75CT is connected to the cerbo with the Canbus.

I want to read out the VM-3P75CT with Modbus UDP with an external PID controller.

I can not find any information of the Modbus Adresses and the ID of the VM-3P75CT.

Can anyone help me to get this information.

I made an inquiry to victron and i got the following answer.


There is no support on that I am afraid.

Perhaps that will be in the future


Listening to modbus UDP is quite simple if you have the ID and the register addresses.


Hope you have a wonderful day

Energy Meter
2 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Mike Dorsett avatar image Mike Dorsett commented ·
According to the manual, the meter will communicate with the cerbo via Modbus UTP/IP over the ethernet cable. Yuo will be able to detect the ip address in the cerbo settings, and then use wireshark or similar to snoop on the udp data transfer to that address - you will be able to use wireshark to decode the modbus requests. That will give you the register range. From what I've discovered, the UID for ethernet connceted modbus devices is 1 - not usually used, as the ip address segregates devices.
0 Likes 0 ·
jmq1961 avatar image jmq1961 Mike Dorsett commented ·

I think wireshark could be the solution.

But why Victron is not publishing the addresses.

If i by meters from other brands i can usually find the register list.

0 Likes 0 ·
5 Answers
txrx-victron avatar image
txrx-victron answered ·

Its public @JMQ1961 :

https://github.com/victronenergy/dbus-modbus-client/blob/8787f327b618febcdcbf8599d37c0cc1237326ed/victron_em.py

(If one of the readers creates a yaml meanwhile for homeassistant please reference it her in advance.)

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

jmq1961 avatar image
jmq1961 answered ·

Thank you for your answer.


I have connected the meter visa CAN Bus to the cerbo.

The cerbo is working fine with the CAN Bus connection.

I have programmed a PID Controller for my heater to use the surplus power to the grid.

The Controller is connected to my local IP network.

It works that is not the problem.

I tried it with other brand of meters. But why i schould use 2 Meters if could use only 1.

I can use MQTT and Modbus for the Controller Input.


But I will not use MQTT or dbus Modbus from the Cerbo.

VM-3P75CT outputs so much data. I have a MQTT server on a virtual Proxmox machine.

I will not waste the Cerbo CPU Power.

the VM-3P75CT has two separate outputs CAN an Modbus UDP.

I wan to use Modbus UDP directly from the meter.

But I have to know the registers.

I d`ont know why they are secret.



2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

alan-quek avatar image
alan-quek answered ·

Registers can be download from Victron Energy website. Go to Download, Technical Information.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

jmq1961 avatar image
jmq1961 answered ·

Hi

I did not found the Modbus registers for the VM-3P75CT .

There are Modbus registers for the victron Venus Cerbo system, but this is not I am looking for.

The VM-3P75CT has 2 outputs.

1 VE-CAN and 1 Modbus UDP output.

I would read the Modbus UDP output, even if I use the Meter without a victron system as a standalone Meter.





2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

kerbal avatar image
kerbal answered ·

This is my modbus configuration (home assistant):

# Energy Meter VM-3P75CT Setup
modbus:
  - name: "VM-3P75CT"
    type: udp
    host: 192.168.178.77
    port: 502
    sensors:
        #=============================================
        #================ sum stuff ==================
        #=============================================
      - name: 'VM-3P75CT Power'
        unique_id: vm_3p75ct_power
        unit_of_measurement: W
        slave: 1
        address: 0x3080
        data_type: int32
        scan_interval: 1
        device_class: power
      - name: 'VM-3P75CT Foreward'
        unique_id: vm_3p75ct_foreward
        unit_of_measurement: kWh
        slave: 1
        address: 0x3034
        data_type: uint32
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: energy
        state_class: total_increasing
      - name: 'VM-3P75CT Reverse'
        unique_id: vm_3p75ct_reverse
        unit_of_measurement: kWh
        slave: 1
        address: 0x3036
        data_type: uint32
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: energy
        state_class: total_increasing
      - name: 'VM-3P75CT PENVoltage'
        unique_id: vm_3p75ct_penvoltage
        unit_of_measurement: V
        slave: 1
        address: 0x3033
        data_type: int16
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: voltage
      - name: 'VM-3P75CT Frequency'
        unique_id: vm_3p75ct_frequency
        unit_of_measurement: Hz
        slave: 1
        address: 0x3032
        data_type: uint16
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: frequency
        #=============================================
        #=================== L1 ======================
        #=============================================
      - name: 'VM-3P75CT Voltage L1'
        unique_id: vm_3p75ct_voltage_l1
        unit_of_measurement: V
        slave: 1
        address: 0x3040
        data_type: int16
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: voltage
      - name: 'VM-3P75CT Current L1'
        unique_id: vm_3p75ct_current_l1
        unit_of_measurement: A
        slave: 1
        address: 0x3041
        data_type: int16
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: current
        
        # energy forward on L1 on 0x3042 and 0x3043
        # energy reverse on L1 on 0x3044 and 0x3045
        #             power L1 on 0x3046 and 0x3047
        
        #=============================================
        #=================== L2 ======================
        #=============================================
      - name: 'VM-3P75CT Voltage L2'
        unique_id: vm_3p75ct_voltage_l2
        unit_of_measurement: V
        slave: 1
        address: 0x3048
        data_type: int16
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: voltage
      - name: 'VM-3P75CT Current L2'
        unique_id: vm_3p75ct_current_l2
        unit_of_measurement: A
        slave: 1
        address: 0x3049
        data_type: int16
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: current
        
        # energy forward on L2 on 0x304A and 0x304B
        # energy reverse on L2 on 0x304C and 0x304D
        #             power L2 on 0x304E and 0x304F
        
        #=============================================
        #=================== L3 ======================
        #=============================================
      - name: 'VM-3P75CT Voltage L3'
        unique_id: vm_3p75ct_voltage_l3
        unit_of_measurement: V
        slave: 1
        address: 0x3050
        data_type: int16
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: voltage
      - name: 'VM-3P75CT Current L3'
        unique_id: vm_3p75ct_current_l3
        unit_of_measurement: A
        slave: 1
        address: 0x3051
        data_type: int16
        scale: 0.01
        precision: 2
        scan_interval: 1
        device_class: current
        
        # energy forward on L3 on 0x3052 and 0x3053
        # energy reverse on L3 on 0x3054 and 0x3055
        #             power L3 on 0x3056 and 0x3057

Make sure, that nobody else use the modbus-interface from the VM-3P75CT.
Deactivate the VM-3P75CT in the Cerbo-Device under Config -> Modbus / TCP Devices and use the can-bus.

It is also possible to collect the data via cerbo gx mqtt (connected via ethernet or can-bus).
The topic should be something like that:

victron/N/<serial>/grid/<id>/Ac/
3 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

huub-van-vilsteren avatar image huub-van-vilsteren commented ·

I copied / pasted the code above in my configuration file changed the IP, rebooted HA and all good thanks! I was trying to add the power for L1, L2 and L3 separately. However until now with no luck.


- name: 'VM-3P75CT Power L1'

unique_id: vm_3p75ct_power_L1

unit_of_measurement: W

slave: 1

address: 0x3046 and 0x3047 (i tried both adresses)

data_type: int32 also tried int16

scan_interval: 1

device_class: power


Any tips?

0 Likes 0 ·
kerbal avatar image kerbal huub-van-vilsteren commented ·

Maybe I'm wrong.

The power regs of the individual phases are addressed separately according to the source code. I think I missed that >_<.

Power L1 Address: 0x3082 with Datatype int32
Power L2 Address: 0x3086 with Datatype int32
Power L3 Address: 0x308A with Datatype int32

Can you pls try that? If it works, i will change my initial post.

0 Likes 0 ·
huub-van-vilsteren avatar image huub-van-vilsteren kerbal commented ·
Works like a charm, thanks!
0 Likes 0 ·

Related Resources