Epever RS485 + Elfin EW11 WiFi Modbus (or MQTT)

Hi,

I still have no success regarding the negative current value, when the battery gets discharged.

Does anyone have an advise how to fix that?

Thanks in advance.

I’m having this issues as well, i notice it only occur when there is no sun/charging happen in my solar system. So my solution to this is like @chukaonline mentioned, is to restart the HA.

But i automated it just before the sunrise to avoid the weird value to happen.

alias: General - Restart Home Assistant
description: ''
trigger:
  - platform: state
    entity_id: sensor.solar_panel_amp
    to: unavailable
  - platform: state
    entity_id: sensor.solar_panel_watt_low
    to: unavailable
  - platform: state
    entity_id: sensor.solar_panel_voltage
    to: unavailable
  - platform: state
    entity_id: sensor.solar_battery_amp_low
    to: unavailable
  - platform: state
    entity_id: sensor.solar_battery_watt
    to: unavailable
  - platform: state
    entity_id: sensor.solar_battery_voltage
    to: unavailable
  - platform: state
    entity_id: sensor.solar_load_amp
    to: unavailable
  - platform: state
    entity_id: sensor.solar_load_watt_low
    to: unavailable
  - platform: state
    entity_id: sensor.solar_load_voltage
    to: unavailable
  - platform: state
    entity_id: sensor.solar_charge_controller_temperature
    to: unavailable
  - platform: time
    at: '08:11:00'
condition:
  - condition: time
    after: '08:00:00'
    before: '19:00:00'
action:
  - service: homeassistant.restart
    data: {}
mode: single

The downside to this so called solution is I’m not getting accurate statistic in my Grafana. But i still can use the rest of the data.

Anyone get the kWh values exposed to the Energy dashboard? After reading a few other threads, I thought adding the state_class and device_class would solve it. This is my sensor yaml, but no love:

 - name: Energy Production Today  
        address: 13068
        slave: 1
        data_type: uint16
        input_type: input
        unit_of_measurement: kwh
        state_class: total_increasing
        device_class: energy
        scale: 0.01
        precision: 2

I can get it to show up when running the Current Power ( address: 12546 ) through the Reimann sum integral integration, but I don’t think that’s as accurate is the internal Epever data.

I have tried also and am unable to get it on the energy dashboard. I defined it below but this is not recognized as a solar production source. I am interested if anyone has a solution.

  - platform: template
    sensors:
      solarprod1:
        friendly_name: 'Solar Production1'
        unit_of_measurement: 'kWh'
        device_class: energy
        value_template: '{{ states("sensor.solar_panel_power")  | float }}' 
1 Like

This worked for getting sensors to show up in the Energy Dashboard. It also worked with the other timeframes (yearly, daily, total). No template sensor required.

- name: Epever Energy MTD
        device_class: energy
        unit_of_measurement: kWh
        state_class: total_increasing
        slave: 1
        address: 13070
        input_type: input
        data_type: int32
        scale: 0.01
        precision: 2
        count: 2
        swap: word
        scan_interval: 10

Thanks @jetatomic. This worked for me as well.

1 Like

Has anyone successfully implemented address 12800 - 12803? As per documentation, each can have multiple values. I want to see the same values as the screenshot below provided by epever.

- name: PV Battery Status #0x003200
        hub: epever
        slave: 1
        register: 12800
        register_type: input
        scale: 1
        precision: 0 
        #######################################################################
        #D15: 1-Wrong identification for rated voltage
        #D8: Battery inner resistance, abnormal 1, normal 0
        #D7-D4: 00H Normal, 01H Over, Temp.(Higher than the warning settings) 02H Low Temp.(Lower than the warning settings),
        #D3-D0: 00H Normal ,01H Over Voltage. , 02H Under Voltage, 03H Over discharge, 04H Fault
        #Status analysis
        #Array status:address 3201 bits D15-D10
        #Charging status:address 3201 bits D3-D2
        #Battery status: address 3200 bits D7-D0
        #Load status: address 3201 bits D9-D7,
        #Device status: address 3200 bit D15 address 3202 bits D13-D8,D6-D4 address 3201 bits D6 address 2000
        ############################################################################################
      - name: PV Charging Equipment Status #0x003201
        hub: epever
        slave: 1
        register: 12801
        register_type: input
        scale: 1
        precision: 0
        #######################################################################
        #D15-D14: Input voltage status. 00H normal, 01H No input power connected, 02H Higher input voltage , 03H Input voltage error.
        #D13: Charging MOSFET is short circuit.
        #D12: Charging or Anti-reverse MOSFET is open circuit.
        #D11: Anti-reverse MOSFET is short circuit.
        #D10: Input is over current.
        #D9: The load is over current.
        #D8: The load is short circuit.
        #D7: Load MOSFET is short circuit.
        #D6:Disequilibrium in three circuits.A17
        #D4: PV input is short circuit.
        #D3-D2: Charging status. 00H No charging,01H Float,02H Boost, 03H Equalization.
        #D1: 0 Normal, 1 Fault.
        #D0: 1 Running, 0 Standby.
        #Status analysis
        #Array status:address 3201 bits D15-D10
        #Charging status:address 3201 bits D3-D2
        #Battery status: address 3200 bits D7-D0
        #Load status: address 3201 bits D9-D7,
        #Device status: address 3200 bit D15 address 3202 bits D13-D8,D6-D4 address 3201 bits D6 address 2000

This is what I am getting and not sure how to interprete

image

and
image

Has anyone tried the new version of the Epever Wifi box? Since they’ve changed their Android app to talk about new cloud services, I’m wondering if standard RS485 output is still available.

WiFi 2.4G RJ45 A

https://www.epever.com/product/wifi-adapter-2-4g-epever/

Hi guys,

its now a while since then and it is still the same “issue”.
When the Battery Current get negative, then I get that 655,xx A Value in HA.

What I wonder is: isn’t there an “emergency solution” in which you use a filter? If the value is above 650A (or another value), then 0 is simply displayed.

Would that work?

I had a problem with negative values a couple years ago. If I remember correctly I was able to apply an absolute value, and that fixed it. But I don’t remember whether it was a filter, template or some other process.

Maybe it would be possible to define a word like “charging” etc. for each number.
So that it can get the current status in words. But honestly I don´t know to realize that.

Hi Andrew,

thanks for your feedback.
I have now tested several filters and can’t come up with a suitable value.
Basically just the value, let’s say above 10A (max load of the MPPT controller) would have to be “clipped”.
However, it is a pity in general that I have not yet found a solution to display a negative value.

I use the small EPEVER 2610BP as a controller for a small fountain, which accordingly also has an automation for the switching cycles.
At the load output there an Elfin-EW11 connected for controlling the fountain. This device consumes according to Epever Solar Monitor -0.01A. This is unfortunately displayed as 655.4A in the Dashboard (see screenshot).

Maybe someone has a solution for this.

Hi Chickenbreast,

I think the problem is that the current can go negative and positive, but in your config you assign uint, so unsigned.

when you look at the documentation from ESPHOME

https://esphome.io/components/sensor/modbus_controller.html

it’s the address: 0x331B and the datatype is S_DWORD_R. So it it is a signed 32 bit integer from 2 registers low word first.

I don’t use the Load Output from the Controller so I can test but I think you can try to either use int32 instead of uint as datatype and if that doesn’t work you can add a “count:2” and “swap: word”

    - name: "EPEVER Battery Current"
      address: 13083
      data_type: int32
      slave: 1
      unit_of_measurement: A
      input_type: input        
      scale: 0.01
      precision: 1
      count: 2
      swap: word
      scan_interval: 10

That helped me fix my Problem with the Solar Panel Power jumping up and down weirdly. Hope it Helps =)

1 Like

This thread shows a few different ways to convert a negative value to positive. My sensors don’t give negative values at this time, but I believe my workaround when it was happening a couple years ago was something similar

1 Like

Hi,

holy s**t. You are my hero!!
Finally it works! Thank you very much :grinning_face_with_smiling_eyes:

I am using the following code now:

- name: "EPEVER Battery Current"
  address: 13083
  data_type: int32
  slave: 1
  unit_of_measurement: A
  input_type: input
  scale: 0.01
  precision: 1
  count: 2
  swap: word
  scan_interval: 5

Now it shows exactly the negative value I was looking for!
Great feedback again. I love this forum!

1 Like

Hi Andrew,

thanks for your feedback.
trmnt666´s reply worked finally for me. At least one headache less :grinning_face_with_smiling_eyes:

Cheers

1 Like

Hello. I am trying to resolve the connection of Epever tracer to HA. I read your post. You share there the code titled “modbus.yaml” and the code titled “sensor.yaml”. Where exactly to create this or just put all of this in configuration.yaml? Thank´s

Hi @chukaonline,

even it is too late…happy new year :slight_smile:
Do you have any success with these values?

Can you explain your question in more detail?

No. I was not able to and I have also changed inverter.