Da fragt sich der geneigte Leser, warum Du das nicht schon vorher per PR angeboten hast.
go-e API: neuer Befehl zur Stromvorgabe
Re: go-e API: neuer Befehl zur Stromvorgabe
Das ist ziemlich einfach: Ich bin zu neu hier... War bislang nur im goingelectric-Forum unterwegs, dort hatte ich das auch gepostet. Da gibts einen sehr umfangreichen thread zur go-e. Und einen Verbesserungsvorschlag bei openWB habe ich auch gemacht... Besser spät als nie ...
PV-Anlage 5,12 kWp Ost und 4,8 kWp West mit SMA Tripower 8.0 -- Speicher BYD Battery Box Premium HVS 5.1 mit SMA SBS 3.7 -- SMA Home Manager 2.0 -- go-eCharger 22 kW Gemini und 11 kW V3 -- Ioniq Electric Premium (vFL, 2018)
Re: go-e API: neuer Befehl zur Stromvorgabe
Hallo zusammen,
ich habe kürzlich eine go-e V3 auf die FW 054.11 hochgezogen. Dies hatte zur Folge, dass in den beiden Routinen, die den go-e Ladestrom regeln
/var/www/html/openWB/goecheck.sh
/var/www/html/openWB/runs/set-current.sh
die FW-Erkennung und daher auch die anschließende Verzweigung nicht mehr funktioniert.
Es tauchen Fehler im openWB.log auf:
"... Syntaxfehler im Ausdruck. (Fehlerverursachendes Zeichen ist \"11 >= 40\")"
Das liegt daran, dass die Variable "fwv" nicht den String "54" enthält, sondern "54 11", mit dem die Vergleichsoperation für die if-Verzweigung dann nicht mehr funktioniert.
Dies hat zur Folge, dass dann nicht mehr der EEPROM-schonende "amx="-Befehl ausgeführt wird, sondern wieder der "alte" "amp="-Befehl, der die Anzahl der flash-Schreibzyklen in der go-e erhöht und damit dessen Lebensdauer verkürzt.
Lösungen:
1) Nur noch go-e FW mit einstelligen Subversionen installieren. (Ziemlich doof, funktioniert aber... Bei der "055.0" tritt der Fehler nicht mehr auf)
2) Die Verzweigung in den Scripten reparieren. Wenn man sich darauf verlassen kann, dass das fwv-Attribut im go-e-Status keine alphanumerischen Zeichen, sondern ausschließlich Ziffern enthält, funktioniert auch
fwv=$(echo $output | jq -r '.fwv' | awk -F '.' '{print $1}')
Das war aber bei beta-Versionen früher nicht so,daher finde ich diese Lösung nicht super... Ich kann es nicht testen, aber bei einigen V2-Boxen wird das ggf. nicht funktionieren.
3) Einfach mal alte Zöpfe abschneiden. Alle go-e ab V2 FW=40 können den amx-Befehl verarbeiten. Es ist meiner Meinung nach zumutbar, dass go-e V2 Besitzer nach so langer Zeit die FW ihrer Box hochziehen. Ein Hinweis darauf, dass dies sinnvoll ist, befindet sich ja auch seit einiger Zeit in der Modulkonfig von openWB:
"Seit Firmware Version 0.40 wird PV-Laden besser unterstützt. Bitte halten Sie die go-e Firmware auf einem aktuellen Stand."
Daher mein Vorschlag: Den Hinweis ändern auf:
"Es werden nur noch go-eCharger mit Firmware ab Version 0.40 unterstützt. Bei go-e V3 und höher aktivieren Sie bitte in der go-e-Box die "API v 1".
(Letzteres muss man ja eh schon...)
Die scripte dann nur noch in der "amx=" Version deployen. Ich habe die anepassten Scripte im tgz-Archiv unten angehängt. Bei mir funktionieren sie problemlos.
Leider habe ich null Erfahrung in kollektiven Software-Pflege und -Entwicklungsprozessen. Mit meinem rudimentären shell-script Wissen aus Unix-Admin-Erfahrungen von vor 25 Jahren kriege ich gerade noch hin, die kritsichen code-Passagen zu identifizieren. Bzgl. der deployment-Prozesse in openWB habe ich keinerlei Ahnung und möchte mich da auch nicht mehr reinhängen.
Da ich meine Beobachtung aber wichtig finde, teile ich sie hier mit und bitte einen erfahrenen Co-Entwickler ( -in) sich dessen ggf. anzunehmen.
Viele Grüße
Andreas
ich habe kürzlich eine go-e V3 auf die FW 054.11 hochgezogen. Dies hatte zur Folge, dass in den beiden Routinen, die den go-e Ladestrom regeln
/var/www/html/openWB/goecheck.sh
/var/www/html/openWB/runs/set-current.sh
die FW-Erkennung und daher auch die anschließende Verzweigung nicht mehr funktioniert.
Es tauchen Fehler im openWB.log auf:
"... Syntaxfehler im Ausdruck. (Fehlerverursachendes Zeichen ist \"11 >= 40\")"
Das liegt daran, dass die Variable "fwv" nicht den String "54" enthält, sondern "54 11", mit dem die Vergleichsoperation für die if-Verzweigung dann nicht mehr funktioniert.
Dies hat zur Folge, dass dann nicht mehr der EEPROM-schonende "amx="-Befehl ausgeführt wird, sondern wieder der "alte" "amp="-Befehl, der die Anzahl der flash-Schreibzyklen in der go-e erhöht und damit dessen Lebensdauer verkürzt.
Lösungen:
1) Nur noch go-e FW mit einstelligen Subversionen installieren. (Ziemlich doof, funktioniert aber... Bei der "055.0" tritt der Fehler nicht mehr auf)
2) Die Verzweigung in den Scripten reparieren. Wenn man sich darauf verlassen kann, dass das fwv-Attribut im go-e-Status keine alphanumerischen Zeichen, sondern ausschließlich Ziffern enthält, funktioniert auch
fwv=$(echo $output | jq -r '.fwv' | awk -F '.' '{print $1}')
Das war aber bei beta-Versionen früher nicht so,daher finde ich diese Lösung nicht super... Ich kann es nicht testen, aber bei einigen V2-Boxen wird das ggf. nicht funktionieren.
3) Einfach mal alte Zöpfe abschneiden. Alle go-e ab V2 FW=40 können den amx-Befehl verarbeiten. Es ist meiner Meinung nach zumutbar, dass go-e V2 Besitzer nach so langer Zeit die FW ihrer Box hochziehen. Ein Hinweis darauf, dass dies sinnvoll ist, befindet sich ja auch seit einiger Zeit in der Modulkonfig von openWB:
"Seit Firmware Version 0.40 wird PV-Laden besser unterstützt. Bitte halten Sie die go-e Firmware auf einem aktuellen Stand."
Daher mein Vorschlag: Den Hinweis ändern auf:
"Es werden nur noch go-eCharger mit Firmware ab Version 0.40 unterstützt. Bei go-e V3 und höher aktivieren Sie bitte in der go-e-Box die "API v 1".
(Letzteres muss man ja eh schon...)
Die scripte dann nur noch in der "amx=" Version deployen. Ich habe die anepassten Scripte im tgz-Archiv unten angehängt. Bei mir funktionieren sie problemlos.
Leider habe ich null Erfahrung in kollektiven Software-Pflege und -Entwicklungsprozessen. Mit meinem rudimentären shell-script Wissen aus Unix-Admin-Erfahrungen von vor 25 Jahren kriege ich gerade noch hin, die kritsichen code-Passagen zu identifizieren. Bzgl. der deployment-Prozesse in openWB habe ich keinerlei Ahnung und möchte mich da auch nicht mehr reinhängen.
Da ich meine Beobachtung aber wichtig finde, teile ich sie hier mit und bitte einen erfahrenen Co-Entwickler ( -in) sich dessen ggf. anzunehmen.
Viele Grüße
Andreas
- Dateianhänge
-
- go-e-scripts.tar.gz
- go-e Scripte, die nur noch den amx-Befehl nutzen
- (4.34 KiB) 94-mal heruntergeladen
PV-Anlage 5,12 kWp Ost und 4,8 kWp West mit SMA Tripower 8.0 -- Speicher BYD Battery Box Premium HVS 5.1 mit SMA SBS 3.7 -- SMA Home Manager 2.0 -- go-eCharger 22 kW Gemini und 11 kW V3 -- Ioniq Electric Premium (vFL, 2018)
-
- Beiträge: 155
- Registriert: So Jan 17, 2021 8:35 am
- Wohnort: Bielefeld
Re: go-e API: neuer Befehl zur Stromvorgabe
Ich bin für alte Zöpfe abschneiden - und wer vielleicht nicht updated hat eh ne alte OpenWB Version
-
- Beiträge: 34
- Registriert: Mi Feb 24, 2021 10:54 am
Re: go-e API: neuer Befehl zur Stromvorgabe
Kann ich dann meine Go-e Hardware Version V1 trotzdem mit der openWB weiter nutzen? Sonst wäre das ein Rückschritt für mich.
-
- Beiträge: 34
- Registriert: Mi Feb 24, 2021 10:54 am
Re: go-e API: neuer Befehl zur Stromvorgabe
Gute Frage mit der V1 mit welcher Firmware läuft diese?
Die Änderung habe ich jetz dennoch mal eingereicht
https://github.com/snaptec/openWB/pull/2579
Die Änderung habe ich jetz dennoch mal eingereicht
https://github.com/snaptec/openWB/pull/2579
Re: go-e API: neuer Befehl zur Stromvorgabe
ziehe meine Frage zurück, habe die hardware revision V2 und FW 41. Somit sollte kein Problem sein.
-
- Beiträge: 34
- Registriert: Mi Feb 24, 2021 10:54 am
Re: go-e API: neuer Befehl zur Stromvorgabe
was wi natürlich auch machen könnten ist die Bedingung abzuändern dass im zweifel amx zieht
quasi
if (($fwv < 40)) ; then
curl --silent --connect-timeout $goetimeoutlp2 -s http://$goeiplp2/mqtt?payload=amp=$current > /dev/null
else
curl --silent --connect-timeout $goetimeoutlp2 -s http://$goeiplp2/mqtt?payload=amx=$current > /dev/null
fi
@sagibo
Könntest du das mal ausprobieren?
quasi
if (($fwv < 40)) ; then
curl --silent --connect-timeout $goetimeoutlp2 -s http://$goeiplp2/mqtt?payload=amp=$current > /dev/null
else
curl --silent --connect-timeout $goetimeoutlp2 -s http://$goeiplp2/mqtt?payload=amx=$current > /dev/null
fi
@sagibo
Könntest du das mal ausprobieren?
-
- Beiträge: 3781
- Registriert: Di Feb 25, 2020 9:23 am
- Has thanked: 4 times
- Been thanked: 25 times
Re: go-e API: neuer Befehl zur Stromvorgabe
Bitte mal testen:
Wenn damit alle Fälle abgedeckt sind, kann gerne ein neuer PR erstellt werden.
Code: Alles auswählen
#!/bin/bash
minVersion=40
checkVersion() {
version=$(echo "$1" | jq -r '.fwv')
majorVersion=${version%.*} # remove everything after a "."
majorVersion=${majorVersion%-*} # remove everything after a "-"
majorVersion=${majorVersion#0} # remove leading "0"
if ((majorVersion >= minVersion)); then
echo "AMX ($version >= $2)"
else
echo "AMP ($version < $2)"
fi
}
JSON=(\
'{"fwv":"054.11"}' \
'{"fwv":"051"}' \
'{"fwv":"040.23-beta9"}' \
'{"fwv":"039-beta43"}' \
'{"fwv":"039.4-beta56"}' \
'{"fwv":"100.4-beta99"}'\
)
for j in "${JSON[@]}"; do
checkVersion "$j" "$minVersion"
done