Alarmanlage mit Geofancy steuern

Das Skript wird aufgerufen, das erste was geprüft wird ist wie das Skript aufgerufen worden ist. Falls es ein Timer war wird das Gerät ausgeschaltet und der Timer ausgestellt. Falls es kein Timer war wird das Gerät eingeschaltet und der Timer aktiviert der das gleiche Skript dann nach X Sekunden wieder aufruft.

aber so ist das doch dann nicht richtig oder?

<?

$alarmanlage = GetValue(49756 /*[Alarmanlage\Alarmanlage]*/);
$wohnzimmerlampe = 25940 /*[Geräte\Wohnzimmer\St-Stehlampe_Wohnzimmer\STATE]*/;
$Sirene = 10355 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer\STATE]*/;

if($alarmanlage == true)
{

// Piezzo anschalten und Push schicken

HM_WriteValueBoolean(35130 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer]*/, "STATE", true);


}  

if($_IPS['SENDER'] == "TimerEvent")
{
    //Aus Befehl
    HM_WriteValueBoolean(35130 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer]*/, "STATE", false); 
 
    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
} else {
    //An Befehl
    HM_WriteValueBoolean(35130 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer]*/, "STATE", true); 
 
    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 300);
}  
 
?>

Wie wird denn das Skript genau aufgerufen auf welche Art und Weise?

Es macht Sinn wenn das Skript auf unterschiedliche Arten aufgerufen wird dies dann auch abzufragen wie z.B. so


Switch ($_IPS['SENDER'])
	{
	Default:
	Case "RunScript":
	Case "Execute":
	Case "TimerEvent":
		break;

	Case "Variable":
	Case "WebFront": 	   

		   break;
	}


Switch PHP

Hi Fonzo,

das Script wird durch das Ereignis, wenn die Fensterkontakte auf „true“ ändern gestartet.

Es sieht jetzt wie folgt aus:

<?

$alarmanlage = GetValue(49756 /*[Alarmanlage\Alarmanlage]*/);
$Sirene = 10355 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer\STATE]*/;

if($alarmanlage == false)
	{
	
		if($_IPS['SENDER'] == "TimerEvent")
			{
			//HM_WriteValueBoolean(35130 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer]*/, "STATE", false);
			
			IPS_SetScriptTimer($_IPS['SELF'], 0);
			echo "Die Sirene läuft nicht mehr";
			} 
		else 
			{
		    //An Befehl
		    //HM_WriteValueBoolean(35130 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer]*/, "STATE", true);
			echo "Die Sirene läuft"; 
		    //push
		    //Timer anschalten
		    IPS_SetScriptTimer($_IPS['SELF'], 3);
			}  
	
	}
else
	{
	echo "die alarmanlage ist nicht scharf";
	}
?>

Das Script schaltet nach 3 Sekunden den Timer aus, jedoch kommt nicht das Echo „Sirene läuft nicht mehr“

Findest du einen Fehler?

Wo soll das echo denn zu sehen sein bzw. für was dient dies denn? Wenn Du das Skript auf ausführen drückst kommt logischerweise kein Echo da die if Anweisung ja nur ausgeführt wird wenn das Skript von einem Timer gestartet wird.

Je nachdem wo was angezeigt werden soll macht es vielleicht mehr Sinn Alternativen zu wählen.

Moin, das Echo diente ja nur als Test der Ausgabe, damit nicht immer die Sirene angeht. Er schaltet auch das Echo Sirene ist an, sie geht dann auch nach 3 Sekunden aus, wirft dann aber nicht das Echo als neues Schaltsignal das die Sirene aus ist.

Also eigentlich steht bei Echo also HM_Write …

Gesendet von iPhone mit Tapatalk

Also ich besitze ja keine Sirene habe aber das Skript mal ganz normal mit einer Variable getestet. Bei mir funktioniert alles. Wenn der Alarm auslöst geht die Sirene kurz an und dann wieder aus.

Das ist das Testskript bei mir.


<?

 $alarmanlage = GetValue(32002 /*[Anwesend\Alarmanlage\Alarm Status]*/); 
$Sirene = 15117 /*[Anwesend\Alarmsignal\Signalton]*/;  

if($alarmanlage) 
    { 
     
        if($_IPS['SENDER'] == "TimerEvent") 
            { 
            //HM_WriteValueBoolean(35130, "STATE", false); 
            SetValue($Sirene, false); 
            IPS_SetScriptTimer($_IPS['SELF'], 0); 
			IPS_LogMessage("Alarmanlage", "Die Sirene läuft nicht mehr"); 
            }  
        else  
            { 
            //An Befehl 
            //HM_WriteValueBoolean(35130, "STATE", true); 
            SetValue($Sirene, true); 
			IPS_LogMessage("Alarmanlage", "Die Sirene läuft");
            //push 
            //Timer anschalten 
            IPS_SetScriptTimer($_IPS['SELF'], 10); 
            }   
     
    } 
else 
    { 
		IPS_LogMessage("Alarmanlage", "Die Alarmanlage ist nicht scharf");
    } 

?>

aufbauend auf diesen Scripten habe ich meine Alarmanlage fertig und produktiv.
nach vielem Austüfteln und Try&Error löppt es nun.
Leider kann ich es nicht in den Exporter packen, da kommen gefühlte 1000 Fehlermeldungen, vllt funzt es ja, wenn ich alle Links und Trigger entferne.
Zumindest hier schonmal ein Screenshot (zur besseren Ansicht in Grafikprg laden)

Hierbei sind 3 Schleifen + eine Rauchmelder-Schleife (die immer active ist)
sowie das Hauptmodul, das alles Scripte abarbeitet. Deren Sensoren sind die Alert-Schalter der 3Schleifen.
dadurch kann man die Schleifen einzeln schalten, zb im Sommer, wenn im OG alle Fenster offen sind, sind EG & KG komplett scharf

Hi Axel, das sieht gut aus. Würde gerne mal die Inhalte sehen. :slight_smile:

Gesendet von iPhone mit Tapatalk

Habe mal das Hauptmodul mit allen Scripten in den Exporter gepackt, ich hoffe man kann was damit anfangen.
Alle Daten liegen in Varis ausserhalb des Alarmbereichs
Die 3 Schleifen haben ausser den Sensoren nix drin.

exporter.ips.zip (19.2 KB)