Timer auslesen

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

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

Beschreibung hierzu siehe hier.

Hallo,

danke für die Anregungen. Manch mal sieht man den Wald vor lauter Bäumen nicht. :wink:

Ich habe das nun so gelöst, vielleicht hilft es ja auch anderen… :slight_smile:

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

Danke fürs posten deiner Skripte! Und schön zu hören, dass du es hinbekommen hast :slight_smile:

Grüße,
Chris