dynamisch erstellte Nachricht bei Statusänderung

Hallo zusammen,

ich habe folgendes vor, leider fehlt es mir gerade an Denkanstößen um das zu bewerkstelligen.

Ich möchte das bei einer Statusänderung ein Script gestartet wird mit bestimmten Variablen. Grundsätzlich kenne ich natürlich die Ereignisse, ich würde das aber gerne dynamisch halten.
Mal ein Beispiel:
Ich habe 3 Fenstersensoren (Bad, Wohnzimmer und Küche) die den Staus (true = verriegelt) und false (offen) haben.
Nun möchte ich bei einer Statusänderung, bspw. Wohnzimmer wird geschlossen, eine Push-Notocation versenden die lautet „Wohnzimmer geschlossen“. Klar könnte ich das hardcodiert als Ereignis hinterlegen, aber das müsset ich den für jeden sensor machen… Ich hätte das gerne dynamisch ,also egal welcher Fenstersensor auslöst und egal welchen Status er hat soll die Message gebaut werden…
Am liebsten wäre mir das alle in einer Kategorie mit nur einem Script dieses können…

Hoffe es ist verständlich was ich vor habe…
Mir fehlt leider gerade der Anfang…

Danke + Gruß

Moin,

eigentlich habe ich alle meine zentralen Steuerungsprogramme so aufgebaut wie du es beschreibst.

Es gibt in solchen Fällen ein Script, welches ausgelöst wird und prüft, wer der Trigger ist. Anschliessend bau ich die enstprechenden Parameter auf und übergebe diese mit IPS_RunScriptEx an das zentrale Programm. Dies macht dann hoffentlich den gewünschten Job :slight_smile:

Gruß
Hans

Du benötigst so oder so immer ein Ereignis pro Gerät/Variable.
Also bietet es sich an den Inhalt der Nachricht in dieses Ereignis zu integrieren.
Entweder das Info-Feld oder gleich den Namen des Ereignisses könnte funktionieren.

Ich habe es über den Namen gelöst.
Allerdings nur bei bestimmten Werten und somit statischer Nachricht, und nicht dynamisch für jeden Wert/Status.

Aber auch das geht unter Zuhilfenahme von GetValueFormated und z.B. sprintf.

Im Namen dann z.B. „Das Fenster Wohnzimmer ist %s“.
Und im Script dann sprintf( IPS_GetName($_IPS[‚EVENT‘], GetValueFormated ($_IPS[‚VARIABLE‘]));

Michael

Hi zusammen,

danke euch für den Denkanstoss, habe es jetzt so wie Nall-chan es beschrieben hat…

Aber in dem Zuge ist eine weitere Frage aufgetreten für die sich kein eigener Thread lohnt(meiner Meinung nach) daher stelle ich sie hier nochmals:

ich würde gerne bei einem täglichen Ereignis die Zeit auslesen und ein neues Ereignis erstellen was 30 Minuten danach stattfindet, also Ereignis 1 ist täglich um 23:10 Uhr und ich möchte ein neues Ereignis 2 erstellen was um 23:40 Uhr ausgeführt wird.
ich habe schon mit

IPS_GetEvent 

das Array ausgelesen und bekomme mit

$EreignisInfo["CyclicTimeFrom"]["Hour"]); 

auch die Stunde bzw. die Minute angezeitg. Aber wie nun 30 Minuten dazu, gerade wenn Ereignis 1 um bspw. 10:55 Uhr stattfindet…Wie also auf 11:25 Uhr kommen.
Ein Lösung wäre wenn

IPS_GetEvent 

den Unixtimestamp des Ereignisses mit ausgeben würde…

Vielleicht geht aber noch anders, mir fehlt nur mal wieder ein Denkanstoss!