Sonnenbatterie Enladung stoppen mit API V2

Begonnen von roli, 13 Dezember 2022, 20:20:40

Vorheriges Thema - Nächstes Thema

roli

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 ?


FHEM auf Debian (RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

ch.eick

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

stonehope

#2
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

roli

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.


FHEM auf Debian (RASPI), 2 * CUL868/433 *&nbsp; FS20 STR, 2 * HMS100 T, 2 *&nbsp;, 1* FS20 SU, 2 *&nbsp; FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro&nbsp; Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

ch.eick

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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

roli

Klingt erst mal gut. 
Aber hättest du mir ein Beispiel wie hier konkret  die HTTPMOD  definition auszusehen hat für den Post.
FHEM auf Debian (RASPI), 2 * CUL868/433 *&nbsp; FS20 STR, 2 * HMS100 T, 2 *&nbsp;, 1* FS20 SU, 2 *&nbsp; FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro&nbsp; Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

ch.eick

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
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick