Variable 48h Zeitverzögert setzen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Xel66
Beiträge: 14164
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von Xel66 » 23.05.2018, 20:28

Accuracy hat geschrieben:-- also wieviel Zeit noch verbleibt -- irgendwie abzufragen?
Ich benutze für Debug-Zwecke den Einzeiler der den aktuellen Stand in eine Systemvariable vom Typ Zahl schreibt:

Code: Alles auswählen

!Abfrage Timer 
dom.GetObject("Systemvariable").State(dom.GetObject("CUxD.CUX2800001:3.TIMER_GET").State().ToInteger());
Du musst natürlich das "Systemvariable" in den von Dir verwendeten Namen ändern ("" müssen erhalten bleiben) und auch den von Dir abzufragenden Timer eintragen (Zahl hinter Doppelpunkt in "CUxD.CUX2800001:3.TIMER_GET")

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Accuracy
Beiträge: 749
Registriert: 22.05.2013, 16:37
Hat sich bedankt: 1 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von Accuracy » 24.05.2018, 13:17

Super -- 1000 Dank. Das hilft mir weiter.

Accuracy
Beiträge: 749
Registriert: 22.05.2013, 16:37
Hat sich bedankt: 1 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von Accuracy » 25.05.2018, 07:02

klappt perfekt Xel66. Ich musste die CuxD Geräte Nummer noch abändern. Bei mir ist es der Timer 1.

Noch eine Frage. Die Ausgabe ist ja in Sekunden. Kann man das im Script gleich noch irgendwie in Tage oder Std. umrechnen lassen?

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von alchy » 25.05.2018, 07:28

Nein das geht nicht, dann würde Google und das gesamte Internet gelöscht. :shock:

Code: Alles auswählen

!Sekunden umrechnen in StundeMinuteSekunde
var tmpStartTime = dom.GetObject("CUxD.CUX2800001:1.TIMER_GET").State().ToInteger();
var tmpStd;var tmpMin;var tmpSek;
tmpStd = tmpStartTime/3600;
tmpMin = (tmpStartTime%3600)/60;
tmpSek = tmpStartTime%60;
WriteLine(tmpStartTime#" Sekunden sind: "#tmpStd #" h und "#tmpMin #" min und "#tmpSek #" sek");
Alchy
Zuletzt geändert von alchy am 26.05.2018, 20:47, insgesamt 1-mal geändert.
Grund: fix

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Accuracy
Beiträge: 749
Registriert: 22.05.2013, 16:37
Hat sich bedankt: 1 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von Accuracy » 25.05.2018, 07:30

cool 1000 Dank

Accuracy
Beiträge: 749
Registriert: 22.05.2013, 16:37
Hat sich bedankt: 1 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von Accuracy » 26.05.2018, 09:45

Hi Alchy,

ich habe es gerade einmal getestet. Leider bekomme ich booleans zurück:

mein Code:

Code: Alles auswählen

    !Sekunden umrechnen in StundeMinuteSekunde
    var tmpStartTime = dom.GetObject("RestzeitRegenTimer").State(dom.GetObject("CUxD.CUX2800001:1.TIMER_GET").State().ToInteger());
    var tmpStd;var tmpMin;var tmpSek;
    tmpStd = tmpStartTime/3600;
    tmpMin = (tmpStartTime%3600)/60;
    tmpSek = tmpStartTime%60;
    WriteLine(tmpStartTime#" Sekunden sind: "#tmpStd #" h und "#tmpMin #" min und "#tmpSek #" sek");
Die RestzeitRegenTimer Variable ist als Zahl definiert (wie vorgegeben).

"true Sekunden sind: true h und true min und true sek"
Bildschirmfoto 2018-05-26 um 09.42.19.png
Skripteditor
Zuletzt geändert von alchy am 26.05.2018, 20:56, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Xel66
Beiträge: 14164
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von Xel66 » 26.05.2018, 18:16

In der Scriptdokumentation gibt es auch Beispiele zum Rechnen mit Zeiten.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Janniman
Beiträge: 212
Registriert: 08.04.2015, 14:29
Wohnort: Seevetal
Hat sich bedankt: 2 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von Janniman » 26.05.2018, 20:07

Xel66 hat geschrieben:In der Scriptdokumentation gibt es auch Beispiele zum Rechnen mit Zeiten.
:lol: Wolltest du damit Alchy empfehlen die Scriptdokumentation zu lesen? <gd&r>

Es geht dem Ersteller nicht um die Rechnung, sondern um die Darstellung von Alchys Code-WriteLine-Ausgabe.
Ist bei meinem Test im GUI-Skript-Testen-Fenster auch so.
Allerdings wird die Systemvariable richtig geschrieben (Sekunden.00). Das kann ich ja sehen, daher ist der Fehler wohl nicht in Alchys Code, sondern bei unseren Denkfehlern. Doch wo?
Die Sekundenanzeige ist an sich ja nicht das, was ich gerne für meinen Timer bei den Favoriten gesehen hätte, eher das was als WriteLine-Ausgabe kommen sollte / erwartet wurde.

Jan

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von alchy » 26.05.2018, 20:47

Auch ich muss immer in der Scriptdoku lesen, oder woher denkst du habe ich mir das wenige Wissen geholt.
allerdings ist der Fehler einfach nur ein Flüchtigkeitsfehler meinerseits.
Ich sollte es eben lassen Code auf dem Handy zu pinseln ohne zu denken.

Code: Alles auswählen

var tmpStartTime = dom.GetObject("RestzeitRegenTimer").State(dom.GetObject("CUxD.CUX2800001:1.TIMER_GET").State().ToInteger());
Die ^^ Zeile ist einfach falsch.
tmpStartTime enthält dadurch einfach bestenfalls ein true, denn durch die Zeile wird eben im besten Fall der Wert der Restlaufzeit aus dem CUxD Timer in die Systemvariable GESCHRIEBEN.
Zum Start der Berechnungen muss aber natürlich auch eine Zahlenwert und kein beoolean in tmpStartTime stehen.

Hab das mal geändert, sorry

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Janniman
Beiträge: 212
Registriert: 08.04.2015, 14:29
Wohnort: Seevetal
Hat sich bedankt: 2 Mal

Re: Variable 48h Zeitverzögert setzen

Beitrag von Janniman » 26.05.2018, 22:15

Dankeschön! Lüppt...

Liebe Grüße,

Jan

Antworten

Zurück zu „HomeMatic allgemein“