Modul IPCAM überarbeitet

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

Vorheriges Thema - Nächstes Thema

holzwurm83

Zitat von: Brockmann am 06 April 2018, 07:55:06
Du müsstest einen Link finden, unter dem Du jeweils ein Einzelbild Deiner Kamera abrufen kannst.

OK, danke dir schon mal! Wenn ich manuell ein Einzelbild auf der Kamera erstelle finde ich es unter diesem Link.

http://192.168.***.***/storage/IPCamera_Manual/2018_04_06/snapshot-001/2018-04-06-09-28-16-Snapshot.jpg

Allerdings ist mir nicht ganz klar wie, oder was ich davon einfügen soll, da die Bilder auch immer in einem Ordner mit dem jeweiligen Datum des Tages abgelegt werden.
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

misux

HI!

Ich habe meine DAHUA IPC-HDW4431C-A erfolgreich eingebunden. Leider bekomme ich hin und wieder keine Bilder zugesendet bzw es werde keine gemacht. Aber nicht immer! Dann bekomme ich im Log einen Error:

2018.04.09 12:33:31.161 1: IPCAM CAMHof Wrong or not supported image format: error while reading source image:

aber wie gesagt nicht immer... Hat jeman dine Idee woran es liegen könnte?

HIer ein List der Cam:

Internals:
   AUTHORITY  192.168.xxx.xxx
   DEF        192.168.xxx.xxx
   NAME       CAMHof
   NR         134
   SEQ        0
   STATE      last: 2018-04-05 22:23:52
   TYPE       IPCAM
   READINGS:
     2018-04-05 22:23:52   last            CAMHof_snapshot.jpg
     2018-04-05 22:23:52   snapshot1       CAMHof_snapshot_1.jpg
     2018-04-05 22:23:52   snapshots       1
Attributes:
   basicauth  xxxxxxx:xxxxxxx
   delay      0
   path       cgi-bin/snapshot.cgi?chn=[0]
   room       CAMS
   snapshots  1
   storage    ./www/snapshots
   verbose    3


und hier ein Auszug vom Log:

[code]2018.04.09 07:07:47.059 3: CULHat2 IT: EingangsTuer closed->off
2018.04.09 07:07:47.099 3: CULHat2 IT: EingangsTuer closed->off
2018.04.09 07:07:47.139 3: CULHat2 IT: EingangsTuer closed->off
2018.04.09 09:31:52.146 1: RMDIR: ./restoreDir/save/2018-04-06
2018.04.09 09:51:29.794 2: CULHat2: CUL_TCM97001 Unknown device CUL_TCM97001_0, please define it
2018.04.09 12:32:05.394 1: IPCAM CAMHof Wrong or not supported image format: error while reading source image:
2018.04.09 12:33:08.596 3: CULHat2 IT: EingangsTuer closed->on
2018.04.09 12:33:08.637 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:08.733 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:08.739 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:08.753 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:08.794 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:08.834 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:09.196 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:09.276 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:09.600 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:09.641 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:09.680 3: CULHat2 IT: EingangsTuer open->on
2018.04.09 12:33:26.008 2: DOIFKlingel: off eq "on" and absent eq "absent": Unknown command off, try help.
2018.04.09 12:33:31.161 1: IPCAM CAMHof Wrong or not supported image format: error while reading source image:
2018.04.09 12:33:31.170 3: CULHat2 IT: EingangsTuer open->off
2018.04.09 12:33:31.195 3: CULHat2 IT: EingangsTuer closed->off
2018.04.09 12:33:31.208 3: CULHat2 IT: EingangsTuer closed->off
2018.04.09 12:33:31.220 3: CULHat2 IT: EingangsTuer closed->off
2018.04.09 12:33:35.692 3: CULHat2 IT: EingangsTuer closed->on
2018.04.09 12:33:38.498 3: CULHat2 IT: EingangsTuer open->off
[/code]

misux

Was noch sehr komisch ist, das das Modul immer 2 Bilder macht! egal ob ich attr snapshots 1 mache oder nicht eingebe... der Name lautet dann genauso wie das eine Bild nur mit _1.jpg

Kann man das irgendwie abstellen? Er soll nur ien Bild machen...

Brockmann

Zitat von: misux am 10 April 2018, 18:18:30
Was noch sehr komisch ist, das das Modul immer 2 Bilder macht! egal ob ich attr snapshots 1 mache oder nicht eingebe... der Name lautet dann genauso wie das eine Bild nur mit _1.jpg
Kann man das irgendwie abstellen? Er soll nur ien Bild machen...
Das letzte Bild wird immer nochmal zusätzlich ohne Nummer gespeichert, damit man immer einen festen Pfad zur letzten Aufnahme hat. Das macht es einfacher, wenn man beispielsweise ein Bild per Messenger oder E-Mail verschicken möchte. Abschalten kann man das m.W.n. nicht, aber es stört doch auch nicht wirklich, oder?

Du könntest auf Timestamp statt Index in den Dateinamen umstellen, dann wird das nicht mehr gemacht. Allerdings werden alte Aufnahmen dann nicht überschrieben und Du musst Dich selbst darum kümmern, dass die ganzen Aufnahmen regelmäßig gelöscht werden.

misux

Hmm... Meine Vermutung ist das WENN Fhem das Bild Senden möchte ABER es noch nicht komplett gespeichert wurde WEIL er ja unbedingt 2 davon machen muss und jedes ca 300 bis 500KB hat,  er diesen Error macht weil es nunmal noch nicht komplett gespriechert ist.

Könnte man das erstellen den zweiten Bilden unterdrücken würde es vielleicht weniger bis gar nicht pasieren...

Könnte ich da richtig liegen oder eher nicht?

Das mit dem Timestamp ist eine Gute Idee... Man kann doch FHEM irgendwie beibringen das er bitte jeden Tag den Ordner (snapshots) checken soll und Dateien die älter sind als 1 Tag löschen soll... wäre sowas machbar?

Brockmann

Zitat von: misux am 11 April 2018, 12:15:24
Das mit dem Timestamp ist eine Gute Idee... Man kann doch FHEM irgendwie beibringen das er bitte jeden Tag den Ordner (snapshots) checken soll und Dateien die älter sind als 1 Tag löschen soll... wäre sowas machbar?
Ich habe dafür eine Funktion in 99_myUtils.pm, die täglich einmal ausgeführt wird. Müsstest Du Dir anpassen, insbesondere $purge_dir und das Reading am Schluss (oder weglassen).

### Löscht im angegebenen Ordner ($purge_dir) alle Dateien älter als übergebene Zahl Tage
### Aufruf: {purge_logpics 30}
### Schreibt die Anzahl der gelöschten Dateien in ein fest verdrahtetes Reading zurück

sub purge_logpics($) {
my $days = shift;
my $purge_dir = "/opt/fhem/log/pics";

# purge backups older than AGE in days
my @file_list;
my @find_dirs       = ($purge_dir);             # directories to search
my $now             = time();                   # get current time
my $seconds_per_day = 60*60*24;                 # seconds in a day
my $AGE             = $days*$seconds_per_day;   # age in seconds
my $filecnt = 0; # counter for deleted files
find ( sub {
  my $file = $File::Find::name;
  if ( -f $file ) {
    push (@file_list, $file);
  }
}, @find_dirs);

for my $file (@file_list) {
  my @stats = stat($file);
  if ($now-$stats[9] > $AGE) {
    unlink $file;
$filecnt = $filecnt +1;
  }
}
fhem("setreading DI_Systemwartung last_purge_logpics $filecnt");  # Anzahl der gelöschten Dateien in Reading schreiben
return 1;  # 1 als Returnwert, damit ein aufrufendes DOIF keinen "Fehler"" registriert
}


misux

HI!

Cool! Habe es dann mal angepasst.... Ich muss doch nix anderes als den Ordner anpassen oder? Wo wird denn angegeben wie alt die Dateien max werden dürfen?

Und dieser Code muss nur in die 99_myutils.pm und neustart, sonst nix?

### Löscht im angegebenen Ordner ($purge_dir) alle Dateien älter als übergebene Zahl Tage
### Aufruf: {purge_logpics 30}
### Schreibt die Anzahl der gelöschten Dateien in ein fest verdrahtetes Reading zurück

sub purge_logpics($) {
my $days = shift;
my $purge_dir = "/opt/fhem/www/snapshots";

# purge backups older than AGE in days
my @file_list;
my @find_dirs       = ($purge_dir);             # directories to search
my $now             = time();                   # get current time
my $seconds_per_day = 60*60*24;                 # seconds in a day
my $AGE             = $days*$seconds_per_day;   # age in seconds
my $filecnt = 0; # counter for deleted files
find ( sub {
  my $file = $File::Find::name;
  if ( -f $file ) {
    push (@file_list, $file);
  }
}, @find_dirs);

for my $file (@file_list) {
  my @stats = stat($file);
  if ($now-$stats[9] > $AGE) {
    unlink $file;
$filecnt = $filecnt +1;
  }
}
fhem("setreading DI_Systemwartung last_purge_logpics $filecnt");  # Anzahl der gelöschten Dateien in Reading schreiben
return 1;  # 1 als Returnwert, damit ein aufrufendes DOIF keinen "Fehler"" registriert
}


Brockmann

Zitat von: misux am 15 April 2018, 17:07:03
Cool! Habe es dann mal angepasst.... Ich muss doch nix anderes als den Ordner anpassen oder? Wo wird denn angegeben wie alt die Dateien max werden dürfen?

Und dieser Code muss nur in die 99_myutils.pm und neustart, sonst nix?
Das ist eine Perl-Funktion. Aufrufen kannst Du Sie mit {purge_logpics 30}, wobei die Zahl angibt, wieviele Tage Dateien maximal alt sein dürfen, um NICHT gelöscht zu werden. Mit {purge_logpics 30} werden also alle Dateien gelöscht, die älter als 30 Tage sind.
Damit das ganze läuft, brauchst Du noch ein AT oder DOIF o. ä., das diese Funktion einmal täglich (oder wöchentlich usw.) aufruft.
Im einfachsten Fall also

define DI_Systemwartung DOIF ([00:01])({purge_logpics 7;; 0})

(Das mit dem ;;0 ist nur, damit das DOIF keine Fehlermeldung ins Log schreibt.)
Außerdem muss Du die vorletzte Zeile (fhem("setreading DI_Systemwartung ...) entweder anpassen oder löschen. Die schreibt bei mir die Anzahl der gelöschte Dateien als Reading in das aufrufende DOIF. Ist aber nur Statistik und kann weggelassen werden.

ChrisW

Gibt es auch die möglichkeit eine Video aufzeichnung zu starten ?
Ich möchte per Knopfdruck ( Dashbutton ) gerne PTZ drehen ( das geht ja einfach ) und eine Aufzeichnug starten. Das ganze beim 2. Klick wieder andere Position udn Aufzeichnung stoppen.
Ich denke Fotos sind möglich aber ein ganzes Video / Stream ?
Raspberry PI3 mit allem möglichen.

HansChris

#174
Hallo,
ich habe das Problem, dass die Snapshots meiner Instar 5905HD mit dem IPCAM Modul zwar problemlos erzeugt und abgelegt werden, aber die Bilder dann scheinbar defekt sind (s. Anhang).
Es gibt auch keinerlei Fehlermeldung seitens FHEM. Wenn ich den Snapshot Link im Browser öffne, erhalte ich das korrekte Bild der Kamera.
Hat jemand eine Ahnung woran das liegen könnte?
Beste Grüße
Hans

P.S. Auch wenn ich das Bild einer beliebigen öffentlichen Webcam über das Modul abrufe, zeigen sich die Bildfehler. Es scheint also kein Problem mit der Kamera, sondern mit dem Modul zu sein.

Wolfgang Hochweller

#175
Die Fehlermeldung :


2018.04.09 12:32:05.394 1: IPCAM CAMHof Wrong or not supported image format: error while reading source image:


kommt bei mir immer dann, wenn die Rechte fehlen.

Kamera : dahua hdbw4431r-zs

Das Snapshot-Kommando



http://10.0.0.30/cgi-bin/snapshot.cgi?chn=[0]


funktioniert, will aber immer user/pass

Das hier aendert daran nichts :


http://user:pass@10.0.0.30/cgi-bin/snapshot.cgi?chn=[0]



Mein Fehler :
Mam muss sich halt die Referenz richtig durchlesen und basic auth und credentials korrekt setzen.


dbox2user

#176
Hallo!

Ich würde gerne meine IP-Kamera "SV3C PoE IP Kamera 1080P" über das IP-Cam Modul anbinden.
Leider passiert mit dem Befehl "get image" garnichts.
Bei "get snapshots" bekomme ich "Cam1 snapshots => 0" als Rückmeldung

Mein define schaut so aus:

define Cam1 IPCAM 192.168.178.200
attr Cam1 delay 5
attr Cam1 icon it_camera
attr Cam1 loglevel 6
attr Cam1 path web/cgi-bin/hi3510/param.cgi?cmd=snap&-getpic&-chn=2
attr Cam1 room Kamera
attr Cam1 snapshots 3
attr Cam1 storage ./www/snapshots
attr Cam1 timestamp 1


Gebe ich den Befehl http://192.168.178.200/web/cgi-bin/hi3510/param.cgi?cmd=snap&-getpic&-chn=2 direkt im Browser ein, bekomme ich problemlos ein Standbild angezeigt. Ganz ohne Benutzeranmelung oder neueFenster wo man etwas anklicken muss.
Das funktioniert im Browser am Notebook aber auch auf dem Browser des Raspberrys auf dem Fhem läuft.

Muss der Befehl evtl auf die Attribute "path" und "pathCmd" aufgeteilt werden?
Der hohe Log-Level bringt mir auch keine Hilfe.

Hat jemand eine Idee?  ::)

Danke schonmal!

Gruß, Christian

Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;

NewRasPi

Zitat von: dbox2user am 02 September 2018, 21:15:36
Hallo!

Ich würde gerne meine IP-Kamera "SV3C PoE IP Kamera 1080P" über das IP-Cam Modul anbinden.
Leider passiert mit dem Befehl "get image" garnichts.
Bei "get snapshots" bekomme ich "Cam1 snapshots => 0" als Rückmeldung

Mein define schaut so aus:

define Cam1 IPCAM 192.168.178.200
attr Cam1 delay 5
attr Cam1 icon it_camera
attr Cam1 loglevel 6
attr Cam1 path http://192.168.178.200/web/cgi-bin/hi3510/param.cgi?cmd=snap&-getpic&-chn=2
attr Cam1 room Kamera
attr Cam1 snapshots 3
attr Cam1 storage ./www/snapshots
attr Cam1 timestamp 1


Gebe ich den Befehl http://192.168.178.200/web/cgi-bin/hi3510/param.cgi?cmd=snap&-getpic&-chn=2 direkt im Browser ein, bekomme ich problemlos ein Standbild angezeigt. Ganz ohne Benutzeranmelung oder neueFenster wo man etwas anklicken muss.
Das funktioniert im Browser am Notebook aber auch auf dem Browser des Raspberrys auf dem Fhem läuft.

Muss der Befehl evtl auf die Attribute "path" und "pathCmd" aufgeteilt werden?
Der hohe Log-Level bringt mir auch keine Hilfe.

Hat jemand eine Idee?  ::)

Danke schonmal!

Gruß, Christian

Hallo dbox2user
ich würde bei path mal die IP Adresse und den Anfangs Slash weg lassen
also >> path web/cgi-bin/hi3510/param.cgi?cmd=snap&-getpic&-chn=2

dann sind die Chancen besser.
Schöne Grüße

Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

dbox2user

Wow, das war ja eine Blitzantwort!  ;)

Sorry, das passiert beim vielen rumprobieren.
Genauso wie du es schreibst hatte ich es probiert und hab es jetzt natürlich wieder eingestellt.
Leider genau das gleiche Verhalten.

Meinem Post ändere ich gleich entsprechend.

Vielleicht noch eine andere Idee?
Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;

NewRasPi

Zitat von: dbox2user am 02 September 2018, 21:34:42
Wow, das war ja eine Blitzantwort!  ;)

Sorry, das passiert beim vielen rumprobieren.
Genauso wie du es schreibst hatte ich es probiert und hab es jetzt natürlich wieder eingestellt.
Leider genau das gleiche Verhalten.

Meinem Post ändere ich gleich entsprechend.

Vielleicht noch eine andere Idee?

Hallo nochmal
und im Browser geht der Kamera Zugriff ohne Eingabe des Benutzer und Passwort???
(oder wurde das einmal eingegeben und steckt schon in einem cookie/ Zwischenspeicher)
Das Attribut basicauth [Benutzer]:[Password] könnte dann eine weitere mögliche Lösung sein.
Viel Glück
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;