Seite 1 von 3

OH3 - IPCamera Binding und onvif

Verfasst: 24. Mai 2021 18:00
von Hoggle
Frage in die Runde:
Ich habe das Binding am laufen, so das der Stream in meiner Webseite angezeigt wird.

Code: Alles auswählen

  Video url="http://1xx.1xx.1xx.xx:8200/ipcamera.mjpeg" encoding="mjpeg"
  
Leider habe ich kein aktuelles Bild (Snapshot) von der Kamera, nur ein Bild kurz nach der Installation von ffmpeg.
Ich habe ein Item mit der URL zu der .jpg Datei, aber das Bild aktualisiert leider nicht.

Code: Alles auswählen

http://1xx.1xx.1xx.xx:8200/ipcamera.jpg
Muß ich in den ffmpeg Einstellungen etwas ändern, bzw. kann ich das irgendwo nachschauen, ob es einen Fehler gibt?
Im OH-log (Frontail) läuft alles einwandfrei, also ohne Fehler.
Oder muß ich noch etwas beim Thing einstellen?
Wo kann ich denn das Bild auf dem RPI finden? In dem html/camera Verzeichniss finde ich das nicht, sondern dort werden 5 .ts Dateien abgelegt (Ich denke, gemäß Einstellung von ffmpeg, oder?) und eine .m3u8 um mit vlc den Stream zu schauen.

Re: OH3 - IPCamera Binding und onvif

Verfasst: 12. Jun 2021 12:32
von Hoggle
Ich habe mal ein wenig in anderen Foren gelesen und bin auf folgende Zeile getroffen

Code: Alles auswählen

ffmpeg -loglevel fatal -i http://localhost:8200/ipcamera.mjpeg -vframes 1 -y -r 1 /etc/openhab/html/camera1/live.jpg
Ich bin leider Linux-Nichtkenner, oder wie man es anders nennen kann: Habe keine Ahnung.

Die oben stehende Zeile erstellt mir nur ein Bild, wenn ich den Befehl "sudo" davor stelle, also den Befehl als Superuser, Admin, Chef, oder wie das auch immer heißt, ausführe.

Wenn ich mich per SSH auf dem RPI anmelde und den Befehl das erste Mal ausführe, dann fragt er mich nach dem Benutzerpasswort.

Jetzt habe ich folgende Frage(n):
In openhab habe ich einen Homematic-Klingelsensor und ich möchte gerne ein Bild aus dem Stream per telegram an mich schicken lassen.
Ich habe das Telegram Binding eingerichtet und bekomme die Nachricht: "Es hat an der Tür geklingelt".
Was kann ich jetzt machen, damit ein Bild aus dem Stream extrahiert wird.
Das versenden des Bildes geht ja per Telegram recht simpel, aber wie führe ich den Befehl aus, um ein aktuelles Bild zu bekommen?

Also:
Item Klingel schaltet auf ON (Geht aber sofort wieder auf Off, wenn derjenige an der Tür nicht dauerhaft drückt) - Das ist der Trigger für die Rule
sudo ffmpeg .../live.jpg wird ausgeführt
Telegram wird versendet.

FFMPEG und OPENHAB3 laufen auf dem selben RPI

Re: OH3 - IPCamera Binding und onvif

Verfasst: 12. Jun 2021 19:00
von sihui
Hoggle hat geschrieben: 12. Jun 2021 12:32 Ich habe mal ein wenig in anderen Foren gelesen und bin auf folgende Zeile getroffen
Warum willst du das denn über diesen Umweg und ffmpeg machen wenn dir doch das IPCamera Binding bereits alles zur Verfügung stellt?

Code: Alles auswählen

http://<IP_openHAB>:<Port_der_Kamera>/ipcamera.jpg
Hoggle hat geschrieben: 24. Mai 2021 18:00 Wo kann ich denn das Bild auf dem RPI finden?
Da wo du es im Thing eingestellt hast, z.B.

Code: Alles auswählen

ffmpegOutput="/opt/openhab/conf/html/kamera1/",
Hoggle hat geschrieben: 12. Jun 2021 12:32 ... aber wie führe ich den Befehl aus, um ein aktuelles Bild zu bekommen?

Code: Alles auswählen

val telegramAction = getActions("telegram", "telegram:telegramBot:<deineID>")
telegramAction.sendTelegramAnimation("file:///opt/openhab/conf/html/kamera1/ipcamera.jpg", "Testbild")
https://community.openhab.org/t/ipcamer ... ding/42771
https://www.openhab.org/addons/bindings/ipcamera/

Re: OH3 - IPCamera Binding und onvif

Verfasst: 13. Jun 2021 11:27
von Hoggle

sihui hat geschrieben:
Hoggle hat geschrieben: 12. Jun 2021 12:32 Ich habe mal ein wenig in anderen Foren gelesen und bin auf folgende Zeile getroffen
Warum willst du das denn über diesen Umweg und ffmpeg machen wenn dir doch das IPCamera Binding bereits alles zur Verfügung stellt?
Leider ist das Bild im angegebenen Pfad nicht aktuell(so wie oben im ersten Beitrag geschrieben).
Iss halt eine Kamera, die keine oder nur schlechte Dokumentaion hat.
Aus diesem Grund der "Umweg".

Wie kann ich denn eine Befehlszeile ausführen, besonders ohne ein Passwort, oder mit Übergabe eines Passworts.

Gesendet von meinem SM-G998B mit Tapatalk


Re: OH3 - IPCamera Binding und onvif

Verfasst: 13. Jun 2021 11:30
von sihui
Hoggle hat geschrieben: 13. Jun 2021 11:27 Wie kann ich denn eine Befehlszeile ausführen, besonders ohne ein Passwort, oder mit Übergabe eines Passworts.

Code: Alles auswählen

executeCommandLine(Duration.ofSeconds(timeout), String commandLine)
https://www.openhab.org/docs/configurat ... ec-actions

Re: OH3 - IPCamera Binding und onvif

Verfasst: 13. Jun 2021 11:33
von Hoggle
sihui hat geschrieben:
Hoggle hat geschrieben: 13. Jun 2021 11:27 Wie kann ich denn eine Befehlszeile ausführen, besonders ohne ein Passwort, oder mit Übergabe eines Passworts.

Code: Alles auswählen

executeCommandLine(Duration.ofSeconds(timeout), String commandLine)
https://www.openhab.org/docs/configurat ... ec-actions
Das war schnell.

Danke

Gesendet von meinem SM-G998B mit Tapatalk


Re: OH3 - IPCamera Binding und onvif

Verfasst: 13. Jun 2021 14:02
von Hoggle
Mhh, bin wohl doch zu blöd.
Habe im "scripts"-Ordner eine Datei camerash.sh erstellt und per "chmod +x camerash.sh" ausführbar gemacht
mit "bash camerash.sh" wird ein Screenshoot gemacht.
Dann noch: sudo chown openhab:openhab camerash.sh
Im thing (exec-Binding)habe ich unter Befehl folgendes eingegeben: bash /etc/openhab/scripts/camerash.sh
und in der whitelist die Zeile eingefügt.
Wenn ich jetzt das item Ausführung auf ON stelle, dann sehe ich im frontail Logviewer, das alles klappt, also der switch geht auf On und im Item Zeitpunkt letzte Ausführung steht die richtige Zeit.
Aber leider wird kein Image im Verzeichnis erstellt.
Wo liegt mein Fehler?
Habe es vorher ohne "bash" vor dem Script probiert, aber auch das ging nicht.
Kann mir jemand helfen?

Re: OH3 - IPCamera Binding und onvif

Verfasst: 13. Jun 2021 15:34
von udo1toni
Das ist ein grundsätzliches Missverständnis. Das Verzeichnis ./scripts/ ist nicht für bash-Scripte gedacht. Stattdessen musst Du den kompletten Pfad übergeben. Alternativ kannst Du das Script evtl. auch irgendwo im System ablegen und in den Standardsuchpfad für den User openhab einbauen, das ist allerdings meist umständlicher, als den kompletten Pfad dazu zu schreiben.

Denke auch daran, dass, nur weil ein Script für User a anstandslos funktioniert, das für User b nicht zwingend auch so sein muss.
Teste also am besten auf der Konsole per

Code: Alles auswählen

sudo -u openhab camera.sh
ob das Script tatsächlich korrekt ausgeführt wird.


Gesendet von iPad mit Tapatalk

Re: OH3 - IPCamera Binding und onvif

Verfasst: 13. Jun 2021 16:33
von Hoggle
Hallo Udo.
Genau das funktioniert leider nicht.
Aber wo kann ich mit der Suche nach dem Problem anfangen?
Es kommt kein Fehler, aber auch kein Bild.
Doch Fehler.
Er fragt nach dem PW von Benutzer openhab, aber habopen funktioniert nicht.





Re: OH3 - IPCamera Binding und onvif

Verfasst: 13. Jun 2021 22:13
von udo1toni
Der Befehl

Code: Alles auswählen

sudo -u openhab camera.sh
führt das Script camera.sh unter dem Kontext des Users openhab aus. Das erfragte Passwort ist aber nicht das vom User openhab, sondern das Passwort des angemeldeten Users (also z.B. openhabian).
sudo -> SuperUser Do. Genau wie su (womit man sich eine shell in einem anderen Userkontext aufrufen kann) kann der Befehl nicht nur dazu verwendet werden, mit root-Rechten zu arbeiten, sondern man kann als ein beliebiger anderer User auftreten.

Voraussetzung ist natürlich, dass der angemeldete User berechtigt ist, sudo auszuführen und weiterhin berechtigt ist, in dem aufgerufenen Kontext zu arbeiten (das kann man nämlich einschränken).
Gewöhnlich hat ein User entweder volle Rechte oder gar keine, um sudo auszuführen.

habopen ist im Übrigen nicht das Passwort des Users openhab in der normalen Shell!
Vielmehr ist dies das default Passwort, mit dem man sich als openHAB User openhab an der Karaf Konsole anmeldet.
Für den User openhab ist im Betriebssystem kein Passwort hinterlegt. Es ist auch keine Shell eingetragen. Beides führt dazu, dass man sich normalerweise nicht als User openhab an der GNU/Linux Shell anmelden kann (es gibt natürlich Umwege, das dennoch zu erreichen).

Wenn sich das Script nicht erfolgreich im Kontext des Shell Users openhab ausführen lässt, hängt dies mit fehlenden Rechten zusammen. z.B. kann ein Pfad zum Speichern genutzt werden, den der User openhab nicht beschreiben darf. Oder das Programm benötigt Zugriff auf eine Ressource, die dem User openhab nicht zur Verfügung steht.