[Modul] Notice (Mitteilungen)

Ich lasse subject immer leer (egal ob in der Konfiguration oder bei einem manuellen Notice_TriggerRule).

Die Logik vom WFC_PushNotification ist ja so, das ein body (= message) angegeben sein muss, subject ist optional.

Ich habe daher folgende Logik (bei dem WFC, bei den anderen Kommunikationswegen

  • subject gesetzt, message leer: message=subject, subject=""
  • subject wird auf 32 Zeichen gekürzt (sonst macht WFC_PushNotification Stress)

Gibt es einen Grund, warum Du nur subject setzt?
Ich muss gestehen, das ich nur die Symcon-App verwende, weder WebFront noch IPS-View verwende und daher diesbezüglich nur eingeschränkte Kenntnisse habe

In der Tat hatte das einen Grund. Bei meinen ersten Tests wurde immer noch ein „Alarm“ oder ein „Hinweise“ davor gesetzt und ich dachte das sei implizit. Nun habe ich nochmal genauer nachgeprüft - es lag an mir. In den darüber liegenden Instanzen hatte ich Standard-Werte vorgegeben die dann vererbt wurden. Wenn im Subject nirgends was vorgegeben ist, dass geht es wunderbar und bleibt leer.

Vermutlich denke ich nicht logisch genug aber ich hätte da auch eine Frage.
Gerne möchte ich überwachen ob das Gartentor geöffnet wurde wenn wir alle nicht zuhause sind. Ob wir zuhause sind wird via WLAN (UniFi Modul) festgestellt (geht echt gut).

In der Regel kann ich die Verwendung festlegen, auf eine Person bezogen.
Also, soweit mein Verständnis bekommen der Empfänger der nicht zuhause ist die Mitteilung auch wenn die andere Person noch da ist.
Richtig?

Im Ereignis kann ich über die Bedingung festlegen das nur informiert wird wenn beide nicht da sind.
Soweit korrekt?

Wie bekomme ich eine Meldung hin die nur versendet wird wenn beide Personen nicht zuhause sind?

Mitteilungs-Regel

a) für jede Person, die eventuell Benachrichtigt werden soll eine Zeile mit der Verwendung „letzter gegangen“
b) als Fallback eine Zeile mit „wenn sonst keiner“

so kriegt bei uns der letzte, der geht, die Nachricht, das noch ein Fenster auf ist. (b) ist nur ein Fallback, wenn irgendwas nicht greift.
Da sonst keiner da ist, trifft ja keine Bedingung und kriegt auch keine eine Meldung.
Wenn zwei gleichzeitig weggehen, trifft es einen der beiden „per Zufall“ (der gerade vom IPS als letzter geht)

Der letzte der geht ist klar. Das Fallback ist eine sehr gute Idee!!!

So Themen wie „Du hast ein Fenster vergessen“ sollte bekommen wer zuletzt geht.

Mir geht es um diverse Alarme.
z.B. Rauchmelder die los gehen könnten, damit man eine Benachrichtigung bekommt, Türkontakte um zu wissen ob jemand unbefugt in den Garten ist, Wassermelder neben der Waschmaschine,…

Solche Punkte sollten, denke ich, alle bekommen.
Bekommt es jemand mal nicht mit erhält die andere Person oder z.B. ein Nachbar die Infos um nachzusehen.

Daher bräuchte ich mehrere Personen parallel.

Ich habe es vielleicht nicht ganz verstanden, es bekommen normalerweise alle, wo die „Verwendung“ zutrifft. Das ist so bei „immer“, „wenn zu Hause“ oder „wenn unterwegs“.
Ausnahme ist nur „zuletzt gegangen“, „zuerst gekommen“.
Beispiel mit dem Wassermelder:

  • Regel sei: es soll jeder bekommen, der zuhause ist, wenn da keiner ist, der Nachbar.
    → Person A & B mit Verwendung „wenn zu Hause“ und N(Nachbar) mit „wenn sonst keiner“.
    → wenn A oder B oder A&B zu Hause sind bekommen die die Meldung, wenn beide Weg sind, wird den Nachbar beglückt.
    Rauchmelder ist bei mir eher drastischer: kriegen alle bei Webfront sowie ich per Mail …
    Mittels „Regelgültigkeit prüfen“ kannst Du ja in einer konkreten Situation sehen, was passieren würde.
    Wenn Du das durchspielen willst, kannst Du einfach eine 2. „Mitteilungs-Zentrale“ anlegen, eine Regel damit verbinden und die Anwesenheit-Variaben manuell ändern. Wenn man eine 2. Zentrale anlegt muss man nur daran denken, das dann die „Haupt“-Zentrale überall eingetragen sein muss (zB in der Regel), wenn da nichts drin steht, nimmt er einfach 1. erste Instanz, die existiert.

Wenn ich das noch nicht richtig aufgefasst habe, dann könntest Du das nochmal konkretisieren.

Nein das passt schon super, danke!!!

Eine Frage habe ich dazu noch.
Wenn ich eine Benachrichtigung für beide möchte wenn beide nicht da sind. Wie stelle ich das an?

Nach deinem Schema:

  1. Variante:
  • A ist nicht zuhause
  • B ist nicht zuhause
  • Hoftor wird geöffnet (HmIP Kontakt)
  • A+B erhalten eine z.B. Mail "Das Hoftor wurde geöffnet

Das passt für mich und ist schlüssig

  1. Variante:
  • A ist nicht zuhause
  • B ist zuhause
  • Hoftor wird geöffnet (HmIP Kontakt)
  • Keiner erhält eine Info weil eine Person ja zuhause ist

Da bin ich mir jetzt unsicher. Auf „alle abwesend“ kann ich ja nicht „schalten“.
Wie löse ich so einen Fall?
Im Event ist es hier wieder klar, da kann ich ja angeben das beide Variablen erfüllt sein müssen damit die Nachricht kommt.

Gute Frage … was ist wenn

  1. beide als „wenn zuhause“
    und
  2. beide als „wenn sonst keiner“
    habe nicht getestet und auch nicht im code kontrolliert (bin nicht am pc), aber wäre ein versuch wert
1 „Gefällt mir“

Muss ich am Wochenende testen, unter der Woche komme ich nicht zu so etwas.

Kein Problem.
Und wenn die Idee nicht funktioniert, werden wir uns schon was ausdenken

1 „Gefällt mir“

Hallo zusammen,
auch wenn der thread schon etwas in die Jahre gekommen ist, hier noch eine Verständnisfrage:

Mit Hilfe des Moduls soll doch eine Variable (z.b $bTest) überwacht werden und bei Wechsel auf z.B. FALSE eine Aktion (SMTP, TELEGRAM, o.ä.) lostreten, oder verstehe ich das falsch?

Danke für jede Art von Erleuchtung

Diese Aussage kann ich so nicht treffen. Die Auslösung (ob eine Variablenänderung oder ein Ablauf) erfolgt immer über ein normales Symcon-Ereignis oder durch ein Script.

Das Modul (und dabei die Instanz vom Typ NotificationBase) ermöglicht es, verschiedene Kommunikationskanäle zu nutzen (Telegram müsste man über die vorgesehene Skript-Schnittstelle selbst einbinden), mit Instanzen vom Typ NotificationRule definiert man - wer, bei welchem Anwesenheitsstatus, auf welchem Kanal - informiert wird. Und Instanzen vom Typ NotificationEvent ermöglichen es, Nachrichten verzögert auszulösen; diese basieren schon darauf, das Variable(n) einen bestimmten Wert behalten, müssen aber durch ein Symcon-Ereignis ausgelöst werden.

In der Dokumentation wird das nochmal detailiert dargestellt.

Danke für die rasche Antwort!

Vielleicht doch noch ein paar Infos zum Hintergrund meiner Frage (ggf. hast Du ja eine Idee zur Umsetzung):

Ich habe ein reines KNX Umfeld welches über die Jahre/Jahrzehnte gewachsen ist. Vieles ist direkt in KNX realisiert, anderes, insbesondere der VISU-Anteil, läuft über IPS. Dabei hat die Notwendigkeit nach unterschiedlichsten Kommunikationskanälen zugenommen und , ich will ehrlich sein, die Übersichtlichkeit abgenommen.

Darüber hinaus wollte ich noch eine Zustellungsmöglichkeiten in Abhängigkeit der An-/Abwesenheit (es nützt nicht viel bei einem Event die Hupe anzusteuern, wenn niemand daheim ist). Das ist in dem Modul super gelöst und funktioniert in Zusammenarbeit mit dem UNIFI-Modul sehr zuverlässig.

Bleibt für mich noch mein zerfleddertes Mail/Info-System zu reorganisieren und übersichtlich zu zentralisieren. Ich hatte die Hoffnung das ebenfalls mit Deinem Modul zu erreichen, zumal ja in den Notice-Event ja die Referenz zur Variable hinterlegt ist.

Hättest Du da eine Idee? Falls das derzeit schon realisierbar ist und ich nur ein Brett vor dem Kopf habe, würde ich mich über ein paar Code-Schnipsel/Screenshots freuen.

Herzlichen Dank

So ganz ist mir die Anforderung nicht klar, daher wäre ein oder zwei konkrete Fälle sinnvoll, damit ich darauf zielgerichtet antworten kann.
Grundsätzlich ist es so, das bei mir alle Benachrichtigungen jeder Art darüber laufen; egal, ob aus Scripten heraus oder basierend auf Variablenänderungen.
Zudem ist es so, das ich manche Dinge auch nur (oder auch zusätzlich) in einer Liste aufführe (in der Mittelungs-Zentrale „Protokollierung“ genannt, wird in der Instanzvariablen Meldungen auch als HTML-Box aufbereitet).
Also insofern bin ich mir sicher, alles an Benutzer-Information gesammelt abbilden zu können.

Beispiel: Es beginnt zu regnen und es ist noch ein Fenster auf.

Nach meinem Verständnis muss ich doch unter die Variable des Regen-Sensors „EsRegnet“ ein Script hängen, welches die entsprechende Funktion Notice_TriggerRule() triggert.
Im NoticeEvent prüfe ich dann sowohl auf den Zustand ob es regnet und ob alle Fenster zu sind. Wenn beide Zustände zutreffen erfolgt die Nachricht.
Richtig so?

Zum Grundverständnis: NoticeRules dienen ja dazu festzulegen, wie die in NoticeBase festgelegten Empfänger/Kanäle in konkreten Fällen genutzt werden soll; also wer wird wie unter welchen Umständen (der Anwesenheit) benachrichtigt.
Ich habe NoticeRules für bestimmte Gruppen von Erignissen wie Warnung oder Mitteilung oder auch für konkrete Einzelereignisse wie Post! oder Türklingel bei denen ich bestimmte Töne im Webfront verwende etc .

NoticeEvents sind eigentlich nur für den Fall notwenig, wenn ich

  • die Auslösung verzögert machen will (ein wichtiges Gerät ist nicht erreichbar, Alarm soll aber erst geschlagen werden, wenn der Zustand mehr als 5m anhält)
  • die Meldung zyklisch wiederholt werden soll
  • es eine Bestätigung geben soll, wenn sich der auslösende Umstand wieder aufgelöst hat
    Zudem kann man bei NoticeEvents auch situativ angepasste Meldungstexte oder Schweregrade definieren.
    Ein NoticeEvent referenziert immer eine bestimmten NoticeRule - das ist dann fest verdrahtet.

In dem o.g. Fall würde aber eine NoticeRule reichen.

Nun gibt es wie immer verschiedenen Wege
a) ich kann in der Rule den Meldungstext fest eintragen, wenn es sich nur um ein bestimmtes Ereignis handelt
b) man kann aber auch ein ausgelöstes Ereignis unterhalb der Regel anordnen (damit ist die Regel der PARENT), als auslösende Variable gibt man die Variable an, die auslösen soll sowie eventuell ergänzenden weitere Bedingungen und als Aktion des Ereignisses nimmt man die modulbezogenen Aktion (daher muss die Regel der PARENT sein) Löse Mitteilungsregel aus und kann da den Text angeben
c) oder man löst - wie du geschrieben hast - in einem Script per Notice_TriggerRule() eine bestimme Regel aus. Da spielt dann aber ein NoticeEvent keine Rolle mehr.

ausgelöste Regel kann natürlich auch ein Ablaufplan sein.

Ein NoticeEvent wird eigentlich immer durch eine ausgelöste Regel getriggert (zB „es Regnet“) und in dem NoticeEvent würden dann sowohl „EsRegnet“ aus true geprüft als auch Fenster geschlossen aus false - natürlich mit der Verknüpfung es müssen alle Bedingungen zutreffen.

So rein gefühlsmässig würde ich das Beispiel eher über ein Script mit ausgelöster NoticeRule lösen, weil man da komplexere Abfragen übersichtlicher gestalten und man könnte einen spezifischen Text mitgeben (zB welches Fenster offen ist).

Aber das ist Geschmacksache

Ich glaub ich hab’s gerafft.
Danke für die Geduld

gerne, kein Problem; melde dich, wenn etwas nicht funktionier

Ich muss doch nochmal nachfragen:

Benachrichtigungen auf den unterschiedlichsten Kanälen mit den unterschiedlichsten Anwesenheiten klappt gut. Lediglich beim Notice Event hapert es noch. Wie kann ich denn das entsprechende Notice Event triggern?

So scheint es jedenfalls nicht richtig zu sein, ich bekomme zwar eine Meldung wenn der Regen vorbei ist, bei einsetzendem Regen gibt es allerdings gleich zwei Mitteilungen.