neues modul 74_UnifiVideo.pm

Begonnen von justme1968, 11 September 2017, 21:09:12

Vorheriges Thema - Nächstes Thema

justme1968

anbei eine aller erste preview version eines neuen moduls 74_UnifiVideo.pm für unifi video kameras.

ich würde gerne wissen ob es überhaupt anwender von unifi video hier gibt und welche wünsche es für ein solches modul gibt.

zuerst muss in der unifi video oberfläche unter admin->my account->api access ein api key erzeugt werden. mit diesem wird dann das device in fhem angelegt:define <nvr> UnifiVideo <ip> [<apiKey>]den apiKey kann man auch nachträglich per set oder attribut setzen und ändern.

danach sollte es im device readings für die namen der einzelnen kameras und deren id geben. oben in der device detail ansicht werden kleine bilder aller kameras eingeblendet.

mit snapshot cam=<cam> [width=<width>] [fileName=<fileName>] lässt sich ein aktueller snapshot (z.b. über bewegungsmelder getriggert) im filesystem speichern. es wird dabei auch ein event mit dem file namen erzeugt. <cam> kann die laufende nummer der kamera, die id oder eine regex die auf den namen gematched wird sein.

mit define <name> webLink htmlCode {UnifiVideo_2html('<nvr>','<cam>[,<cam2>,..]'[,<width>])} kann man ein weblink device anlegen das das aktuelle video bild zeigt und z.b. auf einem floorplan verwendet werden kann. <camX> kann die gleichen dinge enthalten wie beim snapshot kommando. achtung: es ist ein string mit einer komma getrennten liste.

was noch kommen soll:
- mehr konfigurationsmöglichkeiten: bild größe, anzeigen der cams in der detail ansicht, file namen, ...
- ein UnifiVideoCam device statt des weblinks
- ein widget für ftui
- ... ?

einschränkungen: die jeweiligen video bilder werden nur 1x pro sekunde aktualisiert. mehr ist leider (zur zeit) nicht möglich da es kein echtes api gibt.

gruss
  andre

edit 2017-09-13: erzeugen von motion events in fhem wenn es einträge im motion.log des nvr gibt.
voraussetzung: der user unter dem fhem läuft muss per ssh und ohne password auf das system kommen auf dem der nur läuft. im fhem nvr device ist das sshUser attribut zu setzen. dies ist der user mit dem das ssh kommando auf nvr seite aufschlagen soll. bei einem 'echten' nvr ist das der user ubnt.

also:
- ssh zugang einrichten. d.h. public key in .ssh/authorized_keys file auf nvr seite eintragen
- auf kommandozeile testen ob es geht
- sshUser attribut setzen
- set <nvr> reconnect

ich konnte noch nicht testen was passiert wenn das motion.log file auf nvr seite rotiert wird. müsste aber gehen.

edit 2017-10-02: kamera zählung repariert wenn es nur eine kamera gibt

edit 2018-01-12: das modul ist jetzt eingecheckt
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Christian Uhlmann

hallo andre,

ich wagte es kaum zu hoffen und daher auch nie eine anfrage dazu von mir im forum aber genau das brauchte ich noch.
finde die lösung super, haber aber bisher erst eine cam und eine zweite zum testen und spielen.

Zitat von: justme1968 am 11 September 2017, 21:09:12
ich würde gerne wissen ob es überhaupt anwender von unifi video hier gibt und welche wünsche es für ein solches modul gibt.
dieses modul fehlte um hier weiter zu investieren, vielen dank :)

mein unifi video 3.8.0-beta5 mit der cam "UVC G3 Dome" funktioniert auf anhieb, die andere cam werde ich dann mal auch wieder anschließen und alles weitere testen.

Zitat von: justme1968 am 11 September 2017, 21:09:12
mit snapshot cam=<cam> [width=<width>] [fileName=<fileName>] lässt sich ein aktueller snapshot (z.b. über bewegungsmelder getriggert) im filesystem speichern. es wird dabei auch ein event mit dem file namen erzeugt. <cam> kann die laufende nummer der kamera, die id oder eine regex die auf den namen gematched wird sein.
klappt, allerdings hätte ich gehofft, das die motion detection über die cam ein event in FHEM erzeugt, wäre das noch machbar?

Zitat von: justme1968 am 11 September 2017, 21:09:12
was noch kommen soll:
- mehr konfigurationsmöglichkeiten: bild größe, anzeigen der cams in der detail ansicht, file namen, ...
- ein UnifiVideoCam device statt des weblinks
- ein widget für ftui
- ... ?
ich mach mal wunschkonzert :)
- abruf der recordings
- abruf der alerts (low prio)
- motion event der cam in FHEM (wie schon oben erwähnt) - high prio
- live view in fhem (es gibt da einen RTSP Service für verschiedene Auflösungen je Cam, diese konnte ich bisher nicht in FHEM einbinden außer über irgend einen proxy, der aber auch nur schlecht lief. wenn das in FHEM direkt integrierbar ist, wäre mega :) sobald der RTSP service aktiviert ist, gibt es direkt URL's auf die jeweilige Auflösung der CAM allerdings braucht es da einen speziellen player (ich hatte es mal mit vlc getestet, lief in hohen auflösungen schlecht in mittlerer und kleiner auflösung ganz annehmbar)).

Zitat von: justme1968 am 11 September 2017, 21:09:12
einschränkungen: die jeweiligen video bilder werden nur 1x pro sekunde aktualisiert. mehr ist leider (zur zeit) nicht möglich da es kein echtes api gibt.
auch hier denke ich, das man nur über den RTSP Service gehen kann, hatte dazu auch mal was im UBNT-Forum zu gelesen, dass dies wohl "state of the art" ist und daher als ausreichend angesehen wird.

ich nutze keinen nvr sondern auf einem normalen debian stretch system einfach das .deb paket installiert.
nachdem ich das modul eingerichtet habe, taucht in der unifi video oberfläche ein neus device auf, keine ahnung warum.

wenn ich was testen soll oder weiteren input liefern soll, dann einfach bescheid geben.

vielen dank und grüße
christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

justme1968

an den events bin ich noch am knobeln. das problem ist das es kein api gibt. d.h. man kommt nicht direkt an die events. es gibt aber die möglichkeit das log file auf dem nvr zu überwachen und darauf zu reagieren. ich weiss noch nur noch wie man das elegant hin bekommt.

das problem mit rtsp ist: es gibt keinen browser der das nativ unterstützt und kein kostenloses plugin und auch keinen sonstigen freien player der sich direkt in eine webseite integrieren lässt. das war früher (ziemlich lange her) mal besser.

es gibt die möglichkeit den rtsp stream per ffmpeg zu transcodieren. das verwende ich aktuell schon mit einem plugin für homekit. dort wird ffmpeg automatisch gestartet wenn es gebraucht wird und danach auch wieder beendet. etwas in der art könnte ich mir auch über fhem vorstellen. ich habe aber bis jetzt noch keine vernünftige einstellung für die erkennung auf unifi seite gefunden und noch ziemliche viele falsch positive und leider auch falsch negative.


ob nvr oder anderer linux rechner mit dem unifi video paket macht keinen unterschied. der nvr ist eigentlich auch nur ein rechner von der stange auf dem das deb paket fertig installiert ist.

das mit dem zusätzlichen gerät kann ich mir gerade nicht erklären. fhem schreibt nichts zur unify seite zurück. zeig mal bitte wie das ausschaut.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Christian Uhlmann

Zitat von: justme1968 am 11 September 2017, 22:17:17
zeig mal bitte wie das ausschaut.

wollte ich eh machen, habe den screenshot dann vergessen, hängt jetzt an diesem post.

du kannst es aber ignorieren, gut das ich den screen gemacht habe sonst würde ich mir selber nicht mehr glauben.
jetzt ist es weg und kommt auch anscheinend nicht wieder, hatte ich bisher vorher nicht aber ist mir jetzt auch egal :)
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

justme1968

schau dir mal im ersten post den edit und die neue modul version an. mal sehen ob und wie gut es geht :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Wuppi68

habe ich zwar noch nicht eingebaut - aber die Kamera ist schon da und läuft auch im Testbetrieb (Kamera) :-)

Werde ich wohl nach meinem Urlaub mit Prio angehen müssen
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

Christian Uhlmann

Hi,

Zitat von: justme1968 am 13 September 2017, 17:51:56
schau dir mal im ersten post den edit und die neue modul version an. mal sehen ob und wie gut es geht :)

ist installiert und eingerichtet und nach dem reconnect habe ich auch im Logfile mit verbose = 5 folgendes entdeckt:

2017.09.13 19:44:22 3: SYS.unifi.VIDEO: using /usr/bin/ssh -q fhem@192.168.eg.al tail  -n 0 -F /var/log/unifi-video/motion.log to watch logfile
2017.09.13 19:44:22 3: SYS.unifi.VIDEO: started logfile watcher
2017.09.13 19:44:22 5: SYS.unifi.VIDEO: received {"data":[{"name":"OG.fl.CAM.01","uuid":"geschwärzt","host":"192.168.eg.al","model":"UVC G3 Dome","uptime":1504550050904,"firmwareVersion":"v3.8.2-beta9","firmwareBuild":"639a843","protocolVersion":66,"systemInfo":{"cpuName":"ARMv7 Processor rev 1 (v7l)","cpuLoad":44.0,"memory":{"used":54706176,"total":392110080},"appMemory":null,"nics":[{"desc":"eth0","mac":"","ip":"","rxBps":11111,"txBps":458817}],"disk":null},"mac":"F09FC2147274","managed":true,"provisioned":true,"lastSeen":1505263473695,"internalHost":"192.168.eg.al","state":"CONNECTED","disconnectReason":null,"platform":"GEN3L","managementToken":null,"controllerHostAddress":"192.168.eg.al","controllerHostPort":7442,"username":"ubnt","lastRecordingId":"59b96db0e4b0dca2eaac3444","lastRecordingStartTime":1505324462257,"deviceSettings":{"name":"OG.fl.CAM.01","timezone":"GMT+2","persists":false},"enableSuggestedVideoSettings":true,"micVolume":100,"audioBitRate":40000,"channels":[{"id":"0","name":"video1","enabled":true,"isRtspEnabled":false,"rtspAlias":null,"width":1920,"height":1080,"fps":15,"bitrate":3016000,"minBitrate":32000,"maxBitrate":6000000,"fpsValues":[1,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,30],"idrInterval":1},{"id":"1","name":"video3","enabled":true,"isRtspEnabled":true,"rtspAlias":"59adb38ce4b0dca2eaabc678_1","width":1024,"height":576,"fps":15,"bitrate":1016000,"minBitrate":32000,"maxBitrate":2000000,"fpsValues":[1,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,30],"idrInterval":1},{"id":"2","name":"video2","enabled":true,"isRtspEnabled":false,"rtspAlias":null,"width":640,"height":360,"fps":15,"bitrate":516000,"minBitrate":32000,"maxBitrate":1000000,"fpsValues":[1,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,30],"idrInterval":1}],"ispSettings":{"brightness":50,"contrast":50,"denoise":50,"hue":50,"saturation":50,"sharpness":50,"flip":0,"mirror":0,"gamma":null,"wdr":1,"aeMode":"auto","irLedMode":"auto","irLedLevel":215,"focusMode":"ztrig","focusPosition":0,"zoomPosition":0,"icrSensitivity":0,"aggressiveAntiFlicker":0,"enable3dnr":1,"dZoomStreamId":4,"dZoomCenterX":50,"dZoomCenterY":50,"dZoomScale":0,"lensDistortionCorrection":1,"enableExternalIr":0,"irOnValBrightness":50,"irOnStsBrightness":0,"irOnValContrast":50,"irOnStsContrast":0,"irOnValDenoise":50,"irOnStsDenoise":0,"irOnValHue":50,"irOnStsHue":0,"irOnValSaturation":50,"irOnStsSaturation":0,"irOnValSharpness":50,"irOnStsSharpness":0},"osdSettings":{"tag":"","overrideMessage":false,"enableDate":1,"enableLogo":1},"recordingSettings":{"motionRecordEnabled":true,"fullTimeRecordEnabled":false,"channel":"0","prePaddingSecs":3,"postPaddingSecs":20,"storagePath":null},"scheduleId":null,"zones":[{"name":"UVC G3 Dome","sensitivity":20,"bitmap":null,"coordinates":[{"x":0.0,"y":0.0},{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":1.0,"y":0.0}],"_id":"59adb3c3e4b0dca2eaabc679"}],"mapSettings":{"x":0.0,"y":0.0,"mapId":null,"angle":0.0,"radius":0.0,"rotation":0.0},"networkStatus":{"connectionState":2,"connectionStateDescription":"CONNECTED","essid":null,"frequency":0,"quality":0,"qualityMax":0,"signalLevel":0,"linkSpeedMbps":100,"ipAddress":"192.168.eg.al"},"status":{"recordingStatus":{"0":{"motionRecordingEnabled":true,"fullTimeRecordingEnabled":false},"1":{"motionRecordingEnabled":false,"fullTimeRecordingEnabled":false},"2":{"motionRecordingEnabled":false,"fullTimeRecordingEnabled":false}},"scheduledAction":null,"remoteHost":"192.168.eg.al","remotePort":7442},"authToken":{"authToken":"geschwärzt"},"certSignature":"geschwärzt","hasDefaultCredentials":false,"analyticsSettings":{"enableSoundAlert":false,"soundAlertVolume":100,"minimumMotionSecs":0,"endMotionAfterSecs":null},"enableStatusLed":false,"ledFaceAlwaysOnWhenManaged":true,"enableSpeaker":true,"speakerVolume":100,"deleted":false,"authStatus":"AUTHENTICATED","_id":"geschwärzt"}],"meta":{"totalCount":1,"filteredCount":1}}


aber das passiert nur beim manuelle reconnect und sonst passiert auch nichts.
Ausgeführt in unter 5 Sekunden nach einer erkannten Bewegung


Grüße

Christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

justme1968

so lange es keine bewegung gibt passiert auch nichts weiter. die bewegung muss nach dem einrichten passieren. nicht vorher.

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Christian Uhlmann

Hi,

Zitat von: justme1968 am 13 September 2017, 20:06:39
so lange es keine bewegung gibt passiert auch nichts weiter. die bewegung muss nach dem einrichten passieren. nicht vorher.

da habe ich mich wohl falsch ausgedrückt, ich hatte es eingerichtet und dann einmal vor die Cam gelaufen, im unifi video interface wurde auf grund der bewegung auch etwas aufgezeichnet.
aber sowohl im fhem device als auch im log mit verbose 5 ist nichts passiert.
dann habe ich eine bewegung vor die camera gemacht und ein set <UnifiVideo-device> reconnect ausgeführt.
da habe ich dann das log gesehen.

bei mir sieht es so aus, als ob das device sich nicht regelmäßig mit dem unifi-video server verbindet.
wenn ich in fhem nichts manuell mache, taucht trotz verbose 5 nie etwas im log auf.
die live bilder funktionieren aber.

wie ist denn das interval mit dem sich das modul mit dem unifi-video server verbindet und die daten abholt?


grüße
christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

justme1968

wenn die verbindung steht siehst du nichts weiter. wenn sie abbricht steht eine meldung im fhem log.

schau mal bitte auf dem unifi-video server ob dein log file auch /var/log/unifi-video/motion.log heisst und ob die bewegung darin auftaucht.

wenn dein log anders heisst kannst du es über das logfile attribut konfigurieren.

ansonsten mach mal auf dem fhem system als fhem user ein ssh <nvr rechner> tail -f <nvr log>. geht das ?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Christian Uhlmann

hi,

Zitat von: justme1968 am 14 September 2017, 10:42:33
schau mal bitte auf dem unifi-video server ob dein log file auch /var/log/unifi-video/motion.log heisst und ob die bewegung darin auftaucht.
ja, das File heißt bei mir auch so und hat folgenden Inhalt:

1505378912.236 2017-09-14 10:48:32.236/CEST: INFO   Camera[F09FC2147274] type:start event:1383 clock:828861333 (OG.fl.CAM.01) in app-event-bus-3
1505378921.537 2017-09-14 10:48:41.537/CEST: INFO   Camera[F09FC2147274] type:stop event:1383 clock:828870654 (OG.fl.CAM.01) in app-event-bus-0
1505379179.433 2017-09-14 10:52:59.433/CEST: INFO   Camera[F09FC2147274] type:start event:1384 clock:829128528 (OG.fl.CAM.01) in app-event-bus-2
1505379189.198 2017-09-14 10:53:09.198/CEST: INFO   Camera[F09FC2147274] type:stop event:1384 clock:829138309 (OG.fl.CAM.01) in app-event-bus-1


Zitat von: justme1968 am 14 September 2017, 10:42:33
ansonsten mach mal auf dem fhem system als fhem user ein ssh <nvr rechner> tail -f <nvr log>. geht das ?
bingo, das war es. bei mir läuft ssh auf einem anderen port, das hatte ich schon wieder vergessen.
habe es jetzt zusätzlich auf port 22 aktiviert und schon klappt es.
wäre es möglich sshPort noch mit einzubauen, damit man auch mit anderen ssh ports nutzen kann?

das reading wird angelegt:

2017-09-14 11:07:06   cam0motion      start

ich beobachte das jetzt mal ein weilchen, ob es passt.
gehe ich recht in der annahme, das immer bei erkannter bewegung, dieses reading aktualisiert wird?
wert ist dann immer start und der timestamp wird aktualisiert.


danke und grüße
christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

Christian Uhlmann

ein fehler ist mir gerade noch aufgefallen, ich wollte das verbose attribute löschen, da gab es im log diesen fehler:

Undefined subroutine &main::UnifiVideo_AttrDefaults called at fhem.pl line 3034.
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

justme1968

wegen dem port: du kannst den port (und alle anderen ssh parameter) für diese verbindung im ssh_config file eintragen. dann ist es zentral und nicht fhem spezifisch.

zum reading: ja. momentan wird bei jedem start event das reading aktualisiert. die stop events werden explizit unterdrückt. sobald ich weiss ob und wie man an die files kommt wird es auch ein stop event am ende der aufnahme geben.

zur fehlermeldung: das ist ein copy&paste fehler. lösch bitte die zeile mit UnifiVideo_AttrDefaults (578) einfach. ich habe aber oben auch eine version ohne diese zeile angehängt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Christian Uhlmann

Zitat von: justme1968 am 14 September 2017, 11:17:57
wegen dem port: du kannst den port (und alle anderen ssh parameter) für diese verbindung im ssh_config file eintragen. dann ist es zentral und nicht fhem spezifisch.
...
zur fehlermeldung: das ist ein copy&paste fehler. lösch bitte die zeile mit UnifiVideo_AttrDefaults (578) einfach. ich habe aber oben auch eine version ohne diese zeile angehängt.
danke, hat beides gut geklappt.

wenn ich noch was testen kann, einfach bescheid geben.
meine frau freut sich jetzt schon, dass sie die blöde unifi app hoffentlich bald nicht mehr nutzen muss :)
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

Wuppi68

cooles Modul :-)

Danke

ein kleines Problem habe ich noch :-(

wenn ich folgenden Weblink einfüge

{UnifiVideo_2html('UnifiVideo','0','1024')}

egal ob mit oder ohne Gänsefüßchen und <>

bekomme ich immer ein 200 Pixel breites Bild. Sieht dass so im Source aus

<img width="200" class="unifiSnap" nvrip="fhemi3.heibox.intern" apikey="dIMfo7F15ZzSds2E0gSNmbvIMouhDbnt" cameraid="5908e82b2636cbf3cb6b3700" src="http://fhemi3.heibox.intern:7080/api/2.0/snapshot/camera/5908e82b2636cbf3cb6b3700?force=true&amp;width=200&amp;apiKey=dIMfo7F15ZzSds2E0gSNmbvIMouhDbnt&amp;1507052291106">
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen