Problem mit HM Skript zur Abfrage - Historian

Das Langzeitarchiv für HomeMatic

Moderator: Co-Administratoren

Antworten
microsuck
Beiträge: 220
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Problem mit HM Skript zur Abfrage - Historian

Beitrag von microsuck » 01.04.2020, 08:29

Hi,

ich habe mir das Skript von diesem Beitrag kopiert. viewtopic.php?f=38&t=43360

Habe von Skripts nicht so viele Ahnung!!! Habe mal von oben nach unten über WriteLine durchgeschaut, ab wann nichts mehr ankommt. Bin bis zum foreach Befehl gekommen und da bekomme ich keine Rückmeldung mehr. Über diverse Suchen im Netzt konnte ich keine Lösung finden bzw. verstehe ich das nicht so wirklich.

Code: Alles auswählen

foreach(x, hist_string.Split(","))
{
  EndValue = x.ToFloat();
}

Vielleicht kann mir jemand behilflich sein? Habe im Ursprungsbeitrag einen Post reingestellt da dieser allerdings als gelöst markiert ist wird sich da nicht viel tun (denke ich)

Originalskript:

Code: Alles auswählen

!#######################################
!Script zur Deltawert Berechnung aus ccu-historian 
!26.04.2018 RamSauer
!Version 0.1
!#######################################


!#######################################
!Einstellungen
!#######################################

string SysVar = "marcel_Tag"; !Systemvariable in die geschrieben werden soll

integer tage = 7; !Zeitraum in Tagen

string hist_ip = "192.168.0.3"; !IP Adresse ccu-Historien
string port = "8082"; ! Port ccu-Historien
string para_id = "802"; !ccu-historian Datenpunkt ID
string cuxd = "CUxD.CUX2801001:1"; !CUxD Exec Device

!#######################################
!Ab hier keine Änderungen mehr vornehmen
!#######################################

integer t = system.Date("%F %X").ToTime().ToInteger();
string endtime = t.ToString() + "000";
t = t - ( tage * 86400 );
string starttime = t.ToString() + "000";

string query = "http://" + hist_ip + ":" + port + "/query/jsonrpc.gy?j={%22id%22: 123, %22method%22: %22getTimeSeries%22,%22params%22: [" + para_id +
"," + starttime + "," + endtime + "]}";

dom.GetObject(cuxd + ".CMD_SETS").State("wget -q -O - '"#query#"'");
dom.GetObject(cuxd + ".CMD_QUERY_RET").State(1);
string hist_string = dom.GetObject(cuxd + ".CMD_RETS").State();


boolean error = hist_string.Contains("error");

if (error)
{
dom.GetObject(SysVar).State(-99); 
quit;
}

hist_string = hist_string.StrValueByIndex(":", 4).Replace('],"dataPoint"', '').Replace('[', '');

real StartValue = hist_string.StrValueByIndex(",", 0).ToFloat();

real EndValue = StartValue;

foreach(x, hist_string.Split(","))
{
  EndValue = x.ToFloat();
}

real delta = EndValue - StartValue;
dom.GetObject(SysVar).State(delta);


schon mal vielen Danke für jeden der sich der Sache versucht anzunehmen

microsuck

bernd_w
Beiträge: 10
Registriert: 11.02.2015, 22:48

Re: Problem mit HM Skript zur Abfrage - Historian

Beitrag von bernd_w » 14.02.2021, 15:33

Hallo microsuck ,

das x ist noch nicht definiert in der Zeile......

foreach(x, hist_string.Split(","))

Richtig wäre:

string x;
foreach(x, hist_string.Split(","))

VG bernd_w

bernd_w
Beiträge: 10
Registriert: 11.02.2015, 22:48

Re: Problem mit HM Skript zur Abfrage - Historian

Beitrag von bernd_w » 14.02.2021, 15:35

Code: Alles auswählen

!#######################################
!Script zur Deltawert Berechnung aus ccu-historian 
!26.04.2018 RamSauer
!Version 0.1
!#######################################


!#######################################
!Einstellungen
!#######################################

string SysVar = "marcel_Tag"; !Systemvariable in die geschrieben werden soll

integer tage = 7; !Zeitraum in Tagen

string hist_ip = "192.168.0.3"; !IP Adresse ccu-Historien
string port = "8082"; ! Port ccu-Historien
string para_id = "802"; !ccu-historian Datenpunkt ID
string cuxd = "CUxD.CUX2801001:1"; !CUxD Exec Device

!#######################################
!Ab hier keine Änderungen mehr vornehmen
!#######################################

integer t = system.Date("%F %X").ToTime().ToInteger();
string endtime = t.ToString() + "000";
t = t - ( tage * 86400 );
string starttime = t.ToString() + "000";

string query = "http://" + hist_ip + ":" + port + "/query/jsonrpc.gy?j={%22id%22: 123, %22method%22: %22getTimeSeries%22,%22params%22: [" + para_id +
"," + starttime + "," + endtime + "]}";

dom.GetObject(cuxd + ".CMD_SETS").State("wget -q -O - '"#query#"'");
dom.GetObject(cuxd + ".CMD_QUERY_RET").State(1);
string hist_string = dom.GetObject(cuxd + ".CMD_RETS").State();


boolean error = hist_string.Contains("error");

if (error)
{
dom.GetObject(SysVar).State(-99); 
quit;
}

hist_string = hist_string.StrValueByIndex(":", 4).Replace('],"dataPoint"', '').Replace('[', '');

real StartValue = hist_string.StrValueByIndex(",", 0).ToFloat();

real EndValue = StartValue;

sting x;
foreach(x, hist_string.Split(","))
{
  EndValue = x.ToFloat();
}

real delta = EndValue - StartValue;
dom.GetObject(SysVar).State(delta);



Antworten

Zurück zu „CCU-Historian“