NEWS
Test Adapter onvif camera v1.x.x
-
Hi ich habe ein neuen Adapter für ONVIF Kameras geschrieben, da die bisherigen Adapter nicht mehr gewartet werden und ich kein snapshot bei meiner Kamera erhalten habe.
Zum Installieren:
https://github.com/iobroker-community-adapters/ioBroker.onvifFür die aktuelle Version
bitte das latest Repo auswählen:

Kameras hinzufügen
Discovery:
Bei jedem Adapterstart wird mit dem in der Einstellungen eingetragen Benutzername und Passwort eine Discovery durchgeführt und versuch sich in die Kamera einzuloggen. Falls die Kamera noch nicht unter Objekte hinzugefügt wurde.
In den Einstellungen kann man die Discovery manuell ausführen. Falls die Kameras unterschiedliche Zugangsdaten haben müssen die jeweils eingegeben werden und eine discovery durchgeführt werden. Im Log sieht man Details zu dem Prozess.
Damit eine Kamera neu erkannt wird muss sie einfach unter Objekte gelöscht werden.
Manuelle Suche
Es können Kameras manuell gesucht werden, falls Discovery nicht funktioniert. Dazu muss eine IP Range und Ports eingegeben und manuell ausgeführt werden. Im Log sieht man Details zu dem Prozess.
Datenpunkte
onvif.0.IP_PORT.events Events der Kamera wie z.b. Bewegungserkennung
onvif.0.IP_PORT.general Generelle Information über die Kameras
onvif.0.IP_PORT.infos Informationen über die Kamera werden nur bei Adapterstart aktualisiert oder bei remote.refresh
Video und Snapshot URL:
onvif.0.IP_PORT.infos.streamUris.MediaProfile_Channel1_MainStream.snapshotUrl.urionvif.0.IP_PORT.remote Steuerung der Kamera
onvif.0.IP_PORT.remote.refresh Aktualisierung der Infodaten
onvif.0.IP_PORT.remote.gotoHomePosition PTZ Kamera in die HomePosition setzen
onvif.0.IP_PORT.remote.gotoPreset PTZ Kamera Preset Nummer auswählen
onvif.0.IP_PORT.remote.snapshot Speichert ein snapshot unter onvif.0.IP_PORT.snapshot
Message
Adapter nimmt Message "snapshot" entgegen und gibt ein Bild zurück
sendTo("onvif.0", "snapshot", "192_168_178_100_80", (result) => { if (result) { sendTo("telegram.0", { text: result, type: "photo", caption: "Kamera 2", }); } });Bewegungsmeldung zu Telegram
on("onvif.0.192_168_178_100_80.events.RuleEngine/CellMotionDetector/Motion", (obj) => { if (obj.state.val === true) { sendTo("onvif.0", "snapshot", "192_168_178_100_80", (result) => { if (result) { sendTo("telegram.0", { text: result, type: "photo", caption: "Camera 2", }); } }); } });Snapshot Server in vis einbinden
Der Adapter bietet ein Snapshot Server ohne Passwort an. Dazu Server aktivieren in den Instanzeinstellungen und dann kann der aktuelle Snapshot http://iobrokerIp:8095/CAMERAIP_PORT z.B. http://192.168.0.1:8095/192_168_0_1_80 abgerufen werden.
In der Vis ein Image Widget einfügen und die Url als Quelle angeben und eine Updatezeit auswählen

Stream in vis einbinden
go2rtsp Docker
Ein Stream wird normalerweise via rtsp stream bereitgestellt. Eine Umwandlung via motion eye ist sehr resourcen aufwändig und hat ein Verzögerng. Ein Umwandlung in webrtc ist schneller und resourcenschonender. Meine Empfehlung ist ein go2rtsp. Dazu muss ein Docker von alexxit/go2rtc erstellt werden.
https://hub.docker.com/r/alexxit/go2rtcOder go2rtc lokal zu installieren:
https://www.youtube.com/watch?v=4VEEpRYerZg
https://forum.iobroker.net/post/1031526image: alexxit/go2rtc network_mode: host # important for WebRTC, HomeKit, UDP cameras privileged: true # only for FFmpeg hardware transcoding restart: unless-stopped # autorestart on fail or config change from WebUI environment: - TZ=Europe/Berlin # timezone in logs volumes: - "~/go2rtc:/config" # folder for go2rtc.yaml file (edit from WebUI)Es muss ein Volume für den Pfad /config und das network als host eingestellt werden.
Dann ist go2rtsp erreichbar über
http://IP:1984Dann kann man ein Stream hinzufügen. Die Stream url findet man z.B. unter
onvif.0.IP_PORT.infos.streamUris.ProfileName.live_stream_tcp.uri
Stream als iFrame einfügen
Das Widget
iFramein der Vis hinzufügen und als Quelle den stream link von go2rtsp verwendenhttp://192.168.178.1:1984/stream.html?src=camera&mode=webrtcUnter links kann noch die Art des Players ausgewählt werden (Mikrofon)
Rtsp2Web Docker
Eine Alternative ist ein RTSPtoWeb Docker. Dies ist aber von der Einrichtun komplizierter.
Dazu muss ein Docker von ghcr.io/deepch/rtsptoweb:latest erstellt werden.FFMpeg Unterstützung
Wenn die Kamera keine Snapshot Unterstützng hat wird mit ffmpeg ein snapshot aus dem rtsp stream erzeugt.
Snapshot Server in vis einbinden
Der Adapter bietet ein Snapshot Server ohne Passwort an. Dazu Server aktivieren in den Instanzeinstellungen und dann kann der aktuelle Snapshot http://iobrokerIp:8095/CAMERAIP_PORT z.B. http://192.168.0.1:8095/192_168_0_1_80 abgerufen werden.
In der Vis ein Image Widget einfügen und die Url als Quelle angeben und eine Updatezeit auswählen
Snapshot in vis einbinden
Wenn möglich die snapshotUri verwenden z.B.
onvif.0.IP_PORT.infos.streamUris.MediaProfile_Channel1_MainStream.snapshotUrl.uriDen Datenpunkt nicht als Stream verwenden, da sonst die Festplatte zu hohe Last hat.
Den Datenpunkt aktualisieren via t onvif.0.IP_PORT.remote.snapshot
Den Datenpunkt onvif.0.IP_PORT.snapshot ein
String img srcelement zuordnen

Oder als Alternative falls String img src nicht funktioniert
Den Datenpunkt onvif.0.IP_PORT.snapshot alsHTMLelement in die vis einfügen mit folgendem Inhalt<img src="{onvif.0.IP_PORT.snapshot}" width="500px" />@tombox sagte in Test Adapter onvif camera v1.0.0:
Den Datenpunkt nicht als Stream verwenden, da sonst die Festplatte zu hohe Last hat.
Den Datenpunkt onvif.0.IP_PORT.snapshot ein String img src element zuordnen
Den Datenpunkt onvif.0.IP_PORT.snapshot als HTML element in die vis einfügen mit folgendem InhaltIrgenwie kann ich das nicht nachvollziehen was Du da machst.
Die Kameras sind alle da, aber bei meinen Hikvisions bekomme ich einfach keine Bilder im VIS angezeigt.Kannst Du das bitte Schritt für Schritt erklären was da zu tun ist.
Danke
Andreas
-
@tombox sagte in Test Adapter onvif camera v1.0.0:
Den Datenpunkt nicht als Stream verwenden, da sonst die Festplatte zu hohe Last hat.
Den Datenpunkt onvif.0.IP_PORT.snapshot ein String img src element zuordnen
Den Datenpunkt onvif.0.IP_PORT.snapshot als HTML element in die vis einfügen mit folgendem InhaltIrgenwie kann ich das nicht nachvollziehen was Du da machst.
Die Kameras sind alle da, aber bei meinen Hikvisions bekomme ich einfach keine Bilder im VIS angezeigt.Kannst Du das bitte Schritt für Schritt erklären was da zu tun ist.
Danke
Andreas
@randyandy Was möchtest du genau ein stream oder ein bild auf Knopfdruck
-
@randyandy Was möchtest du genau ein stream oder ein bild auf Knopfdruck
-
Ich würde gerne bei einem Event (ausgelöst von der Kamera) das Bild updaten und dann im VIS anzeigen.
Die URI sieht so aus : http://192.168.178.11/onvif-http/snapshot?Profile_1@randyandy Hast du ein Datenpunkt onvif.0.IP_PORT.snapshot der sich aktualisiert wenn du onvif.0.IP_PORT.remote.snapshot auf true setzt?
-
@randyandy Hast du ein Datenpunkt onvif.0.IP_PORT.snapshot der sich aktualisiert wenn du onvif.0.IP_PORT.remote.snapshot auf true setzt?
-
ich habe nun mal onvif.0.IP_PORT.remote.snapshot auf true gesetzt und siehe da, dann wurde ein Datenpunkt onvif.0.IP_PORT.snapshot erzeugt.
Mit folgenden Inhalt: data:image/jpg;base64,/9j/4AAQSkZJR......Andreas
@randyandy Genau und dann wie in Beitrag #1 einfügen
-
@tombox sagte in Test Adapter onvif camera v1.0.0:
Den Datenpunkt onvif.0.IP_PORT.snapshot als HTML element in die vis einfügen mit folgendem Inhalt
Diesen Schritt verstehe ich noch nicht ganz.
Das Bild taucht doch mit dem Widget String img src im VIS auf.
Oder ist das nur ein alternative Lösung ?Andreas
-
@tombox sagte in Test Adapter onvif camera v1.0.0:
Den Datenpunkt onvif.0.IP_PORT.snapshot als HTML element in die vis einfügen mit folgendem Inhalt
Diesen Schritt verstehe ich noch nicht ganz.
Das Bild taucht doch mit dem Widget String img src im VIS auf.
Oder ist das nur ein alternative Lösung ?Andreas
@randyandy Achse das sind alternativen
-
@randyandy Achse das sind alternativen
-
Noch ein kleiner aber vielleicht für RaspberryPi Benutzer nicht ganz unwesentlicher Punkt.
Das Beschreiben des Datenpunkts wird die SD-Karte, die typisch verwendet wird, belasten. Bei einer SSD sollte das nicht die Rolle spielen aber im Datenpunkt wird das gesamte Bild abgelegt wenn ich das richtig interpretiere.
Schön wäre es eigentlich wenn man den Datenpunkt nur im DRAM halten könnte. Ich habe aber keine Möglichkeit gefunden das aus ioBroker heraus zu bewerkstelligen.
Alternative könnte man vielleicht Redis verwenden, aber am Ende werden die Datenpunkte dann doch wieder auf die SD geschrieben.
Ich habe lange ein Skript verwendet das mit das Bild in eine RAMDisk geschrieben hat. Das Bild aus der RAMdisk habe ich dann als html-Element in VIS eingebunden. Damit umgeht man das Schreiben großer Dantenmengen auf die SD-Karte.Andreas
-
Noch ein kleiner aber vielleicht für RaspberryPi Benutzer nicht ganz unwesentlicher Punkt.
Das Beschreiben des Datenpunkts wird die SD-Karte, die typisch verwendet wird, belasten. Bei einer SSD sollte das nicht die Rolle spielen aber im Datenpunkt wird das gesamte Bild abgelegt wenn ich das richtig interpretiere.
Schön wäre es eigentlich wenn man den Datenpunkt nur im DRAM halten könnte. Ich habe aber keine Möglichkeit gefunden das aus ioBroker heraus zu bewerkstelligen.
Alternative könnte man vielleicht Redis verwenden, aber am Ende werden die Datenpunkte dann doch wieder auf die SD geschrieben.
Ich habe lange ein Skript verwendet das mit das Bild in eine RAMDisk geschrieben hat. Das Bild aus der RAMdisk habe ich dann als html-Element in VIS eingebunden. Damit umgeht man das Schreiben großer Dantenmengen auf die SD-Karte.Andreas
@randyandy Korrekt sollte nicht als stream verwendet werden alternative wäre noch der snapshot server im adapter
-
@randyandy Korrekt sollte nicht als stream verwendet werden alternative wäre noch der snapshot server im adapter
ich habe nun weiter gemacht und habe doch noch ein Problem. Ich habe in der Summe 6 Kameras (3 Hikvision und 3 Anpviz)
5 Kameras findet das System problemlos aber ein Kamera (eine Hikvision) wird nur manuel gefunden. Die Parameter sind schlüssig und werden in den Objekten aufgebaut. Beim Erstellen eines Snapshots über onvif.0.IP_PORT.remote.snapshot wird aber kein Datenpunkt onvif.0.IP_PORT.snapshot erzeugt. Entsprechend wird auch kein Bild erstellt.
Da die Hikvision alle vom gleichen Typ sind ist das eigenartig, dass 2 problemlos funktionieren und die 3. nicht.
Ist auch iegenartig dass die Kamera nur manuell gefunden wird.Ich habe noch ein wenig weitergesucht und im LOG wird angezeigt, dass er sich mit dem Zugangsparameter "Benutzer:Password" nicht einloggen konnte. Das kann aber eigentlich nicht sein, dann dürften doch bei den Objekten gar keine Daten auftauchen.
-
ich habe nun weiter gemacht und habe doch noch ein Problem. Ich habe in der Summe 6 Kameras (3 Hikvision und 3 Anpviz)
5 Kameras findet das System problemlos aber ein Kamera (eine Hikvision) wird nur manuel gefunden. Die Parameter sind schlüssig und werden in den Objekten aufgebaut. Beim Erstellen eines Snapshots über onvif.0.IP_PORT.remote.snapshot wird aber kein Datenpunkt onvif.0.IP_PORT.snapshot erzeugt. Entsprechend wird auch kein Bild erstellt.
Da die Hikvision alle vom gleichen Typ sind ist das eigenartig, dass 2 problemlos funktionieren und die 3. nicht.
Ist auch iegenartig dass die Kamera nur manuell gefunden wird.Ich habe noch ein wenig weitergesucht und im LOG wird angezeigt, dass er sich mit dem Zugangsparameter "Benutzer:Password" nicht einloggen konnte. Das kann aber eigentlich nicht sein, dann dürften doch bei den Objekten gar keine Daten auftauchen.
@randyandy Schwierig zu sagen sind alle im gleichen Netzwerk du kannst die Kamera ja unter Objekte löschen und neu erstellen lassen
-
@randyandy Schwierig zu sagen sind alle im gleichen Netzwerk du kannst die Kamera ja unter Objekte löschen und neu erstellen lassen
@tombox
Habe die Objekte bereits mehrfach gelöscht und dann die Kamera neu eingelesen
Ja die Kameras sind alle im gleichen Netzwerk. Die Kamaeras haben alle die gleiche Firmware.
Im Log kommt folgende Meldung:
error: onvif.0 (32005) Error: Wrong ONVIF SOAP responseNoch ein Hinweis:
Ich denke Du solltest im Log nicht Username und Passwort im Klartext anzeigen -
@tombox
Habe die Objekte bereits mehrfach gelöscht und dann die Kamera neu eingelesen
Ja die Kameras sind alle im gleichen Netzwerk. Die Kamaeras haben alle die gleiche Firmware.
Im Log kommt folgende Meldung:
error: onvif.0 (32005) Error: Wrong ONVIF SOAP responseNoch ein Hinweis:
Ich denke Du solltest im Log nicht Username und Passwort im Klartext anzeigen@randyandy Ok komisch das er nicht onvif kompatibel ist aber manuell hinzufügen noch geht. gibt es vielleicht ein firmware update oder downgrade
Ja das ding ist es sind ja alles lokale Zugangsdaten und wichtig bei der fehlersuche aber ich kann sie ein wenig schwärzen -
@randyandy Ok komisch das er nicht onvif kompatibel ist aber manuell hinzufügen noch geht. gibt es vielleicht ein firmware update oder downgrade
Ja das ding ist es sind ja alles lokale Zugangsdaten und wichtig bei der fehlersuche aber ich kann sie ein wenig schwärzen@tombox sagte in Test Adapter onvif camera v1.0.0:
Ok komisch das er nicht onvif kompatibel ist aber manuell hinzufügen noch geht. gibt es vielleicht ein firmware update oder downgrade
Nee Firmware Version ist identisch. Allerdings die Kamera wurde mind. 1 Jahr später gekauft. Aber ich kann mir nicht vorstellen, dass dies ein Hardware Thema ist. ONVIF sollte Firmware sein.
Und Hikvision ist ja nun auch nicht irgendwer, ist ja immerhin der weltweit größte Hersteller für solche Kameras. -
@tombox sagte in Test Adapter onvif camera v1.0.0:
Ok komisch das er nicht onvif kompatibel ist aber manuell hinzufügen noch geht. gibt es vielleicht ein firmware update oder downgrade
Nee Firmware Version ist identisch. Allerdings die Kamera wurde mind. 1 Jahr später gekauft. Aber ich kann mir nicht vorstellen, dass dies ein Hardware Thema ist. ONVIF sollte Firmware sein.
Und Hikvision ist ja nun auch nicht irgendwer, ist ja immerhin der weltweit größte Hersteller für solche Kameras.@randyandy Ja aber ich nutze auch nur die onvif sachen. Was du machen kannst ist mal den ONVIF Device Manager runterzuladen und die Kameras zu vergleichen
-
@randyandy Ja aber ich nutze auch nur die onvif sachen. Was du machen kannst ist mal den ONVIF Device Manager runterzuladen und die Kameras zu vergleichen
-
Mit dem Onvif Device Manager geht es. Ich start morgen die Kamera mal neu (hardreset). Mal sehen ob das was hilft.
@randyandy ok welche exakter typ ist es und wrong onvif soap ist auch wirklich für die ip der Kamera
-
@randyandy ok welche exakter typ ist es und wrong onvif soap ist auch wirklich für die ip der Kamera
Hier noch ein Screenshot der System settings der Kamera die manuell erkannt wird aber keine Screenshots liefert:
.
Die Kamera hat die IP-Adresse: 192.168.178.20 und hier die Fehlermeldungen beim manuellen Anlernen der Kamera:
onvif.0 2023-03-05 12:39:17.180 error Failed to login to 192.168.178.20:8899 with Benutzer:Password
onvif.0 2023-03-05 12:39:17.178 error Failed to login to 192.168.178.20:8081 with Benutzer:Password
onvif.0 2023-03-05 12:39:17.175 error Failed to login to 192.168.178.20:8080 with Benutzer:Password
onvif.0 2023-03-05 12:39:17.171 error Failed to login to 192.168.178.20:8000 with Benutzer:Password
onvif.0 2023-03-05 12:39:17.132 error Failed to login to 192.168.178.20:7575 with Benutzer:Password
onvif.0 2023-03-05 12:39:17.007 error Error: Wrong ONVIF SOAP response
Das komische ist, das der Login fail ist, aber die Werte auftauchenAber irgendetwas stimmt bei den Hikvisions in der Summe nicht. ich bekommen von den anderen beiden Kameras die automatisch gefunden werden und in dem ein Screenshot ausgelöst werden kann im LOG folgende Fehlermeldungen (tritt immer wieder auf):

Bie den anderen 3 Kameras (ANPVIZ) scheint alle ok zu sein.