NEWS
Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden
-
@eisbaeeer
So, seit dieser Woche habe ich mein Auto und bin froh, jetzt auch die Werte der Wallbox auszulesen.
Allerdings finde ich viele Werte tatsächlich sehr irritierend:- modbus.1.inputRegisters.21299_Total_Energy hat den Wert 200212480 Wh ... ich habe laut iSolarCloud gerade mal rund 3 kW geladen
- modbus.1.inputRegisters.21307_Charging_Power hat gerade eben den Wert 275644416 W
- modbus.1.inputRegisters.21309_Charging_Engery hat gerade eben den Wert 25886720 Wh
- Start und End Time (modbus.1.inputRegisters.21317_Charge_Start_Time bzw. 21319) sind im UnixTimestamp Format, wenn ich das umrechne kommen bei mir Werte aus dem Jahr 2075 raus (aktuell: 3340003340)
Wie kommen diese Zahlen zu Stande bzw. wie rechnet ihr sie in saubere Werte um?
-
@maddm Hallo, stell doch mal die die 3 Register 21299, 21307 und 21309 auf unsigned 32 bit (Big Endian word swap) um, das hat bei mir geholfen.
Die Zeit habeichauch noch nicht herrausgefunden wie man die umwandelt und in der Vis darstellt.
Vlt. kann ein anderer uns helfen. -
@maddm Ich habe das unter diesem GitHub-Issue beschrieben:
https://github.com/shcshc76/sungrow/issues/3Das Problem ist, dass bei eine. 32bit Wert das Low-Word (also die Bits 0 bis 15) zuerst gesendet werden. Das muss bei der Umrechnung beachtet werden, dann passen die Werte.
Sag Bescheid, wenn Du bei Github nicht sn den issue kommst, dann erkläre ich es hier nochmal genauer.
-
@rummelpunz Ja, soweit verstanden - da hat der Tipp von @Scusi geholfen: einfach die "Typen" der 3 genannten Werte ändern, dann passen die Werte direkt.
Was mich tatsächlich mehr irritiert sind die komplett wilden Werte der Timestamps (Start und Ende)... die Zahlen werden im Laufe eines Nachmittags so groß, dass man im Jahr 2100 rauskommt, dann fangen sie wieder sehr niedrig an, dass man im Jahr 1970 rauskommt.
Hat das bisher niemanden hier im Thread gestört bzw. hat da jemand ne Lösung für, evtl. reicht es ja auch einfach an den "Typen" der Register zu drehen?!
-
@maddm Da gilt im Prinzip das Gleiche. Der Wert ist im Unix-Timecode-Format und zählt die Sekubden ab 01.01.1970. Funfact am Rande: ich hab heute mal spaßeshalber einen dieser Werte umgerechnet, dafür gibt's im Netz diverse Converter, auch online, wo nan einfach den 32-Bit-Wert als (Dezimal-)Zahl einträgt und dann das Datum umgerechnet bekommt.
Hat bei mir gepasst. Aber eben auch da: Low-Word first! -
@rummelpunz
Ok, bestens - auch hier hats geholfen, die beiden Register für Start und Ende auf den Type "Big Endian (Word Swap)" umzustellen --> @Scusi.Letzte Thematik dazu: der Zeitstempel ist geht "eine Stunde vor" --> wenn ich um 12:00 Uhr deutscher Zeit lade, ist der Zeitstempel in 21317_Charge_Start_Time schon 13:00 Uhr
Ist nicht wirklich schlimm, ich setze mir eigene Start- und Ende-Variablen immer dann wenn der Ladestatus auf "Charging" bzw. "Charging ended" springt.
/* wenn sich der Changing_Status der WB ändert wird geprüft ob der Ladevorgang beginnt oder endet falls ja, wird Ladestart bzw. Ladeende mit dem aktuellen Zeitstempel gespeichert */ on({id: "modbus.1.inputRegisters.21316_Charging_Status", change: 'any'}, function (obj) { var dNow = formatDate(new Date(), "hh:mm:ss"), sState = getState("modbus.1.inputRegisters.21316_Charging_Status").val; console.log("Wallbox, Ladestatus hat gewechselt: "+sState) /* Status Wallbox 1=Idle 2=Standby 3=Charching 4=Charching suspended (Wallbox) 5=Charching suspended (Vehicle) 6=Charching complete 7=Reserved 8=Disabled 9=Fault */ switch (sState) { case 3: setState("0_userdata.0.Wallbox.Ladung_Start", dNow); setState("0_userdata.0.Wallbox.Ladung_Ende", ""); console.log('Wallbox: Ladevorgang gestartet um '+dNow); break; case 6: setState("0_userdata.0.Wallbox.Ladung_Ende", dNow); console.log('Wallbox: Ladevorgang beendet um '+dNow); break; default: console.log('Wallbox: default case, status '+sState); break; } });
-
@rummelpunz sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
@maddm Ich habe das unter diesem GitHub-Issue beschrieben:
https://github.com/shcshc76/sungrow/issues/3Das Problem ist, dass bei eine. 32bit Wert das Low-Word (also die Bits 0 bis 15) zuerst gesendet werden. Das muss bei der Umrechnung beachtet werden, dann passen die Werte.
Sag Bescheid, wenn Du bei Github nicht sn den issue kommst, dann erkläre ich es hier nochmal genauer.
Ich habe eben meine Register Wörter gedreht und auch bei mir passen jetzt die Werte und die Zeit-Stempel. Danke für´s Forschen. Ich werde das in meinem Github Repo für die Register anpassen und einen Pull-Request stellen.
-
Aktuell findet ihr hier alle Register mit richtigen Einstellungen.
-
@eisbaeeer
Ich habe bisher nur die Input Register verwendet um Daten auszulesen. Jetzt würde ich gern via iobroker die Ladung des Kfz starten bzw den Ladevorgang beenden (statt sich in der isolarcloud anzumelden und dort dann über Anlage > Ladegerät > laden starten/beenden den Vorgang zu starten/beenden).Ich will nicht den Ladetyp ändern (ist auf Eco ohne Netzbezug in der isolarcloud eingestellt) oder andere settings ändern, nur Start oder Stop auslösen.
Ist das mit den Holding Registern möglich und wenn ja, welches Register muss ich dafür wie genau setzen?
-
@maddm sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
Ist das mit den Holding Registern möglich und wenn ja, welches Register muss ich dafür wie genau setzen?
Ja, das ist möglich. Dazu musst du das Register 21211 setzen.
-
@eisbaeeer
Hmm, das habe ich jetzt so (so einfach das scheint) erstmal nicht hinbekommen.- Ich habe nur dieses eine Register (21211) in die Holding Register aufgenommen, nicht alle Zeilen
- Ich habe mir in vis1 mit dem universal Element aus "vis-invetwo" einen type=switch gebaut, der den Wert von "modbus.1.holdingRegisters.21211_START_STOP_CHARGING" auf 1 setzt um das Laden zu starten und dann wieder auf 0, um das Laden zu stoppen.
- das Widget ist nur sichtbar, wenn die Wallbox den Status "bereit" hat
- leider passiert auf Knopfdruck "nichts"
Als ich die Ladung über die iSolarCloud gestartet habe, ist der WB Status sauber auf 3 (Charging) gewechselt, das Holding Register bliebt unverändert.
-
@maddm sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
das Holding Register bliebt unverändert.
liest du das Register auch aus?
@maddm sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
Ich habe mir in vis1 mit dem universal Element aus "vis-invetwo
schreibt das Widget bestätigt oder unbestätigt?
-
@homoran
Nein, ich lese es nicht auch aus (das wird sehr wahrscheinlich der Grund sein, dass der Wert dauerhaft der gleiche ist, es sei denn ich ändere es über das Widget).Zurückschreiben bestätigt könnte tatsächlich der Grund sein, warum es nicht geht - ich finde aber im Widget selbst keine Möglichkeit, bestätigt zurückzuschreiben.
Hier mal der Code des Widgets zum Selbstausprobieren (ist aus dem vis-inventwo):[{"tpl":"i-vis-universal","data":{"g_fixed":false,"g_visibility":true,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"not consist","visibility-val":"1||6","visibility-groups-action":"hide","iUniversalWidgetType":"Switch","iValueType":"value","iValueComparison":"equal","iStateResponseTime":"0","iStateResetValueTime":"0","iNavWait":"100","iHttpType":"iSend","iPopUpBackground":"#666666","iPopUpPreventClickOutside":"","iPopUpShowTitle":"true","iPopUpTitle":"","iPopUpTitleColor":"#ffffff","iPopUpCloseBtnColor":"#dc2e2e","iPopUpWidth":"800px","iPopUpHeight":"500px","iPopUpHeightTitle":"50","iPopUpTitleSize":"28","iPopUpPosition":"center","iPopUpPositionX":"0","iPopUpPositionY":"0","iPopUpCloseAfterSeconds":"0","iPopUpCornerRadiusUL":"12","iPopUpCornerRadiusUR":"0","iPopUpCornerRadiusLR":"12","iPopUpCornerRadiusLL":"0","iPopUpShadowXOffset":"2","iPopUpShadowYOffset":"2","iPopUpShadowBlur":"2","iPopUpShadowSpread":"1","iPopUpShadowColor":"#111111","iButtonCol":"#03c04a","iButtonActive":"#dd0000","iButtonColHover":"","iOpacityBack":"1","iCornerRadiusUL":"12","iCornerRadiusUR":"0","iCornerRadiusLR":"12","iCornerRadiusLL":"0","iContentFlexDirection":"horizontal","iContentVertAlign":"iSpace-between","iContentOrder":"orderImgText","iOpacityCtn":"1","iContentType":"image","iTextColor":"#ffffff","iTextColorActive":"#ffffff","iTextSize":"12","iTextAlign":"iCenter","iTextDecoration":"none","iTextSpaceTop":"0","iTextSpaceBottom":"0","iTextSpaceLeft":"5","iTextSpaceRight":"0","iIconSize":"50","iImgAlign":"iCenter","iImgSpaceTop":"0","iImgSpaceBottom":"0","iImgSpaceLeft":"0","iImgSpaceRight":"0","iImgRotation":"0","iImgBlinkFalse":"0","iImgBlinkTrue":"0","iImgColorFalse":"#ffffff","iImgColorTrue":"#ffffff","iImgClockFace":"01","iImgClockHands":"01","iImgClockShowBorder":"1","iImgColorClockFace":"#ffffff","iImgColorHands":"#ffffff","iImgColorHandSecond":"#ff0000","iClockShowSeconds":"","iClockTimezone":"Europe/Berlin","iHtmlTextFieldFalse":"","iHtmlTextFieldTrue":"","iShadowXOffset":"2","iShadowYOffset":"2","iShadowBlur":"2","iShadowSpread":"1","iShadowColor":"#111111","iShadowColorActive":"#111111","iShadowColorHover":"","iShadowInnerXOffset":"0","iShadowInnerYOffset":"0","iShadowInnerBlur":"0","iShadowInnerSpread":"0","iShadowInnerColor":"#111111","iShadowInnerColorActive":"#111111","iShadowInnerColorHover":"","iShadowTextXOffset":"0","iShadowTextYOffset":"0","iShadowTextBlur":"0","iShadowTextColor":"#111111","iShadowTextColorActive":"#111111","iBorderSize":"0","iBorderStyle":"none","iBorderColor":"#ffffff","iBorderColorActive":"#ffffff","iBorderColorHover":"","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"iValueFalse":"0","iValueTrue":"1","iTextFalse":"Laden starten","iTextTrue":"Laden stoppen","iImageFalse":"/vis-icontwo/Cars/e-car.png","iFlipImage":false,"oid":"modbus.1.holdingRegisters.21211_START_STOP_CHARGING","value":"0","iImageTrue":"/vis-icontwo/Cars/e-car.png","visibility-oid":"modbus.1.inputRegisters.21316_Charging_Status"},"style":{"left":"380px","top":"340px","height":"60px","z-index":"10"},"widgetSet":"vis-inventwo"}]
-
@maddm sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
Nein, ich lese es nicht auch aus
dann mach es!
@maddm sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
ich finde aber im Widget selbst keine Möglichkeit, bestätigt zurückzuschreiben.
sollst du ja auch nicht!!!
du musst unbestätigt schreiben!Und auch hier gilt: Immer alles zeigen
-
@homoran Hmm, ich glaube jetzt bin ich mehr verwirrt als vorher, du schreibst: "immer alles zeigen".
Ich kann mMn nicht mehr zeigen als das Widget (denn es gibt kein Blockly oder JScript oder sonst was anderes - das Widget setzt den Wert des 21211 Holding Registers, und der ändert sich auch nach einem Klick).Womöglich hab ich mich überschätzt bei dem Thema und nehm auch gern Hilfe an, dann brauche ich halt einen Tipp, was ich zur Hilfe "liefern muss".
-
@maddm sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
was ich zur Hilfe "liefern muss".
z.b. die Midbus Einstellungen wären mal ein Anfang
-
@maddm
Erstmal tut es ja nicht weh, wenn du die Holding und Input Register komplett einliest.
Ich empfehle dir die Register von https://github.com/Eisbaeeer/sungrow über import in deinen iobroker modbus Adapter einzulesen.Ob du dann die Holding Register beschreibst, bleibt dir ja überlassen.
Beschreibbar sind nur die Holding Register.
-
@homoran
Ok, dann mal schauen was ich liefern kann:
die Modbus Einstellungen sehen wie folgt aus:
Und die Holding Register beinhalten nur einen Wert:
Die Input Register entsprechen 1:1 dem, was auf dem von @Eisbaeeer verlinkten GitHub steht.Den Wert von 21211 versuche ich über das im vorvorherigen Beitrag angebenen Widget zu ändern (kein Script, kein Binding, kein Blockly dahinter).
Als Ergebnis sehe ich, dass sich bei den Objekten der Wert von 21211 ändert, es wird aber kein Ladestart oder Ladestopp an der Wallbox damit angestoßen.
-
@maddm sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
Und die Holding Register beinhalten nur einen Wert:
Du liest ihn ja doch aus.
dann ist das also noch offen@maddm sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
Nein, ich lese es nicht auch aus
@maddm sagte in Sungrow Wallbox AC011E-01 erfolgreich mit Modbus eingebunden:
Als Ergebnis sehe ich, dass sich bei den Objekten der Wert von 21211 ändert,
Das ist doch mal eine Info!
also bitte in den Objekten manuell ändern!
nicht "bestätigt" anwählen!was passiert dann?
-
@homoran
Du schreibst also bitte in den Objekten manuell ändern! nicht "bestätigt" anwählen!
Wo genau muss ich was ändern?- im verwendeten vis-Widget finde ich keine Einstellung, die bestätigt true/false heißt
- im Objektbaum kann ich das Objekt "modbus.1.holdingRegisters.21211_START_STOP_CHARGING" nicht ändern
- stelle ich auf "Expertenmodus" um, habe ich Möglichkeiten der Änderung, da ist aber nichts dabei, was mit "bestätigt" zu tun hat: