Alarmauslöser anhängen: flexibler gestalten

Hallo,

ich arbeite daran, die INSTAR-CAM in FHEM mittels IPCAM besser zu integrieren.

Aktuell kann man den Alarmauslöser zwar anhängen, dieser wird aber im FHEMWEB verschluckt.
Ursache ist, dass der Alarmauslöser mit & angehangen wird, FHEM lässt aber nur Befehle mit Parametern nach &cmd= zu.

Es würde mich freuen, wenn Sie im nächsten Firmwareupdate den Alarmauslöser über die Eingabe eines Platzhalters in einem der optionalen Parameter eingebbar machen würden.

Ein Beispiel für einen Aufruf sieht dann so aus:

[B]http://192.168.178.5:8088/fhem?cmd=set[/B]%20[B]INSTAR_8015[/B]%20[B]AlarmServer[/B]%20[B]alarm[/B]%20[B]active[/B]%20[B]2[/B]

der optionale Parameter könnte so befüllt sein:

cmd = set INSTAR_8015 AlarmServer alarm [B]#Alarmauslöser[/B]

An Stelle von #Alarmauslöser muss dann „active%202“ im Aufruf erscheinen.

Eine Lösung auf FHEM-Seite habe ich mir angeschaut. Leider wird das eine Sonder-/Balkonlösung, die nur schwer durchsetzbar sein wird.

Viele Grüße
Sebastian

Guten Morgen,
ich konnte das Problem über einen anderen Weg lösen. Das Thema kann als erledigt angesehen werden.
Viele Grüße.

Hallo @SebastianL ,

in einem anderen Thread hier im Forum wurde dazu gerade der SysLog angesprochen - hier ist ein Beispiel, wie man den über Node-RED in eine Datenbank bekommt:

https://wiki.instar.de/Erweitert/Node-RED_und_SQL-Logging/#sichern-sie-das-systemprotokoll-ihrer-kamera

INSTAR Support

Hallo zusammen,
ich bin gerade über den sehr alten Beitrag gestolpert und hätte mir sowas ähnliches auch sehr gewünscht (hier: 9408) für die Integration mit ioBroker in meinem Fall. Dass der Alarmauslöser nur mit &active=X angehängt wird, reicht leider auch bei ioBroker nicht aus. Hier würde es ebenfalls zur maximalen Flexibilität beitragen, wenn man einfach das X als Variable in einem der Parameter mitgeben könnte.

2023-01-19_22h16_54

Über den Alarmserver das Abrufen des Logs zu triggern, um dann den Auslöser daraus zu extrahieren erscheint mir etwas umständlich, wenn es doch so einfach sein könnte?!

Aber was ist dann da der Unterschied? Aktuell wird der Auslöser mit &active=1-10+99 angehangen:

Mit dem Beispiel oben würde es dann über &bereich=1-10+99 ausgegeben werden - also nur eine Umbenennung der Variable?

Man muß in ioBroker einfach den Wert von active auslesen - dann hat man den auslösenden Sensor. Und dann ggf. noch object - wenn man die Objekterkennung nutzt.

Hallo,

danke für die schnelle Rückmeldung. Die Frage ist absolut berechtigt, sorry, ich hätte hier vielleicht noch etwas ausholen müssen und ioBroker kurz erklären.

Die Komponente, die die Requests annimmt (simple API Adapter) unterstützt verschiedene Actions. Um einen Alarm der Kamera dem ioBroker mitzuteilen, muss man Datenpunkte setzen. Dies funktioniert auf eine von 2 Arten:

„set“: „http://192.168.2.90:8087/set/stateID?value=1&prettyPrint“,
„setBulk“: „http://192.168.2.90:8087/setBulk?stateID1=0.7&stateID2=0&prettyPrint“,

Dabei ist „stateID“ der Pfad zu einem Datenpunkt in meiner Hierarchie, bspw. „Userdata.Kameras.Kamera1_Alarm“. Für die Action „set“ ist der parameter „value“ vorgegeben. Für die Action „setBulk“ kann ich als Parameter mehrere Datenpunkte angeben, ich könnte hier also etwa definieren:

setBulk?Userdata.Kameras.Kamera1_Alarm=true&Userdata.Kameras.Kamera1_Bereich=X&Userdata.Kameras.Kamera1_Objekt=Y

An der Stelle bräuchte ich dann für X und Y die Variablen im Anfrageparameter.

  1. Userdata.Kameras.Kamera1_Bereich = varX
  2. Userdata.Kameras.Kamera1_Objekt = varY

Aktuell könnte ich also nur auf der obersten Ebene der Hierarchie den Datenpunkt „active“ und den Datenpunkt „object“ beschreiben. 1) kann man auf der obersten Ebene keinen Datenpunkt anlegen und 2) habe ich dann spätestens ein Problem mit der zweiten und dritten Kamera, weil eben auch dort die Datenpunkte „active“ und „object“ angesprochen werden und man dann nicht mehr weiß von welcher Kamera ein Alarm kommt.

Ich hoffe, das war mit etwas mehr Kontext besser verständlich :slight_smile:

Viele Grüße
Daniel

Uff der REST Adapter ist ja wirklich sehr restriktiv… Ich denke ich würde da eher den Node-RED Adapter nutzen - da kann man die REST Endpunkte völlig frei festlegen und mit einem Endpunkt gleiche alle angehängten Queries auswerten und an ioBroker weitereichen:

Oder alternativ auf MQTT umstellen. Da werden die Status Datenpunkte gleich automatisch angelegt und man hat sofort alles zur Hand:

Aber den kann ich zumindest bedienen :grin:
Ich nutze den halt auch für andere Dinge, habe jetzt aber mitgenommen, dass ich wohl um MQTT nicht herum komme. Extra auf Node-RED dafür umzusteigen ist ganz schöner Aufwand, da war es einfacher den Wunsch zu äußern :innocent:

Vielen Dank für die Mühe!

Das kann ich verstehen - wenn man Node-RED schon kennt, ist es wesentlich mächtiger als die JS Scripting Engine in ioBroker. Aber es braucht definitiv etwas Einarbeitungszeit.

Der Alarmserver wurde gerade massiv erweitert (kommt mit dem nächsten WQHD Update). Jetzt gibt es die Testfunktionen direkt über die WebUI und man kann insgesamt 3 Alarmserver kontaktieren… leider hilft das nicht bei ioBroker - oder zumindest nicht beim REST Adapter, da dieser vorgibt das angehangene Queries entweder val oder value benannt werden. Wenn es da einen Weg gäbe diesen Namen manuell festzulegen, könnte man das einfach für die drei Alarmserver auf die entsprechenden Namen legen - &object=, &active= und &my_custom_query= - und alle drei an unterschiedliche REST Endpunkte senden. Vielleicht gibt es da ja einen Tweak im Adapter den ich übersehen habe?

MQTT ist das bessere Protokoll - bei HTTP/REST braucht man den Alarmserver, um Status-Updates zu bekommen. Beim MQTT pushed die Kamera alle Updates automatisch zum Broker. Also nicht nur Alarm-Trigger, sondern auch Zustandsänderungen (Alarm wurde ein/ausgeschaltet, usw.) - wenn etwas über die WebUI oder die Smartphone App eingestellt wird, hat man die Info auch sofort im ioBroker.

Der (MQTT) Alarmserver hat da auch den Vorteil - er fällt nach ein paar Sekunden wieder auf Null zurück. D.h. man kann einfach 0 als Wert ignorieren und bei ungleich 0 mit einem Skript reagieren.