Schnell kommt der Wunsch auf, abhängig von der Tageszeit Programme auszuführen. Aufgrund der Positionsangaben die du bei der Installation deiner CCU2 eingetragen hast, ermittelt dieses Script die entsprechende Tageszeit. Unterschieden wird in: Nacht, frühmorgens, Morgengrauen, Vormittag, Mittag, Nachmittag, Dämmerung und Abend.
Das Script habe ich ebenfalls im HomeMatic-Forum gefunden, Milan01 hat dort eine Frage gestellt und gleich dazu die Antwort gegeben. 😉
Ich gehe davon aus, dass du CUxD bereits installierst hast! Falls dies noch nicht geschehen ist, findest du hier eine Anleitung.
Hier in aller Kürze, wie du das Script zum Laufen bringst:
- Eine Systemvariable mit dem Namen „Tageszeit“ vom Typ Werteliste erstellen. Die Werte sind: Nacht; frühmorgens; Morgengrauen; Vormittag; Mittag; Nachmittag; Dämmerung; Abend;
- Ein Programm Tageszeiten (Achtung: Systemvariable und Programm sollten eindeutige Namen bekommen!) erstellen und das Script an entsprechende Stelle kopieren.
! Tageszeit (homematic-forum.de, Milan01) - Tageszeit ermitteln !Stand 09.03.2016 http://homematic-forum.de/forum/viewtopic.php?f=26&t=11321 !zuerst folgende Systemvariable anlegen !Achtung: exakte Schreibweise mit Copy&Paste übernehmen ! !Tageszeit Zeichenkette ! Tageszeiten ! Tagesbeginn - 2 <04.00 Nacht ! Tagesbeginn - 2 <04.00 Tagesbeginn - 1 frühmorgens ! Tagesbeginn - 1 Tagesbeginn Morgengrauen ! Tagesbeginn Mittag - 1 Vormittag ! Mittag Mittag + 1 Mittag ! Mittag + 1 Tagesende Nachmittag ! Tagesende Tagesende + 1 Dämmerung ! Tagesende + 1 Tagesende + 2 >2200 Abend ! Tagesende + 2 >2200 Nacht real c_zeit = (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger(); real c_tagesbeginn = (0.01 * system.SunriseTime("%M").ToInteger()) + system.SunriseTime("%H").ToInteger(); real c_tagesende = (0.01 * system.SunsetTime("%M").ToInteger()) + system.SunsetTime("%H").ToInteger(); real c_mittag = 0.5 * (c_tagesbeginn + c_tagesende); integer v_tageszeit = 0; ! Nacht if ((c_zeit < c_tagesende + 2) || (c_zeit < 22.00)) { v_tageszeit = 7; ! Abend } if (c_zeit < c_tagesende + 1) { v_tageszeit = 6; ! Abenddaemmerung } if (c_zeit < c_tagesende) { v_tageszeit = 5; ! Nachmittag } if (c_zeit < c_mittag + 1) { v_tageszeit = 4; ! Mittag } if (c_zeit < c_mittag - 1) { v_tageszeit = 3; ! Vormittag } if (c_zeit < c_tagesbeginn) { v_tageszeit = 2; ! Morgengrauen } if (c_zeit < c_tagesbeginn - 1) { v_tageszeit = 1; ! fruemorgens; } if ((c_zeit < c_tagesbeginn - 2) && (c_zeit < 04.00)) { v_tageszeit = 0; ! Nacht } object s_tageszeit = dom.GetObject("Tageszeit"); if (s_tageszeit.Value() != v_tageszeit) { s_tageszeit.State(v_tageszeit); }
Die aktuelle Tageszeit kannst du dir sehr schön auf der Startseite in der rechten Leiste unter „Systeminformationen“ einbinden.
hallo ich wollte fragen wie man die tageszeit bei der systeminformation einbindet
gruss andy
hat sich erledigt. habs selber gefunden
Hallo Andreas,
wenn man selbst auf die Lösung kommt, ist das doch die schönste Erfahrung. Viel Spaß noch beim Tüfteln und beim Ausbau deiner HomeMatic-Installation.
Gruß Erhard
P.S.: Für alle die weiterhin an der Antwort auf die Frage von Andreas interessiert sind und die ermittelte Tageszeit rechts auf der CCU2-Startseite anzeigen möchten:
– [Einstellungen]/[Benutzerverwaltung]
– Beim Benutzer (meist Admin) die Aktion [Bearbeiten] aufrufen
– Unter [Startseite/Systeminformationen] die Aktion [Systemvariable hinzufügen] aufrufen
– Die Systemvariable [Tageszeit] suchen und die Aktion [Auswahl] aufrufen
– Mit [zurück] das Fenster schliessen und anschliessen mit [Startseite] die hinzugefügte Systemvariabel überprüfen.