Programm zu bestimmter Uhrzeit in Systemvariablen starten

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

XBiT
Beiträge: 127
Registriert: 14.12.2011, 20:48
Wohnort: nähe Erfurt
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Programm zu bestimmter Uhrzeit in Systemvariablen starten

Beitrag von XBiT » 10.07.2012, 09:51

Hallo und guten Tag.

Ich benötige eure Hilfe, ich habe in einer Systemvariablen eine Uhrzeit abgelegt (jeden Tag eine andere) und möchte gern ein Programm Starten wenn die aktuelle Zeit und die der Systemvariablen gleich sind.
Leider will mir das nicht gelingen. :cry:

Es wird sicher nur über ein Script gehen bin da aber noch nicht so fit drin. :shock:

MfG XBiT

Goglo
Beiträge: 610
Registriert: 14.04.2012, 18:34
Danksagung erhalten: 1 Mal

Re: Programm zu bestimmter Uhrzeit in Systemvariablen starte

Beitrag von Goglo » 20.07.2012, 23:39

Du brauchst ein regelmäßig - also alle paar Minuten - laufendes Programm, welches den Wert der Systemvariablen abfragt, mit der aktuellen Uhrzeit vergleicht und dann irgendwas macht. Hier mal ein bisschen Code für den Uhrzeitvergleich - in der Systemvariablen "Weckzeit" vom Typ Zeichenkette wird sowas wie "20:17" erwartet:

Code: Alles auswählen

string zeit;
integer std;
integer min;
integer h;
integer m;
boolean zeitok = false;

if(dom.GetObject("Weckzeit")){
  zeit = dom.GetObject("Weckzeit").Value();
! Zeitformat prüfen
  std = zeit.Substr(0,2).ToInteger();
  min = zeit.Substr(3,2).ToInteger();
  if(std && min){
    if((zeit.Substr(2,1) == ":") && (std < 24) && (min < 60)){
      zeitok =true;
      h = system.Date("%H").ToInteger();
      m = system.Date("%M").ToInteger();
    }
  }
!Zeit ist syntaktisch korrekt, also prüfen, ob die Weckzeit erreicht ist
  if(zeitok){
    if((h > std) || ((h == std) && (m >= min))){
      WriteLine("Gehtlos!");
    }
  }
  else{ 
    WriteLine("Ungültige Weckzeit")
  }
}
WriteLine("___fertig___");
83 Kanäle in 50 Geräten:
3x HM-LC-Sw1-Pl, 1x HM-WDS10-TH-O, 5x HM-PB-4-WM, 3x HM-PB-2-WM, 3x HM-LC-Dim1T-FM, 2x HM-Sec-SC, 4x HM-Sec-RHS, 5x HM-CC-VD, 4x HM-CC-TC, 5x HM-LC-Sw1-FM, 2x HM-Sec-MDIR, 1x HM-WDS30-T-O, 1x HM-LC-Sw1-Pl-2, 2x HM-PB-2-WM55, 1x HM-LC-Dim1L-CV, 1x HM-CCU-1, 1x HM-PBI-4-FM, 1x HM-LC-Dim1L-Pl-2, 1x HM-LC-Dim1T-CV, 1x HM-LC-Dim1L-Pl, 1x HM-LC-Sw2-FM, 1x HM-LC-Sw1-SM, 1x HM-Sec-WDS

82 Kanäle in 43 Geräten:
1x HM-PB-2-WM, 2x HM-LC-Bl1-FM, 3x HM-LC-Bl1PBU-FM, 3x HM-PB-2-WM55, 2x HM-PB-4-WM, 9x HM-CC-VD, 8x HM-CC-TC, 2x HM-LC-Sw2-FM, 1x HM-WDS10-TH-O, 1x HM-CCU-1, 1x HM-Sen-MDIR-O, 4x HM-LC-Sw1-FM, 2x HM-SwI-3-FM, 1x HM-LC-Sw4-SM, 1x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-WDS30-T-O

XBiT
Beiträge: 127
Registriert: 14.12.2011, 20:48
Wohnort: nähe Erfurt
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Programm zu bestimmter Uhrzeit in Systemvariablen starte

Beitrag von XBiT » 21.07.2012, 07:39

Guten Tag.

1000 Dank Goglo werde heute Nachmittag das Script verwenden und testen, aber von der Beschreibung ist es das was ich brauch. :D

MfG
XBiT

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Programm zu bestimmter Uhrzeit in Systemvariablen starte

Beitrag von buempi » 21.07.2012, 08:01

Hallo zusammen

Das Problem dürfte aber noch sein, dass "Gehtlos" nun bis Mitternacht bei jedem Ablauf des Skripts ausgeführt wird, also - wie vorgeschlagen - alle paar Minuten. - Das müsste man noch abfangen, indem man eine zweite Variable "HeuteErledigt" auf true setzt, diese bei jedem Durchgang am Anfang des Skripts abfrägt und bei Tageswechsel wieder umschaltet.

Viele Grüsse
Bümpi

Goglo
Beiträge: 610
Registriert: 14.04.2012, 18:34
Danksagung erhalten: 1 Mal

Re: Programm zu bestimmter Uhrzeit in Systemvariablen starte

Beitrag von Goglo » 21.07.2012, 09:38

Oh ja, Buempi, das stimmt. Mein Anwendung des Skripts ist das morgendliche Einschalten der Espressomaschine und langsames Hochdimmen des Lichts im Schlafzimmer. Das soll nur passieren, wenn eine Systemvariable "Wecker" wahr ist. Die muss noch bei "gehtlos" auf "falsch" gesetzt werden.
83 Kanäle in 50 Geräten:
3x HM-LC-Sw1-Pl, 1x HM-WDS10-TH-O, 5x HM-PB-4-WM, 3x HM-PB-2-WM, 3x HM-LC-Dim1T-FM, 2x HM-Sec-SC, 4x HM-Sec-RHS, 5x HM-CC-VD, 4x HM-CC-TC, 5x HM-LC-Sw1-FM, 2x HM-Sec-MDIR, 1x HM-WDS30-T-O, 1x HM-LC-Sw1-Pl-2, 2x HM-PB-2-WM55, 1x HM-LC-Dim1L-CV, 1x HM-CCU-1, 1x HM-PBI-4-FM, 1x HM-LC-Dim1L-Pl-2, 1x HM-LC-Dim1T-CV, 1x HM-LC-Dim1L-Pl, 1x HM-LC-Sw2-FM, 1x HM-LC-Sw1-SM, 1x HM-Sec-WDS

82 Kanäle in 43 Geräten:
1x HM-PB-2-WM, 2x HM-LC-Bl1-FM, 3x HM-LC-Bl1PBU-FM, 3x HM-PB-2-WM55, 2x HM-PB-4-WM, 9x HM-CC-VD, 8x HM-CC-TC, 2x HM-LC-Sw2-FM, 1x HM-WDS10-TH-O, 1x HM-CCU-1, 1x HM-Sen-MDIR-O, 4x HM-LC-Sw1-FM, 2x HM-SwI-3-FM, 1x HM-LC-Sw4-SM, 1x HM-LC-Sw1-Pl-2, 1x HM-PBI-4-FM, 1x HM-WDS30-T-O

dondaik
Beiträge: 12926
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1602 Mal
Danksagung erhalten: 222 Mal

Re: Programm zu bestimmter Uhrzeit in Systemvariablen starte

Beitrag von dondaik » 21.07.2012, 10:36

ok, wecken wollte ich auch per ccu nur habe ich einen anderen weg genommen, da schon einige "systemvariablen" sprich fs20 zeitschalter da waren spiele ich die weckzeit einfach in die ccu in form eines systemvariablen-triggers ein.. den rest macht dann die ccu ;-) .
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

2t-elefant
Beiträge: 34
Registriert: 02.10.2017, 13:53

Programm zu bestimmter Uhrzeit in Systemvariablen starten

Beitrag von 2t-elefant » 21.03.2019, 19:52

Hallo zusammen,
ich habe gerade das anliegende Skript von Goglo gefunden, welches eine SV mit der aktuellen Uhrzeit abgleicht und sofern Uhrzeit erreicht oder überschritten ist, einen Hinweis gibt (als writeline). Soweit so gut.
Kann mann das ganze erweitern / ändern, dass genau diese Uhrzeit (nur = / nicht größer) abgefragt wird. Beispiel um 19.41 Uhr soll ein anderes Programm gestartet werden (Beispiel "Programm 123") oder eine SV wird geändert (z. B. "Start")...

Danke für die Hilfe & Danke an den Skriptschreiber Goglo !!

Gruß, Jörg !

Hier das Skript:

Code: Alles auswählen

string zeit;
integer std;
integer min;
integer h;
integer m;
boolean zeitok = false;

if(dom.GetObject("Weckzeit")){
  zeit = dom.GetObject("Weckzeit").Value();
! Zeitformat prüfen
  std = zeit.Substr(0,2).ToInteger();
  min = zeit.Substr(3,2).ToInteger();
  if(std && min){
    if((zeit.Substr(2,1) == ":") && (std < 24) && (min < 60)){
      zeitok =true;
      h = system.Date("%H").ToInteger();
      m = system.Date("%M").ToInteger();
    }
  }
!Zeit ist syntaktisch korrekt, also prüfen, ob die Weckzeit erreicht ist
  if(zeitok){
    if((h > std) || ((h == std) && (m >= min))){
      WriteLine("Gehtlos!");
    }
  }
  else{ 
    WriteLine("Ungültige Weckzeit")
  }
}
WriteLine("___fertig___");
Zuletzt geändert von alchy am 21.03.2019, 20:23, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

2t-elefant
Beiträge: 34
Registriert: 02.10.2017, 13:53

Programm zu bestimmter Uhrzeit in Systemvariablen starten

Beitrag von 2t-elefant » 21.03.2019, 20:27

Hallo zusammen,
ich habe gerade das anliegende Skript von Goglo gefunden, welches eine SV mit der aktuellen Uhrzeit abgleicht und sofern Uhrzeit erreicht oder überschritten ist, einen Hinweis gibt (als writeline). Soweit so gut.
Kann mann das ganze erweitern / ändern, dass genau diese Uhrzeit (nur = / nicht größer) abgefragt wird. Beispiel um 19.41 Uhr soll z. B. die SV "Jalousiestart" auf z. B. Start geändert (ansonsten Stop). Wenn nicht 19.41 dann soll die SV Jalousiestart auf "Stop" stehen.

Danke für die Hilfe & Danke an den Skriptschreiber Goglo !!

Gruß, Jörg !

Hier das Skript:

Code: Alles auswählen

string zeit;
integer std;
integer min;
integer h;
integer m;
boolean zeitok = false;

if(dom.GetObject("Weckzeit")){
zeit = dom.GetObject("Weckzeit").Value();
! Zeitformat prüfen
std = zeit.Substr(0,2).ToInteger();
min = zeit.Substr(3,2).ToInteger();
if(std && min){
if((zeit.Substr(2,1) == ":") && (std < 24) && (min < 60)){
zeitok =true;
h = system.Date("%H").ToInteger();
m = system.Date("%M").ToInteger();
}
}
!Zeit ist syntaktisch korrekt, also prüfen, ob die Weckzeit erreicht ist
if(zeitok){
if((h > std) || ((h == std) && (m >= min))){
WriteLine("Gehtlos!");
}
}
else{ 
WriteLine("Ungültige Weckzeit")
}
}
WriteLine("___fertig___");
Zuletzt geändert von alchy am 21.03.2019, 20:52, insgesamt 2-mal geändert.
Grund: Code in Codetags & Threads zusammengeführt & Titel angepasst

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

Re: Programm zu bestimmter Uhrzeit in Systemvariablen starten

Beitrag von alchy » 21.03.2019, 20:54

Kannst du mir mal verraten, warum du einen neuen Thread eröffnest, wenn du hier exakt dasselbe schreibst?

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.

2t-elefant
Beiträge: 34
Registriert: 02.10.2017, 13:53

Re: Programm zu bestimmter Uhrzeit in Systemvariablen starten

Beitrag von 2t-elefant » 21.03.2019, 20:55

ich wusste nicht ob das gelesen wird.
sorry, kann ich das löschen?

Antworten

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