Modul IPCAM überarbeitet

Begonnen von Martin Fischer, 01 Februar 2013, 20:30:37

Vorheriges Thema - Nächstes Thema

Heatseeker

#300
So,

ich nochmal. Ich möchte nun die Bewegungserkennung der Kamera per Kommando aus und einschalten können. Ich habe schon rausgefunden, dass dies mit dem Befehl:

http://BENUTZERNAME:PASSWORT@IP-der-LE201/cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=false

funktioniert.

Habe auch schon versucht es per
attr xxx cmd01 cmd=cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=true
attr xxx cmd02 cmd=cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=false


als Befehl nutzbar zu machen, klappt aber nicht.
Hat da jemand eine Idee?

Grüße
Heatseeker

delMar

#301
Hallo Zusammen,

da ich auch ein paar Ideen für dieses Modul habe, hab ich mich als Maintainer angeboten und werde versuchen, das Modul etwas in Schuss zu bringen (siehe hier: https://forum.fhem.de/index.php/topic,119071.msg1135185.html).

Im Anhang ist mal eine Version, wo das Logging auf Log3 umgestellt wurde (dh das Attribut 'verbose' lässt nun den Log-Level vom Modul selber ändern, man muss nicht mehr über das globale Attribut gehen).
Außerdem hab ich eine neue Log-Message hinzugefügt, die den endgültigen snapshot-pfad ausgibt (wurde hier im Forum zum Debugging von "wrong or not supported image format" empfohlen).

Rein intern hab ich etwas Hygiene betrieben und ein Perl-Package eingeführt.

Meine Bitte an euch: kann jemand, der eine PTZ-Kamera hat, das Modul im Anhang mal durchtesten?
Speziell mit den Perl-Packages kanns sein, dass ein Methodenaufruf FHEM zum Absturz bringt, wenn das Package nicht passt. Tritt aber erst beim Aufruf der Methode auf.

Meine Tests waren erfolgreich, aber eben nicht erschöfpend.

Falls ich hier das OK kriege, würd ich diese Version mal einchecken und dann Schritt für Schritt an weiteren Features arbeiten, wie schon hier im Forum oder im Wiki dokumentiert sind. Und natürlich auch meine eigenen Wünsche ;-)

Danke für eure Mithilfe



schöne Grüße
Martin



Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

ph1959de

Hallo Martin,

schön, dass das Modul wieder einen aktiven Owner hat.

Mir sind im Forum über die Jahre immer wieder Berichte über inoffizielle Änderungen / Fixes / "workarounds" von einzelnen Benutzern aufgefallen. Hast Du die (zumindest teilweise) schon auf dem Schirm oder soll ich mal durchforsten was ich dazu noch so finde?

Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

delMar

Hallo Peter

Zitat von: ph1959de am 24 Februar 2021, 12:50:02
Mir sind im Forum über die Jahre immer wieder Berichte über inoffizielle Änderungen / Fixes / "workarounds" von einzelnen Benutzern aufgefallen. Hast Du die (zumindest teilweise) schon auf dem Schirm oder soll ich mal durchforsten was ich dazu noch so finde?
Wie vorhin geschrieben, kenne ich die Wünsche von der Wiki-Page und ein- zwei Sachen vom Durchlesen dieses Threads.
Dieser Thread ist dann aber auch schon der Tellerrand, an dem mein Horizont endet.

Wenn du dir die Zeit nehmen kannst, weitere Informationen zu sammeln, wär ich dafür sehr dankbar.
Zeitliche Versprechen für die Implementierung kann ich natürlich nicht machen; sollten aber ein paar Bugs dabei sein, dann nehm ich mir schon gern früher als später den einen oder anderen Abend Zeit, um den aus der Welt zu schaffen.

Dank dir

schöne Grüße
Martin

Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

delMar

Zitat von: Heatseeker am 22 Dezember 2020, 15:34:56
So,

ich nochmal. Ich möchte nun die Bewegungserkennung der Kamera per Kommando aus und einschalten können. Ich habe schon rausgefunden, dass dies mit dem Befehl:

http://BENUTZERNAME:PASSWORT@IP-der-LE201/cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=false

funktioniert.

Habe auch schon versucht es per
attr xxx cmd01 cmd=cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=true
attr xxx cmd02 cmd=cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=false


als Befehl nutzbar zu machen, klappt aber nicht.
Hat da jemand eine Idee?

Grüße
Heatseeker

Hallo Heatseeker,

ich hab das "neue" Modul File im meinem Post von heute mittag nochmal erweitert.
Probier das mal aus.

Wenn du verbose auf 4 stellst, solltest du beim Ausführen eines set einen Log Eintrag kriegen, der den ganzen Request ausgibt. Zum Beispiel so:

2021.02.24 23:03:39 4: IPCAM (ipcam_reolink) - set cmd requesting http://x.x.x.x/cgi-bin/api.cgi?user=abc&password=def&cmd=GetOsd


Das cmd in der Log-Zeile verweist auf den ausgeführten Befehl (könnte also auch 'pan', 'tilt', etc sein).

Vielleicht hilft dir das schon mal.
Wenn nicht, könnte ich mir noch vorstellen, dass http://benutzername:passwort@... in der URL irgendwie ein Problem macht.
Und dann könnte es noch sein, dass der Request als POST geschickt werden muss, das ist derzeit meines Wissens nach mit diesem Modul auch (noch) nicht möglich.



schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

delMar

Hallo

ich hab jetzt die überarbeitete Version des Moduls eingecheckt.
Ergänzt wurden Templates zur Kamerakonfiguration und das Logging wurde auf Log3 umgestellt.
(und eine handvoll modernisierungsarbeiten am Code - hinter den Kulissen)

Funktionierende Einstellungen für Kameras gern hier dokumentieren, damit ich sie ins SVN aufnehmen kann.

Als nächstes auf meiner Liste wäre

  • das Setzen von Attributen aus Readings anderer Devices (zB den path aus dem Reading eines ZoneMinder Monitors, wo sich der Auth-Hash alle zwei Stunden ändert).
  • Kommandos an die Kameras per POST absenden

Fehlerberichte und Verbesserungsvorschläge sind herzlich willkommen

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Sany

Hallo delMAr,

vielen Dank dafür, dass IPCam nun Updates erfährt. Bisher funktioniert es, ich nutze es nur, um von einer CAM Bilder abzufragen (snapshot).
Die neue Möglichkeit imageWithCallback habe ich gleich mal ausprobiert, die scheint aber ein wenig zu schnell zu sein. Der Snapshot wird zwar geschrieben, aber vorher schon der noch vorhandene gesendet, also quasi die Aufnahme vom Ereignis davor. IPCam wartet da nicht lange genug auf das Ende des Schreibvorgangs.

Beim "alten" Modul hatte ich immer mal Fehler im Log in Zusammenhang mit schreiben der snapshots, das ist mit dem Update bisher ausgeblieben. :)

Viele Grüße

Sany
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

delMar

Zitat von: Sany am 09 März 2021, 12:08:33
Der Snapshot wird zwar geschrieben, aber vorher schon der noch vorhandene gesendet, also quasi die Aufnahme vom Ereignis davor. IPCam wartet da nicht lange genug auf das Ende des Schreibvorgangs.
Danke fürs Feedback.

Tatsächlich "wartet" IPCAM schon lang genug. Denn der FileHandle wird geschlossen, dann wird erst das Reading aktualisiert, und dann wird erst das callback command ausgeführt.
Ich kann deine Beobachtung aber bestätigen.
Es scheint, als ob der Schreibvorgang des Files zu lange dauert.
Ich werd schauen, was ich hier machen kann, ohne eine harte Wartezeit von zB 1 Sekunde einbauen zu müssen

Danke!
schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

delMar

Hallo,

der Fix ist eingecheckt, war tatsächlich mein Fehler, nicht der Fehler der Schreiboperation (aber auch nicht das, was du vermutet hattest. Ich sollte einfach in Zukunft die Doku sorgfältiger lesen)

Zitat von: Sany am 09 März 2021, 12:08:33
Beim "alten" Modul hatte ich immer mal Fehler im Log in Zusammenhang mit schreiben der snapshots, das ist mit dem Update bisher ausgeblieben. :)
Hm, außer, dass die Requests zur Kamera jetzt non-blocking sind, hab ich diesbezüglich eigentlich nichts in direktem Zusammenhang geändert.

Aber lieber eine unerwartete Verbesserung, als etwas kaputtreparieren

Danke nochmal fürs Feedback

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Sany

#309
Hallo Martin,

update eingespielt, nun klappt der "imageWithCallback" genau wie vorgesehen. Vielen Dank dafür.


ZitatBeim "alten" Modul hatte ich immer mal Fehler im Log in Zusammenhang mit schreiben der snapshots, das ist mit dem Update bisher ausgeblieben.
das war der Fehler, der immer wieder kam, wenn IPCam getriggert wurde. Da hat wohl auch etwas mit dem Schreiben des Bildes nicht geklappt. Ich habs aber nicht weiter untersucht, und jetzt ist es eh weg.
2021.02.22 13:11:52.574 1: PERL WARNING: Use of uninitialized value in read at ./FHEM/49_IPCAM.pm line 465.
2021.02.22 13:11:52.575 1: stacktrace:
2021.02.22 13:11:52.576 1:     main::__ANON__                      called by ./FHEM/49_IPCAM.pm (465)
2021.02.22 13:11:52.576 1:     main::IPCAM_guessFileFormat         called by ./FHEM/49_IPCAM.pm (386)
2021.02.22 13:11:52.577 1:     main::IPCAM_getSnapshot             called by fhem.pl (3362)
2021.02.22 13:11:52.577 1:     main::HandleTimeout                 called by fhem.pl (689)
2021.02.22 13:11:52.578 1: IPCAM Camxxxxx Wrong or not supported image format: error while reading source image:


Zitatwar tatsächlich mein Fehler, nicht der Fehler der Schreiboperation (aber auch nicht das, was du vermutet hattest. Ich sollte einfach in Zukunft die Doku sorgfältiger lesen)
würde keiner Fehler machen gäbs keine updates und das Forum könnte man auch stillegen  ;) ;)

Viele Grüße

Sany
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

diepe

Hallo zusammen,
Seit Jahren nutze ich dieses Modul. Wenn es bei uns an der Haustür Klingel wird vom ipcam Modul ein Foto gemacht. Danach wird es per Telegram versendet. Seit dem Update sind die Fotos grau und man kann nichts mehr erkennen. Warum lässt man das Modul nicht einfach so wie es war und programmiert ein neues damit der User wählen kann welches er benutzt

Gruß
Dieter

Jamo

#311
Einfach vom backup das alte Modul wieder einspielen, das sollte für Dich passen. Und in global mit attr exclude_from_update das ipcam Modul vom update ausnehmen.

Alternativ konstruktiv mit dem Modulautor zusammenarbeiten, um den Fehler zu beseitigen. Der macht das ja hier unendgeldlich in seiner Freizeit, um ein für alle funktionierended Modul bereitzustellen.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

delMar

Hallo Dieter,

Zitat von: diepe am 04 April 2021, 10:15:39
Seit dem Update sind die Fotos grau und man kann nichts mehr erkennen.
Die maßgeblichen Änderungen beginnen mit 27. Februar. Hast du seit diesem Tag mehrere Updates gemacht?

Zitat von: diepe am 04 April 2021, 10:15:39
Warum lässt man das Modul nicht einfach so wie es war und programmiert ein neues damit der User wählen kann welches er benutzt
Die Absicht war natürlich, dass das Modul kompatibel zum bisherigen Verhalten bleibt. Tut mir leid, dass das bei dir zu Problemen führt. Von einem Vor-Poster wurde auch hier festgehalten, dass das Modul nun besser funktioniert.

Zitat von: Jamo am 04 April 2021, 10:39:06
Einfach vom backup das alte Modul wieder einspielen, das sollte für Dich passen. Und in global mit attr exclude_from_update das ipcam Modul vom update ausnehmen.
Danke für deine Erläuterung, Jamo. Das hätt ich nicht so rasch zur Hand gehabt.

Zitat von: Jamo am 04 April 2021, 10:39:06
Alternativ konstruktiv mit dem Modulautor zusammenarbeiten, um den Fehler zu beseitigen.
Richtig.
Dieter, falls du verifizieren könntest, dass es mit dem Stand vor dem 27. Februar einwandfrei funktioniert, kümmere ich mich gern darum, dass das bei dir funktionierende Verhalten wahlweise auch künftig weiterverwendet werden kann.
Die entsprechende Version findest du hier: https://svn.fhem.de/trac/export/18505/trunk/fhem/FHEM/49_IPCAM.pm

Noch besser wäre, wenn wir den Grund finden würden, warum nur noch graue Fotos gemacht werden.
Liefert die URL aus IPCAM direkt im Browser auch nur ein graues Bild?
Hast du Kamera-Strom an/aus versucht?
Du kannst hier auch gern die Definition und Attribute posten, und welches Kameramodell du hast.
Vielleicht gibt es auch von anderen Usern in der Community Feedback dazu.


schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

SimonFoag

Hallo zusammen,
Ich habe heute das Update des Modules eingespielt und das imageWithCallback getestet.
Ich bekomme dann immer einen timed out.

2021.04.07 14:33:33 3: IPCAM (Luowice) - imageWithCallback camUri: http://xxx:xxx@192.168.178.74:80/web/tmpfs/snap.jpg?user=Xxx&pwd=Xxx
2021.04.07 14:33:37 0: IPCAM (Luowice) - error while getting snapshot http://xxx:xxx@192.168.178.74:80/web/tmpfs/snap.jpg?user=Xxx&pwd=Xxx - read from http://192.168.178.74:80 timed out


Wenn ich die Url direkt in den Browser eingebe kommt sofort der aktuelle Snapshot.

Wenn ich über get Image den Snapshot hole bringt er mir kein Fehler.

Was kann ich tun? Kann man den TimeOut hochsetzen evtl mit einem Attribut?

Danke für eure Hilfe.
Grüße
Simon

delMar

Zitat von: SimonFoag am 07 April 2021, 14:59:41
Wenn ich über get Image den Snapshot hole bringt er mir kein Fehler.
Das ist seltsam, da sowohl image als auch imageWithCallback tatsächlich das Gleiche auf die selbe Art ausführen.
Einzig das Ausführen des Callbacks ist der Unterschied.

Kannst du mal bitte die raw definition hier posten, und auch, wie du das imageWithCallback aufrufst?
Sorry, ich fische hier noch etwas im Trüben...

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.