Alarmanlage mit Geofancy steuern

Wenn so alles funktioniert würde ich es so lassen.

Hi Fonzo,

funktioniert leider nicht.

Ich die Variablen ändern sich auf alle abwesen über geofency und auch die Variable Alarmanlage springt dann auf scharf,
jedoch mein Script bei „scharf“ und den Fensterkontakten Ändernug auf „true“ keine Aktion ausgeführt.

Das Script sieht so aus:

<?

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


if($alarmanlage == true)
{

// Piezzo anschalten und Push schicken
SetValue($piezzo, true); //Sirene AN

}  
 
?>

Wo ist hie rmein Fehler? ;-(

//sirene
$id_aktor0 = 52840 /*[Geräte\Homematik\Räume\Eingang\Alarm\HM-Sec-Sir-WM NEQ1338501:3]*/;
HM_WriteValueBoolean($id_aktor0 , "STATE" , true);

sollte es nicht so aussehen, wenn es eine HM-sirene ist ?!? stand doch im ersten Post

Das Problem ist, dass er die Variable „scharf“ „unscharf“ gar nicht richtig abfragt.

Habe es jetzt so mal mit meiner Lampe getestet, aber das geht auch nicht…

<?

$alarmanlage = GetValue(49756 /*[Alarmanlage\Alarmanlage]*/);
$licht = 59618 /*[Geräte\Wohnzimmer\St-Stehlampe_Wohnzimmer]*/;

if($alarmanlage == true);

{

HM_WriteValueBoolean(59618 /*[Geräte\Wohnzimmer\St-Stehlampe_Wohnzimmer]*/, "STATE", true);
 
 }
 
?>

Es geht die Lampe immer an, wenn ich das Script ausführe, egal welchen Zustand meine Variable $alarmanlage hat.
Aber auch nur, wenn ich es im Script ausführe, mit einem Ereignis bei TRUE des Fensterkontakts das Script starten geht auch nichts.

Ich drehe echt durch…

da ist ein Semikolon hinter der if…

Axel,
das war es. Man, ich verstehe einfach nicht, warum muss man einmal nur SetValue schreiben,
dann aber wieder HM_WriteValueBoolean oder wann setz ich wo ein Semicolon usw.

Es ist echt Hardcore das in die Birne zu bekommen, ich bin eher der autodidakt, kann das besser verstehen,
wenn ich mich mit Jemanden dazu austauschen und was sehen kann.

geht mir genauso ! :rolleyes:
im Übrigen bauen ich derzeit an der gleiche Sache

lach!

Also, ich habe es jetzt soweit, ob es umständlich ist weiß ich nicht, jetzt muss ich noch noch irgendwie hinbekommen,
dass wenn die Sirene angeht ohne das man es will auch wieder ausgeht, wenn man entschärft oder so.

Keine Ahnung, ob ich das irgendwie in dem gleichen Script verbauen kann oder ein neues brauche…

PS; Woher kommst du?

Ok, das Script läuft jetzt soweit…

<?

$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);


}  
 
?>

Jetzt noch zwei Sachen, wie sorge ich dafür, dass wenn die Sirene angeht diese nur z.B. 300 Sekunden angeht und
wie kann ich Sie, wenn ich die Variable $alarmanlage auf unscharf schalte auch damit direkt wieder abstellen?

Danke

Abschalten: leg ein zweites Script an, in dem du den State auf false setzt, getriggert durch unscharf-schalter

Dauer, kannst du am eifachsten in der CCU einstellen: Einstellungen - Geräte - Sirene - max Alarmdauer 120sec oder entsprechender Wert

Kann die Dauer in der CCU nicht angeben, dass ist ein Batterieaktor HM-LC-Sw1-Ba-PCB
der eine Piezzo Sirene anwirft.

Kann da in den Einstellungen aber nichts vornehmen, wenn ich in der CCU ein Programm anlege,
da kann ich wenn ich das Gerät auswähle zwar, aber das bringt ja nix.

der Batterieaktor HM-LC-Sw1-Ba-PCB kann das nicht, musste auch den HM-LC-Sw4-WM 4-Kanal für Garagentor nehmen der kann voreingestellte Zeit: hier war 1sec gefordert

Ja aber in der CCU kann ich ja bei einem Programm auch die Einschaltdauer angeben,
dann sollte das doch hier auch zu steuern sein oder?

Wie kann ich ein Gerät einschalten und nach X Sekunden wieder aussschalten

Hi Fonzo,
das habe ich auch schon gelesen, aber ich verstehe halt nicht wie ich es anwenden muss.

Kann das in das gleiche Script rein?

Was hast Du denn probiert bzw. was verstehst Du denn nicht? Steht doch eigentlich alles da


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);
}

und darauf ein Event legen, das schaltet die Sirene an und nach 300 Sekunden wieder aus. Bzw. wenn das Skript selber über mehrere Timer gestartet wird must du noch eine Abfrage für den Passenden Timer einbauen in der Art


if($IPS_EVENT == $eventid)

Ich verstehe nicht, ob ich das noch im mein Script mit einbauen muss oder ein gesondertes anlegen muss
und ich verstehe den Inhalt nicht.
Was ist Sender?
Warum heisst die Variable $_IPS?

Ich kapiere einfach nicht was da passiert und nur kopieren und nicht verstehen ist doch was für den Popo :banghead:

eigentlich ist es recht einfach, versuch mal etwas unkomplizierter zu denken :smiley:

Das mag sein sagt ja auch keiner das Du das blind übernehmen sollst sondern es eher versuchen nachzuvollziehen, aber es steht ja eigentlich alles da. Daher musst Du dann schon fragen was unklar ist und nicht das verstehe ich nicht.

$_IPS ist eine Systemvariable und muss nicht selbst definiert werden sondern ist immer verfügbar.

Sender ist die Art und Weise wie das Skript aufgerufen wird. Dies kann man auch mit Systemvariablen abfragen. Sender kann ein Timer sein, das Webfront ein anderes Skript usw.