Instar Ani Dither

Hallo zusammen,

ich habe bei meiner Kamera einen Audio Alarm mit der Sensivität 6 eigestellt, sobald mein Sohn schlafen geht.

Wenn nun ein Audio Alarm erkannt wird, wird dieser immer wieder ausgelöst.
Ich habe somit nachher 25 Benachrichtigungen über OPENHAB auf meine Handy, da der Alarm immer wieder auslöst und nicht für eine Zeit einfach auf An bleibt.

Bei einigen anderen Kameras, gibt es die Funktion „Anti Dither“. Hiermit wird die Alarmdauer festgelegt, bis der Alarm Schalter wieder auf Aus schaltet und in dieser Zeit kein neuer Alarm auftreten kann.

Kann man dies bei der IN8015 auch einstellen?

Hallo @SaschaQ,

die Kamera hat bei der Push Benachrichtigung und beim Emailversand ein Rhuheintervall von 60s. D.h. nach einem Alarm bekommt man erstmal keine Benachrichtigungen für die nächsten Minute.

Mit Skripten in Openhab kenne ich mich nicht so gut aus. Aber in Node-RED kann man beispielsweise den MQTT Alarmserver der Kamera einbinden. Dieser alarmiert einmal pro Sekunde solange Bewegung erkannt wird. Man kann dann dieses Signal nutzen um das Ruheintervall immer wieder zurückzusetzen.

Zum Beispiel:

  • ein Alarm kommt rein
  • Node-RED sendet eine Benachrichtigung
  • Die Benachrichtigung wird für eine Minute deaktiviert
  • Jeder weitere Alarm setzt dieses Intervall wieder auf 1 Minute zurück

Sowas in der Art sollte auch in OpenHAB möglich sein.

Hallo,

ich nutze nicht die interne Benachrichtigungsfunktion sondern werte den Kanal der Kamera aus, der auf An schaltet wenn ein Audio Alarm erkannt wird. Dieser schaltet halt ohne Unterbrechung immer wieder auf An. Ist das richtig?

Diese Kanal kann man in den Settings also nicht auf eine Verzögerung stellen, sodass dieser bei Auslösung erstmal 1 Minute lang auf An bleibt und dann erst wieder auf Aus switcht?

Meinst du damit den MQTT Alarmserver, über den man bei einem Audioalarm einen Payload {„val“:„6“} erhält ?

Der ist standardmäßig auf 1s Cooldown gestellt. Man kann ihn aber per CGI Befehl auf bis zu 60s anheben.

Okay und wie? Kannst du mir den Befehl sagen?

MQTT Alarmserver Ruheintervall

Auslesen kann man es mit:

/param.cgi?cmd=getmdalarm&-aname=server3

Hier sollte dann stehen, dass der Server aktiv ist und mit einem 1s Intervall arbeitet:

var md_server3_switch="on";
var md_server3_interval="1";

Um das Intervall auf 60s zu verlängern kann man den folgenden Befehl verwenden:

/param.cgi?cmd=setmdalarm&-aname=server3&-switch=on&-interval=60

Kann man das auch für den Motion Alarm setzen?

Das kommt doch alles über den gleichen Alarmserver in OpenHab an?

Es änder sich nur der Payload der Benachrichtigung:

  • 6 -> Audioalarm
  • 1 -> Alarmbereich 1

usw.

D.h. wenn man den Alarmserver konfiguriert hat betrifft das alle Auslöser.

Alles klar, wunderbar, das bedeutet, wenn ich den oben genannten Befehl setze, dann ist die Cooldown Zeit bei Motion und Audio Alarm auf 1 Minute gesetzt?

Wenn du das über MQTT in OpenHab eingebunden hast, kommt die Benachrichtigung nach dem Befehl nur noch max 1-mal pro Minute.

1 „Gefällt mir“

Scheinbar scheint es doch nicht zu funktionieren. Ich nutze das New Ip Camera Binding in Openhab und bekomme dann bei einem Audio Alarm im Log von Openhab immer folgende Meldungen:

2020-08-12 08:50:16.809 [DEBUG] [ing.ipcamera.handler.IpCameraHandler] - Alarm has been triggered:/instar?&active=6

Dies erfolgt aber auch nach setzen der oben genannten Einstellung nicht nach 60 Sekunden erneut, sondern jede Sekunde.

Ok das ist was anderes - das Kamera Binding nutzt nicht den MQTT Dienst, sondern den HTTP Alarmserver. Dieser ist über den folgenden Befehl auslesbar:

/param.cgi?cmd=getmdalarm&-aname=server2

Da sollte dann per default 60s drinnen stehen:

var md_server2_switch="on"; var md_server2_interval="60";

Das Camera Binding setzt diesen Wert aber ebenfalls auf 1s runter.

Diese Einstellung wird beim Hinzufügen der Kamera eingetragen. Ich bin mir aber nicht sicher ob das Binding auch regelmäßig überprüft ob die Einstellung noch vorhanden ist - eventuell passiert dies wenn man OpenHab neustartet.

Man kann mal probieren den Wert auf 60s zu ändern und schauen ob das Binding das dann wieder überschreibt:

/param.cgi?cmd=setmdalarm&-aname=server2&-switch=on&-interval=60

Wenn das nicht funktioniert bleibt aber noch der MQTT Alarmserver - mit dem funktioniert es auf jeden Fall.

okay ich versuche es mal per OpenHab

ist das das richtige command topic:

alarm/actions/audioalarm ?

Das schaltet den Alarm (ausgelöst durch das Mikrofon an der Kamera) ein val:1 oder aus val:0.

Die Information, dass ein Alarm ausgelöst wurde kommt über das alarm/triggered Topic. Hier gibt es auch ein Diskussion im OpenHab Forum dazu wie man es einbindet.

Das dort beschriebene Problem - Alarm wird erneut ausgelöst wenn man OpenHab neustartet wird mit dem nächsten MQTT Update gelöst werden.

leider funktioniert das auch nicht

Hmm ok, das wäre die Configuration die man für einen Button verwendet. Dann würde man am Eingang das STATUS Topic anschließen und am Ausgang das Befehlstopic - das würde zum Beispiel hiermit funktionieren:

Eingang instar/id/status/alarm/actions/audioalarm
Ausgang instar/id/alarm/actions/audioalarm

Damit hätte man einen Button mit dem man den Audioalarm der Kamera aktivieren/deaktivieren kann.

Beim Alarmserver kommt jedoch nur eine Info rein - nämlich das Alarmereignis + Alarmauslöser.

Wenn zum Beispiel der Bereich 1 ausgelöst hat, erhält man auf dem status/alarm/triggered topic eine {"val":"1"}, bei Bereich 2 wird die 1 in der Botschaft zu einer 2 ({"val":"6"}) und ein Audioalarm sendet eine 6 ({"val":"6"}).

Und da muß man dann in OpenHab anfangen ein wenig zu scripten - und damit habe ich leider weniger Erfahrung.

Zuerst kann man den Wert extrahieren:

transformationPattern="JSONPATH:$.val"

Das holt sich dann aus {"val":"1"} den Wert 1 heraus. Und zu dem Rest wird der User Dragonfly im OpenHAB mehr sagen können. Das Script das er in dem oben verlinkten Thread geschrieben hat ist:

Schreibe den Zahlenwert der eingehenden Meldung in eine Variable 'alarmTriggered’

Type number : alarmTriggered	"Alarm triggered"		[ stateTopic="instar/10D1DC21AABB/status/alarm/triggered", transformationPattern="JSONPATH:$.val", qos=1 ]

Gib diese Zahl in der UI aus, z.B. "Alarm ausgelöst 1"

Number	Kamera_EG_alarmTriggered	"Alarm ausgelöst [%s]"	(gCamera_Eingang)	{channel="mqtt:topic:localhost:10D1DC21AABB:alarmTriggered"}

Und wenn diese Zahl ungleich 0 ist - dann war es ein Alarm und man möchte ein weiteres Script auslösen - "sendCommand"

rule "Kamera - Eingang/Alarm ausgelöst"
when
	Item Kamera_EG_alarmTriggered changed
then
	if (Kamera_EG_alarmTriggered.state != 0){Kamera_EG_alarmTriggered.sendCommand(0)}
end

Bzw. hier hat er noch einen Schritt eingebaut, um den Wert wieder auf Null zurückfallen zu lassen - das wird aber mit dem nächsten größeren MQTT Update nicht mehr notwendig sein (die Kamera macht das dann alleine):

rule "Kamera - Eingang/Alarm ausgelöst"
when
	Item Kamera_EG_alarmTriggered changed
then
    if (Kamera_EG_alarmTriggered.state != 0) {Kamera_EG_alarmTriggered.sendCommand(0)}
    if (previousState != 0) {return;}
end

Ich denke mir fehlt da der JAVA Hintergrund um mich damit anzufreunden :slightly_smiling_face: Mir liegt es da doch mehr einfach ein paar Knoten in einem Flussdiagramm zu verbinden (s.u.). Node-RED hat was von LEGO Technik für mich - ist sehr entspannend. Aber jedem das seine :smile: