Modul IPCAM überarbeitet

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

Vorheriges Thema - Nächstes Thema

SimonFoag

Hallo,
Danke für die schnelle Antwort.
Ich muss mich berichtigen, der time out kommt auch über get Image. Hat aber zwischendurch funktioniert.
Auch muss ich sagen das die Kamera über WLAN angeschlossen ist und ich mir bewusst bin das dies nicht perfekt ist. Aber bis zum Update hab ich nur gelegentlich mal kein aktuellen Snapshot bekommen, da war aber der Fehler laut Loggfile bei einem unknown fileformat?!?!
Hier die Raw Definition des imageWithCallback das ich zum Testen manuell aufrufe....
defmod n_KameraLuowice notify KameraLuowice get Luowice imageWithCallback set MSGTelegram sendImage @@SimonTelegramFHEM /opt/fhem/www/snapshots/Luowice_snapshot.jpg
attr n_KameraLuowice room Kamera

setstate n_KameraLuowice 2021-04-07 14:31:40
setstate n_KameraLuowice 2021-04-07 12:44:45 state active


Ich kann mir vorstellen das der timeout generell zu niedrig ist wegen WLAN. Kann diese im Modul erhöht werden?

Grüße
Simon

delMar

Ok, ich werd bezüglich timeout recherchieren. Werde aber bis morgen nicht die Zeit finden.

Kannst du der Vollständigkeit halber noch das Modell der Kamera posten?

Danke!
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,
Das ist nur eine billige China Cam.
Luowice IP Kamera WiFi HD 3MP
Unterstützt aber den CGI Standard sowie onif und Rstp.

Vielen Dank schonmal.

Grüße
Simon

MadMax-FHEM

#318
Hallo,

nachdem hier ja bereits über Timeout "philosphiert" wird: habe ein ähnliches "Problem"...

Wäre ein Attribut mit Angabe eines Timeout möglich?

Kamera (Foscam) ebenfalls über WLAN.
Habe schon begonnen einige Aufrufe per HTTPMOD umzusetzen, da ich dort einen Timeout angeben kann.
Alles nicht schön aber...

Wollte mich eh melden, da ich eine Doku bzgl. der möglichen cgi-Befehle bei Foscam gefunden habe (schon länger, hatte aber bislang keine Zeit)...
...und eben so einiges ausprobiere.

Wenn gewünscht, dann kann ich die Kommandos hier posten oder aber "zusenden".
Auch das cgi-Dokument.
Allerdings sind einige Kommandos (inzwischen) anders als in der Doku.
Hatten aber bei meiner Kamera schon mal funktioniert aber wohl seit einem FW-Update dann anders...

Ich hatte auch schon mal angefangen (so vor 1-2 Jahren) meine Foscam einzubinden und ging auch...
...dann jetzt nachdem hier weiter entwickelt wird :) gehe ich es noch mal an.

Einiges musste ich "ändern" (nicht nur wegen Kamera-FW-Update) wegen dem "Umbau" hier...
...aber: ich bin froh, dass es hier weiter geht!! :)

EDIT: hatte schon einige Kameras "hier". Mich aber für die Foscam entschieden, weil: OHNE Cloud, Pan+Tilt+Zoom :) und man kann per cgi die Bewegungserkennung ein-/ausschalten bzw. quasi die ganze Kamera konfigurieren (wenn man das wollte)... Habe zu keiner anderen Kamera ähnlich "gut" Doku gefunden. Auch wenn mittlerweile wohl einige Kommandos anders lauten (seit FW-Update vermute ich).

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

delMar

#319
Hallo,

ich hab jetzt ein Update ins SVN gegeben, wo incrementalTimeout gesetzt wird.

Laut FHEM-doku macht das folgendes:

Zitat
Sofern gesetzt (Wert: 1), wird der Timeout nach jedem Empfang von Teil-Daten wieder zurückgesetzt. So können größere Datenmengen von langsamen Sendern empfangen werden, ohne den Parameter timeout zu erhöhen und dadurch tatsächliche Verbindungsprobleme erst spät zu erkennen.

Dh von eurer Seite ist hier erstmal nix zu tun, außer morgen das Update holen (oder schon heute direkt aus dem SVN) und mal prüfen, ob damit das Problem gelöst wird.

Ich würde mich nämlich schon sehr wundern, wenn im LAN/WLAN der Verbindungsaufbau länger als 4 Sekunden dauern würde (das ist das default Timeout).
Falls aber incrementalTimeout auch nicht funktioniert, geb ich natürlich gern ein Attribut für längeres Timeout dazu.
Ich denke aber, dass das eine Schraube ist, an der man schnell mal dreht, weil man sonst keine andere Idee hat.
Deshalb würd ich das gern vermeiden.

Und wenn das immer noch nicht funktioniert, geb ich auch gern noch ein Attribut hinzu, womit man Blocking-GET erzwingen kann, was dann schlussendlich das ursprüngliche Verhalten ist.
Blocking-GET soll im Hinblick auf die gesamt-performance von FHEM halt vermieden werden.
Aber klar: wenns nicht anders geht, dann muss es halt sein.

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.

MadMax-FHEM

#320
Hallo Martin,

danke für die superschnelle Reaktion!

Hmmm, bin nicht sicher, ob der eingebaute Timeout hilft.
Weil die Antworten (also bei nicht Bild) sind ja eher klein: kurzes json mit Fehler oder ok ;)

Also ich hab die "Probleme" auch mit kleinen "Steuerkommandos": pan, tilt, ...

Ich merke das auch, wenn ich direkt die url in den Browser tippe...
Allerdings war wohl meine Kamera auch etwas "kaputtkonfiguriert" von dem ganzen Rumprobieren ;)

Mal sehen, ob ich morgen zum Testen komme...
Ich packe die Kamera nur alle "daumenlang" mal an, ist eigentlich mehr "Spielerei"...

Was ich gerne hätte wäre ein "schrittweises" Fahren, Zooen etc.
Dazu müsste ich allerdings mitkriegen, wenn der letzte Befehl "ok" bearbeitet wurde und dann nach einer gewissen Zeit eben ein Stopp-Kommando schicken.
Auch nicht sehr zuverläsiig, ich weiß, weil es ja auch beim Stopp zu Verzögerungen kommen kann etc.
Aktuell habe ich mir diverse webCmd "gebastelt", wo ich eben "Knöpfe" für rechts/links/stopp etc. habe.
D.h. ich drücke, warte und drücke eben stopp...

Ich habe auch versucht herauszufinden, wie denn die "Oberfläche" der Kamera (ist leider ein Browser-Plugin) das macht.
Habe sogar mit wireshark mitgeschnitten.
Werde da aber leider nicht sonderlich schlau draus... :-\

Ich weiß auch nicht, wie HTTPMOD das mit dem Timeout macht.
Aber mWn ist HTTPMOD nicht blockierend!
Da habe ich aktuell einen Timeout von 5s eingestellt und es tut.

Wobei nach einem Reset und "Neuanfang" mit der Kamera geht es auch mit dem IPCAM-Modul (siehe meine webCmd)...
Nachdem ich aber dann fast einen Tag mit dem "Umstellen" ("altes" Modul auf "neues" Modul: bissi was hatte sich ja geändert ;)  ), dem Zurücksetzen, FW-Update, Recherche bzgl. geänderter Kommandos (ein-/ausschalten der Bewegungserkennung) und dem Mitschneiden "verdödelt" hatte, habe ich die Kamera erst mal wieder weggepackt. Wollte mich eigentlich erst melden, wenn ich mir das Ding mal wieder vornehme(n will). Hab nur jetzt schon mal geschrieben, weil es eben um Timeout ging ;)

Noch mal die Frage bzgl. der Kommandos der Foscam: besteht Interesse?

Noch mal vielen Dank, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

delMar

Zitat von: MadMax-FHEM am 08 April 2021, 11:55:52
Noch mal die Frage bzgl. der Kommandos der Foscam: besteht Interesse?
Ich antworte hier jetzt aus Zeitgründen nur mal darauf:
ja, sehr gern, daran besteht interesse :-)

Du kannst sie hier anhängen oder ins Wiki stellen. Ich werd sie dann gern ins Template mit Aufnehmen.

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.

SimonFoag

Hallo,
vielen Dankfür die schnelle Hilfe.
Ich werde es morgen testen und bescheid geben.
Die CGI Befehle hab ich auch ;)
Grüße
Simon

MadMax-FHEM

Zitat von: delMar am 08 April 2021, 12:17:27
Ich antworte hier jetzt aus Zeitgründen nur mal darauf:
ja, sehr gern, daran besteht interesse :-)

Du kannst sie hier anhängen oder ins Wiki stellen. Ich werd sie dann gern ins Template mit Aufnehmen.

Danke!

schöne grüße
Martin

Hallo Martin,

sehr schön!

Mit der "Zeitgründen-Antwort" kann ich gut leben...
...ist bei mir (aktuell) auch so... ;)

Einige Kommandos habe ich schon.
Einiges will ich noch testen, da ich nur Kommandos liefern will, die ich auch tatsächlich ausprobiert habe...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

delMar

So.
Das auch bei Kommandos ein Timeout kommt, hat mir nun doch keine Ruhe gelassen.
Um Zeit zu sparen hab ich nun auch direkt das neue Attribut httpTimeout eingeführt.
Ist ebenfalls ab morgen im Update.

Wie gesagt: per default sind das 4 Sekunden.

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.

MadMax-FHEM

Hallo Martin,

super, danke.

Hmm, dann "muss" ich ja fast morgen die Kamera (noch mal wieder) aus-/anpacken... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

SimonFoag

Hallo,
Vielen Dank nochmal für die schnelle Hilfe.
Jedoch ist der timeout bei mir egal ob get image oder get imageWithCallback nun fast ständig da, auch wenn ich httpTimeout auf z.b. 10 sec hochsetze.
Selbes wenn ich das Attribut wieder lösche.
Das heißt, nun bekomm ich gar kein Bild mehr.
Ich werd noch ein bisschen rum probieren und mich ggf. Dann nochmal melden.

Grüße
Simon

delMar

Zitat von: SimonFoag am 09 April 2021, 08:23:12
Ich werd noch ein bisschen rum probieren und mich ggf. Dann nochmal melden.
Falls du die Muße hast:
Du kannst auch wahlweise die Zeilen 286,287 und 492,493 mit # auskommentieren.
Dann ist wieder das verhalten von gestern, ohne gesetzte timeouts.
Und sehen, obs dann zumindest wieder so schlecht wie gestern (immer noch besser) geht.

Danke!
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.

MadMax-FHEM

#328
Hallo Martin,

du wolltest es ja so haben ;)

Also ich habe mal getestet (und gleich auch noch meine "spezielle" Stromversorgung getestet :)  ).

Es hat sich ja entweder beim Modul oder bei der Kamera (verm. beides) was geändert.

Ich habe also mal ein neues Device angelegt und dann eben das attrTemplate Foscam drüber geworfen.
Leider weiß ich nicht mehr so genau was da mit kam (werde wohl mal ein weitere anwerfen ;)  )...

Eben gemacht.
Es kommt Abfrage User/PW und dann folgende Meldung (in einem Popup):
Zitat
Unknown command PAR:POS1;Name, try help.
Also mehr als den define und das attrTemplate habe ich (aktuell) nicht gemacht.

Hier das list gleich nach dem Erstellen und Ausführen von attrTemplate:


Internals:
   AUTHORITY  192.168.10.184:88
   CFGFN     
   DEF        192.168.10.184:88
   FUUID      60706d15-f33f-19f1-8f74-c178da2d86523672
   NAME       Foscam2
   NR         313
   SEQ        0
   STATE      Defined
   TYPE       IPCAM
Attributes:
   cmd01      cmd=ptzStopRun&usr=admin&pwd=madmax123
   cmdPanLeft cmd=ptzMoveLeft&usr=admin&pwd=madmax123
   cmdPanRight cmd=ptzMoveRight&usr=admin&pwd=madmax123
   cmdPos01   cmd=ptzGotoPresetPoint&name=POS1&usr=admin&pwd=admin
   cmdTiltDown cmd=ptzMoveDown&usr=admin&pwd=madmax123
   cmdTiltUp  cmd=ptzMoveUp&usr=admin&pwd=madmax123
   model      Foscam
   path       cgi-bin/CGIProxy.fcgi?usr=admin&pwd=madmax123&cmd=snapPicture2
   pathCmd    cgi-bin/CGIProxy.fcgi
   pathPanTilt cgi-bin/CGIProxy.fcgi?usr=admin&pwd=madmax123


Es stehen user/pw sowohl im pan/tilt Kommando als auch in pathPanTilt.
Daher wird nun user/pw doppelt im Befehl mitgegeben.
Kein Problem es tut aber schön ist es nicht.

Wenn ich user/pw bei den pan/tilt Kommandos lösche (siehe auch list meines aktuellen, schon etwas "geschraubten" Devices), dann wird es nur einmal gesendet und die pan/tilt Kommandos sind auch "übersichtlicher" :)

Nun dachte ich, dass ich das doch auch bei pathCmd user/pw angeben kann und damit dann auch nur "einfache Kommandos" bei cmd1, cmd2, usw. eingeben brauche.
Das geht leider nicht, weil dann zweimal das "Fragezeichen" kommt, statt dem "Und" für weitere Parameter.

Hier mal was ich meine:

Mein cmd1 meiner "gebastelten" Kamera (2tes list):
Zitat
http://192.168.10.184:88/cgi-bin/CGIProxy.fcgi?usr=admin&pwd=madmax123?cmd=ptzStopRun

Hier ein pan/tilt Kommando:
Zitat
http://192.168.10.184:88/cgi-bin/CGIProxy.fcgi?usr=admin&pwd=madmax123&cmd=ptzMoveRight

Wäre schön, wenn hier das Verhalten gleich wäre, dann könnte man alle Kommandos "einfach" gestalten...

Hier nun das list wo ich bereits etwas "rumgespielt" habe (hier mal so wie ich es gerne hätte bzgl. Kommandos und pathCmd):


Internals:
   AUTHORITY  192.168.10.184:88
   DEF        192.168.10.184:88
   FUUID      6065f48f-f33f-19f1-27fa-18de1b46b245e587
   FVERSION   49_IPCAM.pm:0.241860/2021-04-08
   NAME       Foscam
   NR         234
   SEQ        0
   STATE      last: 2021-04-09 17:31:04
   TYPE       IPCAM
   READINGS:
     2021-04-09 17:31:04   last            Foscam_snapshot.jpg
     2021-04-09 17:31:04   snapshot1       Foscam_snapshot_1.jpg
     2021-04-09 17:31:04   snapshots       1
Attributes:
   cmd01      cmd=ptzStopRun
   cmd02      cmd=zoomIn
   cmd03      cmd=zoomOut
   cmd04      cmd=zoomStop
   cmdPanLeft cmd=ptzMoveLeft
   cmdPanRight cmd=ptzMoveRight
   cmdPos01   cmd=ptzGotoPresetPoint&name=POS1
   cmdTiltDown cmd=ptzMoveDown
   cmdTiltUp  cmd=ptzMoveUp
   comment    RTSP:
rtsp://admin:madmax123@192.168.10.184:88/videoSub
   httpTimeout 5
   model      Foscam
   path       cgi-bin/CGIProxy.fcgi?usr=admin&pwd=madmax123&cmd=snapPicture2
   pathCmd    cgi-bin/CGIProxy.fcgi?usr=admin&pwd=madmax123
   pathPanTilt cgi-bin/CGIProxy.fcgi?usr=admin&pwd=madmax123
   room       Camera
   storage    ./www/snapshots
   webCmd     cmd+1:pan+left:pan+right:cmd+4:cmd+2:cmd+3
   webCmdLabel stopp :links :rechts :zoom-stop :zoom-in :zoom-out :


Was ich noch suche ist tiltStop.
EDIT: das ist (hätte ich mir ja denken können) auch einfach nur "StopRun" ;)  :)

Was ich bereits habe sind aktivieren/deaktivieren der Bewegungserkennung (war mir wichtig, daher auch die Foscam, weil es da geht).
Das ging "früher" schon mal einfacher, also mit nur isEnable=0/1.
Ist auch so bei HomeAssistant noch drin, funktioniert aber so nicht mehr (seit einem FW Update).

Habe es aber wieder zum Laufen gebracht, das poste ich aber extra...

Timeout habe ich mal auf 5s gesetzt, wie bei meinem HTTPMOD.
Aber nachdem ich die Kamera zurück gesetzt habe und neu eingebunden habe (inkl. eines weiteren FW-Update ;)  ) würde es wohl auch ohne Timeout gehen.
Sorry aber trotzdem danke für's Einbauen!!! :)
Wer weiß ;)

Also es wäre toll, wenn sich pathCmd und pathPanTilt bzgl. user/pwd gleich verhalten würden (am besten nat. wie bei pathPanTilt :)  ).
Wenn es keine Umstände macht, dann wären auch "direkte Kommandos" (wie bei pan/tilt) für Zoom toll :)
Und vielleicht auch die passenden "Stopp-Kommandos" :)

Ansonsten: läuft SUPER!!!! :)

Bzgl. weiterer Kommandos melde ich mich noch...

Achja: Kamera-Typ FI9926P (also ob das ein "I" oder ein "l" ist bin ich nicht sicher ;)  )...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

delMar

Zitat von: MadMax-FHEM am 09 April 2021, 17:39:56
du wolltest es ja so haben ;)
Du doch auch ;-)

Zitat von: MadMax-FHEM am 09 April 2021, 17:39:56
Es kommt Abfrage User/PW und dann folgende Meldung (in einem Popup):Also mehr als den define und das attrTemplate habe ich (aktuell) nicht gemacht.
Danke, du hast einen Bug entdeckt. Im Template ist ein Tippfehler. Fix wird heute noch eingecheckt.
das PAR muss klein geschrieben werden (falls du es bei dir gleich mal lokal beheben willst)

Zitat von: MadMax-FHEM am 09 April 2021, 17:39:56
Es stehen user/pw sowohl im pan/tilt Kommando als auch in pathPanTilt.
Daher wird nun user/pw doppelt im Befehl mitgegeben.
Ja, hier werd ich mal versuchen, dieses Verhalten besser zu dokumentieren.
Manche Attribute definieren ganze Pfade, manche nur Teile davon.

Zitat von: MadMax-FHEM am 09 April 2021, 17:39:56
Nun dachte ich, dass ich das doch auch bei pathCmd user/pw angeben kann und damit dann auch nur "einfache Kommandos" bei cmd1, cmd2, usw. eingeben brauche.
Das geht leider nicht, weil dann zweimal das "Fragezeichen" kommt, statt dem "Und" für weitere Parameter.
Ist notiert.

Zitat von: MadMax-FHEM am 09 April 2021, 17:39:56
funktioniert aber so nicht mehr (seit einem FW Update).
Ich denke, hier müssen unterschiedliche Templates pro Firmware gemacht werden.


Danke für dein ausführliches Feedback.
Ich werde sehen, dass ich das im Lauf der nächsten Abende Stück für Stück umsetzen kann.
Einheitliches Verhalten würde definitiv gut tun :-)

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.