Instar Full HD Kamera - openHAB 3 - Alarmserver - Bewegung

Hallo liebes Forum,

ich habe mehrere Instar Kameras (Full HD) und würde diese gerne so in openHAB einbinden, dass ich bei einer Bewegung einen virtuellen Switch schalte.

Nun habe ich bereits viel hier und im openHAB-Forum darüber gelesen, aber eine funktionierende Lösung habe ich nicht gefunden.

Derzeitiger Stand:

Die Kameras sind in openHAB via ONVIF eingebunden und der Alarmserver der jeweiligen Kamera wurde mit „POST-Request“ → aktiv und „Alarmauslöser anhängen“ → aktiv konfiguriert.

Nun weiß ich aber leider nicht so ganz, was beim Serverpfad anzugeben ist und wie ich openHAB dazu bekomme, dass bei einer Bewegung der virtuelle Switch geschalten wird.

Hat jemand vielleicht diese Konstellation bereits eingerichtet und kann mir da weiterhelfen?

Vielen lieben Dank im Voraus!
Christoph

Hallo,

damit habe ich selber noch nicht gearbeitet in OpenHAB - aber die Alarmserver Funktion kontaktiert einfach eine URL die in OpenHAB eingerichtet werden muss. D.h. man braucht bei OpenHAB die sog. REST API:

Diese API stellt dann eine URL bereit, die man z.B. mit dem Browser aufrufen kann. Jedes mal wenn man die Seite dann im Browser aktualisiert, wird in OpenHAB ein Ereignis ausgelöst - welches man dann entsprechend an eine Aktion anbinden kann.

Achtung: Auf diese Weise kann man nur GET Requests testen. Für POST Requests braucht man spezielle Tools. Zum Beispiel POSTMAN. Ich würde daher erstmal versuchen den GET Weg zum Laufen zu bekommen, da er einfacher zu debuggen ist.

Sobald man das am Laufen hat, kann man diese URL beim Alarmserver in der Kamera hinterlegen. Die Kamera macht dann im Alarmfall genau das, was man zuvor per Browser gemacht hat.

@m.polinowski vielen Dank für deine Rückmeldung!

Ich habe mich nun weiter damit beschäftigt und weiß nun, was ich absetzen müsste, um einen Switch zu schalten. Der Befehl lautet beispielsweise:

curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "ON" "http://192.123.1.123:1111/rest/items/Motion_Event_frontcam"

Ich habe nun so versucht, den Befehl abzusetzen, jedoch leider ohne Erfolg:

Hast du eventuell noch eine Idee, woran es liegen könnte? Danke!

Deshalb meinte ich das mal von POST auf GET umzustellen - das kann man dann einfach per Browser debuggen und sieht was passiert :sweat_smile:

Aber wenn der Befehl passt:

curl -X POST --header „Content-Type: text/plain“ --header „Accept: application/json“ -d „ON“ „http://192.123.1.123:1111/rest/items/Motion_Event_frontcam

Dann sind da ein paar Fehler in der Alarmserver Einstellung:

  • Im Befehl ist der Port 1111 und in der UI steht 8443
  • Die ausgeschwärzte Adresse in der UI ist 192.123.1.123 ?
  • Der Pfad in der UI ist zu kurz - da müsste dann /rest/items/Motion_Event_frontcam rein
  • Der Befehl sendet nur den String ON als data payload als JSON formatiert. Der Alarmserver ist aber konfiguriert das als Payload zu senden: {"dummy_switch":"ON"} - d.h. der Switch in OpenHAB müsste da mit JSONPath.dummy_switch erstmal das ON extrahieren.

@m.polinowski entschuldige vielmals, bei dem Befehl handelte es sich nur um ein Beispiel.

Ich habe mittlerweile die Lösung gefunden. Es lag an meinen Netzwerkeinstellungen. openHAB läuft in einem Docker und es wurde vom Binding das zugehörige Subnetz dafür verwendet, worauf ich keinen Zugriff hatte. Nachdem ich in den Netzwerkeinstellungen von openHAB die richtige IP-Adresse und somit das richtige Subnetz als Standard definiert hatte, lief alles problemlos.

Sollte jemand über diesen Thread stolpern, es muss eigentlich nichts gemacht werden, außer das ipcamera-Binding zu installieren und den entsprechenden Channel (MotionAlarm) zu aktivieren. Die Einstellungen für den Alarmserver macht das Binding automatisch.

1 Like

Danke für die Rückmeldung.

Läuft der OpenHAB Container dann mit --net=host ? Also so:

https://mpolinowski.github.io/devnotes/2019-09-27--home-assistant-podman-centos8#openhab

Ich sehe gerade - die Info mit der Netzwerkeinstellung habe ich auch nicht in der Anleitung drinnen:

Wo kann man das in der Oberfläche auswählen ? Hat man da ein Drop Down Menü in dem alle verfügbaren Interfaces gelistet werden? Oder muss man es von Hand eingeben?

Genau, der openHAB-Container läuft auf einem Raspberry Pi 4 im Netzwerkmodus host.

In openHAB 3 unter „Einstellungen“ „Netzwerk“ kann die primäre IP-Adresse unter allen verfügbaren Interfaces ausgewählt werden:

:+1:t2: Danke für den Hinzweis! Das muss ich mir nochmal anschauen und im Tutorial anpassen.

1 Like

Hmm also ich habe es gerade nochmal gestartet (in der Alpine Version):

docker run \
        --name openhab \
        --net=host \
        --privileged \
         --rm \
        -v /etc/localtime:/etc/localtime:ro \
        -v /opt/openhab/openhab_addons:/openhab/addons \
        -v /opt/openhab/openhab_conf:/openhab/conf \
        -v /opt/openhab/openhab_userdata:/openhab/userdata \
        -d \
        openhab/openhab:snapshot-alpine

Und da wird mir das (virtuelle) Docker Netzwerk nicht angezeigt - deshalb hatte ich das damals wohl auch nicht als Problem erkannt.

Wenn man den Container mit --net=host sollte er eigentlich auch nichts von den virtuellen Welten mitbekommen. Es sei denn der Container wird parallel noch einem zusätzlichen Netzwerk zugeordnet. Aber nicht sicher ob das geht in Docker.

EDIT: Ok, ist möglich:

Genau, Docker schaut bei mir auch nicht viel anders aus, nur dass ich einen Stack mit der openhab:latest Version laufen habe. Am Raspberry/Docker sind mehrere virtuelle Netzwerke eingerichtet, denke jedoch, dass es bei einer openHABian Standardinstallation oder einer „Standard-Docker“ Installation zu keinerlei Probleme kommen sollte.

Aber vielleicht irgendwo einen Hinweis setzen, dass man da mal nachschaut, sollte beim Alarmserver ein anderes Netz vom Binding eingetragen werden. Dies gilt auch für die URL-Channels, dort wird dann auch diese IP-Adresse verwendet.