Die Sirene hat mehrere Instanzen, das ist systembedingt.
Ich hab mir dann noch eine Dummy-Instanz erstellt, wo ich alles zusammengefasst habe. In der Instanz kann ich die Melodie und die Lautsärke definieren. Ebenso einen „Auslösebutton“ zum testen.
Der Button hat ein Actionskript hinterlegt mit RequestAction auf eine Variable einer Sireneninstanz
Der Button funktioniert auch und die Sirene bellt mich an. Oder spielt die eingestellte Meldoie.
Was aber seit V6 nicht mehr funktioniert ist, wenn ich ein RequestAction auf diese Button Variable mache. Da bleibt diese stumm.
Zeile 9 bewirkt nichts. Auch keinen Fehler. Bei Zeile 10 tut sich was. Ob das jetzt sinnvoll ist, oder nicht, soll bitte nicht Thema werden. Mich würde nur interessieren ob so verschachtelte RequestAction ein Problem darstellen. Oder liegt es daran, dass sich der Wert der Buttonvariable nicht ändert und daher nichts gemacht wird?
EDIT:
Ja, es liegt an der nicht vorhandenen Wertänderung. Die Variable hat praktisch immer den Wert 0. Ändere ich den Wert auf 1 und starte dann das Skript mit RequestAction(ID, 0); dann wird das Actionskript auch ausgeführt. Ich fürchte das das möglicherweise nicht so gewollt ist, oder?
<?php
$sireneausloesergeraet=14576;
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
//RequestAction($sireneausloesergeraet, 2);
IPS_LogMessage("Button","Post war da");
Ich habe die RequestAction im Moment auskommentiert, da die Sieren in einem Zimmer liegt, wo gerade jemand (noch immer) schläft
Das folgende Skript startet (oder sollte) per RequestAction das Skript welches hinter dem Button liegt.
<?php
$zeitpunktletzteoeffnung=47414;
$sensorbriefkasten=36537;
$volume=18505;
$melodie=50716;
$sireneausloesergeraet=14576;
$sireneausloeserbutton=47403;
Global_IPS_Nachricht("Post","Die Post war da!");
Global_Log_Eintrag_erstellen("Hinweis","Zigbee","Die Post war da");
setvalue($zeitpunktletzteoeffnung,IPS_GetVariable($sensorbriefkasten)['VariableUpdated']);
//ECHO_Ankuendigung("Die Post war da!");
RequestAction($volume, 2);
RequestAction($melodie, 10);
IPS_Sleep(2000);
IPS_LogMessage("Ereignis","Post war da");
RequestAction($sireneausloeserbutton, 0);
//RequestAction($sireneausloesergeraet, 2);