Aktion wird nicht ausgelöst(abfrage "im Wertebereich")

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Aktion wird nicht ausgelöst(abfrage "im Wertebereich")

Beitrag von paul53 » 28.09.2018, 14:57

Wie wird die SV "svar_pv_erzeugung" gesetzt ? Wird der Zeitstempel aktualisiert ?
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

St3f4n
Beiträge: 15
Registriert: 19.09.2018, 17:42

Re: Aktion wird nicht ausgelöst(abfrage "im Wertebereich")

Beitrag von St3f4n » 28.09.2018, 15:28

Ich rufe jede Stunde ab Astro Tag mit diesen Script die Werte vom Wechselrichter ab.

Wo kann ich den "Zeitstempel" sehen?


Ist das gleichzusetzen mit WebUI ->Status-> Systemvariable -> Spallte :: Letzte Änderung?

Dann NEIN, hier aktualisiert sich nichts.

Code: Alles auswählen

!- Fronius-v0.3-----------------------------------------------------------------
! 
!-----------------------------------------------------------------------------
var froniusIP = "IP"; !IP des Fronius Wechselrichters
var deviceID = "1"; !Device ID (wird meistens stimmen, wenn nicht ausprobieren)
var CUxD_Device = "CUxD.CUX2801001:4"; !CUxD Virtuelles Gerät
string variable_verbrauch = "svar_pv_verbrauch"; !Name der Variabel für den Verbrauch(P_Load)
string variable_erzeugung = "svar_pv_erzeugung"; !Name der Variabel für die Erzeugung(P_PV)
string variable_differenz = "svar_pv_differenz"; !Name der Variabel für die Differenz
string variable_einspeisen = "svar_pv_einspeisen"; !Name der Variabel für die Einspeisung(P_Grid)
string variable_pointer = "svar_pv_pointer"; !Name der Variabel für den Pointer
!-----------------------------------------------------------------------------
! Ab hier muss man nichts mehr beachten
!-----------------------------------------------------------------------------
   
string pos1;
string pos2 = ",";
string pos3 = ":";
real wertVerbrauch;
real wertErzeugung;
real wertDifferenz;
real wertEinspeisen;
integer wert_pos;
var stdout;   
   
string url = "http://IP/solar_api/v1/GetPowerFlowRealtimeData.fcgi";
!string verbrauchParam = "GetMeterRealtimeData.cgi?Scope=System";
!string erzeugungParam="GetInverterRealtimeData.cgi?Scope=Device&DeviceId=" + deviceID + "&DataCollection=CommonInverterData";
    
!-----------------------------------------------------------------------------
! Aktueller Verbrauch in [W]
!-----------------------------------------------------------------------------
   
dom.GetObject(CUxD_Device + ".CMD_SETS").State("wget -q -O - " + url);
dom.GetObject(CUxD_Device + ".CMD_QUERY_RET").State(1);
stdout = dom.GetObject(CUxD_Device + ".CMD_RETS").State();
   
pos1 = "\"P_Load\" :";
wert_pos = stdout.Find(pos1) +  pos1.Length();
wertVerbrauch = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0);
dom.GetObject(variable_verbrauch).Variable(wertVerbrauch.ToInteger() * -1);

!-----------------------------------------------------------------------------
! Aktueller Erzeugung in [W]
!-----------------------------------------------------------------------------
   
dom.GetObject(CUxD_Device + ".CMD_SETS").State("wget -q -O - " + url);
dom.GetObject(CUxD_Device + ".CMD_QUERY_RET").State(1);
stdout = dom.GetObject(CUxD_Device + ".CMD_RETS").State();
   
pos1 = "\"P_PV\" :";
wert_pos = stdout.Find(pos1) +  pos1.Length();
wertErzeugung = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0);
dom.GetObject(variable_erzeugung).Variable(wertErzeugung.ToInteger());



!-----------------------------------------------------------------------------------------------
! Differenz in [W] 
!-----------------------------------------------------------------------------------------------
   
wertEinspeisen = wertErzeugung.ToInteger() + wertVerbrauch.ToInteger();
dom.GetObject(variable_einspeisen).Variable(wertEinspeisen.ToInteger());




Vielen Dank

Stefan

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Aktion wird nicht ausgelöst(abfrage "im Wertebereich")

Beitrag von paul53 » 28.09.2018, 15:38

Ersetze

Code: Alles auswählen

dom.GetObject(variable_erzeugung).Variable(wertErzeugung.ToInteger());
durch

Code: Alles auswählen

dom.GetObject(variable_erzeugung).State(wertErzeugung.ToInteger());
Mit der Methode .Variable(wert) wird der Zeitstempel nicht aktualisert und deshalb das Programm nicht ausgelöst.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

St3f4n
Beiträge: 15
Registriert: 19.09.2018, 17:42

Re: Aktion wird nicht ausgelöst(abfrage "im Wertebereich")

Beitrag von St3f4n » 28.09.2018, 17:02

perfekt, das war es.

Danke euch.

Antworten

Zurück zu „HomeMatic allgemein“