dzvo
15. Dezember 2014 um 19:46
1
Hallo in die Runde,
nach vielem lesen und probieren komme ich leider nicht weiter.
Ich suche nach einer Möglichkeit die Startzeit meines täglichen Timers auszulesen. So das ich prüfen kann ob es „vor“ oder nach der „Weck Zeit“ ist … und daran weitere Scripte zu starten und Werte zuzuweisen (Dimmer Voreinstellungen).
Vielen Dank für die Anregungen,
herzlichst
Thomas
Bayaro
16. Dezember 2014 um 09:04
2
Guten Morgen!
Variante 1:
<?
$SkriptID = 12345; // Hier die ID des Skriptes, an dem der Timer hängt, eintragen (oder $IPS_SELF, wenn der Timer an diesem Skript hängt)
$TimerName = "ScriptTimer"; // Name des Timer - falls dieser geändert wurde beim Timer, muss er hier geändert werden
$timer = GetTimeRemaining($SkriptID);
$timer = $timer / 60;
$timer = intval($timer);
echo "Es sind ".$timer." Minuten bis zur nächsten Timer-Ausführung!";
function GetTimeRemaining($id)
{
$eid=@IPS_GetEventIDByName($TimerName, $id);
if($eid === false) {
return -1;
} else {
$e=IPS_GetEvent($eid);
if($e['NextRun'] == 0)
{
return -1;
} else {
return $e['NextRun'] - microtime(true);
}
}
}
?>
Die Funktion hat paresy mal veröffentlicht und steht auch hier: http://www.ip-symcon.de/service/dokumentation/vorgehensweisen/wie-kann-ich/
Variante 2:
<?
$EventID = 12345; // ID des Ereignis eintragen (also direkt die Timer-ID)
print_r(IPS_GetEvent($EventID));
?>
Grüße,
Chris
khge
16. Dezember 2014 um 12:33
3
Beschreibung hierzu siehe hier .
dzvo
16. Dezember 2014 um 21:02
4
Hallo,
danke für die Anregungen. Manch mal sieht man den Wald vor lauter Bäumen nicht.
Ich habe das nun so gelöst, vielleicht hilft es ja auch anderen…
Timer auslesen:
<?
$timerliste = array( 31433 /*[Scripte\Wecker\Tageswecker\Montag]*/,
50708 /*[Scripte\Wecker\Tageswecker\Dienstag]*/,
15107 /*[Scripte\Wecker\Tageswecker\Mittwoch]*/,
52110 /*[Scripte\Wecker\Tageswecker\Donnerstag]*/,
42234 /*[Scripte\Wecker\Tageswecker\Freitag]*/,
42334 /*[Scripte\Wecker\Tageswecker\Samstag]*/,
36617 /*[Scripte\Wecker\Tageswecker\Sonntag]*/
);
echo tageswecker($timerliste);
function tageswecker ($timerliste) {
foreach ( $timerliste as $timerheute) {
if ( date("D", time() ) == date("D", IPS_GetEvent($timerheute)["NextRun"]) ) {
$timer = date("H:i", IPS_GetEvent($timerheute)["NextRun"]);
return $timer;
}
}
}
?>
und die Dimmervorlelegung anhand der Weckzeiten angepasst.
<?
$id_daemmerungszahl = 59180 /*[Scripte\Astronomische Ereignisse\Dämmerungszahl\Dämmerungszahl]*/ ;
$id_helligkeitbwm = 11735 /*[Homematic Geräte\Küche\Küche Bewegungsmelder\BRIGHTNESS]*/ ;
$id_wecker_action = 56734 /*[Scripte\Wecker\Wecker Zustand]*/ ;
$id_led_dimmer_flur_kanal2 = 40412 /*[Homematic Geräte\Flur\Flur LED Weis\VIRTUAL_DIMMER\LEVEL]*/ ;
$id_led_dimmer_bad_kanal2 = 43240 /*[Homematic Geräte\Bad\Bad LED Weis\VIRTUAL_DIMMER\LEVEL]*/ ;
$timerliste = array( 31433 /*[Scripte\Wecker\Tageswecker\Montag]*/,
50708 /*[Scripte\Wecker\Tageswecker\Dienstag]*/,
15107 /*[Scripte\Wecker\Tageswecker\Mittwoch]*/,
52110 /*[Scripte\Wecker\Tageswecker\Donnerstag]*/,
42234 /*[Scripte\Wecker\Tageswecker\Freitag]*/,
42334 /*[Scripte\Wecker\Tageswecker\Samstag]*/,
36617 /*[Scripte\Wecker\Tageswecker\Sonntag]*/
);
$id_dimmwert = 16269 /*[Wohnung\Zeitsteuerung Vorbelegung Dimmer\Dimmwert]*/ ;
// -----------
if ((time() >= strtotime("00:00")) && (time() < strtotime(tageswecker($timerliste))) ) {
SetValueFloat($id_dimmwert, 0.4);
}
elseif ((time() >= strtotime(tageswecker($timerliste))) && (time() < strtotime("21:00")) ) {
SetValueFloat($id_dimmwert, 1);
}
elseif ( (time() >= strtotime("21:00")) && (time() < strtotime("24:00")) ) {
SetValueFloat($id_dimmwert, 0.6);
}
function HM_Dimmer_nachts($id_dimmer,$level) {
HM_WriteValueFloat(IPS_GetObject($id_dimmer)['ParentID'], "LEVEL", $level);
}
function tageswecker ($timerliste) {
foreach ( $timerliste as $timerheute) {
if ( date("D", time() ) == date("D", IPS_GetEvent($timerheute)["NextRun"]) ) {
$timer = date("H:i", IPS_GetEvent($timerheute)["NextRun"]);
return $timer;
}
}
}
?>
Danke und Grüße
Tom
Bayaro
16. Dezember 2014 um 22:17
5
Danke fürs posten deiner Skripte! Und schön zu hören, dass du es hinbekommen hast
Grüße,
Chris