NEWS
Alpha Testing: OCPP Wallbox Adapter
-
@fl4sh-0 Super, sprich mit der aktuellen Version kannst du das
chargeLimit
zwischen Untergrenze/Obergrenze korrekt setzen, ist bei mir dasselbe, geht glaube nur zwischen 6 und 16 A.Dann veröffentliche ich die Version mal auf npm
-
@foxriver76 said in Alpha Testing: OCPP Wallbox Adapter:
@fl4sh-0 Super, sprich mit der aktuellen Version kannst du das
chargeLimit
zwischen Untergrenze/Obergrenze korrekt setzen, ist bei mir dasselbe, geht glaube nur zwischen 6 und 16 A.Dann veröffentliche ich die Version mal auf npm
Funktioniert diese Version mit dem Stacklevel = 0 bei dir denn auch ? oder müsste man da noch eine Auswahl im Adapter einplanen ?
-
@fl4sh-0 Geht bei mir auch mit 0, 0 ist immer supported, würde nur überschrieben werden wenn eine andere Anwendung ein Profil mit stackLevel höher rein schreibt.
Nach wie vor wäre es schick die Konfig zu bekommen, dann könnte ich das maxStackLevel dynamisch auslesen und setzen. Aber for now ja schon mal was erreicht
-
@foxriver76
Ich konnte mittlerweile noch zwei Unterschiede feststellen.Wenn ich den Ladevorgang direkt über die Wallbox starte, in meinem Fall über RFID, dann kann ich das chargelimit anschließen im iobroker jederzeit und variabel ändern. (TxDefaultProfile???)
Wenn ich den Ladevorgang über den iobroker starte, wird das chargelimit beim ändern nicht übernommen. Erst nach erneuter Betätigung der transactionActive = true schickt er den Remote Startbefehlt erneut mit dem geändertem chargelimit und es funktioniert.
Das wird wahrscheinlich an den beiden verschiedenen Profilen liegen oder? TxProfile und TxDefaultProfile.
Könnte man bei der RemoteStartTransaction ebenfalls das TxDefaultProfile nutzen oder müssen das verschiedene sein ?
Gruß Tobias
-
@fl4sh-0 Kannst du das validieren, dass es mit
TxDefaultProfile
dann auch dynamisch geht? also nochmal lokal code ändern und an der stelle auch dasTxDefaultProfile
rein -
@foxriver76 said in Alpha Testing: OCPP Wallbox Adapter:
@fl4sh-0 Kannst du das validieren, dass es mit
TxDefaultProfile
dann auch dynamisch geht? also nochmal lokal code ändern und an der stelle auch dasTxDefaultProfile
reinJa, jetzt kann ich es bestätigen! Wenn in beiden Codeblöcken "TxDefaultProfile" steht dann kann es über beide Wege variable eingestellt werden und muss nicht jedesmal über transactionActive bestätigt werden.
ocpp.0 2022-01-26 15:11:48.622 debug Sending RemoteStartTransaction for /ABB-Terra-AC: {"connectorId":1,"idTag":"1","chargingProfile":{"chargingProfileId":1,"stackLevel":0,"chargingProfilePurpose":"TxDefaultProfile","chargingProfileKind":"Recurring","recurrencyKind":"Daily","chargingSchedule":{"duration":86400,"startSchedule":"2013-01-01T00:00Z","chargingRateUnit":"A","chargingSchedulePeriod":[{"startPeriod":0,"limit":8}]}}}
-
Hallo zusammen,
die Erstellung dieses Adapters war eine sehr gute Idee! Ich bin gespannt was sich damit alles umsetzen lässt.
Leider scheitere ich an zwei Stellen und hoffe hier entweder zu erfahren was ich falsch mache oder einen anstoß zur Änderung / Weiterentwicklung zu liefern.-
Die durch den Adapter erzeugte ID der Walboxen beginnt mit einem "/". Z.B. ID = /Wallbox1.
Dadurch ist es nicht möglich die Daten über dem Fhem Adapter zu synchronisieren. Fhem mag "/" in einem Gerätenamen nicht.
Habe ich die Möglichkeit entsprechende Änderungen vorzunehmen oder muss das seitens der Entwicklung umgesetzt werden? -
Mein Plan ist es, ein "mini-" Abrechnungstool für mehrere Ladekarten zu bauen.
Über den Adapter konnte ich bisher aber noch kein Objekt finden, das die RFID zu dem jeweils laufenden Ladezyklus bereitstellt.
Gibt es hier Lösungen oder Pläne?
Vielen Dank vorab
-
-
@renev 1. issue bei FHEM adapter erstellen analog https://github.com/iobroker-community-adapters/ioBroker.fhem/issues/126
- wenn du mir sagst wie das im ocpp 1.6 protokoll möglich ist, gehts schneller, sonst muss ich mal lesen bei Zeit https://www.oasis-open.org/committees/download.php/58944/ocpp-1.6.pdf
-
@foxriver76 Vielen Dank für die schnelle Antwort!
Zu 1 hat Fhem eine klare Aussage:
Befehl (in Fhem):
define ocpp.0./Wallbox1.connected dummyAntwort:
Invalid characters in name (not A-Za-z0-9._): ocpp.0./Wallbox1.connectedMeinst du es macht unter den Umständen Sinn ein Issue zu melden?
Ehrlich gesagt habe ich das Thema mit keinem anderen ioBroker Adapter.Zu 2 fange ich an zu lesen und melde mich, wenn ich etwas gefunden habe.
Aus meiner Verzweiflung heraus habe ich es mit einem eCarUp Account versucht. Dort werden die Ladevorgänge inkl. Kartenzuordnung erkannt, allerdings entspricht der Rest nicht meinen Vorstellungen.
Somit steht schon fest, dass es über OCPP funktionieren muss. -
Meinst du es macht unter den Umständen Sinn ein Issue zu melden?
Ja, iobroker erlaubt
/
in ids und ein Adapter der solche States synchronisiert muss damit umgehen können. Diese beispielsweise mit einem Dummy ersetzen. -
@fl4sh-0 @foxriver76 Mega, da ist man eine Woche mal weg und schon läuft alles Konnte gerade testen, dass die Anpassung des Ladestroms an meinen ABB Terra ACs funktioniert. Jetzt noch eine Dummy Frage - Wie starte ich den ladevorgang über den Adapter ?
-
@schwimbi bei meiner WB über
transactionActive
Außer ich habe mit `abailability' false die Box gelockt dann hat transActive keine Wirkung -
@foxriver76 @fL4sH-0 mit transactionActive bekomme ich die WB z.B. von Charging zu Finishing. Dann mit Availability von Finishing zu Available. Aber dann kann ich den Ladevorgang mit einem "true" auf transactionActive nicht starten.
-
@schwimbi said in Alpha Testing: OCPP Wallbox Adapter:
@foxriver76 @fL4sH-0 mit transactionActive bekomme ich die WB z.B. von Charging zu Finishing. Dann mit Availability von Finishing zu Available. Aber dann kann ich den Ladevorgang mit einem "true" auf transactionActive nicht starten.
Wenn du den Stecker der Wallbox in dein Auto steckst dann sollte der Status von "Available" auf "Preparing" umspringen.
Anschließend kannst du mittransactionActive=true
den Ladevorgang starten und der Status springt von "Preparing" auf "SuspendedEV" und dann auf "Charging" um. Jetzt holt sich der OCPP-Server jede Minute die MeterValues und die Werte sollten sich ändern.Sollte das nicht funktionierten würde ich den Befehl
availability=true
nochmal abschicken.Mit
transactionActive=false
kannst du den Ladevorgang wieder beenden. -
@fl4sh-0 Hm, jetzt hat es funktioniert. Problem ist das der Tesla direkt mit dem Laden anfängt. Mit "transactionActive" kann ich nun per "false" abbrechen und immer wieder (je nach Überschuss) mit "true" starten. M E G A !!!!
-
@schwimbi said in Alpha Testing: OCPP Wallbox Adapter:
@fl4sh-0 Hm, jetzt hat es funktioniert. Problem ist das der Tesla direkt mit dem Laden anfängt. Mit "transactionActive" kann ich nun per "false" abbrechen und immer wieder (je nach Überschuss) mit "true" starten. M E G A !!!!
Wenn der Tesla über die ABB Terra direkt mit dem Ladevorgang beginnt dann hast du in deiner Wallbox das "Freie Laden" aktiviert.
-
@fl4sh-0 @foxriver76 Ah ok vielen Dank, gibt es noch die Möglichkeit anzuzeigen ob ein Auto an der WB steckt und ggf. sogar welches ? Also ID oder Name ? - Dann könnte man die PV-Überschusssteuerung nur durchführen wenn auch wirklich ein Auto angeschlossen ist
-
@schwimbi würde mal Stark annehmen dass über den Ladestecker keine Daten rein kommen
also welches Auto an der Box hängt vermutlich technisch unmöglich über die WB herauszufinden.Ob ein Auto dran hängt: bei mir springt er auf preparing wenn ein Auto dran hängt aber transaction nicht aktiv. Aber ist nicht ganz eindeutig weil bei mir auch preparing wenn nix dran hängt und transaction aktiv. Denke bei ABB ist es Villt anders
-
Bei der ABB Terra AC Wallbox verhält sich das so:
Kein Auto ist an der Wallbox angeschlossen. Status =
Available
.
Ein Auto ist an der Wallbox angeschlossem. Status =Preparing
.
Wenn der Ladevorgang abgeschlossen ist, dann wird der Status aufFinishing
gesetzt.Im Status
Preparing
undFinishing
kann jeweils der Ladevorgang überTransactionActive=true
gestartet werden. Mit diesen beiden Werten kannst du über ein Script die PV-Überschussladung steuern.Hier ist mein aktueller Script für die PV-Überschussladung:
var timeout; schedule("*/5 * * * *", async function () { if (getState("ocpp.0./ABB-Terra-AC.transactionActive").val == false && (getState("ocpp.0./ABB-Terra-AC.status").val == 'Preparing' || getState("ocpp.0./ABB-Terra-AC.status").val == 'Finishing') && getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val >= 5500) { setState("ocpp.0./ABB-Terra-AC.transactionActive"/*Transaction active*/, true); setState("0_userdata.0.Haushalt.PV_Status"/*PV_Status*/, 'PV'); sendTo("telegram", "send", { text: (['⚡ PV-Überschuss: Aktiv','\n','Erzeugung > 5,5 kW:'].join('')) }); (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); } else if (getState("modbus.0.inputRegisters.4.30845_Aktueller_Batteriestand (%)").val >= 50 && getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val >= 3000 && (getState("ocpp.0./ABB-Terra-AC.status").val == 'Preparing' || getState("ocpp.0./ABB-Terra-AC.status").val == 'Finishing') && getState("ocpp.0./ABB-Terra-AC.transactionActive").val == false) { setState("ocpp.0./ABB-Terra-AC.transactionActive"/*Transaction active*/, true); setState("0_userdata.0.Haushalt.PV_Status"/*PV_Status*/, 'PV'); sendTo("telegram", "send", { text: (['⚡ PV-Überschuss: Aktiv','\n','Hausspeicher > 50%:'].join('')) }); (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); } else if (getState("0_userdata.0.Haushalt.PV_Status").val == 'PV' && getState("ocpp.0./ABB-Terra-AC.transactionActive").val == true && getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val <= 2000) { timeout = setTimeout(async function () { setState("ocpp.0./ABB-Terra-AC.transactionActive"/*Transaction active*/, false); setState("0_userdata.0.Haushalt.PV_Status"/*PV_Status*/, 'Netz'); setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 10); sendTo("telegram", "send", { text: ('⚡ PV-Überschuss: Inaktiv') }); }, 60000); } }); schedule("* * * * *", async function () { if (getState("0_userdata.0.Haushalt.PV_Status").val == 'PV') { if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 8000) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 16); // 2-Phasig 7360 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 7500) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 15); // 2-Phasig 6900 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 7000) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 14); // 2-Phasig 6440 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 6500) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 13); // 2-Phasig 5980 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 6000) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 12); // 2-Phasig 5520 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 5500) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 11); // 2-Phasig 5060 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 5000) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 10); // 2-Phasig 4600 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 4500) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 9); // 2-Phasig 4140 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 4000) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 8); // 2-Phasig 3680 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val > 3500) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 7); // 2-Phasig 3220 W Ladestrom } else if (getState("modbus.1.inputRegisters.3.30775_Wirkleistung_gesamt (W)").val <= 3500) { setState("ocpp.0./ABB-Terra-AC.chargeLimit"/*Limit Ampere of Charger*/, 6); // 2-Phasig 2760 W Ladestrom } } });
-
würde auch gern mal den Adapter von foxriver76 ausprobieren.
Habe ihn bereits installiert, bekomme aber in der Instanz immer:
angezeigt.Ist das ok?
Vielen Dank