HomeMatic liest und ändert Daten der Wallbox SMA EV Charger 22

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

EV-Driver-80
Beiträge: 2
Registriert: 25.03.2023, 11:53
System: sonstige
Hat sich bedankt: 2 Mal

Re: HomeMatic liest und ändert Daten der Wallbox SMA EV Charger 22

Beitrag von EV-Driver-80 » 25.03.2023, 20:44

DidiTheE hat geschrieben:
25.03.2023, 19:45
EV-Driver-80 hat geschrieben:
25.03.2023, 12:02
Du könntest mir (und ein paar andern Home Assist Usern) ein großen Gefallen tun und den abgesetzten CURL Befehl hier posten. Z.B. wie der aussieht wenn man um Punkt 13 Uhr dem EV Charger sagen will lade mir nun mal 10 kWh ins Auto.
Spontan dachte ich ich sage dem das er in einer Minute 10kWh laden soll, klappte aber nicht bei mir. ich vermute das irgendwas mit der Längenangabe oder dem Zeitstempel nicht passt, daher wäre ein reales Beispiel sehr hilfreich wie der abgesetzte CURL Befehl nun aussieht.
Um den Ladevorgang sofort zu starten, setze ich aktuell als Energiemenge 10kWh und Dauer 1 Std ein. Wenn du eine Minute als Ladedauer angibst, wird das vermutlich von der Wallbox als ungültig verworfen.

Hier Mal die Ausgabe des Programms (Startzeit 19:42 Winterzeit)

Code: Alles auswählen

------------------------------------------------------
Access Token=  -H 'Authorization: Bearer 'eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2Nzk3Njk3MjEsInN1YiI6IkQuRWJuZXIiLCJ1aWQiOiJhYmFiYzkxYi1lYTIxLTQ2YzEtOTEzOS0wNjY3NjMyNzY5MzciLCJleHAiOjE2Nzk3NzMzMjF9.U_AJ2iNWPGz7IxGEMY6J0R3HeuT0hVv6yGQ7XgB9wAk

------------------------------------------------------
- 1. Parameter an Wallbox senden -
Timestamp: 2023-03-25T18:42:12.000Z
-Energiemenge = 10 kWh
Dauer: 60   -Zielzeit     = 1679773332 >> 25.03.2023 20:42
Data = {"values":[{"channelId":"Parameter.Chrg.Plan.DurTmm","timestamp":"2023-03-25T18:42:12.000Z","value":60},{"channelId":"Parameter.Chrg.Plan.En","timestamp":"2023-03-25T18:42:12.000Z","value":10}]}  Länge = 194

sCurl = curl -s -k -X 'PUT' http://192.168.123.41/api/v1/parameters/IGULD:SELF -H 'Content-Type: application/json' -H 'Referer: http://192.168.123.41/webui/Plant:1,IGULD:SELF/configuration/view-parameters' -H 'Content-Length: 194' -d '{"values":[{"channelId":"Parameter.Chrg.Plan.DurTmm","timestamp":"2023-03-25T18:42:12.000Z","value":60},{"channelId":"Parameter.Chrg.Plan.En","timestamp":"2023-03-25T18:42:12.000Z","value":10}]}'  -H 'Authorization: Bearer 'eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2Nzk3Njk3MjEsInN1YiI6IkQuRWJuZXIiLCJ1aWQiOiJhYmFiYzkxYi1lYTIxLTQ2YzEtOTEzOS0wNjY3NjMyNzY5MzciLCJleHAiOjE2Nzk3NzMzMjF9.U_AJ2iNWPGz7IxGEMY6J0R3HeuT0hVv6yGQ7XgB9wAk

Out = 
Err = 
<p style="text-align: center; font-size: 0.7em; background-color: orange; color: black;">19:42: Sofortiges Laden aktiviert</p>
- fertig -
Hoffe, das hilft weiter.

Grüße, Dietmar
Vielen vielen Dank, hat auf Anhieb bei mir im Home Assistant nun funktioniert :-)

dldavid
Beiträge: 96
Registriert: 01.10.2018, 12:39
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: HomeMatic liest und ändert Daten der Wallbox SMA EV Charger 22

Beitrag von dldavid » 03.10.2023, 11:18

Hallo zusammen ich habe mit das Skript etwas umgebaut um die Werte der "Parameter.Inverter.WMax" anzupassen
ich habe eine BHKW und will ab und zu mit weniger Leistung laden als mit 11 KW der minimalste WERT ist 4500 WATT

Code: Alles auswählen

string IP      = dom.GetObject("SMA EV Access IP").Value();

string lGetOut = "";
string lGetErr = "";
string sCurl   = "";
var    s       = "";
var    i       = 0;

! Access Token aus Systemvariable übernehmen
WriteLine("------------------------------------------------------");
string sToken  = dom.GetObject("SMA EV Token").Value();
WriteLine("Access Token= " # sToken)
WriteLine("------------------------------------------------------");

WriteLine("- 1. Parameter an Wallbox senden -");
var    WMaxIn     = 4500;    ! WATT
var    WMax = 4500;    ! WATT
var WATT = "4500";  ! WATT

! var    iPlanEn     = 0;    ! kWh
! var    iPlanDurTmm = 0;    ! Min
! var    iPlanStopTm = 0;    ! Zeit

! Aktueller Zeitstempel in GMT
var GMT=((currenttime.Format("%z").ToInteger())/-100)*60*60; ! Korrekturwert in Sekunden für Umrechnung in GMT
var sTimestamp = (currenttime+GMT).Format("%Y-%m-%dT%H:%M:%S.000Z"); ! Formatierte Ausgabe
WriteLine("Timestamp: "#sTimestamp);

!JSON Datenstring-Template mit Platzhalter xxx=Ladedauer; yyy=Energiemenge; ttt=Zeitstempel
string sData  = "{\"values\":[";
sData = sData # "{\"channelId\":\"Parameter.Inverter.WMaxIn\",\"timestamp\":\"ttt\",\"value\":xxx},";
sData = sData # "{\"channelId\":\"Parameter.Inverter.WMax\",\"timestamp\":\"ttt\",\"value\":yyy}";
sData = sData # "]}";

WMaxIn = dom.GetObject("SMA EV WATT").Value();  ! Index aus Werteliste Energiemenge
! WriteLine("-Energiemenge WATT = " # WMaxIn # " Watt");

! WerteListe auswerten 
if (WMaxIn == '1')
{var WATT = "4500";};

if (WMaxIn == '2')
{var WATT = "5000";};

if (WMaxIn == '3')
{var WATT = "5500";};

if (WMaxIn == '4')
{var WATT = "6000";};

if (WMaxIn == '5')
{var WATT = "6500";};

if (WMaxIn == '6')
{var WATT = "7000";};

if (WMaxIn == '7')
{var WATT = "11000";};

WriteLine("-Energiemenge WATT = " # WATT # " Watt");

! Platzhalter durch Daten ersetzen
sData = sData.Replace("xxx",WATT.ToString(0));
sData = sData.Replace("yyy",WATT.ToString(0));
sData = sData.Replace("ttt",sTimestamp);

! Länge des Datenpakets bestimmen
var iDataLen = sData.Length();
WriteLine("Data = " # sData # "  Länge = " # iDataLen);

! Vollständigen String für curl Aufruf zusammenstellen
sCurl = "curl -s -k -X 'PUT' "#IP#"/api/v1/parameters/IGULD:SELF ";
sCurl = sCurl # "-H 'Content-Type: application/json' ";
sCurl = sCurl # "-H 'Referer: "#IP#"/webui/Plant:1,IGULD:SELF/configuration/view-parameters' ";
sCurl = sCurl # "-H 'Content-Length: " # iDataLen.ToInteger() # "' ";
sCurl = sCurl # "-d '" # sData # "' " # sToken;

WriteLine ("sCurl = " # sCurl);

system.Exec( sCurl, &lGetOut,&lGetErr);
WriteLine("Out = " # lGetOut); WriteLine("Err = " # lGetErr);

if (lGetErr <> "")
{
  s = "Fehler Watt konte nicht gesetzt werden "; WriteLine(s);
  dom.GetObject("SMA EV Meldung").State(s);
}
else
{
  s = "Watt erfolgreich gesetzt"; WriteLine(s);
  dom.GetObject("SMA EV Meldung").State(s);
}

WriteLine("- fertig -");


Antworten

Zurück zu „Projektvorstellungen“