Epever RS485 + Elfin EW11 WiFi Modbus (or MQTT)

I just checked and my elfin is on the latest firmware. I reset to factory and reconfigured but still no change. I still get invalid message, no response.

Maybe it is damaged.

Are you confirmed if it’s a rs232 or rs485 version?

Maybe epever needs some update.

It is RA485 version. The firmware i have is the latest. It is quite frustrating

Try with a laptop or even serial connection

I will have to purchase the cable for that and try it.

address: 12570

does not need

count: 2
swap: word

0-100% only needs one byte
so it can not request two words

Thanks Thomas. Even without those 2 parameters it still does not work.

Since the serial connection worked back when you took that screenshot:
image

i would start analysing with a minimum modbus config that does not litter the logs.
restarting the core every time you change the config.yaml is tedious, but i would delete all sensors but one. and i would delete all parameters, that are not needed i.e. have defaults…

lets say:

modbus:
- type: rtuovertcp
  name: "ew11"
  host: 192.168.5.249
  port: 502
  close_comm_on_error: false
  timeout: 10
  retry_on_empty: true
  retries: 20
  sensors:
    - name: "Battery Capacity"
      address: 12570
      slave: 1
      input_type: input
      data_type: int16
      unit_of_measurement: '%'
      scan_interval: 60

then look what the logs say
and then add sensor by sensor

I actually have just one sonsor i have been testing with for the past 3 weeks.

Current config

modbus:
- type: tcp
  name: ew11
  host: 192.168.5.249
  port: 502
  close_comm_on_error: false
  timeout: 9
  delay: 9
  message_wait_milliseconds: 50
  retry_on_empty: true
  retries: 10
  sensors:
    - name: "Battery Remaining Capacity"
      address: 12570
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: '%'
      scale: 0.01
      precision: 3
      scan_interval: 10

Error

2021-10-13 17:16:28 DEBUG (SyncWorker_1) [pymodbus.transaction] Transaction failed. (Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received)) 
modbus:
  - name: ew11
    type: tcp
    host: 192.168.5.249
    port: 502
    close_comm_on_error: false
    timeout: 9
    delay: 1
    message_wait_milliseconds: 200
    retry_on_empty: true
    retries: 10
    sensors:
      - name: "Battery Remaining Capacity"
        address: 12570
        slave: 1
        data_type: uint16
        input_type: input
        unit_of_measurement: '%'
        scale: 0.01
        precision: 3
        scan_interval: 10

input_type: input

input or holding?

input is ok in my config of an epever-charge controller.

when i put in the uint16 in my config, it does not work for me.
and i have to use rtuovertcp otherwise it does not work either.

Not sure what solved it but it is working now. I unplugged the cable from the charge controller and plugged it again and it worked. Thanks for all the input.

3 Likes

Could you please copy paste your working config? I’m not able to get data from my Epever. Thx

This is what worked for me using ebox wifi

modbus:
- type: rtuovertcp
  name: hub1
  host: 192.168.5.157
  port: 8088
  close_comm_on_error: false
  timeout: 9
  delay: 9
  message_wait_milliseconds: 50
  retry_on_empty: true
  retries: 10
  sensors:
    - name: "Battery Remaining Capacity"
      address: 12570
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: '%'
      scan_interval: 10
    - name: "Battery Voltage"
      address: 13082
      data_type: uint16
      slave: 1
      unit_of_measurement: V
      input_type: input        
      scale: 0.01
      precision: 1
      scan_interval: 10
    - name: "Battery Current"
      address: 13083
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: A
      scale: 0.01
      precision: 1
      scan_interval: 10
    - name: "Solar Panel Current"
      address: 12545
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: A
      scale: 0.01
      precision: 1
      scan_interval: 10
    - name: "Solar Panel Voltage"
      address: 12544
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: V
      scale: 0.01
      precision: 1
      scan_interval: 10
    - name: "Solar Panel Power"
      address: 12546
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: W
      scale: 0.01
      precision: 1
      scan_interval: 10
2 Likes

Thx, it works!

Can anyone confirm if the ew11a is able to also send commands from wifi to the modbus out? I need it to replace a wired connection between a ventilation system and a raspberry pi with home assistant.

Sorry I can´t help you in this case. Currently I am struggeling with my config, too. :unamused:

Hi guys,

does anyone know, where my mistake is?
I am using the EPEVER Tracer 2610BP with an Elfin EW11 Wifi almost successful.
Almost, because when the load current is higher than the charging current, then I get a wired value (instead of negative it is way too positive) → 655.1A.

My Modbus config is as follows:

- type: tcp
  name: "ew11"
  host: 192.168.178.9
  port: 8088
  close_comm_on_error: false
  timeout: 9
  retry_on_empty: true
  retries: 10

#Solar Charge Controller
  sensors:
    - name: "EPEVER Charge Controller Temperature"
      address: 12561
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: °C
      precision: 1
      scale: 0.01
      scan_interval: 30
    - name: "EPEVER ext. Sensor Temperature"
      address: 12560
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: °C
      precision: 1
      scale: 0.01
      scan_interval: 30

#Solar Battery
    - name: "EPEVER Battery Voltage"
      address: 13082
      data_type: uint16
      slave: 1
      unit_of_measurement: V
      input_type: input        
      scale: 0.01
      precision: 1
      scan_interval: 10
    - name: "EPEVER Battery Current"
      address: 13083
      data_type: uint
      slave: 1
      unit_of_measurement: A
      input_type: input        
      scale: 0.01
      precision: 1
      scan_interval: 10
    - name: "EPEVER Battery Status"
      address: 12570
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: '%'
      scale: 1
      precision: 1
      scan_interval: 10

#Solar Panel
    - name: "EPEVER Solar Panel Current"
      address: 12545
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: A
      scale: 0.01
      precision: 1
      scan_interval: 10      
    - name: " EPEVER Solar Panel Voltage"
      address: 12544
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: V
      scale: 0.01
      precision: 1
      scan_interval: 10
    - name: " EPEVER Solar Panel Power"
      address: 12546
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: W
      scale: 0.01
      precision: 1
      scan_interval: 10

#Solar Load
    - name: "EPEVER Load Current"
      address: 12557
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: A
      scale: 0.01
      precision: 1
      scan_interval: 10
    - name: "EPEVER Load Voltage"
      address: 12556
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: V
      scale: 0.01
      precision: 1
      scan_interval: 10
    - name: "EPEVER Load Power"
      address: 12558
      slave: 1
      data_type: uint16
      input_type: input
      unit_of_measurement: W
      scale: 0.01
      precision: 1
      scan_interval: 10

  switches:
    - name: EPEVER Load Switch
      slave: 1
      address: 2
      write_type: coil

Thanks for your feedback in advance.

I am not sure why it happens but I get the wired value once in a while. The only solution is to restart HA

Unfortunately, this does not work in my case.
No matter how many times HA was restarted, the value becomes absolutely wrong.

A small advice in general: I often had disconnections or an unstable connection between the Tracer and HA. The problem is the original power output for the eBox-WiFI module. The output voltage is approx. 4.92V and should not be used in conjunction with the Elfin EW11. That voltage is too low.