Vergleich von Zeiten im Script

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

BitMac
Beiträge: 186
Registriert: 27.11.2015, 09:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal

Vergleich von Zeiten im Script

Beitrag von BitMac » 30.11.2015, 20:39

Ich lese die aktuelle Uhrzeit mittels
dom.GetObject("uhrzeit").State(system.Date("%H:%M:%S")) aus.

Nun möchte ich diese Variable "uhrzeit" mit einer festen Uhrzeit (z.B. 11:55) vergleichen, um eine boolsche Variable zu setzen.
Wie sieht jetzt eine Formatierung im Script aus, um den Vergleich machen zu können ?

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Vergleich von Zeiten im Script

Beitrag von paul53 » 30.11.2015, 20:47

Wenn der Vergleichs-String das Format "hh:mm:ss" hat, genügt ein String-Vergleich.

Code: Alles auswählen

if (dom.GetObject("uhrzeit").Value() <= "11:55:00") 
{ Ausführung }
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

bahnuhr
Beiträge: 473
Registriert: 25.02.2014, 13:42
Danksagung erhalten: 1 Mal

Re: Vergleich von Zeiten im Script

Beitrag von bahnuhr » 30.11.2015, 21:00

Nutzt du Scriptgui?

Wenn ja, kann ich dir helfen.

Einfach nochmal schreiben.


mfg
CCU2, iobroker, 264 Kanäle in 124 Geräten und 21 CUxD-Kanäle in 13 CUxD-Geräten

BitMac
Beiträge: 186
Registriert: 27.11.2015, 09:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal

Re: Vergleich von Zeiten im Script

Beitrag von BitMac » 01.12.2015, 07:20

paul53 hat geschrieben:Wenn der Vergleichs-String das Format "hh:mm:ss" hat, genügt ein String-Vergleich.

Code: Alles auswählen

if (dom.GetObject("uhrzeit").Value() <= "11:55:00") 
{ Ausführung }
Herzlichen Dank. Mehr brauch ich nicht.
Gruß
Andreas

vore
Beiträge: 166
Registriert: 28.11.2011, 20:31
System: CCU und Access Point
Hat sich bedankt: 5 Mal
Danksagung erhalten: 5 Mal

Re: Vergleich von Zeiten im Script

Beitrag von vore » 21.01.2017, 22:12

Hallo!
Sorry, wenn ich den alten Post noch einmal hochziehe.. aber das passt genau zu meiner Frage:

Wie kann ich die feste Zeit (hier 11:55:00) mit einer Variablen ersetzen? Ich habe folgendes versucht:

Code: Alles auswählen

time zeit= @18:00:00@;
time timestamp = system.Date("%H:%M:%S");
if (timestamp.Value() <= zeit.Value() )
 {
 Mach was..
 }
Aber es funktioniert nicht.. jemand eine Idee?

Gruß

Vore
System: Asus TinkerS mit RaspberryMatic und Cubietruck mit IOBroker

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Vergleich von Zeiten im Script

Beitrag von paul53 » 21.01.2017, 22:52

Versuche es mal so:

Code: Alles auswählen

string zeit= "18:00:00";
string timestamp = system.Date("%H:%M:%S");
if (timestamp <= zeit)
{
     Mach was..
}
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

BadenPower

Re: Vergleich von Zeiten im Script

Beitrag von BadenPower » 21.01.2017, 23:03

Oder so:

Code: Alles auswählen

string lTime = "18:00:00";
time lDateTime = (system.Date("%Y-%m-%d ") # lTime).ToTime();
time lNow = (system.Date("%F %X")).ToTime();

if (lNow <= lDateTime)
{
  !Mach irgendetwas;
}
oder schneller:

Code: Alles auswählen

string lTime = "18:00:00";
time lDateTime = (system.Date("%Y-%m-%d ") # lTime).ToTime();
if (currenttime <= lDateTime)
{
  !Mach irgendetwas;
}

vore
Beiträge: 166
Registriert: 28.11.2011, 20:31
System: CCU und Access Point
Hat sich bedankt: 5 Mal
Danksagung erhalten: 5 Mal

Re: Vergleich von Zeiten im Script

Beitrag von vore » 21.01.2017, 23:49

Hallo!
Danke für die Tips! Ich finde "currenttime" nicht in der Doku. Ist das eine "unbekannte" Funktion?

Gruß

Vore
System: Asus TinkerS mit RaspberryMatic und Cubietruck mit IOBroker

BadenPower

Re: Vergleich von Zeiten im Script

Beitrag von BadenPower » 22.01.2017, 12:14

vore hat geschrieben:Ich finde "currenttime" nicht in der Doku.
Du wirst Vieles, von dem was ich poste, nicht in der Doku finden, da die Doku nicht einmal 10% des Funktionsumfang der Skriptsprache der CCU enthält.
vore hat geschrieben:Ist das eine "unbekannte" Funktion?
"currenttime" ist eine global definierte Skriptvariable vom Typ "time", welche die aktuelle Uhrzeit darstellt.
.

Benutzeravatar
WRadebeul
Beiträge: 142
Registriert: 29.01.2018, 13:53
Hat sich bedankt: 2 Mal
Danksagung erhalten: 14 Mal

Re: Vergleich von Zeiten im Script

Beitrag von WRadebeul » 29.01.2018, 14:20

Hallo,
ich nehme das Thema mit der Uhrzeit und der Vergleich nochmals auf.

Ich will ein Programm auf Änderung ausführen lassen, welches die Soll Werte meiner Fußbodenheizung nach dem Wechsel von einem manuell (händisch) gesetztem Feiertag (oder Krankheitstag zu Hause) wieder auf die Werte des „normalen“ Arbeitstages setzt. Feiertag (oder Tag zu Hause) hat halt höhere Sollwerte als Arbeitstag, bzw. andere Schaltzeiten.

Wenn ich nun die System-Variable TAG auf Arbeitstag setze, so sollen im Script des Programmes je nach aktueller Uhrzeit verschiedene Variablen (z.B. SET_TEMPERATURE) gesetzt werden. Das setzen der Variablen SET_TEMPERATURE funktioniert in anderen Programmen ohne die Zeit Bedingung einwandfrei, aber irgend etwas im Syntax des anliegenden Programmes muß falsch ein. Wäre toll wenn mir jemand helfen könnte

Code: Alles auswählen

! P21 Arbeitstag setzen der Temperaturen wenn Variable Feiertag=falsch (Arbeitstag)

!uhrzeit auslesen
string uhrzeit = "";
dom.GetObject("uhrzeit").State(system.Date("%H:%M:%S"));

!Wenn uhrzeit zwischen 04:00 und 6:30 Uhr, dann
if ((("uhrzeit").Value() >= "04:00:00") && (("uhrzeit").Value() < "06:30:00"))
   {
     !<<<<<< FHB EG KÜCHE >>>>>>
     real TempSTANDARD = dom.GetObject("FHB_KUECHE_SOLL_TAG").Value();
     dom.GetObject("BidCos-RF.OEQ1111111:2.SET_TEMPERATURE").State(TempSTANDARD);
   }

!Wenn Uhrzeit zwischen 06:30 und 13:30 Uhr, dann
if ((("uhrzeit").Value() >= "06:30:00") && (("uhrzeit").Value() < "13:30:00"))
   {
     !<<<<<< FHB EG KÜCHE >>>>>>
     real TempSTANDARD = dom.GetObject("FHB_KUECHE_SOLL_NACHT").Value();
     dom.GetObject("BidCos-RF.OEQ1111111:2.SET_TEMPERATURE").State(TempSTANDARD);
   }

! weitere Zeit Uhrzeit Bedingungen
Danke schon mal...
Raspberrymatic, iOBroker, Homematic Classic, Homematic Homebrew, CUL 868 für Somfy Rolladen, Sonoff 3.0 ZigBee, NeoCreator zur Visualisierung, Mediola 4+ Gateway für IR, InfluxDB & Grafana

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“