Uhrzeit Differenz Script
Moderatoren: jmaus, Co-Administratoren
- Henke
- Beiträge: 1524
- Registriert: 27.06.2022, 20:51
- System: CCU
- Hat sich bedankt: 141 Mal
- Danksagung erhalten: 306 Mal
Re: Uhrzeit Differenz Script
Ist die Systemvariable "HZG_Brenner_dauer_gesamt" eine Zahl?
Wenn nicht, draus machen.
Dann evtl, um auf Nummer sicher zu gehen:
integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.Value();
in
integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.Value().ToInteger();
Wenn nicht, draus machen.
Dann evtl, um auf Nummer sicher zu gehen:
integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.Value();
in
integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.Value().ToInteger();
-
- Beiträge: 551
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 125 Mal
Re: Uhrzeit Differenz Script
vieleicht hat Henke noch 'ne bessere Idee...
Aber ich würde die Sekundenzahl in die Beschreibung DPInfo() der Systemvariablen setzen
und die formatierte Zeit in das eigentlich Feld Value().
Da kann die Systemvariable "HZG_Brenner_dauer_gesamt" vom Typ Zeichenkette bleiben.
z.B. so:
Aber ich würde die Sekundenzahl in die Beschreibung DPInfo() der Systemvariablen setzen
und die formatierte Zeit in das eigentlich Feld Value().
Da kann die Systemvariable "HZG_Brenner_dauer_gesamt" vom Typ Zeichenkette bleiben.
z.B. so:
Code: Alles auswählen
.....
! alten Wert holen
!integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.Value();
integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.DPInfo().ToInteger();
! kummulieren
iHZG_Brenner_dauer_gesamt =iHZG_Brenner_dauer_gesamt+tHB_dauer.ToInteger();
! Schreiben der neuen gesamt Brenndauer in die Beschreibung der Variablen
!oSVr_HB_gesamt.State(iHZG_Brenner_dauer_gesamt);
oSVr_HB_gesamt.DPInfo(iHZG_Brenner_dauer_gesamt);
!Formatieren in Tage HH:MM:SS
var BDT = (iHZG_Brenner_dauer_gesamt / 86400).ToString() # " Tage ";
var HZG_Brenner_dauer_gesamtTHM =BDT # ((iHZG_Brenner_dauer_gesamt-(3600+86400)).ToTime()).Format("%H:%M h");
!Schreiben der neuen gesamt Brenndauer formatiert in die Variable
dom.GetObject(SysVarNameDauerGes).State(HZG_Brenner_dauer_gesamtTHM);
oSVr_HB_dauer.State(sHZG_Brenner_dauer); ! Schreiben der Brenner dauer in die Variable
.....
Gruß
Harry
Harry
-
- Beiträge: 222
- Registriert: 26.02.2013, 21:11
- Hat sich bedankt: 39 Mal
Re: Uhrzeit Differenz Script
Hab ich so gemacht, SV war Zeichenkette, ist jetzt Zahl. Das Script habe ich auch geändert.Henke hat geschrieben: ↑05.12.2022, 11:49Ist die Systemvariable "HZG_Brenner_dauer_gesamt" eine Zahl?
Wenn nicht, draus machen.
Dann evtl, um auf Nummer sicher zu gehen:
integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.Value();
in
integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.Value().ToInteger();
Ergebnis
-266040.000000
-
- Beiträge: 222
- Registriert: 26.02.2013, 21:11
- Hat sich bedankt: 39 Mal
Re: Uhrzeit Differenz Script
Ja Anfangswert 0, eben nochmal zurück gesetzt und einen weiteren Scriptlauf abgewartet.
Code: Alles auswählen
. ! STOP Pushover - Skript HZG Info
! ------------------------------
string sSysVar_HB_start = "HZG_Brenner_start";
string sSysVar_HB_stop = "HZG_Brenner_stop";
string sSysVar_HB_dauer = "HZG_Brenner_dauer";
string sSysVar_HB_gesamt = "HZG_Brenner_dauer_gesamt";
string sSysVar_HB_pause = "HZG_Brenner_pause";
string sOWtemp = dom.GetObject(ID_SYSTEM_VARIABLES).Get("owTemperatur").Value().ToString(1);
object oSVr_HB_start = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_start);
if (!oSVr_HB_start) { WriteLine( oSVr_HB_start # " Variablenname ist falsch"); quit; }
object oSVr_HB_stop = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_stop);
if (!oSVr_HB_stop) { WriteLine( sSysVar_HB_stop # " Variablenname ist falsch"); quit; }
object oSVr_HB_dauer = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_dauer);
if (!oSVr_HB_dauer) { WriteLine( sSysVar_HB_dauer # " Variablenname ist falsch"); quit; }
object oSVr_HB_gesamt = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_gesamt);
if (!oSVr_HB_gesamt) { WriteLine( sSysVar_HB_gesamt # " Variablenname ist falsch"); quit; }
object oSVr_HB_pause = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_pause);
if (!oSVr_HB_pause) { WriteLine( sSysVar_HB_pause # " Variablenname ist falsch"); quit; }
oSVr_HB_stop.State( localtime );
time tHB_start = oSVr_HB_start.Timestamp().ToTime() ;
time tHB_stop = oSVr_HB_stop.Timestamp().ToTime() ;
time tHB_dauer = ((tHB_stop-tHB_start)-(3600+86400)).ToTime();
string sHZG_Brenner_dauer = tHB_dauer.Format("%H:%M h").Replace("31 Tage","00 Tage");
! alten Wert holen
integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.Value();
! kummulieren
iHZG_Brenner_dauer_gesamt =iHZG_Brenner_dauer_gesamt+tHB_dauer.ToInteger();
! Schreiben der neuen gesamt Brenndauer in die Variable
oSVr_HB_gesamt.State(iHZG_Brenner_dauer_gesamt);
oSVr_HB_dauer.State(sHZG_Brenner_dauer); ! Schreiben der Brenner dauer in die Variable
- Henke
- Beiträge: 1524
- Registriert: 27.06.2022, 20:51
- System: CCU
- Hat sich bedankt: 141 Mal
- Danksagung erhalten: 306 Mal
Re: Uhrzeit Differenz Script
Code: Alles auswählen
! STOP Pushover - Skript HZG Info
! ------------------------------
string sSysVar_HB_start = "HZG_Brenner_start";
string sSysVar_HB_stop = "HZG_Brenner_stop";
string sSysVar_HB_dauer = "HZG_Brenner_dauer";
string sSysVar_HB_gesamt = "HZG_Brenner_dauer_gesamt";
string sSysVar_HB_pause = "HZG_Brenner_pause";
string sOWtemp = dom.GetObject(ID_SYSTEM_VARIABLES).Get("owTemperatur").Value().ToString(1);
object oSVr_HB_start = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_start);
if (!oSVr_HB_start) { WriteLine( oSVr_HB_start # " Variablenname ist falsch"); quit; }
object oSVr_HB_stop = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_stop);
if (!oSVr_HB_stop) { WriteLine( sSysVar_HB_stop # " Variablenname ist falsch"); quit; }
object oSVr_HB_dauer = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_dauer);
if (!oSVr_HB_dauer) { WriteLine( sSysVar_HB_dauer # " Variablenname ist falsch"); quit; }
object oSVr_HB_gesamt = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_gesamt);
if (!oSVr_HB_gesamt) { WriteLine( sSysVar_HB_gesamt # " Variablenname ist falsch"); quit; }
object oSVr_HB_pause = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sSysVar_HB_pause);
if (!oSVr_HB_pause) { WriteLine( sSysVar_HB_pause # " Variablenname ist falsch"); quit; }
oSVr_HB_stop.State( localtime );
time tHB_start = oSVr_HB_start.Timestamp().ToTime() ;
time tHB_stop = oSVr_HB_stop.Timestamp().ToTime() ;
integer iDiffBrenner = (tHB_stop-tHB_start);
string sHZG_Brenner_dauer = (((iDiffBrenner/60)-system.TimeZoneOffset())*60).ToTime().Format("%H:%M h");
! alten Wert holen
integer iHZG_Brenner_dauer_gesamt =oSVr_HB_gesamt.Value();
! kummulieren
iHZG_Brenner_dauer_gesamt =iHZG_Brenner_dauer_gesamt+iDiffBrenner;
! Schreiben der neuen gesamt Brenndauer in die Variable
oSVr_HB_gesamt.State(iHZG_Brenner_dauer_gesamt);
oSVr_HB_dauer.State(sHZG_Brenner_dauer); ! Schreiben der Brenner dauer in die Variable
-
- Beiträge: 222
- Registriert: 26.02.2013, 21:11
- Hat sich bedankt: 39 Mal
- Henke
- Beiträge: 1524
- Registriert: 27.06.2022, 20:51
- System: CCU
- Hat sich bedankt: 141 Mal
- Danksagung erhalten: 306 Mal
Re: Uhrzeit Differenz Script
Sry, keine Lust mehr die Bugs/Strukturen von anderen theoretisch die Fehler zu suchen. Ich mach das mal in schön.
- Henke
- Beiträge: 1524
- Registriert: 27.06.2022, 20:51
- System: CCU
- Hat sich bedankt: 141 Mal
- Danksagung erhalten: 306 Mal
Re: Uhrzeit Differenz Script
1. Script
1. Programm
3. Systemvariablen - eine davon für mich zum Testen
Variablen:
"Brenner.An/Aus" - wahr/falsch
"Brenner.Laufzeit" - Zahl
"Brenner.Ausgabe" - für mich
Programm:
Fertig
1. Programm
3. Systemvariablen - eine davon für mich zum Testen
Variablen:
"Brenner.An/Aus" - wahr/falsch
"Brenner.Laufzeit" - Zahl
"Brenner.Ausgabe" - für mich
Programm:
Code: Alles auswählen
object oBr_AnAus = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Brenner.An/Aus");
if (!oBr_AnAus) { WriteLine( "Variablenname ist falsch"); quit; }
object oBr_LaufzeitGesamt = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Brenner.Laufzeit");
if (!oBr_LaufzeitGesamt) { WriteLine( "Variablenname ist falsch"); quit; }
object oBr_Ausgabe = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Brenner.Ausgabe");
if (!oBr_Ausgabe) { WriteLine( "Variablenname ist falsch"); quit; }
if ( oBr_AnAus.Value() )
{
integer tAn = oBr_AnAus.TimestampSeconds();
oBr_AnAus.State ( false );
integer iDiff = localtime.ToInteger() - tAn;
!WriteLine ( iDiff );
string sGelaufen = (iDiff-(system.TimeZoneOffset()*60)).ToTime().Format("%H:%M:%S");
integer iDiffGesamt = oBr_LaufzeitGesamt.Value() + iDiff;
oBr_LaufzeitGesamt.State (iDiffGesamt);
string sGelaufenGesamt = (iDiffGesamt-(system.TimeZoneOffset()*60)).ToTime().Format("%H:%M:%S");
string sOut = "Letzter Lauf: " # sGelaufen # " - Gesamt: " # sGelaufenGesamt;
oBr_Ausgabe.State(sOut ) ;
WriteLine ( sOut );
}
else
{
WriteLine ( "Brenner läuft, keine Ausgabe");
}
-
- Beiträge: 336
- Registriert: 05.10.2020, 18:37
- System: CCU
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 25 Mal
Re: Uhrzeit Differenz Script
Hi,
TimeZoneOffset() gibt auch in England oder Australien per default 60 zurück.
gehört zu den über 40 gelisteten badenpower-rega-Bugs
Thomas
TimeZoneOffset() is keine Stilfrage eher ne Wissensfrage und unbrauchbar.
TimeZoneOffset() gibt auch in England oder Australien per default 60 zurück.
gehört zu den über 40 gelisteten badenpower-rega-Bugs
Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.
Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.
Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.