I’ve been controlling my charger for the past 1,5 years with Home Assistant via OCPP based on electricity spot prices. It has been working perfectly without any issues until I updated the firmware to 1.14.5.
Often the automation divides the charging to 2 or 3 blocks to take full advantage of cheap electricity during the night. With the new FW the first block is charged as expected. But when the automation sends the command to start the charging for the second block, the charger rejects the command. With earlier FW versions you could restart the charging as many times as you wanted without any issues.
The same behaviour can be simulated by starting and stopping the charging manually via OCPP and then trying to re-start it again. The only way to get the charger to start charging again is by reconnecting the charging cable. Below logging from Home Assistant for the communication of the manual test (Laturi is the device name):
2025-05-13 20:59:27.394 INFO (MainThread) [ocpp] Laturi: send [2,“ef1ae6b8-875f-43f5-b98c-25cf274c2a6f”,“RemoteStartTransaction”,{“idTag”:“PD42A0PCATYACTHKE48O”,“connectorId”:1}]
2025-05-13 20:59:27.732 INFO (MainThread) [ocpp] Laturi: receive message [3,“ef1ae6b8-875f-43f5-b98c-25cf274c2a6f”,{“status”:“Accepted”}]
2025-05-13 20:59:28.557 INFO (MainThread) [ocpp] Laturi: receive message [2,“8”,“StatusNotification”,{“connectorId”:1,“errorCode”:“NoError”,“status”:“SuspendedEV”,“timestamp”:“2025-05-13T17:59:27Z”}]
2025-05-13 20:59:28.582 INFO (MainThread) [ocpp] Laturi: send [3,“8”,{}]
2025-05-13 20:59:29.451 INFO (MainThread) [ocpp] Laturi: receive message [2,“9”,“StartTransaction”,{“connectorId”:1,“idTag”:“PD42A0PCATYACTHKE48O”,“meterStart”:7513830,“timestamp”:“2025-05-13T17:59:28Z”}]
2025-05-13 20:59:29.473 INFO (MainThread) [ocpp] Laturi: send [3,“9”,{“transactionId”:1747159169,“idTagInfo”:{“status”:“Accepted”}}]
2025-05-13 20:59:30.614 INFO (MainThread) [ocpp] Laturi: receive message [2,“10”,“StatusNotification”,{“connectorId”:1,“errorCode”:“NoError”,“status”:“Charging”,“timestamp”:“2025-05-13T17:59:29Z”}]
2025-05-13 20:59:30.638 INFO (MainThread) [ocpp] Laturi: send [3,“10”,{}]
2025-05-13 20:59:34.076 INFO (MainThread) [ocpp] Laturi: receive message [2,“11”,“MeterValues”,{“connectorId”:1,“transactionId”:1747159169,“meterValue”:[{“timestamp”:“2025-05-13T17:59:33Z”,“sampledValue”:[{“value”:“0.4”,“context”:“Sample.Periodic”,“measurand”:“Current.Import”,“phase”:“L1”,“location”:“Outlet”,“unit”:“A”},{“value”:“0.4”,“context”:“Sample.Periodic”,“measurand”:“Current.Import”,“phase”:“L2”,“location”:“Outlet”,“unit”:“A”},{“value”:“0.4”,“context”:“Sample.Periodic”,“measurand”:“Current.Import”,“phase”:“L3”,“location”:“Outlet”,“unit”:“A”},{“value”:“11”,“context”:“Sample.Periodic”,“measurand”:“Current.Offered”,“unit”:“A”},{“value”:“7513830”,“context”:“Sample.Periodic”,“measurand”:“Energy.Active.Import.Register”,“location”:“Outlet”,“unit”:“Wh”},{“value”:“327”,“context”:“Sample.Periodic”,“measurand”:“Power.Active.Import”,“location”:“Outlet”,“unit”:“W”},{“value”:“33.4”,“context”:“Sample.Periodic”,“measurand”:“Temperature”,“location”:“Body”,“unit”:“Celsius”},{“value”:“238”,“context”:“Sample.Periodic”,“measurand”:“Voltage”,“phase”:“L1”,“location”:“Outlet”,“unit”:“V”},{“value”:“238”,“context”:“Sample.Periodic”,“measurand”:“Voltage”,“phase”:“L2”,“location”:“Outlet”,“unit”:“V”},{“value”:“238”,“context”:“Sample.Periodic”,“measurand”:“Voltage”,“phase”:“L3”,“location”:“Outlet”,“unit”:“V”},{“value”:“0”,“context”:“Sample.Periodic”,“measurand”:“Voltage”,“phase”:“N”,“location”:“Outlet”,“unit”:“V”}]}]}]
2025-05-13 20:59:34.110 INFO (MainThread) [ocpp] Laturi: send [3,“11”,{}]
2025-05-13 21:00:35.124 INFO (MainThread) [ocpp] Laturi: receive message [2,“12”,“MeterValues”,{“connectorId”:1,“transactionId”:1747159169,“meterValue”:[{“timestamp”:“2025-05-13T18:00:34Z”,“sampledValue”:[{“value”:“10.1”,“context”:“Sample.Periodic”,“measurand”:“Current.Import”,“phase”:“L1”,“location”:“Outlet”,“unit”:“A”},{“value”:“10.4”,“context”:“Sample.Periodic”,“measurand”:“Current.Import”,“phase”:“L2”,“location”:“Outlet”,“unit”:“A”},{“value”:“10.2”,“context”:“Sample.Periodic”,“measurand”:“Current.Import”,“phase”:“L3”,“location”:“Outlet”,“unit”:“A”},{“value”:“11”,“context”:“Sample.Periodic”,“measurand”:“Current.Offered”,“unit”:“A”},{“value”:“7513960”,“context”:“Sample.Periodic”,“measurand”:“Energy.Active.Import.Register”,“location”:“Outlet”,“unit”:“Wh”},{“value”:“7256”,“context”:“Sample.Periodic”,“measurand”:“Power.Active.Import”,“location”:“Outlet”,“unit”:“W”},{“value”:“33.4”,“context”:“Sample.Periodic”,“measurand”:“Temperature”,“location”:“Body”,“unit”:“Celsius”},{“value”:“235”,“context”:“Sample.Periodic”,“measurand”:“Voltage”,“phase”:“L1”,“location”:“Outlet”,“unit”:“V”},{“value”:“236”,“context”:“Sample.Periodic”,“measurand”:“Voltage”,“phase”:“L2”,“location”:“Outlet”,“unit”:“V”},{“value”:“239”,“context”:“Sample.Periodic”,“measurand”:“Voltage”,“phase”:“L3”,“location”:“Outlet”,“unit”:“V”},{“value”:“0”,“context”:“Sample.Periodic”,“measurand”:“Voltage”,“phase”:“N”,“location”:“Outlet”,“unit”:“V”}]}]}]
2025-05-13 21:00:35.149 INFO (MainThread) [ocpp] Laturi: send [3,“12”,{}]
2025-05-13 21:00:46.995 INFO (MainThread) [ocpp] Laturi: send [2,“e18f6a0e-2475-49ee-b25e-799028a28379”,“RemoteStopTransaction”,{“transactionId”:1747159169}]
2025-05-13 21:00:47.480 INFO (MainThread) [ocpp] Laturi: receive message [3,“e18f6a0e-2475-49ee-b25e-799028a28379”,{“status”:“Accepted”}]
2025-05-13 21:00:47.911 INFO (MainThread) [ocpp] Laturi: receive message [2,“13”,“StopTransaction”,{“transactionId”:1747159169,“meterStop”:7513980,“reason”:“Remote”,“timestamp”:“2025-05-13T18:00:47Z”}]
2025-05-13 21:00:47.931 INFO (MainThread) [ocpp] Laturi: send [3,“13”,{“idTagInfo”:{“status”:“Accepted”}}]
2025-05-13 21:00:49.133 INFO (MainThread) [ocpp] Laturi: receive message [2,“14”,“StatusNotification”,{“connectorId”:1,“errorCode”:“NoError”,“status”:“Finishing”,“timestamp”:“2025-05-13T18:00:47Z”}]
2025-05-13 21:00:49.154 INFO (MainThread) [ocpp] Laturi: send [3,“14”,{}]
2025-05-13 21:01:24.501 INFO (MainThread) [ocpp] Laturi: send [2,“bac3b291-a2bd-48df-8874-c37108d41fe5”,“RemoteStartTransaction”,{“idTag”:“PD42A0PCATYACTHKE48O”,“connectorId”:1}]
2025-05-13 21:01:24.995 INFO (MainThread) [ocpp] Laturi: receive message [3,“bac3b291-a2bd-48df-8874-c37108d41fe5”,{“status”:“Rejected”}]
2025-05-13 21:01:24.998 WARNING (MainThread) [custom_components.ocpp] Failed with response: Rejected
Is this expected behaviour or could it be rectified somehow? Of course I could downgrade the FW but then I miss the other improvements such as turning off the LED’s in idle mode (big thx for this feature!).