Verständnisfrage ?

Hallo Gemeinde,

folgendes möchte ich umsetzen :

„Schalter“ in WF namens „Automode“

Wenn der Schalter gedrückt ist „true“, soll ein Script alle Stunde einmal ausgeführt werden.

Wenn der Schalter auf „false“ steht soll das script nie ausgeführt werden.

Das ganze wird der „Urlaubsmodus“ meiner Heizung, abhängig der Aussentemperatur, die im „Urlaubsfall“ einmal alle stunde abgefragt wird.

Mein bescheidener Lösungsansatz :

<?

$temp = getvalue(25220 /*[Mein Haus\Terasse\Temperatur Terasse\Temperatur]*/);

If ($temp < 4.5)

   {
    HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Schütz\Heizung Manuell]*/, "STATE", true);
   }

If ($temp > 5.0)

   {
    HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Schütz\Heizung Manuell]*/, "STATE", false);
   }




?>

Dann habe ich ein „zyklisches Ereignis“ an das Script geheftet, was dieses einmal alle stunde ausführt.

Nun wollte ich versuchen, das der „Schalter“ im WF das Ereignis „aktiv“ oder eben „nicht aktiv“ setzt.

Aber mal ehrlich…ich denke doch wieder total verquert, weil ich einen anderen Lösungsweg nicht kenne…

Habt ihr einen „einfachen“ Tip für mich ?

Vielen Dank
Sascha

Hallo Sascha,

mach das mit IPS_ScriptTimer und Trigger auf Variablenänderung von „Schalter“ in WF namens „Automode“.

<?
$auto = getvalue("ID WF-Schalter");
$temp = getvalue(25220 /*[Mein Haus\Terasse\Temperatur Terasse\Temperatur]*/);


if $auto
{
	If ($temp < 4.5)
   {HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Schütz\Heizung Manuell]*/, "STATE", true);}
	If ($temp > 5.0)
   {HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Schütz\Heizung Manuell]*/, "STATE", false);}
   
IPS_SetScriptTimer($IPS_SELF, 3600);
}
else
{IPS_SetScriptTimer($IPS_SELF, 0);}
?>

Perfekt :slight_smile:

So sieht das schon „klarer“ aus :slight_smile:

Vielen Dank, das probier ich gleich mal

LG
Sascha

Leider gibt es einen Fehler in Line 8…

und erschwerend kommt hinzu, das ich ihn nicht finde :slight_smile:

<?


$auto = getvalue(22737 /*[Mein Haus\Heizung Automode\Automode]*/);
$temp = getvalue(25220 /*[Mein Haus\Terasse\Temperatur Terasse\Temperatur]*/);


if $auto
	{
    If ($temp < 4.5)
   {HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Manuell]*/, "STATE", true);}
    If ($temp > 5.0)
   {HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Manuell]*/, "STATE", false);}

IPS_SetScriptTimer($IPS_SELF, 20);
}
else
{IPS_SetScriptTimer($IPS_SELF, 0);}

?>

LG
Sascha

Was bei dir Line 8 ist, weiss ich zwar nicht genau, weil du das Format anders übernommen hast, aber es handelt sich wahrscheinlich um $auto, was ich vergessen habe, in Klammern zu setzen.

Probier’s mal so:

<?
$auto = getvalue(22737 /*[Mein Haus\Heizung Automode\Automode]*/);
$temp = getvalue(25220 /*[Mein Haus\Terasse\Temperatur Terasse\Temperatur]*/);


if ($auto)
    {
    If ($temp < 4.5)
   {HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Manuell]*/, "STATE", true);}
    If ($temp > 5.0)
   {HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Manuell]*/, "STATE", false);}

IPS_SetScriptTimer($IPS_SELF, 20);
}
else
{IPS_SetScriptTimer($IPS_SELF, 0);}
?> 

gibs zu, das war nur ein Test für mich :slight_smile:

leider „schaltet“ der schalter in WF noch nicht…

brauche ich da diese „ips = sender“ line ?

LG und vielen dank fürs durchhalten :slight_smile:
Sascha

Ja, ich dachte, das hattest du schon… http://www.ip-symcon.de/forum/f56/variablen-ueber-webfront-veraendern-12298/

ich hab das mal so gebastelt:

<?
if($IPS_SENDER == "WebFront") // wenn Sender ist Webfornt
{
   SetValue($IPS_VARIABLE, $IPS_VALUE); // Variable in Webfront umschalten

	


$temp = getvalue(25220 /*[Mein Haus\Terasse\Temperatur Terasse\Temperatur]*/);


if($IPS_VALUE)
	{
    If ($temp < 4.5)
   {HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Manuell]*/, "STATE", true);}
    If ($temp > 5.0)
   {HM_WriteValueBoolean(31635 /*[Mein Haus\Heizung Manuell]*/, "STATE", false);}

IPS_SetScriptTimer($IPS_SELF, 20);
}
else
{IPS_SetScriptTimer($IPS_SELF, 0);}
}
?>

wenn ich den Schalter ausschalte, wird der scripttimer inaktiv…also auch ne lösung. Oder wäre es anständiger noch ne if abfrage für Schalter „false“ zu basteln, um damit in einen definierten zustand vom scripttimer von 0 sekunden zu gehen ?

Vielen Dank
Sascha

Nö, denn mit $IPS_VALUE hast du ja dein Boolean.
Sollte passen. :wink:

ok, Danke :slight_smile:

War nur etwas stutzig, das der timer jetzt deaktiviert, statt auf 0 gesetzt wird…sind aber wohl 2 Wege nach Rom.

LG
Sascha