FHEM Forum

FHEM - Energiemanagement und Energieerzeugung => Solaranlagen => Thema gestartet von: roli am 13 Dezember 2022, 20:20:40

Titel: Sonnenbatterie Enladung stoppen mit API V2
Beitrag von: roli am 13 Dezember 2022, 20:20:40
HAllo.
Ich muss nachts die Enladung der BAtterie stoppen, was mit der API V1 ganz gut funktioniert hat.

Jetzt versuche ich auf V2 umzustellen und es scheint nicht mehr zu funktionieren.

HAtte bisher  immer  über  apii/v2/status  den  EM_OperatingMode  abgefragt.
Zu Abschalten hate ich diesen per CURL Befehl  dann   umgestellt auf MAnuell  und zusätzlich  LAden und Entladen auf 0 Watt gesetzt

Am morgen dann alles wieder auf Consumption Mode.

if ($schalter == 0)
    {
  # auf  Self Cons.Mode schalten
  $SB_Mode = 0; 
  $content = `curl -X PUT -d EM_OperatingMode=2 --header 'Auth-Token: xxx' http://sb-yyy:80/api/v2/configurations`; 
          #rw_TraceState('Batterie', 'AUTOMATIK');  
        }
    else
    {
  $SB_Mode = 1;
  # auf  Manuellen Mode schalten
  $content = `curl -X PUT -d EM_OperatingMode=1 --header 'Auth-Token: xxx' http://sb-yyy:80/api/v2/configurations`; 
 
  #setze Werte für LAden/entladen auf 0
  $content = `curl --header 'Auth-Token: xxx' http://sb-yyy:80/api/v2/setpoint/charge/0`;
  $content = `curl --header 'Auth-Token: xxx' http://sb-yyy:80/api/v2/setpoint/discharge/0`;
          #rw_TraceState('Batterie', 'MANUELL');  
        }



KAnn jemand aus Erfahrung sagen wieso dass der Em_OperatingMode immer nach einigen Sekunden zurück auf  Automatik geht ?


Titel: Antw:Sonnenbatterie Enladung stoppen mit API V2
Beitrag von: ch.eick am 14 Dezember 2022, 10:57:27
Hier schon mal einige Quellen

Sonnen API V2 (https://sonnen.de/rln-sb/)
openWB Forum zur Sonnen API V2 (https://openwb.de/forum/viewtopic.php?p=73113)

VG Christian
Titel: Antw:Sonnenbatterie Enladung stoppen mit API V2
Beitrag von: stonehope am 15 Dezember 2022, 00:00:56
Hallo Roli,

bei mir haben die Befehle der API v2 bis jetzt immer zuverlässig funktioniert.
Nimmst du an der sonnenFlat / VPP mit deiner Batterie teil?
In der Doku zur API (http://IP_der_sonnenBatterie/api/doc.html#/api/postApiV2SetpointChargeWatt) wird darauf verwiesen, dass wenn das VPP aktiv ist die Anfragen abgelehnt werden.

Von der Syntax her ist mir auf den ersten Blick nichts aufgefallen.
Du kannst aber ausschließen, dass der Wert für "$schalter" zwischendurch gleich 0 wird?

Alternativ - kannst du auch, wenn auch etwas weniger "smart", in den Einstellungen der Batterie unter "Betriebsmodus" die Betriebsart "Time-of-Use" auswählen und dort einen Zeitplan hinterlegen.
So kann man manuell das Lade- und Entladeverhalten beeinflussen und ggfs. von variable Stromtarife nutzen.


VG,
Patrik
Titel: Antw:Sonnenbatterie Enladung stoppen mit API V2
Beitrag von: roli am 16 Dezember 2022, 09:14:26
PAtrik,
danke für die Antwort. Und NEIN ich nehme nicht am VPP teil. Die Einschränkung gibt es ja auch bei einigen anderen APIs auch- und die
funktionieren.

Rufe ich es so auf :  curl --header 'Auth-Token: xxx' http://sb-yyy:80/api/v2/setpoint/discharge/0`

bekomme ich : {"error":"404 Not Found"}    zurück.

rufe ich es so auf :  curl  -X POST --header 'Auth-Token: xxx' http://sb-yyy:80/api/v2/setpoint/discharge/0`

bekomme ich :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
  <HEAD><TITLE>Length Required</TITLE></HEAD>
  <BODY>
    <H1>Length Required</H1>
    WEBrick::HTTPStatus::LengthRequired
    <HR>
    <ADDRESS>
     WEBrick/1.4.2 (Ruby/2.6.2/2019-03-13) at
     sb-56902:80
    </ADDRESS>
  </BODY>
</HTML>

zurück. 

Es ist wohl ein POST laut doku, aber wie mache ich dies korrekt ?

Und ja ich habe als workaround erstmal  Time-To-USe  gesetzt. 
Aber so wie ich sehe ist auch das  Dashboard UI irgendwie nicht sinnvoll, wenn ich die Batterie auf
MANUELL  setzten kann, kann aber von dort aus gar keine Lade/Entladewerte setzten  --

Schade, dass die Doku hier nicht gut ist.  Man muss alles irgendwie selbst herausfinden. 
Mal sehen ob mir Sonnen Service überhaupt eine Antwort schreibt.


Titel: Antw:Sonnenbatterie Enladung stoppen mit API V2
Beitrag von: ch.eick am 16 Dezember 2022, 09:22:16
Hallo zusammen,
ich hatte es schon mal erwähnt, dass Ihr dafür auch das HTTPMOD Modul verwenden könntet. Dort werden z.B. auch die Längen der Post oder Put Nachrichten automatisch berechnet und eingetragen.
Man kann auch HTTP Aufrufe miteinander verknüpfen und somit einen Post direkt im nächsten Aufruf mit einem Ergebnis abfragen.

my5cent
   Christian
Titel: Antw:Sonnenbatterie Enladung stoppen mit API V2
Beitrag von: roli am 16 Dezember 2022, 12:19:22
Klingt erst mal gut. 
Aber hättest du mir ein Beispiel wie hier konkret  die HTTPMOD  definition auszusehen hat für den Post.
Titel: Antw:Sonnenbatterie Enladung stoppen mit API V2
Beitrag von: ch.eick am 16 Dezember 2022, 13:21:57
Zitat von: roli am 16 Dezember 2022, 12:19:22
Klingt erst mal gut. 
Aber hättest du mir ein Beispiel wie hier konkret  die HTTPMOD  definition auszusehen hat für den Post.
Dazu müsstest Du die Anmeldung und eventuelle weitere Schritte, die Ihr mit curl durchführt auch umsetzen.
Das kann alles in einem HTTPMOD Device erfolgen.

Hier mal aus dem Zusammenhang gerissen ein POST
Das Auth-Token würde dann im HTTPMOD dynamisch bei der Anmeldung ermittelt werden und ähnlich wie hier im header ersetzt werden.
Im HTTPMOD könnte man dann jede einzelne Abfrage über einen Namen beim set separat abfragen.
Komplexere Abfragen mit mehreren Teilergebnissen könnte man durch ein DOIF oder mit einem Scheduling zyklisch aufrufen.

attr WR_1_API set06Header01 authorization: Session %auth_sessionId%
attr WR_1_API set06Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set06Method POST
attr WR_1_API set06Name 06_auth_logout
attr WR_1_API set06NoArg 1
attr WR_1_API set06URL http://%IP-WR%/api/v1/auth/logout