Code: Alles auswählen
""gelaufenJ": "0.0000000.000000",
Gruß Xel66
Moderatoren: jmaus, Co-Administratoren
Code: Alles auswählen
""gelaufenJ": "0.0000000.000000",
mc.olli hat geschrieben: Das hat bis dato immer funktioniert, allerdings ist seit dem update das so nicht mehr möglich.
Code: Alles auswählen
var StromFinder100 = dom.GetObject("SV_Strom_Finder_Summe").Value().ToString(3);
var StromFinder102 = 0.01 + StromFinder101;
Die neue Version der Rega ist sehr viel kritischer mit Script Fehlern.Günni hat geschrieben:Hallo, ok danke euch für die Antworten.
Leider kann ich das nicht allein ändern.
Noch mal eine Frage? Warum lief das ganze mit der Vorgänger Version.
Danke
Code: Alles auswählen
boolean DEBUG = true;
! Skript zur Berechnung
var AusZeit= dom.GetObject("Brenner letzte Ausschaltzeit");
var EinZeit= dom.GetObject("Brenner letzte Einschaltzeit");
var TankGes= dom.GetObject("Brenner Tankinhalt bei letzter Fuellung").Value();
var KumTankAkt= dom.GetObject("Brenner Tankinhalt aktuell");
var KumZeitF= dom.GetObject("Brenner Betriebsstunden seit letzter Fuellung");
var KumVerbrauchF= dom.GetObject("Brenner Verbrauch seit letzter Fuellung");
var KumZeitJ= dom.GetObject("Brenner Betriebsstunden laufendes Kalenderjahr");
var KumVerbrauchJ= dom.GetObject("Brenner Verbrauch laufendes Kalenderjahr");
var KumZeitM= dom.GetObject("Brenner Betriebsstunden laufender Monat");
var KumVerbrauchM= dom.GetObject("Brenner Verbrauch laufender Monat");
var KumZeitW= dom.GetObject("Brenner Betriebsstunden laufende Woche");
var KumVerbrauchW= dom.GetObject("Brenner Verbrauch laufende Woche");
var KumZeitT= dom.GetObject("Brenner Betriebsstunden heute");
var KumVerbrauchT= dom.GetObject("Brenner Verbrauch heute");
! Speichern der Ausschaltzeit
AusZeit.State(system.Date("%F %T"));
! Den Einschaltzeit String aus der Systemvariablen in ein Zeitobjekt umwandeln
time t = EinZeit.Variable().ToTime();
! Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln
time t1 = system.Date("%F %T").ToTime();
! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln
real x = t.ToFloat();
if (DEBUG) { WriteLine("x="#x.ToString()); }
! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln
real x1 = t1.ToFloat();
if (DEBUG) { WriteLine("x1="#x1.ToString()); }
!Die Differenz ist die Einschaltdauer in Stunden umgerechnet
real x0 = 0.01*(x1-x)/36;
if (DEBUG) { WriteLine("x0="#x0.ToString()); }
! Die Einschaltdauer seit der letzten Füllung kumulieren = Betriebsstunden seit der letzten Füllung
real gelaufenF = x0 + KumZeitF.Variable();
if (DEBUG) { WriteLine("gelaufenF="#gelaufenF.ToString()); }
! Die Betriebsstunden seit der letzten Füllung in die Systemvariable einstellen
KumZeitF.State (gelaufenF);
! Berechnung von Verbrauch in Liter mit 1,87 kg/h seit der letzten Füllung
real verbrauchtF = gelaufenF * 1.87 * 1.197;
if (DEBUG) { WriteLine("verbrauchtF="#verbrauchtF.ToString()); }
! Verbrauch seit der letzten Füllung in die Systemvariable einstellen
KumVerbrauchF.State (verbrauchtF);
! Berechnung Tankinhalts in Litern
real tankinhalt = TankGes - verbrauchtF;
if (DEBUG) { WriteLine("tankinhalt="#tankinhalt.ToString()); }
! Tankinhalt in die Systemvariable einstellen
KumTankAkt.State (tankinhalt);
! Die Einschaltdauer im laufenden Kalenderjahr kumulieren = Betriebsstunden
real gelaufenJ = x0 + KumZeitJ.Variable();
if (DEBUG) { WriteLine("gelaufenJ="#gelaufenJ.ToString()); }
! Die Betriebsstunden im laufenden Kalenderjahr in die Systemvariable einstellen
KumZeitJ.State (gelaufenJ);
! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalenderjahr
real verbrauchtJ = gelaufenJ * 1.87 * 1.197;
if (DEBUG) { WriteLine("verbrauchtJ="#verbrauchtJ.ToString()); }
! Verbrauch im laufenden Kalenderjahr in die Systemvariable einstellen
KumVerbrauchJ.State (verbrauchtJ);
! Die Einschaltdauer im laufenden Kalendermonat kumulieren = Betriebsstunden
real gelaufenM = x0 + KumZeitM.Variable();
if (DEBUG) { WriteLine("gelaufenM="#gelaufenM.ToString()); }
! Die Betriebsstunden im laufenden Kalendermonat in die Systemvariable einstellen
KumZeitM.State (gelaufenM);
! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalendermonat
real verbrauchtM = gelaufenM * 1.87 * 1.197;
if (DEBUG) { WriteLine("verbrauchtM="#verbrauchtM.ToString()); }
! Verbrauch im laufenden Kalendermonat in die Systemvariable einstellen
KumVerbrauchM.State (verbrauchtM);
! Die Einschaltdauer in der laufenden Kalenderwoche kumulieren = Betriebsstunden
real gelaufenW = x0 + KumZeitW.Variable();
if (DEBUG) { WriteLine("gelaufenW="#gelaufenW.ToString()); }
! Die Betriebsstunden in der laufenden Kalenderwoche in die Systemvariable einstellen
KumZeitW.State (gelaufenW);
! Berechnung von Verbrauch in Liter mit 1,87 kg/h in der laufenden Kalenderwoche
real verbrauchtW = gelaufenW * 1.87 * 1.197;
if (DEBUG) { WriteLine("verbrauchtW="#verbrauchtW.ToString()); }
! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
KumVerbrauchW.State (verbrauchtW);
! Die Einschaltdauer heute kumulieren = Betriebsstunden
real gelaufenT = x0 + KumZeitT.Variable();
if (DEBUG) { WriteLine("gelaufenT="#gelaufenT.ToString()); }
! Die Betriebsstunden heute in die Systemvariable einstellen
KumZeitT.State (gelaufenT);
! Berechnung von Verbrauch in Liter mit 1,87 kg/h heute
real verbrauchtT = gelaufenT * 1.87 * 1.197;
if (DEBUG) { WriteLine("verbrauchtT="#verbrauchtT.ToString()); }
! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
KumVerbrauchT.State (verbrauchtT);
Code: Alles auswählen
Jul 13 15:51:38 homematic-raspi local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: ^M {^M if( system.IsVar("rid") )^M {^M object oTmp = dom.GetObject( system.GetVar("rid") );^M if( oTmp )^M {^M if( oTmp.ElseIfFlag() )^M {^M object oRuleTmp = oTmp.RuleSubRule();^M if( !oRuleTmp )^M {^M oRuleTmp = oTmp.RuleCreateSubRule();^M oRuleTmp.ElseIfFlag( true );^M }^M }^M else^M {^M oTmp.ElseIfFlag(true);^M } ^M Write( oRuleTmp.RuleDestination() );^M }^M }^M }^M ^M function ::DeleteSubRule()^M {^M if( system.IsVar("rid") )^M {^M object oTmp = dom.GetObject( system.GetVar("rid") );^M if( oTmp )^M {^M Write( oTmp.RuleDelSubRule() );^M }^M }^M }^M ^M function ::SetOperatorType()^M {^M if( system.IsVar("id") && system.IsVar("value") )^M {^M object oTmp = dom.GetObject( system.GetVar("id") );^M if( oTmp )^M {^M Write( oTmp.CndOperatorType( system.GetVar("value") ) );^M if( oTmp.CndSingleCount() == 1 )^M
Gruß,Der Skriptfehler, der nach dem Neustart aufgetreten ist, ist nich erneut aufgetreten, dafür hatte ich gestern Abend wohl wieder einen Scriptfehler in einem internen Programm:Der Fehler wird durch diesen Abschnitt ausgelöst:Code: Alles auswählen
Error: IseESP::ScriptRuntimeError: object oTmp;var ustate0;oTmp=dom.GetObject("BidCos-RF.MEQ0404995:1.STATE_UNCERTAIN");if(oTmp!=null){ustate0=oTmp.Value();}var cstate0;oTmp=dom.GetObject("BidCos-RF.MEQ0404995:1.STATE");if(oTmp!=null){cstate0=oTmp.Value();}var anwesend;oTmp=dom.GetObject("Anwesenheit");if(oTmp!=null){anwesend=oTmp.State();}string sTmp;string alarm="false";foreach(sTmp,dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedIDs()){oTmp = dom.GetObject(sTmp);if(oTmp.IsTypeOf(OT_ALARMDP)&&(oTmp.AlState()==asOncoming)){alarm=oTmp.Name();return;}}sTmp="";oTmp=""; [iseESPexec.cpp:12344]
Bei mir heißt die Variable zur Anwesenheit inzwischen S_Anwesenheit (da alle Systemvariablen bei mir mir S_ anfangen).Code: Alles auswählen
oTmp=dom.GetObject("Anwesenheit"); if(oTmp!=null){anwesend=oTmp.State();}
Ändere ich das im Skript auf "S_Anwesenheit" ab, tritt der Fehler nicht mehr auf.