Ich könnte doch dann auch in der Nacht, wenn ich sogar einen Minusbetrag auf den Stromtarif bekomme, und der Wetterbericht für den nächsten Tag schlecht aussieht, meinen Batteriespeicher mit dem günstigeren Nachtstrom füllen, oder?

{#}
###[DEF]### [name = aWattar hourly (0.1) ] [e#1 TRIGGER = Trigger ] [e#2 OPTION = Token ] [e#3 OPTION = Startzeit ] [e#4 OPTION = Endzeit ] [e#5 OPTION = API ] [e#6 OPTION = LogLevel #init=0 ] [a#1 = preisObjekt ] [a#2 = marktpreis1 ] [a#3 = marktpreis2 ] [a#4 = marktpreis3 ] [a#5 = marktpreis4 ] [a#6 = marktpreis5 ] [a#7 = marktpreis6 ] [a#8 = marktpreis7 ] [a#9 = marktpreis8 ] [a#10 = marktpreis9 ] [a#11 = marktpreis10 ] [a#12 = marktpreis11 ] [a#13 = marktpreis12 ] [a#14 = marktpreis13 ] [a#15 = marktpreis14 ] [a#16 = marktpreis15 ] [a#17 = marktpreis16 ] [a#18 = marktpreis17 ] [a#19 = marktpreis18 ] [a#20 = marktpreis19 ] [a#21 = marktpreis20 ] [a#22 = marktpreis21 ] [a#23 = marktpreis22 ] [a#24 = marktpreis23 ] [a#25 = marktpreis24 ] [a#26 = marktpreis25 ] [a#27 = marktpreis26 ] [a#28 = marktpreis27 ] [a#29 = marktpreis28 ] [a#30 = marktpreis29 ] [a#31 = marktpreis30 ] [a#32 = marktpreis31 ] [a#33 = marktpreis32 ] [a#34 = marktpreis33 ] [a#35 = marktpreis34 ] ###[/DEF]### ###[HELP]### Der Baustein fragt die stündlichen Strompreise bei aWattar ab. Dazu wird ein Token benötigt, den man bei Anmeldung des Tarifes bekommt. Optional kann man die Start- und Endzeit angeben um die Daten für einen bestimmten Zeitraum abzufragen. Die Zeiten müssen ein UNIX-Timestamp in Mikrosekunden sein. Werden keine Zeiten angegeben wird die Endzeit auf in 36h gesetzt. Die API von aWattar liefert pro Stunde einen Preis in €/MWh zurück, dieser wird vom LBS in cent/kWh umgerechnet. Es gibt insgesamt max 35 Ausgänge (d.h. man erhält max. die ersten 34 Werte der Abfrage). Die aWattar-API liefert täglich um 14:00 Uhr die neuen Strompreise des nächsten Tages (Tag 1 14:00 -> Tag 2 24:00 = 34h -> daher die 34 Ausgänge). Will man zb. alle Werte vom Oktober 2019 abfragen, so muss der LBS dementsprechend oft mit geänderten Start- und Endzeit abgerufen werden. <hr /> E1: Trigger E2: Token von aWattar E3: Abfragezeitraum von (TS in Mikrosekunden) -> optional E4: Abfragezeitraum bis (TS in Mikrosekunden) -> optional E5: API-URL E6: Debuglevel A1-A34: Marktpreise in cent/kWh <hr /> <b><u>Changelog:</u></b> 0.1:<ul> <li>initiale Version</li> </ul> <hr/> Wer sich irgendwie erkenntlich zeigen möchte, kann das bei der Anmeldung bei aWattar machen indem er folgenden Code angibt: 3FZDSALNV <hr/> ###[/HELP]### ###[LBS]### <? function LB_LBSID($id) { if ($E=logic_getInputs($id)) { if (($E[1]['refresh'] && $E[1]['value']!="")) { LB_LBSID_debug($id,"LBS triggerd",7); //if ($E[2]['value']="") { logic_callExec(LBSID,$id); //} else { //LB_LBSID_debug($id,"Token ist Pflicht",0); //} } } } function LB_LBSID_debug($id,$s,$l) { $a=array("Emergency","Alert","Critical","Error","W arning","Notice","Informational","Debug"); $E=logic_getInputs($id); $DEBUG=$E[6]['value']; $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s); } ?> ###[/LBS]### ###[EXEC]### <? require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php"); //set_time_limit(60); sql_connect(); $E=logic_getInputs($id); $token=$E[2]['value']; LB_LBSID_debugExec($id,"Token gesetzt (".$token."), starte EXEC-Teil",7); $startTS=$E[3]['value']; LB_LBSID_debugExec($id,"StartTS gesetzt (".$startTS.")",7); $endTS=$E[4]['value']; LB_LBSID_debugExec($id,"EndTS gesetzt (".$endTS.")",7); $url = $E[5]['value'];//"https://api.awattar.com/v1/marketdata"; if($endTS == ""){ $endTS = number_format((microtime(true)*1000)+133200000,0,' .',''); //aktuelle Uhrzeit + max 36 h LB_LBSID_debugExec($id,"EndTS (".$endTS.")",7); } if($startTS == ""){ $startTS = number_format((microtime(true)*1000),0,'.',''); $url = $url."?start=".$startTS."&end=".$endTS; LB_LBSID_debugExec($id,"StartTS gesetzt (".$startTS.")",7); }else{ $url = $url."?start=".$startTS."&end=".$endTS; } LB_LBSID_debugExec($id,"URL: (".$url.")",7); $ch = curl_init(); if($token!=""){ $authorization = "Authorization: Bearer ".$token; curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization )); }else{ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' )); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $head = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); curl_close($ch); if(($head!="")){ LB_LBSID_debugExec($id,"Statusantwort von aWattar (".$httpCode.")",7); $obj = json_decode($head); LB_LBSID_debugExec($id,"Antwort von aWattar: ".$head,7); $timeData = $obj->data; logic_setOutput($id,1,json_encode($timeData)); LB_LBSID_debugExec($id,"Ausgang 1: ".json_encode($timeData),7); $i = 2; foreach ($timeData as $timeslot) { LB_LBSID_debugExec($id,"Ausgang ".$i.": ".$timeslot->marketprice/10,7); logic_setOutput($id,$i,$timeslot->marketprice/10); $i++; } }else{ LB_LBSID_debugExec($id,"Keine Antwort vom awattar-Server erhalten ".$httpCode." | ".$head,5); } LB_LBSID_debugExec($id,"Ende ",7); sql_disconnect(); function LB_LBSID_debugExec($id,$s,$l) { $a=array("Emergency","Alert","Critical","Error","W arning","Notice","Informational","Debug"); $E=logic_getInputs($id); $DEBUG=$E[6]['value']; $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s); } ?> ###[/EXEC]###
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar