Re: Tibber Strompreise einlesen und Aktoren schalten
Verfasst: 10.08.2023, 18:36
Nö, muss man das?
Kann ja nicht alles kennen und wissen.
Kann ja nicht alles kennen und wissen.
Heimautomation mit ELV HomeMatic und FHZ Funk-Hauszentralen
https://homematic-forum.de/forum/
Code: Alles auswählen
!!! Get 24h-DayAhead-data from AWattar (JSON Format) !!!
var url = "https://api.awattar.de/v1/marketdata";
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
string responce = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
!WriteLine(responce);
Code: Alles auswählen
!!! Search hour with minimal price from JSON data !!!
integer i=0;
real a=0;
integer MinI=0;
real Min=(responce.StrValueByIndex(",",3)).StrValueByIndex(":",1).ToFloat();
while (i<23) {
i = i + 1;
a = (responce.StrValueByIndex(",",3+4*i)).StrValueByIndex(":",1).ToFloat();
if(a<Min) {Min=a; MinI=i;} }
Code: Alles auswählen
!!! Write starting time for minimal price in system variable "StartTimeCharge" !!!
time t0 =currenttime-60*currenttime.Minute();
time tStart = t0 + (MinI+1)*3600;
dom.GetObject("StartTimeCharge").State(tStart.ToInteger());
!WriteLine(tStart.ToInteger());
Code: Alles auswählen
!!! Activate Relay from Wall-Box & Deactivate it 4 hours later!!!
var x =dom.GetObject("StartTimeCharge").Value();
if ((currenttime.ToInteger()-x)>=0) {dom.GetObject("BidCos-RF.PEQ1234567:1.STATE").State(true);}
if ((currenttime.ToInteger()-x)>=(4*3600)) {dom.GetObject("BidCos-RF.PEQ1234567:1.STATE").State(false);}
Super vielen Dank! Ich versuche gerade, genau das mit der Tibber-API ans Laufen zu kriegen (um die Wärmepumpe die teuersten 5 Stunden am Tag zu sperren). Dein Skript hat auf jeden Fall die nötige Starthilfe gegeben!toma_homematic hat geschrieben: ↑04.11.2023, 16:05...
Vielleicht kann damit ja jemand etwas anfangen...