Scripte zusammen hängen

Denke auch, dass Du hier mal vernünftig / vollständig erklären solltest, was wie ablaufen soll und nicht nur irgendwelche Brocken … „und da noch 20 min.“ …, wenn Du Hilfe haben möchtest. Wenn ich mir allein das obige Programm anschaue, bin ich nicht der Überzeugung, dass Du „auf dem richtigen Weg“ bist. Allein schon der letzte Skripttimer macht in dieser Form keinen Sinn, da er nicht steuerbar ist.

Die Abläufe werden auch keine Geheimnisse sein, von dem her … :rolleyes:

Gruß
Bruno

was muss ich berücksichtigen, wenn ich nach meinem obigen Script eine zeitliche, temperaturüberwachte Pause einlegen möchte. Diese sollte „sagen wir mal“ 45 Minuten dauern…

So ganz grob(immer noch in Unkenntnis was genau du machen möchtest):

[ul]
[li]Bei Erreichen der gewünschten Temperatur die Zeit auslesen.[/li][li]Zu dieser Zeit 45 min. dazu addieren[/li][li]Mit der neu errechneten Zeit einen Timer füttern der wiederum das nächste Scipt startet.[/li][/ul]

Also ganz so wie du es auch manuell machst. Beim erreichen der Temperatur auf die Uhr schauen, etwas schalten, 45 min. dazua addieren und dann wieder etwas schalten.

OK?

So ganz grob(immer noch in Unkenntnis was genau du machen möchtest):

hallo zusammen

ich finde, ich mache kein Geheimnis aus dem was ich machen will.

Hardware:
Kochkessel 250 Liter, elektrisch beheitz, werden gesteuert über 1Wire, jedoch manuel, wie kaha auch schon heraus gefunden hat.„über verschiedene kleine Scripe“
Ja diese gehen, ob sinnvoll geschrieben, dass ist ein anderes Thema.

in der Produktion von Tee oder Sirup mit " Holunderblühten oder Zitronengras, ist die Temperatur sehr wichtig, zu heiss wird alles sehr bitter.

Nun will ich

Bei Erreichen der gewünschten Temperatur die Zeit auslesen.
Zu dieser Zeit 45 min. dazu addieren
Mit der neu errechneten Zeit einen "Timer" füttern der wiederum das nächste Scipt startet.

Bei Erreichen der gewünschten Temperatur die Zeit auslesen.
Zu dieser Zeit 30 min. dazu addieren
und das Script beendet

Beginnend mit dem 1ten Script

 <?
// Holt den Temperaturwert von Sensor in Maische
$temperatur_maische = GetValueFloat(55135 /*[Temperaturfühler\Maische Temperatur]*/);
$status = false;

if ($temperatur_maische > 10 and $temperatur_maische <=30)
{
$status = true;
}

TMEX_F3A_SetPin(25864 /*[Brenner]*/, 0, $status);  // Brenner schalten

IPS_SetScriptTimer ($IPS_SELF, 5); // 5 Sek. aktiv halten

?> 

Ob ich den IPS_SetScriptTimer dann noch brauche, weiss ich natürlich auch nicht.

Rezept:

1te Temperatur bis max 30°, da kommt der Holunder oder das Zitronengras dazu.
Pause 45 Minuten, dann kommt alles wieder raus und der Zucker kommt dazu.
2te Temperatur bis max 55°
Pause 30 Minuten, in dieser Zeit kommen noch Geschmacksverstärker dazu (sorry, ist aber so).

Fertig

Wie gesagt, was muss ich berücksichtigen im Bezug auf diese Pause von 45 Minuten?

Gruss Urs

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

?>

Objekte.JPG

Hallo KH

Das sieht ja mega aus, bin leider noch nicht zum Testen gekommen, jetzt aber, müssen das 2 Scripte sein.
Kann man das nicht in eines zusammen packen, ich habe etwa 20 Rezepte, diese müsste ich ja sonst einzel auseiander nehmen und für jeden Step ein eigenes Script schreiben.

Gruss Urs