-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Wallbox-Ladeleistung einstellen #106
Comments
Hallo Marcel, danke für deine Idee und die Vorarbeit. Leider ist es bzgl. WB-Namespace schwierig für mich das weiter auszubauen, weil ich keine E3/DC-Wallbox habe und deshalb nicht testen kann. Die Dokumentation der RSCP-Schnittstelle ist nicht sehr detailliert und gerade bei schreibenden Funktionen muss ich oft "am lebenden Objekt" (sprich durch Testaufrufe und Aufzeichnen der Antwort) herausfinden, wie genau der Dialog funktioniert. Ich kann mir aber durchaus vorstellen, einen Entwickler (dich?), der eine E3/DC Wallbox hat und in einem Fork den WB-Teil erweitert, zu unterstützen und die Erweiterung später per PR in den Adapter zu mergen. Viele Grüße |
Hallo, Ich habe heute schon mal folgendes heraus gefunden: Die aktuelle Ladeleistung wird tatsächlich bereits von deiner Lösung ausgelesen. Dabei habe ich folgendes nachvollziehen können: XX stellt die Anzahl der konfigurierten Phasen dar.
YY stellt die Konfiguration des Sonnenmodus dar
ZZ stellt die eingestellte Ladeleistung in Ampere als HEX
Ist jetzt die Frage wie könnte man die Werte in einzelne ioBroker-Objekte zerlegen. Hast du da eine Idee? Im Feld Das Abfrageintervall von |
Change the polling interval of the object WB_0.EXTERN_DATA_ALG to S git-kick#106
Das Zerlegen solcher binär codierten Werte ist an sich kein großes Problem, wenn man erstmal weiß, was sie bedeuten! |
Hallo. |
Ich hatte ähnliche Erkenntnisse gehabt beim Reverse-Engineering von EXTERN_DATA_ALG: siehe #100 Das Setzen der Ladeleistung habe ich in einem eigenen, non-ioBroker Fork so gelöst (Verwendung auf eigene Gefahr 😉):
|
Nur mal eine Frage, warum verbindet ihr eure E3DC Wallbox nicht einfach per Modbus, um diese zu steuern? |
Eigentlich wurde von E3DC immer kommuniziert, dass man via Modbus nur Daten auslesen, jedoch nicht setzt kann. |
Ich steuere die Wallbox grundsätzlich via Modbus (auch das Setzen des Solarmodus, Starten des Ladevorganges etc.). Nur das Setzen des Ladestromes scheint nur via RSCP möglich zu sein. |
Das ist bei E3DC Hauskraftwerk auch richtig, nur bei der Wallbox steuert E3DC diese auch über Modbus.
Ist auch über Modbus möglich, mit dem Holdingregister 528 kann man den Ladestrom in A einstellen und über das Holdingregister 300 bekommt man die Rückmeldung vom Fahrzeug, mit wie viel A gerade geladen wird. Da E3DC unterschiedliche Hardware bei den Wallboxen verwendet, muss man natürlich immer prüfen, ob das bei euch funktioniert. |
@mccrossen ich habe mir das angesehen und folgenden Vorschlag: die "Zerlegung" (welche E3/DC zwar dokumentiert aber nicht macht), kann man im ioBroker javascript-Adapter nachrüsten und dabei auch beliebig formatieren. Das sieht in etwa so aus:
Wenn man dieses Skript im ioBroker startet, wird bei jeder Änderung von Das Thema "Zerlegung" ist also auch ohne Änderung am Adapter lösbar. |
@ArnoD15 danke für den Lösungsvorschlag! |
@git-kick Ich habe ein wenig Erfahrung in der Adapter-Entwicklung und einer E3DC-Wallbox zuhause. Leider erschlägt mich die Adapter-Komplexität etwas. Daher kann ich meiner Hilfe beim entwickeln und testen anbieten. Finden wir hier einen gemeinsamen Weg zur Lösung? |
@git-kick Die Entwicklung kann ich relativ problemlos übernehmen. Ich verstehe nur nicht, wie ich zusätzliche Status z.B. für die Set-Request und die decodierten Werte erstellen kann. Hast du irgendeine Doku für RSCP? Wie kannst du die Kommunikation debuggen? Die main.js ist doch recht umfangreich... |
Besten Dank! Das hat schon einmal sehr geholfen! Die Kommunikation mit der Wallbox funktioniert nun und ich kann die Ladeparameter schon übermitteln. Hast du noch einen Tipp, wie ich neue ioBroker-Objekte in deinem Adapter korrekt anlege? Muss ich dazu einen Eintrag in der JSON-Datei vornehmen, zu dem kein RSCP-TAG spezifiziert ist. Existiert dazu schon ein Beispiel? Hintergrund: Ich würde das decodieren und codieren der Parameter gerne im Adapter lösen. |
Leider habe ich die Verarbeitung der RSCP-Container und -Tags noch nicht verstanden. Der u.g. Wallbox-Container wird leider nicht richtig in die Objekte e3dc-rscp.0.WB.WB_0.EXTERN_DATA_ALG, e3dc-rscp.0.WB.WB_0.EXTERN_DATA_ALL, e3dc-rscp.0.WB.WB_0.EXTERN_DATA_NET und e3dc-rscp.0.WB.WB_0.EXTERN_DATA_SUN übertragen. Stattdessen wird immer nur das innere Tag TAG_WB_EXTERN_DATA in das Objekt e3dc-rscp.0.WB.WB_0.EXTERN_DATA geschrieben.
|
Die Steuerung ist jetzt implementiert. Bitte einmal unter https://github.com/ka-vaNu/ioBroker.e3dc-rscp/archive/refs/heads/Support-Wallbox.zip prüfen. Wenn OK, erzeuge ich einen Pull-Request. |
Danke und Gratulation! Ich habe gerade viel anderes um die Ohren und deshalb kann es etwas dauern mit einer Antwort. Aber ich werde mir das definitiv ansehen! |
@mccrossen, @Streit187, @rzumbuehl, @ArnoD15, @Matis-11, @christianreiss : Es wäre schön, wenn ihr den Code ebenfalls testen könntet, bei euch hatte ich ein Interesse wahrgenommen Folgende ioBroker-Objekte sind im Baum WB hinzugekommen: SUNMODE POWER_LIMITATION PRECHARGE TOGGLE_PHASES ABORT_CHARGING_TYP2
|
Okay, I am dumb. Iobroker is an Home Automation Software... I am unaware just how I came across this. I just need a way to cancel charging... |
OK, this is about a pure ioBroker adapter. Only an installation via the GUI is required. These are installed via expert mode in beta phase or developer test. Please turn on the expert mode in the adapter menu, then you can select "Install from custom URL". There you can select "Custom" and paste the URL. |
Ich habe heute den Code gelesen und im Kern (
Ich kann einiges davon auch selbst noch machen und dir dann zum Testen geben, es ist ja kaum etwas Funktionales. Freue mich auf den Pull Request! |
zu 1.: Ich nutze immer die .eslinrc.json, da die Editoren hier oft unterschiedlich arbeiten. Die Konfiguration, die dem bestehenden Code am nächsten kam, habe ich unter ka-vaNu@b31628a commited. Falls du noch eine passende Konfiguration hast, kann ich die gerne übernehmen. zu 2.: EinKnoten EXTERN_DATA ist so nicht korrekt. Die Daten liegen eigentlich in Containern wie z.B.: TAG_WB_EXTERN_DATA_SUN, TAG_WB_EXTERN_DATA_NET, TAG_WB_EXTERN_DATA_ALL etc. die dann wiederum ein ein EXTERN_DATA Tag enthalten. Aus meiner Sicht sollte eher etwas wie folgendes entstehen:
EXTERN_DATA_NET
zu 3.: Ändere ich zu 4.: Schau ich mir an, sollte vielleicht ein paralleles Enhancement werden, da mehrere WB eher die Ausnahme sein werden zu 5. Ändere ich zu 6.: Hängt eng mit 2. zusammen. Hier müssten die TAG_WB_REQ_EXTERN_DATA_ALL und TAG_WB_REQ_EXTERN_DATA_ALG regelmäßig abgefragt werden und dann entsprechend 2. die Container als Unterordner abgelegt werden. Dieser enthält schon die neuen Objekte und EXTERN_DATA ist aus meiner Sicht falsch dekodiert, da es immer wieder in unterschiedlichen Containern vorkommt. |
Soo, hab rscp mal "extern" zum laufen bekommen. Welchen Tag sendest du denn bei dem ABORT_CHARGING_TYP2 event? Das was ich finden konnte ist das hier:
Also du setzt Dir vorher sunmode, powerLimitation, Precharge, TogglePhases, AbortCharging und Schuko und sendest dann denn konkatenierten String an das e3dc? Gibt es eine Möglichkeit, dass statisch via rscp zu machen? Oder sind alle Parameter von oben zwingend für jeden Abbruch der Ladung nötig? |
Ja, es muss immer der gesamte String gesendet werden. Durch ausprobieren habe ich herausgefunden, dass es auch möglich ist alle anderen Werte auf 0 zu belassen. Um die o.g. Punkte 2-6 zu fixen habe ich erhebliche Veränderungen vorgenommen. Am Besten einmal den gesamten WB-Baum unter Objects löschen und noch einmal testen. Unter https://github.com/ka-vaNu/ioBroker.e3dc-rscp/archive/refs/heads/Support-Wallbox.zip liegt weiterhin die aktuelle Version. Unter "Control" liegen nun alle States um die Wallbox zu kontrollieren, nur diese sind beschreibbar. Die dekodierten Daten liegen nun unter EXTERN_DATA_* und sind im "CamelCase" gehalten. Nur EXTERN_DATA ist vollständig groß geschrieben. Das Logging ist jetzt komplett auf silly, hat aber bestimmt noch Luft nach oben. Es werden jetzt theoretisch beliebig viele Wallbox unterstützt, ob das funktioniert, kann ich jedoch mangels Testmöglichkeit nicht sicherstellen. Konstanten habe ich soweit sinnvoll möglich eingeführt.
Für das Formatierungsproblem habe ich keine Lösung. @git-kick Können wir uns auf eine eslint-Konfig einigen? |
Ja, bestimmt. Ich bin noch ein paar Tage unterwegs, dann melde ich mich. |
Ich verwende ebenfalls VS Code und habe dort die ESLint (v2.2.6) Extension installiert. Diese formatiert beim Speichern entsprechend der Regeln in der lokalen .eslintrc.json |
Ich habe heute noch alle Wallbox-relevanten Teile in eine Bibliothek ausgelagert, dadurch wird der Code deutlich übersichtlicher und wir kommen uns hoffentlich nicht groß in die quere, dafür habe ich ein paar Hilfsmethoden in die tools.js auslagern müssen. |
Zum Testen kann der Adapter mit folgendem Befehl installiert werden: Danach einfach eine Instanz erzeugen. |
|
Die Gibt es einen git-Branch, wo ich den aktuellen Stand einsehen kann? Ich würde dann eine v1.1 anstreben, weil wir hier eine größere Änderung haben. |
OK, habe die Bibliotheken auf die Root-Ebene verschoben und die tools.js wieder aufgespalten und in helper.js ausgelagert.
Ich habe dein Repository geforked und einen "Support-Wallbox"-Branch eröffnet, dort habe ich die Entwicklung durchgeführt:
Sehr gerne! |
Pull-Request ist gestellt |
Danke @ka-vaNu. Ich bitte um etwas Geduld bis zur v1.1. Ich möchte noch die Dokumentation anpassen und ein paar andere Kleinigkeiten fixen. |
Nice, danke euch für die Arbeit! Mein e3dc samt Wallbox ist seit 2 Tagen im Betrieb. Haut raus das Ding, ich freue mich tierisch darauf. Falls es noch auf die schnelle geht: Könnt Ihr die Schlüsselschalterfunktion Laden verboten 0 / Laden erlaubt 1 einbauen? |
Hab den Branch mittels Aus meiner Sicht ist alles OK.
|
|
So, v1.1.0 ist released und PR für ioBroker.repositories ist erstellt. |
Hallo liebe Gurus der Wallboxerweiterung! Habt Ihr Lust vielleicht noch eine sinnvolle Erweiterung einzubauen? Das wäre super - Danke |
Es wäre praktisch wenn man die maximale Ladeleistung der E3DC-Wallbox via ioBroker konfigurieren könnte.
Über die RSCPGui (https://github.com/rxhan/RSCPGui) funktioniert es, nur leider weiß ich nicht genau welche der fünf Vorkommen die richtige Bitmaske für das setzen der Ladeleistung wäre:
Eventuell kannst du es zum setzen vorbereiten und schreibst mir an welcher Stelle ich es ändern muss um es ausprobieren zu können.
The text was updated successfully, but these errors were encountered: