GoE Charger
Der GoE-Charger ist eine WallBox des österreichischen Herstellers go-e (geründet 2015). Derzeit (2024) sind verschiedene Modelle im Angebot:
- go-e Charger Gemini - WallBox mit 11 oder 22 kW Ladeleistung
- go-e Charger Gemini Flex - mobile Version des obigen Gerätes zum Anschluss an eine vorhandene Kraftstromsteckdose
- go-e Charger Gemini 2.0 - Variante des obigen Gerätes mit integrierter SIM-Karte für mobilen Datenzugriff
- go-e Charger Gemini Flex 2.0 - mobile Version des obigen Gerätes zum Anschluss an eine vorhandene Kraftstromsteckdose
Einbindung via HTTPMOD
Die Abfrage und Steuerung erfolgen über das HTTPMOD-Modul, welches im Regelfall einmal pro Minute auf die wichtigsten Daten der Wallbox zugreift (auch manuell abrufbar als "get Wally status").
Basisdefinition
Benötigt wird dazu die IP-Adresse der Wallbox im lokalen Netzwerk, die in den nachfolgenden Code einzusetzen ist. Das Device heißt im Beispiel einfach Wally
Code:
defmod Wally HTTPMOD http://<IP-Adresse der Wallbox>/api/status?filter=acu,alw,car,cus,err,eto,modelStatus,tma,tpa,trx,wh 60 attr Wally cmdIcon on:general_an off:general_aus attr Wally devStateIcon disabled.*:ev_car_charger@darkgrey not_allowed.*:ev_car_charger@white ready_no_car.*:ev_car_charger@blue charging_car.*:ev_car_charger@darkorange wait_for_car.*:ev_car_charger@pink finished.*:ev_car_charger@green error.*:ev_car_charger@red attr Wally enableControlSet 1 attr Wally event-on-change-reading .* attr Wally event-on-update-reading alw,LAST_ERROR attr Wally eventMap /charge_allowed yes:on/charge_allowed no:off/ attr Wally extractAllJSON 0 attr Wally get01Name status attr Wally get01URL http://%goeIP%/api/status?filter=acu,alw,car,cus,err,eto,modelStatus,tma,tpa,trx,wh attr Wally get02Name settings attr Wally get02Poll 1 attr Wally get02PollDelay 3600 attr Wally get02URL http://%goeIP%/api/status?filter=acs,ama,amp,amt,ate,cbl,cco,clp,dwo,fna,fup,lck,lmo,pha,psm,spl3,upo,ust,acu,alw,car,cus,err,eto,modelStatus,tma,tpa,trx,wh attr Wally get03Name energy_details attr Wally get03URL http://%goeIP%/api/status?filter=fhz,nrg,pvopt_averagePGrid,pvopt_averagePPv,pvopt_averagePAkku attr Wally get04Name led_details attr Wally get04URL http://%goeIP%/api/status?filter=lbr,lse,cid,cwc,cch,cfi attr Wally get05Name goe_details attr Wally get05URL http://%goeIP%/api/status?filter=sse,fwv,typ attr Wally group energyControl attr Wally oldreadings energy attr Wally reading01JSON alw attr Wally reading01Name charge_allowed attr Wally reading01OMap 0:no, 1:yes attr Wally reading02JSON trx attr Wally reading02Name transaction attr Wally reading03JSON tpa attr Wally reading03Name power attr Wally reading03OExpr (ReadingsVal("Wally","car",0) =~ /charging/)?sprintf("%.3f",$val/1000):0 attr Wally reading04JSON wh attr Wally reading04Name energy attr Wally reading04OExpr sprintf("%.3f",$val/1000) attr Wally reading05JSON tma_0 attr Wally reading05Name temperature_box attr Wally reading06JSON tma_1 attr Wally reading06Name temperature_cable attr Wally reading07JSON acu attr Wally reading07Name current_allowed attr Wally reading08JSON ama attr Wally reading08Name current_limit attr Wally reading09JSON clp attr Wally reading09Name current_limitPresets attr Wally reading09RecombineExpr join ",", @matchlist attr Wally reading10JSON amp attr Wally reading10Name current_requested attr Wally reading11JSON modelStatus attr Wally reading11Name charge attr Wally reading11OMap 0:NotChargingBecauseNoChargeCtrlData, 1:NotChargingBecauseOvertemperature, 2:NotChargingBecauseAccessControlWait,3:ChargingBecauseForceStateOn, 4:NotChargingBecauseForceStateOff, 5:NotChargingBecauseScheduler, 6:NotChargingBecauseEnergyLimit, 7:ChargingBecauseAwattarPriceLow, 8:ChargingBecauseAutomaticStopTestLadung, 9:ChargingBecauseAutomaticStopNotEnoughTime, 10:ChargingBecauseAutomaticStop, 11:ChargingBecauseAutomaticStopNoClock, 12:ChargingBecausePvSurplus, 13:ChargingBecauseFallbackGoEDefault, 14:ChargingBecauseFallbackGoEScheduler, 15:ChargingBecauseFallbackDefault, 16:NotChargingBecauseFallbackGoEAwattar, 17:NotChargingBecauseFallbackECO, 18:NotChargingBecauseFallbackAutomaticStop, 19:ChargingBecauseCarCompatibilityKeepAlive, 20:ChargingBecauseChargePauseNotAllowed, 21:NotChargingBecauseSimulateUnplugging, 22:NotChargingBecausePhaseSwitch, 23:NotChargingBecausePhaseSwitch, 24:NotChargingBecauseMinPauseDuration attr Wally reading12JSON modelStatus attr Wally reading12Name charge_num attr Wally reading13JSON car attr Wally reading13Name car_num attr Wally reading14JSON car attr Wally reading14Name car attr Wally reading14OMap 0:unknown,1:idle,2:charging,3:wait,4:finished,5:error attr Wally reading15JSON err attr Wally reading15Name error_num attr Wally reading16JSON err attr Wally reading16Name error attr Wally reading16OMap 0:none, 1:FiAc, 2:FiDc, 3:Phase, 4:OverVolt, 5:OverAmp, 6:Diode, 7:PpInvalid, 8:GndInvalid, 9:ContactorStuck, 10:ContactorMiss, 11:FiUnknown, 12:Unknown, 13:OverTemp, 14:NoComm, 15:LockStuckOpen, 16:LockStuckLocked attr Wally reading17JSON sse attr Wally reading17Name goe_serial attr Wally reading18JSON fwv attr Wally reading18Name goe_firmware attr Wally reading19JSON typ attr Wally reading19Name goe_device attr Wally reading20JSON acs attr Wally reading20Name charge_auth attr Wally reading20OMap 0:open,1:authentication attr Wally reading21JSON psm attr Wally reading21Name phase_switchmode attr Wally reading21OMap 0:auto, 1:force_1, 2:force_3 attr Wally reading22JSON spl3 attr Wally reading22Name phase_switchlevel attr Wally reading23JSON pvopt_averagePGrid attr Wally reading23Name power_grid_av attr Wally reading23OExpr (ReadingsVal("Wally","charge_mode",0) eq "eco")?sprintf("%.1f",$val/1000):"-" attr Wally reading24JSON pvopt_averagePPv attr Wally reading24Name power_pv_av attr Wally reading24OExpr (ReadingsVal("Wally","charge_mode",0) eq "eco")?sprintf("%.1f",$val/1000):"-" attr Wally reading25JSON pvopt_averagePAkku attr Wally reading25Name power_battery_av attr Wally reading25OExpr (ReadingsVal("Wally","charge_mode",0) eq "eco")?sprintf("%.1f",$val/1000):"-" attr Wally reading27JSON amt attr Wally reading27Name temperature_limit attr Wally reading28JSON fna attr Wally reading28Name name attr Wally reading29JSON lmo attr Wally reading29Name charge_mode attr Wally reading29OMap 3:default,4:eco,5:nexttrip attr Wally reading30JSON dwo attr Wally reading30Name energy_stop attr Wally reading30OExpr ($val =~ /\d+/)?sprintf("%.1f",$val/1000):"no" attr Wally reading31JSON cco attr Wally reading31Name nexttrip_energy_100km attr Wally reading32Format %2.1f attr Wally reading32JSON ate attr Wally reading32Name nexttrip_energy attr Wally reading32OExpr $val/1000 attr Wally reading33JSON ust attr Wally reading33Name lock_setting attr Wally reading33OMap 0:while_car_present, 1:while_charging, 2:always attr Wally reading34JSON lck attr Wally reading34Name lock_mode attr Wally reading34OMap 0:normal, 1:auto_unlock, 2:always, 3:force_unlock attr Wally reading35JSON upo attr Wally reading35Name lock_powerout attr Wally reading35OMap 1:unlock, 0:no_unlock attr Wally reading36JSON cus attr Wally reading36Name lock attr Wally reading36OMap 0:unknown, 1:unlocked, 2:unlock_failed, 3:locked, 4:lock_failed, 5:unlock_powerout attr Wally reading37JSON cus attr Wally reading37Name lock_num attr Wally reading40JSON nrg attr Wally reading40Name voltage_L1_L2_L3_N attr Wally reading40RecombineExpr sprintf "%.1f - %.1f - %.1f - %.1f",$matchlist[0],$matchlist[1],$matchlist[8],$matchlist[9] attr Wally reading41JSON nrg attr Wally reading41Name current_L1_L2_L3 attr Wally reading41RecombineExpr sprintf "%.1f - %.1f - %.1f ",$matchlist[10],$matchlist[11],$matchlist[12] attr Wally reading42JSON nrg attr Wally reading42Name power_L1_L2_L3_N_t attr Wally reading42RecombineExpr sprintf "%.1f - %.1f - %.1f - %.1f - %.1f",$matchlist[13],$matchlist[14],$matchlist[15],$matchlist[2],$matchlist[3] attr Wally reading43JSON nrg attr Wally reading43Name phaseF_L1_L2_L3_N attr Wally reading43RecombineExpr sprintf "%.1f - %.1f - %.1f - %.1f",$matchlist[4],$matchlist[5],$matchlist[6],$matchlist[7] attr Wally reading44Format %.2f attr Wally reading44JSON fhz attr Wally reading44Name frequency attr Wally reading45Format %.3f attr Wally reading45JSON eto attr Wally reading45Name energy_total attr Wally reading45OExpr $val/1000 attr Wally reading46Name phases attr Wally reading47JSON fup attr Wally reading47Name charge_pvSurplus attr Wally reading47OMap 0:no,1:yes attr Wally reading48JSON frc attr Wally reading48Name forceState attr Wally reading48OMap 0:neutral, 1:off, 2:on attr Wally reading51JSON lbr attr Wally reading51Name led_brightness attr Wally reading52JSON lse attr Wally reading52Name led_ecomode attr Wally reading52OMap 0:no, 1:yes attr Wally reading53JSON cid attr Wally reading53Name led_colorIdle attr Wally reading53OExpr substr $val,1 attr Wally reading54JSON cwc attr Wally reading54Name led_colorWaitcar attr Wally reading54OExpr substr $val,1 attr Wally reading55JSON cch attr Wally reading55Name led_colorCharge attr Wally reading55OExpr substr $val,1 attr Wally reading56JSON cfi attr Wally reading56Name led_colorFinished attr Wally reading56OExpr substr $val,1 attr Wally replacement70Mode text attr Wally replacement70Regex %goeIP% attr Wally replacement70Value <IP-Adresse> attr Wally set01IMap null:no, 0:yes, 1:card_0 attr Wally set01Name charge_allowed attr Wally set01URL http://%goeIP%/api/set?trx=$val attr Wally set02IMap 0:open,1:authentication attr Wally set02Name charge_auth attr Wally set02URL http://%goeIP%/api/set?acs=$val attr Wally set04Hint slider,6,1,16 attr Wally set04Max 16 attr Wally set04Min 6 attr Wally set04Name current_requested attr Wally set04URL http://%goeIP%/api/set?amp=$val attr Wally set05IExpr ($val =~ /\d+/)?$val*1000:"null" attr Wally set05Name energy_stop attr Wally set05URL http://%goeIP%/api/set?dwo=$val attr Wally set06Format %2.1f attr Wally set06IExpr $val*10*ReadingsVal("Wally","nexttrip_energy_100km",0) attr Wally set06Name nexttrip_distance attr Wally set06URL http://%goeIP%/api/set?ate=$val attr Wally set07Name nexttrip_energy_100km attr Wally set07URL http://%goeIP%/api/set?cco=$val attr Wally set08IMap 0:while_car_present, 1:while_charging, 2:always attr Wally set08Name lock_setting attr Wally set08URL http://%goeIP%/api/set?ust=$val attr Wally set09IMap true:unlock, false:no_unlock attr Wally set09Name lock_powerout attr Wally set09URL http://%goeIP%/api/set?upo=$val attr Wally set10IMap 3:default,4:eco,5:nexttrip attr Wally set10Name charge_mode attr Wally set10URL http://%goeIP%/api/set?lmo=$val attr Wally set11IMap 0:auto,1:force_1,2:force_3 attr Wally set11Name phase_switchmode attr Wally set11URL http://%goeIP%/api/set?psm=$val attr Wally set12Name phase_switchlevel attr Wally set12URL http://%goeIP%/api/set?spl3=$val attr Wally set13Name goe_reboot attr Wally set13NoArg 1 attr Wally set13URL http://%goeIP%/api/set?rst="true" attr Wally set20Max 255 attr Wally set20Min 0 attr Wally set20Name led_brightness attr Wally set20URL http://%goeIP%/api/set?lbr=$val attr Wally set21IMap true:yes,false:no attr Wally set21Name led_ecomode attr Wally set21URL http://%goeIP%/api/set?lse=$val attr Wally set22FollowGet led_details attr Wally set22Name led_colorIdle attr Wally set22TextArg 1 attr Wally set22URL http://%goeIP%/api/set?cid="%23$val" attr Wally set23FollowGet led_details attr Wally set23Name led_colorWaitcar attr Wally set23TextArg 1 attr Wally set23URL http://%goeIP%/api/set?cwc="%23$val" attr Wally set24FollowGet led_details attr Wally set24Name led_colorCharge attr Wally set24TextArg 1 attr Wally set24URL http://%goeIP%/api/set?cch="%23$val" attr Wally set25FollowGet led_details attr Wally set25Name led_colorFinished attr Wally set25TextArg 1 attr Wally set25URL http://%goeIP%/api/set?cfi="%23$val" attr Wally set47IMap true:yes, false:no attr Wally set47Name charge_pvSurplus attr Wally set47URL http://%goeIP%/api/set?fup=$val attr Wally set48IMap 0:neutral, 1:off, 2:on attr Wally set48Name forceState attr Wally set48URL http://%goeIP%/api/set?frc=$val attr Wally set70Name a_setAutoPvCharging attr Wally set70NoArg 1 attr Wally set70URL http://%goeIP%/api/set?psm=0&=16&lmo=4&fup=true attr Wally set71Name a_setManualMaxCharging attr Wally set71NoArg 1 attr Wally set71URL http://%goeIP%/api/set?psm=2&=16&lmo=3&fup=false attr Wally set72Name a_setManualMinCharging attr Wally set72NoArg 1 attr Wally set72URL http://%goeIP%/api/set?psm=1&=6&lmo=3&fup=false attr Wally set73Name a_setForceOffSetMin attr Wally set73NoArg 1 attr Wally set73URL http://%goeIP%/api/set?psm=1&=6&lmo=3&fup=false&frc=1&alw=false attr Wally setFollowGet settings attr Wally showError 1 attr Wally sortby 3 attr Wally stateFormat { my $c=ReadingsVal("Wally","car_num",5);;\ my $ca=ReadingsVal("Wally","charge_allowed","no");;\ my $ch=ReadingsVal("Wally","charge_num",0);;\ my $p=ReadingsVal("Wally","power",0);;\ my $l=ReadingsVal("Wally","energy",0);;\ my $e=(ReadingsVal("Wally","connection","") ne "ok");;\ my $ret;;\ if($ca eq "no"){\ $ret="<p align=\"left\">\nnot_allowed\n<br/>not authenticated\n</p>";;\ }elsif($c==1){\ $ret=sprintf("<p align=\"left\">\nwaiting_car\n<br/>waiting for car (idle)\n<p/>");;\ }elsif($c==2){\ $ret=sprintf("<p align=\"left\">\ncharging_car\n<br/>charging %.1f kW\n<p/>",$p);;\ }elsif($ch==12){\ $ret=sprintf("<p align=\"left\">\ncharging paused\n<br/>charging PvSurplus %.1f kW\n</p>",$p);;\ }elsif($ch==17){\ $ret=sprintf("<p align=\"left\">\ncharging pausedrn<br/>charging PvSurplus paused\n</p>");;\ }elsif($c==3){\ $ret=sprintf("<p align=\"left\">\nwaiting_car\n<br/>waiting for car\n<p/>");;\ }elsif($c==4){\ $ret=sprintf("<p align=\"left\">\nfinished_car\n<br/>finished %.2f\n<p/>",$l);;\ }else{\ $ret="unknown";;\ }\ $ret} attr Wally useSetExtensions 0 attr Wally userReadings nexttrip_distance:nexttrip_energy.* {sprintf("%.1f",ReadingsVal("$NAME","nexttrip_energy",0)/ReadingsVal("$NAME","nexttrip_energy_100km",1)*100)},\ energy_today:energy_total.* {sprintf("%.3f",ReadingsVal($NAME,"energy_total",0)-ReadingsVal("$NAME","energy_yesterday",0))},\ energy_yesterday:none {} attr Wally webCmd on:off attr Wally widgetOverride led_brightness:slider,0,1,255 led_colorIdle:colorpicker,RGB led_colorWaitcar:colorpicker,RGB led_colorCharge:colorpicker,RGB led_colorFinished:colorpicker,RGB
Status als Nachricht
Für den Fall, dass man zwischendurch den Status der Wallbox abfragen möchte (z.B. via Modul Babble), empfiehlt es sich, ein ständig aktuelles Reading message bereitzuhalten.
Code:
attr Wally babbleName wallbox attr Wally userReadings <hier andere userReadings>, message:((car)|(charge)|(energy_total)).* {\ my $ca=ReadingsVal("$NAME","car_num",0);;\ my $ch=ReadingsVal("$NAME","charge_num",0);;\ my $ret;;\ if($ca==1){\ $ret="An der Wallbox ist kein Fahrzeug angeschlossen";;\ }elsif($ca=~/2|3/){\ $ret="An der Wallbox ist der <Fahrzeugtyp> angeschlossen";;\ if($ch=~/^([0-6]$)|(1[6,8])|(2[1-4])/){\ my $nc=ReadingsVal("$NAME","charge",0);;\ $ret.=", wird aber im Moment nicht geladen, der Grund dafür hat die Bezeichnung $nc";;\ }elsif( $ch==12 ){\ my $po=ReadingsVal("$NAME","power",0);;\ my $en=ReadingsVal("$NAME","energy",0);;\ $ret.=", wird mit solarem Überschuss von $po Kilowatt geladen und hat bereits $en Kilowattstunden erhalten.";;\ }elsif( $ch==17 ){\ my $en=ReadingsVal("$NAME","energy",0);;\ $ret.=", die Ladung mit solarem Überschuss pausiert gerade. Der <Fahrzeugtyp> hat bereits $en Kilowattstunden erhalten.";;\ }else{\ my $po=ReadingsVal("$NAME","power",0);;\ my $en=ReadingsVal("$NAME","energy",0);;\ $ret.=", wird mit $po Kilowatt geladen und hat bereits $en Kilowattstunden erhalten.";;\ my $du=ReadingsVal(<Device für das Fahrzeug>,"charge_timeremain",0);;\ $ret.="Restladezeit etwa $du Minuten";;\ }\ }elsif($ca==4){\ my $en=ReadingsVal("$NAME","energy",0);;\ $ret="An der Wallbox ist der <Fahrzeugtyp> angeschlossen und wurde mit $en Kilowattstunden fertig geladen.";;\ }else{\ $ret="Die Wallbox befindet sich im Fehlerzustand, bitte überprüfen";;\ }\ return $ret},\ connection:LAST_ERROR.* {my $e=ReadingsVal("$NAME","LAST_ERROR","");;\ if($e=~/timed out/){\ return "timed_out"\ }else{\ return "ok"\ }\ }