Arbeiten mit Time - Datentyp

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
didiator
Beiträge: 28
Registriert: 21.12.2017, 13:25

Arbeiten mit Time - Datentyp

Beitrag von didiator » 11.02.2018, 11:15

Liebe Gemeinde,

ich möchte gern in Homematic CCU2 skripts mit dem Datentyp Time arbeiten. Habt Ihr dazu einen guten Link zu einer Beschreibung? Ich finde immer nur Detaillösungen - teilweise funktionieren die nicht einmal.

Ich möchte gern:
- Zeitdifferenzen zwischen zwei Time-Werten berechnen,
- von und nach String konvertieren,
- Zeiten zu anderen Zeiten addieren oder subtrahieren,
- mit den Astrofunktionen arbeiten.

Vielen Dank im Voraus, Didiator
---------------------------------------------------------------
stay original...

alchy
Beiträge: 7635
Registriert: 24.02.2011, 01:34

Re: Arbeiten mit Time - Datentyp

Beitrag von alchy » 11.02.2018, 12:12

didiator hat geschrieben:Habt Ihr dazu einen guten Link zu einer Beschreibung?
Guten Link?
Der beste Link zur Doku ist der über homematic-inside zur >> Scriptdoku << (Sollte im Teil 2 beschrieben sein)
Zumindest einen Teil deines Ansinnens solltest du dort nachlesen können. Den Rest kannst du ja hier erfragen.

Alchy

.................... 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.

Benutzeravatar
shk
Beiträge: 15
Registriert: 02.02.2018, 08:55
Wohnort: Austria
Kontaktdaten:

Re: Arbeiten mit Time - Datentyp

Beitrag von shk » 12.02.2018, 11:07

Hi!
  • Zeitdifferenzen zwischen zwei Time-Werten berechnen
    Das geht durch die Umwandlung von Time-Variablen in Integer (die Zeit liegt dann in Sekunden im UNIX-timeformat vor). Dann kann eine Differenz in Sekunden berechnet werden:

    Code: Alles auswählen

    var diff = time1.ToInteger() - time2.ToInteger();
    
  • von und nach String konvertieren
    • von String zu Zeit:

      Code: Alles auswählen

      string_variable.ToTime()
    • von Zeit zu String:

      Code: Alles auswählen

      time_variable.ToString() # ergibt einen String im Format  "2008-12-24 18:30:00"
  • Zeiten zu anderen Zeiten addieren oder subtrahieren
    Siehe Differenz-Bildung, Addition/Subtraktion in Sekunden.
  • mit den Astrofunktionen arbeiten
    • Aktuelle Uhrzeit mit der Funktion system.Date()
    • Sonnen-Aufgang mit der Funktion system.SunriseTime()
    • Sonnen-Untergang mit der Funktion system.SunsetTime()
Nähere Infos in der HM Skript-Doku, dort ist (fast) alles beschrieben, was du brauchst.

LG
Andreas
Smart Home System Integrator Smart Home Kos http://www.smarthomekos.at

didiator
Beiträge: 28
Registriert: 21.12.2017, 13:25

Re: Arbeiten mit Time - Datentyp

Beitrag von didiator » 12.02.2018, 14:39

Vielen Dank, Leute!

Das hilft mir weiter. Ich hatte nur vermutet, dass man nicht so viel konvertieren muss und direkt im Datentyp Time bleiben kann. Aber dann mache ich es eben so... geht auch...

Vielen Dank!
---------------------------------------------------------------
stay original...

didiator
Beiträge: 28
Registriert: 21.12.2017, 13:25

Re: Arbeiten mit Time - Datentyp

Beitrag von didiator » 12.02.2018, 18:30

Sorry, doch noch ne Frage...

Wie kann ich 2:30 Stunden zu system.Date() hinzuaddieren? Hab da irgendwie nciht aufgepasst. Es soll wieder ein Datentyp Time am Ende stehen.
---------------------------------------------------------------
stay original...

Benutzeravatar
shk
Beiträge: 15
Registriert: 02.02.2018, 08:55
Wohnort: Austria
Kontaktdaten:

Re: Arbeiten mit Time - Datentyp

Beitrag von shk » 13.02.2018, 06:58

2:30 Stunden entsprechen 9000 Sekunden. Das wär dann also so:

Code: Alles auswählen

system.Date("%F %T").ToTime().ToInteger() + 9000

Um das ganze wieder als Time zu erhalten muss dann wieder konvertiert werden:

Code: Alles auswählen

(system.Date("%F %T").ToTime().ToInteger() + 9000).ToTime()
LG Andreas
Smart Home System Integrator Smart Home Kos http://www.smarthomekos.at

alchy
Beiträge: 7635
Registriert: 24.02.2011, 01:34

Re: Arbeiten mit Time - Datentyp

Beitrag von alchy » 13.02.2018, 07:05

Der Möglichkeiten gibt es viele.
So genehm?

Code: Alles auswählen

! Addieren von add in Sekunden zur Uhrzeit und Ausgabe auf Bildschirm by alchy
integer add = 9000;
string jetzt = system.Date("%F %T");
integer diff = jetzt.ToTime().ToInteger() + add;
string nachher = diff.ToTime();
WriteLine("jetzt ist es: "#jetzt #" und "#add#" Sekunden später ist es "#nachher);
Alchy

.................... 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.

didiator
Beiträge: 28
Registriert: 21.12.2017, 13:25

Re: Arbeiten mit Time - Datentyp

Beitrag von didiator » 13.02.2018, 09:56

Hi Alchy,

...ist schon aufwendig, oder? Man muss immer hin- und herkonvertieren. Andere Programmiersprachen bieten ja eine Add - Funktion auch für die Zeit an. Haben wir hier offenbar nicht. Schade.
Aber ich bin noch am Lernen und muss halt mit der vorgegebenen Syntax klar kommen.

Vielen Dank!
---------------------------------------------------------------
stay original...

alchy
Beiträge: 7635
Registriert: 24.02.2011, 01:34

Re: Arbeiten mit Time - Datentyp

Beitrag von alchy » 13.02.2018, 14:00

Nach einer Mütze Schlaf und einem netten Hinweis eines Freundes - eben ohne Konvertierung

Code: Alles auswählen

integer lAdd = 9000;
time lJetzt = currenttime;  
time lNachher = lJetzt + lAdd;
WriteLine("jetzt ist es: " # lJetzt # " und " # lAdd # " Sekunden später ist es " # lNachher);
Alchy

.................... 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.

didiator
Beiträge: 28
Registriert: 21.12.2017, 13:25

Re: Arbeiten mit Time - Datentyp

Beitrag von didiator » 13.02.2018, 20:16

OK, probier ich aus, Danke!
---------------------------------------------------------------
stay original...

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“