Hier ein Beispiel mit einem Scrip1 das die erste Temperaturspanne überwacht und anschließend nach einer Pause das zweite Script startet. Sollte so funktionieren, kann sicher noch effizienter und komfortabler programmiert werden. Zeiten und Temperaturen musst du anpassen. Vorschlag: Lass es einfach mal Testweise laufen in dem du nur deinen aktuellen Sensor verwendest und als Aktor einfach eine Testvariable nimmst. Als Anlage zum Verständnis noch die von mir angelegten Variablen und Timer.
Script 1, muss manuell gestarte werden.
<?
// Holt den Temperaturwert von Sensor in Maische
#$temperatur_maische = GetValueFloat(55135 /*[Objekt #55135 existiert nicht]*/);
$temperatur_maische = GetValue(42596 /*[Test-Live\urs\Testtemperarur]*/); #Testtemperatur, manuell ändern
IPS_SetScriptTimer ($IPS_SELF, 5); // 5 Sek. aktiv halten
if ($temperatur_maische > 10 and $temperatur_maische <=30)
{
#TMEX_F3A_SetPin(25864 /*[Objekt #25864 existiert nicht]*/, 0, true); // Brenner einschalten
#TMEX_F3A_SetPin(39013 /*[Objekt #39013 existiert nicht]*/, 1, true); // Rührwerk einschalten
setvalue(15815 /*[Test-Live\urs\Brenner]*/,true); #Test-Gerät einschalten
}
if ($temperatur_maische > 30)
{
#TMEX_F3A_SetPin(25864 /*[Objekt #25864 existiert nicht]*/, 0, false); // Brenner ausschalten
#TMEX_F3A_SetPin(39013 /*[Objekt #39013 existiert nicht]*/, 1, false); // Rührwerk ausschalten
setvalue(15815 /*[Test-Live\urs\Brenner]*/,false); #Test-Gerät ausschalten
$beginnpause1 = time();
$endepause1 = $beginnpause1+75; #Pausezeit(in Sek.) zu Pausebeginn addieren
$H = intval(strftime ( '%H', $endepause1 )); #Stunde extrahieren und umwandeln
$M = intval(strftime ( '%M', $endepause1 )); #Minute extrahieren und umwandeln
IPS_SetEventCyclicTimeFrom(46185 /*[Test-Live\urs\Script2\]*/, $H, $M,0); # Timerzeit(Ende der Pause) setzen
IPS_SetEventActive(46185 /*[Test-Live\urs\Script2\]*/, true); #Timer für Script2 aktivieren
IPS_SetScriptTimer($IPS_SELF, 0); #Script1 anhalten
}
# Zeiten anzeigen für Test
#print $H.":".$M;
#print "
";
#print $beginnpause1. "
"; #Pausbeginn1 Zeitstempel
#print "Beginn Pause1 : ".strftime ( '%A, %d-%m-%Y %H:%M', $beginnpause1 ). " Uhr"; #Pausebeginn1 in leserlichem Format
#print "
";
#print $endepause1. "
"; #Pausbeginn1 Zeitstempel
#print " Ende Pause1 : ".strftime ( '%A, %d-%m-%Y %H:%M', $endepause1 ). " Uhr"; #Pausebeginn1 in leserlichem Format
?>
Script 2, wird von Script 1 gestartet und beendet sich nach errreichen der eingestellten Temperatur.
<?
// Holt den Temperaturwert von Sensor in Maische
#$temperatur_maische = GetValueFloat(55135 /*[Objekt #55135 existiert nicht]*/);
$temperatur_maische = GetValue(42596 /*[Test-Live\urs\Testtemperarur]*/); #Testtemperatur, manuell ändern
IPS_SetScriptTimer ($IPS_SELF, 5); // 5 Sek. aktiv halten
if ($temperatur_maische > 25 and $temperatur_maische <=55)
{
#TMEX_F3A_SetPin(25864 /*[Objekt #25864 existiert nicht]*/, 0, true); // Brenner einschalten
#TMEX_F3A_SetPin(39013 /*[Objekt #39013 existiert nicht]*/, 1, true); // Rührwerk einschalten
setvalue(15815 /*[Test-Live\urs\Brenner]*/,true); #Test-Gerät einschalten
}
if ($temperatur_maische > 55)
{
#TMEX_F3A_SetPin(25864 /*[Objekt #25864 existiert nicht]*/, 0, false); // Brenner ausschalten
#TMEX_F3A_SetPin(39013 /*[Objekt #39013 existiert nicht]*/, 1, false); // Rührwerk ausschalten
setvalue(15815 /*[Test-Live\urs\Brenner]*/,false); #Test-Gerät ausschalten
$beginnpause2 = time();
$endepause2 = $beginnpause2+65; #Pausezeit(in Sek.) zu Pausebeginn addieren
IPS_SetEventActive(46185 /*[Test-Live\urs\Script2\]*/, false);# Timer für Script2 deaktivieren
IPS_SetScriptTimer($IPS_SELF, 0); #Script2 anhalten
}
# Zeiten anzeigen für Test
#print $beginnpause2. "
"; #Pausbeginn1 Zeitstempel
#print "Beginn Pause1 : ".strftime ( '%A, %d-%m-%Y %H:%M', $beginnpause2 ). " Uhr"; #Pausebeginn1 in leserlichem Format
#print "
";
#print $endepause2. "
"; #Pausbeginn1 Zeitstempel
#print " Ende Pause1 : ".strftime ( '%A, %d-%m-%Y %H:%M', $endepause2 ). " Uhr"; #Pausebeginn1 in leserlichem Format
?>
