habe heute die webfront.info Domeseite, aus Interesse, in die IP-Symcon App eingebunden und sah das hier schon ein gewaltiger Unterschied ist zwischen Webbrowser und App. Wie kommt das zustande?
Was ich noch gesehen habe ist das auf der Startseite der App die Räume nicht nur als Menüpunkt angezeigt werden sondern gleich mit deren Inhalt. Was ich gerne hätte wäre eine Gruppierung von Variablen die auch in der App dargestellt werden. Da wenn ich eine Kategorie als Überobjekt nehme, springt die Kategorie in die Menüleiste. Wenn ich eine Variable als Überobjekt nehmen, werden die Variablen unterhalb nicht dargestellt.
Was noch sehr interessant war, war der Heitplan in der App, den ich im Webbrowser nicht finden konnte. Hier konnten Zeiten schon über zwei scroll Buttons eingetragen werden. Dazu konnte außerdem eine vordefinierte Temperatur ausgewählt werden. Wie geht das?
Danke. Habe alles gefunden. Dennoch habe ich noch ein Verständnisproblem.
Ich habe zwei Integer Variablen angelegt, eine für den Startzeitpunkt und eine für den Endzeitpunkt. Beiden haben das Profil „~UnixTimestampTime“. Jetzt setzte ich die beiden über das WebFront auf 12 und 13 Uhr z.B. In den Variablen steht jetzt 39600 und 43200. Wenn ich die beiden Variablenwerte jetzt durch 3600 dividiere kommt 11 und 12 raus. Nur was ist das für eine Zeitzone?
Weil UTC ist es nicht und Europe/Vienna ist es auch nicht, es ist ja Sommerzeit.
Output von timedatectl
Local time: Mon 2017-04-24 10:35:30 CEST
Universal time: Mon 2017-04-24 08:35:30 UTC
RTC time: Mon 2017-04-24 08:35:30
Time zone: Europe/Vienna (CEST, +0200)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Son 2017-03-26 01:59:59 CET
Son 2017-03-26 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Son 2017-10-29 02:59:59 CEST
Son 2017-10-29 02:00:00 CET
Ich baue mir einen Heizplan. Jeder Wochentag ist eine eigenen Kategorie. In der Tagskategorie sind Dummy Modul Instanzen. Diese enthalten zwei Integer Variablen mit dem „~UnixTimestampTime“ Profil, eben eine für den Startzeitpunkt und eine für den Endzeitpunkt.
Sieht so aus:
Mein Code sieht so aus:
<?
const WEEKDAYS = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
$dw = date("w", time());
// Name des aktuellen Wochentages
$dayName = WEEKDAYS[$dw];
if($heatplanDay = IPS_GetCategoryIDByName($dayName, $CONFIG["headcontrol"]["plan"])) {
// Alle Zeitspannen des aktuellen Tags (alle Dummy Modul Instanzen)
$timespans = IPS_GetChildrenIDs($heatplanDay);
// Sotiert alle Zeitspannen, anhand ihrer Position
$objOrders = array();
foreach ($timespans as $key => $row) {
$objOrders[$key] = IPS_GetObject($row)['ObjectPosition'];
}
array_multisort($objOrders, SORT_ASC, $timespans);
// Durchlafen aller Zeitspannen.
foreach($timespans as $timespan) {
// Hold die Id's von den Integer Variablen
$startVarId = IPS_GetVariableIDByName("Start", $timespan);
$endVarId = IPS_GetVariableIDByName("Ende", $timespan);
// Liest die aktuellen Werte der beiden Variablen aus.
$start = GetValueInteger($startVarId);
$end = GetValueInteger($endVarId);
// Sekunden des aktuellen Tags
$secondsOfDay = time() % (24 * 3600);
echo "Variable Start: " . $start . "
";
echo "Variable Ende: " . $end . "
";
echo "Seconds of Day: " . $secondsOfDay . "
";
echo "Start (GetValueFormatted): " . GetValueFormatted($startVarId) . "
";
echo "End (GetValueFormatted): " . GetValueFormatted($endVarId) . "
";
echo "-----------------------------------------
";
if($start <= $secondsOfDay && $secondsOfDay <= $end) {
$presence = true;
break;
}
}
}
Die Ausgabe vom Script ist folgende:
Variable Start: 46800
Variable Ende: 50400
Seconds of Day: 41862
Start (GetValueFormatted): 14:00:00
End (GetValueFormatted): 15:00:00
-----------------------------------------
Wo mein Problem jetzt liegt: Wenn ich den Inhalt der Start und Ende Variable durch 3600 Sekunden definiere kommt immer eine Stunde weniger raus als ich im WebFront eingestellt habe. Nur passt dann das if Statment nicht weil $secondsOfDay ist in UTC. Meine Frage ist jetzt, was ist das für eine Zeitzone für die beiden Integer Variablen. Weil UTC ist es nicht und Localtime ist es auch nicht weil Sommerzeit ist.
Was mir noch aufgefallen ist, dass GetValueFormatted immer die richtige Zeit zurück gibt, die die im WebFront eingestellt ist.
Was meinst du genau. Meinst du die Kalender Kern Instanz? Was ich bräuchte wäre eine Möglichkeit für jeden Tag, Anwesenheitzeiten über das WebFront und App einzutragen.