dingo35 / SmartEVSE-3.5

Smart Electric Vehicle Charging Station (EVSE)
MIT License
38 stars 13 forks source link

EV data injection thorough MQTT #35

Closed hp197 closed 3 months ago

hp197 commented 3 months ago

Describe the bug I have a problem with injecting data through MQTT. Mains seems to work, but EV keeps getting into NO_COMM error.

Upload your config

{"version":"15:25:00 @Mar 19 2024","mode":"SOLAR","mode_id":2,"car_connected":true,"wifi":{"status":"WL_CONNECTED","ssid":"lacasita-public","rssi":-56,"bssid":"72:A7:41:AB:B4:49"},"evse":{"temp":30,"temp_max":65,"connected":true,"access":true,"mode":2,"loadbl":0,"pwm":1024,"solar_stop_timer":0,"state":"Charging Stopped","state_id":9,"error":"EV Meter Comm Error","error_id":4,"rfid":"Not Installed"},"settings":{"charge_current":0,"override_current":0,"current_min":6,"current_max":16,"current_main":96,"current_max_circuit":48,"current_max_sum_mains":96,"solar_max_import":6,"solar_start_current":0,"solar_stop_time":10,"enable_C2":"Auto","modem":"Not present","mains_meter":"API","starttime":0,"stoptime":0,"repeat":0},"mqtt":{"host":"lacasitaha.vmain.lacasita.watkijkje.nl","port":1883,"topic_prefix":"SmartEVSE-39644","username":"m2me","password_set":true,"status":"Connected"},"home_battery":{"current":0,"last_update":0},"ev_meter":{"description":"API","address":120,"import_active_power":0,"total_kwh":1565.199951,"charged_kwh":0,"currents":{"TOTAL":0,"L1":0,"L2":0,"L3":0},"import_active_energy":0,"export_active_energy":0},"mains_meter":{"import_active_energy":0,"export_active_energy":0},"phase_currents":{"TOTAL":-97,"L1":-66,"L2":-49,"L3":18,"last_data_update":1710859049,"original_data":{"TOTAL":-97,"L1":-66,"L2":-49,"L3":18}},"backlight":{"timer":0,"status":"OFF"}}

Upload a debug log

(D) (mqtt_receive_callback)(C1) mqtt_receive_callback [EVMeter]: L1:0, L2:0, L3:0, W:0, Wh:1565180
(V) (CalcBalancedCurrent)(C1) Checkpoint 1 Isetbalanced=44.0 A Imeasured=2.4 A MaxCircuit=48 Imeasured_EV=0.0 A, Battery Current = 0.0 A, mode=2.
(V) (CalcBalancedCurrent)(C1) Checkpoint 2 Isetbalanced=44.0 A, Idifference=32.9, mod=0.
(V) (CalcBalancedCurrent)(C1) Checkpoint 3 Isetbalanced=44.5 A, IsumImport=-8.9, Isum=-2.9, ImportCurrent=6.
(D) (CalcBalancedCurrent)(C1) Checkpoint b: Resetting SolarStopTimer, IsetBalanced=44.5A, ActiveEVSE=0.
(V) (CalcBalancedCurrent)(C1) Checkpoint 4 Isetbalanced=44.5 A.
(V) (CalcBalancedCurrent)(C1) Checkpoint 5 Isetbalanced=44.5 A.
(I) (printStatus)(C1) STATE: B1 Error: 10 StartCurrent: -0 ChargeDelay: 0 SolarStopTimer: 0 NoCurrent: 0 Imeasured: 2.4 A IsetBalanced: 44.5 A
(I) (printStatus)(C1) L1: -3.0 A L2: -2.3 A L3: 2.4 A Isum: -2.9 A
(V) (CalcBalancedCurrent)(C1) Checkpoint 1 Isetbalanced=44.5 A Imeasured=2.6 A MaxCircuit=48 Imeasured_EV=0.0 A, Battery Current = 0.0 A, mode=2.
(V) (CalcBalancedCurrent)(C1) Checkpoint 2 Isetbalanced=44.5 A, Idifference=32.8, mod=0.
(V) (CalcBalancedCurrent)(C1) Checkpoint 3 Isetbalanced=45.0 A, IsumImport=-8.5, Isum=-2.5, ImportCurrent=6.
(D) (CalcBalancedCurrent)(C1) Checkpoint b: Resetting SolarStopTimer, IsetBalanced=45.0A, ActiveEVSE=0.
(V) (CalcBalancedCurrent)(C1) Checkpoint 4 Isetbalanced=45.0 A.
(V) (CalcBalancedCurrent)(C1) Checkpoint 5 Isetbalanced=45.0 A.
(I) (printStatus)(C1) STATE: B1 Error: 10 StartCurrent: -0 ChargeDelay: 0 SolarStopTimer: 0 NoCurrent: 0 Imeasured: 2.6 A IsetBalanced: 45.0 A
(I) (printStatus)(C1) L1: -2.9 A L2: -2.2 A L3: 2.6 A Isum: -2.5 A
(V) (CalcBalancedCurrent)(C0) Checkpoint 1 Isetbalanced=45.0 A Imeasured=2.6 A MaxCircuit=48 Imeasured_EV=0.0 A, Battery Current = 0.0 A, mode=2.
(V) (CalcBalancedCurrent)(C0) Checkpoint 2 Isetbalanced=45.0 A, Idifference=32.8, mod=0.
(V) (CalcBalancedCurrent)(C0) Checkpoint 3 Isetbalanced=45.5 A, IsumImport=-8.5, Isum=-2.5, ImportCurrent=6.
(D) (CalcBalancedCurrent)(C0) Checkpoint b: Resetting SolarStopTimer, IsetBalanced=45.5A, ActiveEVSE=0.
(V) (CalcBalancedCurrent)(C0) Checkpoint 4 Isetbalanced=45.5 A.
(V) (CalcBalancedCurrent)(C0) Checkpoint 5 Isetbalanced=45.5 A.
(I) (printStatus)(C0) STATE: B1 Error: 8 StartCurrent: -0 ChargeDelay: 0 SolarStopTimer: 0 NoCurrent: 0 Imeasured: 2.6 A IsetBalanced: 45.5 A
(I) (printStatus)(C0) L1: -2.9 A L2: -2.2 A L3: 2.6 A Isum: -2.5 A
(D) (mqtt_receive_callback)(C1) mqtt_receive_callback [EVMeter]: L1:0, L2:0, L3:0, W:0, Wh:1565180
(V) (CalcBalancedCurrent)(C1) Checkpoint 1 Isetbalanced=45.5 A Imeasured=2.6 A MaxCircuit=48 Imeasured_EV=0.0 A, Battery Current = 0.0 A, mode=2.
(V) (CalcBalancedCurrent)(C1) Checkpoint 2 Isetbalanced=45.5 A, Idifference=32.8, mod=0.
(V) (CalcBalancedCurrent)(C1) Checkpoint 3 Isetbalanced=46.0 A, IsumImport=-8.5, Isum=-2.5, ImportCurrent=6.
(D) (CalcBalancedCurrent)(C1) Checkpoint b: Resetting SolarStopTimer, IsetBalanced=46.0A, ActiveEVSE=0.
(V) (CalcBalancedCurrent)(C1) Checkpoint 4 Isetbalanced=46.0 A.
(V) (CalcBalancedCurrent)(C1) Checkpoint 5 Isetbalanced=46.0 A.

*** mqtt_receive_callback, is debug added by me just before the UpdateCurrentData call when [topic == "/Set/EVMeter"] (Line: 2566).

To Reproduce

Expected behavior No EV_NOCOMM error.

Screenshots

P.S. The documentation should be updated that injecting EV data requires 5 parameters (L1:L2:L3:W:Wh) instead of 3 (with the mains meter). I can do this afterwards.

Data in MQTT:

SmartEVSE-39644/Set/MainsMeter: -72:-55:-39
SmartEVSE-39644/Set/EVMeter: 0:0:0:0:1565180

This is retained data and updated every 5 to 10 seconds (depending how long the modbus query took).

dingo35 commented 3 months ago

Have you tried with a little lower value then 1.5MWh?

hp197 commented 3 months ago

You mean with the Wh value in EV? Yes, I also tried with -1. This parameter is this value in the webinterface:

image

I read this as the total kWh handled by the meter as per this piece of code:

            if (WH > -1) {
                // Energy measurement
                EnergyEV = WH;
                if (ResetKwh == 2)
                    EnergyMeterStart = EnergyEV;             // At powerup, set EnergyEV to kwh meter value
                EnergyCharged = EnergyEV - EnergyMeterStart; // Calculate Energy
                RecomputeSoC();                              // Recalculate SoC
            }

Setting it to -1 results in the same EV_NOCOMM error.

dingo35 commented 3 months ago

This should solve it: 6eec7943.zip

dingo35 commented 3 months ago

Fixed in b058a71