Phoenix Contact Energy Meter EEM-EM377 2908590 Modbus TCP

Hello, I want to share my integration Phoenix Contact Energy Meter EEM-EM377 2908590 with Modbus TCP.

In your configuration.yaml put:

modbus:
  - name: elmnahore
    type: tcp
    host: 192.168.50.60
    port: 502

To sensor section add:

- platform: modbus
  scan_interval: 3
  registers:
    - name: g_elektromer_Nahore_Hz
      hub: elmnahore
      slave: 255
      register: 4152
      count: 2
      register_type: input
      data_type: float
      precision: 1
      unit_of_measurement: Hz
    - name: g_elektromer_Nahore_I1
      hub: elmnahore
      slave: 255
      register: 4110
      count: 2
      register_type: input
      data_type: float
      precision: 1
      unit_of_measurement: A
    - name: g_elektromer_Nahore_I2
      hub: elmnahore
      slave: 255
      register: 4112
      count: 2
      register_type: input
      data_type: float
      precision: 1
      unit_of_measurement: A
    - name: g_elektromer_Nahore_I3
      hub: elmnahore
      slave: 255
      register: 4114
      count: 2
      register_type: input
      data_type: float
      precision: 1
      unit_of_measurement: A
    - name: g_elektromer_Nahore_P
      hub: elmnahore
      slave: 255
      register: 4134
      count: 2
      register_type: input
      data_type: float
      precision: 2
      scale: 0.001
      unit_of_measurement: kW
    - name: g_elektromer_Nahore_kVA
      hub: elmnahore
      slave: 255
      register: 4142
      count: 2
      register_type: input
      data_type: float
      precision: 2
      scale: 0.001
      unit_of_measurement: kVA
# slow read
- platform: modbus
  scan_interval: 60
  registers:
    - name: g_elektromer_Nahore_NU1
      hub: elmnahore
      slave: 255
      register: 4096
      count: 2
      register_type: input
      data_type: float
      precision: 1
      unit_of_measurement: V
    - name: g_elektromer_Nahore_NU2
      hub: elmnahore
      slave: 255
      register: 4098
      count: 2
      register_type: input
      data_type: float
      precision: 1
      unit_of_measurement: V
    - name: g_elektromer_Nahore_NU3
      hub: elmnahore
      slave: 255
      register: 4100
      count: 2
      register_type: input
      data_type: float
      precision: 1
      unit_of_measurement: V
    - name: g_elektromer_Nahore_SystV
      hub: elmnahore
      slave: 255
      register: 4108
      count: 2
      register_type: input
      data_type: float
      precision: 1
      unit_of_measurement: V
    - name: g_elektromer_Nahore_PF
      hub: elmnahore
      slave: 255
      register: 4126
      count: 2
      register_type: input
      data_type: float
      precision: 2
      scale: 0.001
    - name: g_elektromer_Nahore_E
      hub: elmnahore
      slave: 255
      register: 4358
      count: 2
      register_type: input
      data_type: float
      precision: 2
      scale: 0.001
      unit_of_measurement: kWh

This energy meter (with Modbus TCP) cannot be configured with two tariff :frowning:

You can use utility meter though.

1 Like

Hi miki_lbc / Michal Pokorny,

I was wondering if you also know how to implement in home assistent the EEM-EM357-EE (1311985) which only have a RS485 interface?
Ik have also an IPC with a RS485 (com port) connection and want to monitor 3 pieces of this energy meter in home assistent based on the modbus RTU protocol to this 1 com port.
The home assistent os is placed in a VM in Virtualbox.
Hope you can help mee with this.
Thanks in advance!

Best regards,

Joes

Hello Joes,

Virtual box is not problem.

Are you familiar with modbus?
Basically each device have address (in HA called slave) and set of registers (in HA called address), which you can read/write or read/set bits.

I think, that you can try it.
read this:

and start with only one EM.
Find communication speed and address of EM (manual on Phoenix web).
Find witch two pins on PC port is used for RS485 and find witch is positive and negative (with meter, cca 5VDC).
On EM find witch modbus pin is positive and negative (with meter).
Connect positive with positive and negative with negative.

Copy and set values from here to config:

Set speed and port (also check bytesize, parity and stopbits - but I think that will be fine)

Try to make one sensor with this:

On the top use your serial configuration (not type, host, port which is on manual).
Make one sensor similar to my configuration, according to manual to your EM (download it form Phoenix) - there are addresses and values.
If I remember it correctly, syntax of configuration was changed from time when I post it on forum and in manual is correct.

It will be something like: (this works now for TCP)

- name: elmprivod
  type: tcp
  host: 192.168.50.150
  port: 502
  retries: 1
  sensors:
    - name: g_elektromer_Privod_Hz
      slave: 255
      address: 4152
      #count: 2
      input_type: input
      data_type: float32
      precision: 1
      unit_of_measurement: Hz
      scan_interval: 61

but with top for serial/rtu settings and set slave (this is modbus rtu address of your device) and address (this is register from EM manual).

Configuration will looks like this: (only copied together from manual)

modbus:
  - name: hub1
    type: serial
    baudrate: 9600
    bytesize: 8
    method: rtu
    parity: E
    port: /dev/ttyUSB0
    stopbits: 1
      - name: Sensor1
        unit_of_measurement: °C
        slave: 1
        address: 100

Next EM:
First change modbus address of EM according to manual.
Next connect again positive to positives and negative to negatives together.
Duplicate all configuration

If you finally install it, don’t forget to use shielded cable.
If you made it, please share it with community.

Best regards
Michal Pokorný