Ein kleines Codeproblemchen...FS20

Hallo

Jetzt bitte nich lachen, das ist ein kleines und recht übersichtliches Programm.:rolleyes:
Es soll nach Wärmebedarf die Heizung einschalten bzw. nachschalten.

Mein Problem:

Der Befehl

FS20_SwitchMode(54334,true);

funktioniert nicht, wenn das Script getriggert wird. Nicht funktionieren heißt in diesem Falle, die Variable wird zwar auf „true“ gesetzt und die LogMessage wird auch ausgegeben, nur der eigentliche Sendebefehl an das Modul bleibt aus.

Dieser Fehler tritt nicht auf, wenn ich das Script per Hand starte oder die Trigger-Variable per Hand ändere.
Hin und wieder denk ich, das Script will mich auf den Arm nehmen:o.

Bin für jeden Hinweis dankbar!
Bei Bedarf kann ich die anderen Scripte auch posten(Wärmebedarf&Heizung ausschalten).

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Gasheizung_schalten.ips.php
Trigger  : OnValue:Waermebedarf_vorhanden==true
Interval : 
*/
$heizdauer=15; //Gasheizung bleibt 15 min eingeschaltet

$t1=time()/60;  //aktuelle Zeit
$t2 =IPS_GetUpdatetime("GH_Modul_Kanal_4")/60;//letztes Update
$diff=$t1-$t2; //vergange Zeit seit letzer Schaltung

$nachschalt=$heizdauer-($heizdauer/2); //nach der hälfte der Zeit, kann nachgeschaltet werden
$zustand=GetValueBoolean("GH_Modul_Kanal_4"); //ist die Heizung gerade an oder aus?
if(($diff>$nachschalt) or ($zustand == false))
{
IPS_SetScriptTimer("Gasheizung_aus",$heizdauer*60);
IPS_LogMessage("Gasheizung-Script","Wärmeanfrage eingegangen, Gasheizung für weitere $heizdauer Minuten eingeschaltet!");
FS20_SwitchMode(54334,true);

}
else
{
IPS_LogMessage("Gasheizung-Script","Wärmeanfrage eingegangen, Gasheizung läuft bereits, es wird keine Verlängerung angefordert!");
}
?>

also das Problem ist grundlegender Natur. Ich habe den kompletten Code auskommentiert und nur den Schaltbefehl übrig gelassen.

Wenn der Sender „RunScript“ ist ,wird nicht geschaltet ist er aber „Execute“ also von Hand betätigt funktionierts. Wie kommt so ein Verhalten zustande?

30.09.2008 23:14:13.335 | DEBUG   | ExecuteThread ID: 976 | Executed, Ret: 1, Successful:True
30.09.2008 23:14:13.335 | DEBUG   | ExecuteThread ID: 976 | Executing Script: Gasheizung_an.ips.php ~ Sender: RunScript
30.09.2008 23:14:13.335 | DEBUG   | VariableManager      | Variable: GH_Modul_Kanal_4 (Boolean), Value: True
30.09.2008 23:14:13.335 | DEBUG   | ExecuteThread ID: 976 | Execution Result: 
30.09.2008 23:14:13.335 | DEBUG   | ExecuteThread ID: 976 | Executed, Ret: 1, Successful:True

in Gasheizung_an.ips.php befindet sich nur der Schaltbefehl

Nur so eine Idee. Grundsätzlich sollten beide Trigger ja das gleiche machen und zwar Deine Heizung einschalten. Aber vieleicht hängt es mit dem Script zusammen in dem Dein RunScript Befehl steht. z.B. vorher viele andere Schaltbefehle, manchmal ist die Schaltbegrenzung der FHZ dran schuld…

leider nicht,
das vorherige/ausführende Script berechnet nur anhand der Soll&Ist Werte der einzelnen Räume einen „globalen“ Wärmebedarf und startet je nachdem mein Heizung_schalten-Script oder eben nicht.

Habe nun festgestellt wenn ich 3 Schaltbefehle hintereinander setze dann kommt der 3te immer durch, der 2te hin und wieder.
Obwohl es funkmäßig recht ruhig bei mir zugeht, ist es so das der erste Schaltbefehl wirklich immer verloren geht. Ich denke das wird ein bug in der IPS-Software sein.

Hab mal ein Script erstellt welches hintereinanderweg einen Kanal nach dem anderen schaltet (am FS20 SM4). Es ist immer das gleiche Bild. Starte ich das per Hand, werden alle 4 Kanäle geschaltet. Starte ich es per Scriptaufruf bleiben immer 1-2 LED´s aus, meistens die ersten beiden.

Nunja mir bleibt wohl nichts anderes übrig als zähneknirschend immer 3 Schaltbefehle hintereinander rauszuschicken damit der letzte wenigstens das tut was er soll.
Ich hoffe einfach in der V2 ist die Geschichte dann gegessen :rolleyes:

Hi,

versuche mal etwas anderes. Setze vor dem Schaltbefehl ein Sleep(1000). Bei mir hat das oft geholfen. Woran der Fehler bei mir lag, habe ich nie herausgefunden. Es war aber anders als bei Dir immer in Scripten, in denen mehrere Geräte geschaltet wurden.

Ich wünsche einen schönen tag.

Christoph.