HomeMatic CCU2 bei ELV bestellen

Arbeiten mit Time - Datentyp

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

Werbung


Arbeiten mit Time - Datentyp

Beitragvon didiator » 11.02.2018, 12: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...
didiator
 
Beiträge: 28
Registriert: 21.12.2017, 14:25

Re: Arbeiten mit Time - Datentyp

Beitragvon alchy » 11.02.2018, 13: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

....................
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 hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
alchy
 
Beiträge: 6849
Registriert: 24.02.2011, 02:34

Re: Arbeiten mit Time - Datentyp

Beitragvon shk » 12.02.2018, 12: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
Benutzeravatar
shk
 
Beiträge: 15
Registriert: 02.02.2018, 09:55
Wohnort: Austria

Re: Arbeiten mit Time - Datentyp

Beitragvon didiator » 12.02.2018, 15: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, 14:25

Re: Arbeiten mit Time - Datentyp

Beitragvon didiator » 12.02.2018, 19: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...
didiator
 
Beiträge: 28
Registriert: 21.12.2017, 14:25

Re: Arbeiten mit Time - Datentyp

Beitragvon shk » 13.02.2018, 07: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
Benutzeravatar
shk
 
Beiträge: 15
Registriert: 02.02.2018, 09:55
Wohnort: Austria

Re: Arbeiten mit Time - Datentyp

Beitragvon alchy » 13.02.2018, 08: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

....................
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 hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
alchy
 
Beiträge: 6849
Registriert: 24.02.2011, 02:34

Re: Arbeiten mit Time - Datentyp

Beitragvon didiator » 13.02.2018, 10: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...
didiator
 
Beiträge: 28
Registriert: 21.12.2017, 14:25

Re: Arbeiten mit Time - Datentyp

Beitragvon alchy » 13.02.2018, 15: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

....................
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 hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
alchy
 
Beiträge: 6849
Registriert: 24.02.2011, 02:34

Re: Arbeiten mit Time - Datentyp

Beitragvon didiator » 13.02.2018, 21:16

OK, probier ich aus, Danke!
---------------------------------------------------------------
stay original...
didiator
 
Beiträge: 28
Registriert: 21.12.2017, 14:25


Zurück zu Softwareentwicklung für die HomeMatic CCU

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste







© homematic-forum.de & Lizenzgebern. Alle Rechte vorbehalten. Alle Bilder & Texte auf dieser Seite sind Eigentum
der jeweiligen Besitzer und dürfen ohne deren Einwilligung weder kopiert noch sonstwie weiter verwendet werden.