ich habe ein kleines Problem mit ein Skript, es schaltet mein Heizstab im Speicher auf eine Ist Temperatur die ich aber nur brauche wenn ich auch im Bad bin.
Darum habe ich es so gemacht das, das Skript durch ein Bewegungsmelder startet.
So bekomme ich den Heizstab EIN.
Wenn ich aber gleich wieder aus den Bad gehe kommt keine Abfrage mehr um die IST mit Soll Temperatur zu vergleichen,
darum habe ich ein Skript timer mit eingebaut der das Skript alle 30s schaltet.
Klappt auch alles super nur geht der Aktor von eine Timer Event auf kommende 30s auf false bist er gleich wieder true schaltet ( also aktor geht alle 30s an aus bis SOLL Temperatur erreicht ist)
hat einer ein Schimmer was da falsch ist ??
<?
$Bewegung = GetValueBoolean (29638 /*[CCU Homematic Devices\Bad\Bewegungsmelder\Bewegungsmelder Bad\MOTION]*/);
$Soll = GetValueInteger (35066 /*[Wärmepumpe\Speicher-Heizstab\Soll-Temp-Speicher]*/);
$Ist = GetValueFloat (25969 /*[1 Wire\Speicherladung 60%\Temperatur]*/);
$VLW = GetValueFloat (47295 /*[1 Wire\Vorlauf nach Wärmetauscher\Temperatur]*/);
$time = date("H:i");
$Wtimer = GetValueBoolean (52976 /*[Wärmepumpe\Speicher-Heizstab\Wochentimer]*/);
if (($Ist < $Soll) && ($VLW < 43.0) && ($Wtimer == true))
{
HM_WriteValueBoolean(25056 /*[CCU Homematic Devices\Pool\Pool 3 Wege/Filter_Heizstab-Heizung\Pool-3 Wege/heizstab speicher]*/, "STATE", true);
IPS_SetScriptTimer($IPS_SELF,30); // wenn ich "if" erfüllt ist, das skript alle 30s abgefragen bis 2te "if" erfüllt ist dann timer 0
}
if ($Ist >= $Soll)
{
HM_WriteValueBoolean(25056 /*[CCU Homematic Devices\Pool\Pool 3 Wege/Filter_Heizstab-Heizung\Pool-3 Wege/heizstab speicher]*/, "STATE", false);
IPS_SetScriptTimer($IPS_SELF,0);
}
echo $Soll
?>
Weiss nicht was den Aktor ausschaltet, probier mal ein return:
if (($Ist < $Soll) && ($VLW < 43.0) && ($Wtimer == true))
{
HM_WriteValueBoolean(25056 /*[CCU Homematic Devices\Pool\Pool 3 Wege/Filter_Heizstab-Heizung\Pool-3 Wege/heizstab speicher]*/, "STATE", true);
IPS_SetScriptTimer($IPS_SELF,30); // wenn ich "if" erfüllt ist, das skript alle 30s abgefragen bis 2te "if" erfüllt ist dann timer 0
return; // <===== hier
}