Modul IPCAM überarbeitet

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

Vorheriges Thema - Nächstes Thema

NewRasPi

#225
Zitat von: UweUwe am 10 Februar 2019, 09:35:03
Hallo, danke für die Antwort,

sorry, meine Angaben sind nicht genau genug:

FHEM A  System: Telebot A, Kamera A (IP 192.168.10.99), Raspberry A Fritzbox A (192.168.10.xx)
FHEM B  System: Kamera B (IP 192.168.20.99), Fritzbox B (192.168.20.xx)

Fritzbox A ist mit Fritzbox B per VPN verbunden.

Ziel: Kamera 1 ist an Raspberry 1 konfiguriert (kein Thema)
        Kamera 2 ist an Raspberry 1 konfiguriert (??, anderes Netz, funktioniert IPCAM über VPN)

        Snapshot Kamera 1 machen (kein Thema)
        Snapshot Kamera 2 machen (VPN?)

        "get Bild image" von Kamera 1 (kein Thema)
        "get Bild image" von Kamera 2 (über VPN ?)  von Kamera B im fremden Netz auf Raspberry A

         Versenden von 2 Bildern mit dem Telebot A auf Raspberry A (kein Thema an mich)

Sollte jetzt etwas genauer sein. Danke nochmals der Nachfrage.

Hallo UweUwe
mein erster Gedanke wäre eigentlich beim Raspberry 2 den Pfad im Storage auf den ersten Raspberry zu legen.  //192.168.10.99/opt/fhem/www/snapshots/
Aber in diesem Thread steht, das das leider nicht geht.
https://forum.fhem.de/index.php?topic=37318.0
Hier ist aber beschrieben wie man es mit einem Script lösen kann.

Super wäre natürlich, wenn sich die Modulentwickler mal der Sache annehmen könnten und vielleicht die Begrenzung auf den eigenen Raspi Pfad aufbohren könnten.
Ein FTP Verzeichnis als möglicher Speicherort wäre bestimmt auch eine willkommene Erweiterung.
Für Anfänger ist das mit zusätzlichen Scripten ganz schön schwierig.

Viel Erfolg
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;

UweUwe

Hallo NewRaspPi,
sorry, hatte gerade erfolglos versucht die Kamera 1 draussen hardwaremässig zu installieren. Leider fehlt ein Teil bei der Deckenhalterung.
Danke mit dem Tip https://forum.fhem.de/index.php?topic=37318.0. Aktuell bin ich noch auf einem anderen Pferd.
Wenn ich die Kamera 2 mit IPCAM auf dem Raspberry 1 installiert bekomme (über die VPN), so sollte es völlig transparent sein. Was spricht gegen einen Befehl defmod K.HN IPCAM 192.168.20.99:80   ##  aus einem Netzwerk 192.168.10.xxx mit VPN zu 192.168.20.xxx.  Die Kamera 2 kennt ja den Raspberry 2 nicht, alle Befehle kommen erstmal vom Raspberry 1. Ob ich dann zusätzlich noch eine Installation der Kamera 2 auf dem Raspberry 2 machen kann, das wäre noch ne Frage.
Dies alles ist aber abhängig, wie der Entwickler von IPCAM hier die Realisierung bei VPN gemacht hat. Er ist zuverlässig  8) 8) und wird sich bei uns melden.
Danke nochmals. Schönen Sonntag erstmal , man schreibt sich  8) 8)


UweUwe

Hallo,
hab zwischenzeitlich 2 Kameras installiert und bekomme auch Bilder von beiden Kameras mit dem BOT zugeschickt. In ein notify hab ich folgende Befehle für die lokale Kamera (K.HN) eingebaut.

fhem("set K.HN raw tmpfs/snap.jpg?usr=admin&pwd=password");
fhem("get K.HN image");
fhem("set teleBot sendImage @#xxxxx ./www/snapshots/K.HN_snapshot.jpg ");

                  
Ich bekomme nicht das aktuelle Bild, sondern das vorherige Bild.  Auch mit 2 x sleep a 10 sec dazwischen.
Sobald ich den letzten Befehl einfach aufdopple, bekomme ich das aktuelle und das vorherige Bild.
fhem("set K.HN raw tmpfs/snap.jpg?usr=admin&pwd=password");
fhem("get K.HN image");
fhem("set teleBot sendImage @#xxxxx ./www/snapshots/K.HN_snapshot.jpg ");
fhem("set teleBot sendImage @#xxxxx ./www/snapshots/K.HN_snapshot.jpg ");


Kann ja nicht die Lösung sein? Hat jemand ne Idee?

Die Anmeldung einer Kamera über eine VPN (ich habe lokal sehr weit entferne Netze per LAN-VPN zwischen zwei Fritzboxen über das öffentliche Netz verbunden).
P.S. Das Problem oben taucht aber mit der lokalen Kamera und der entfernten Kamera gleich auf, unabhängig vom sleep.
Sobald ich mir mit einem notify von beiden Kameras ein Bild schicken lasse und folgenden Ablauf wähle:
Zitat-- Entferntes Bild machen
-- Entferntes Bild transferieren auf RPI
-- Lokales Bild machen
-- Lokales Bild transferieren auf RPI
-- Lokales Bild verschicken
-- Entferntes Bild verschicken.
Bekomme ich das vorherige Bild der lokalen und das aktuelle Bild der entfernten Kamera.



Paul

Probier es mal so:

-- Entferntes Bild machen
-- Entferntes Bild transferieren auf RPI
-- Lokales Bild machen
-- Lokales Bild transferieren auf RPI
-- Entferntes Bild verschicken
-- Lokales Bild verschicken


Es gab irgendwo hier schon das Problem, dass das senden schneller als das Schreiben der Datei war.
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Schlimbo

Zitat von: UweUwe am 20 Februar 2019, 12:55:37
Ich bekomme nicht das aktuelle Bild, sondern das vorherige Bild. 
Hatte das Problem auch, meine Lösung:
Ich löse ein snapshot bei der Kamera durch "get Cam image" aus.
Das Versenden des Bildes aber löse ich erst aus wenn sich das Reading "snapshots" am IPCAM device ändert:
defmod sendSnapshot notify Cam.snapshots.* set myTelegramBot sendImage www/snapshots/Cam_snapshot.jpg

UweUwe

Vielen Dank für die Antwort,
darf ich noch etwas nachfragen:

du sagst also die Lösung ist, wenn ich meinen aktuellen Befehl:

fhem("set teleBot sendImage @#xxxxx ./www/snapshots/K.HN_snapshot.jpg ");
gegen defmod sendSnapshot notify K.HN.snapshots.* set teleBot sendImage www/snapshots/K.HN_snapshot.jpg ändere.
Da wär ich nie draufgekommen. Da fällt mir auf, dass ich dann ein notify innnerhalb eines notify habe. Funktioniert das?

Folgende Situation hat sich heute nachmittag noch bei mir bestätigt, vielleicht hast du dafür auch ne Erklärung:
Ich habe ja 2 identische Kameras an einem FHEM System auf einem RPI angeschlossen.
1 x Kamera in lokalem Netzwerk des RPI  (lokale Kamera)
1x Kamera über VPN an das RPI Netzwerk angeschlossen (entfernte Kamera)

Folgende Aktionen führe ich nacheinander durch (mit den üblichen Befehlen)
1. Mache Bild mit "entfernter Kamera"
2. Hole Bild von entfernter Kamera auf RPI
3. Mache Bild mit "lokaler Kamera"
4. Hole Bild von lokaler Kamera auf RPI
5. Verschicke Bild der lokalen Kamera von RPI
6. Verschicke Bild der entfernter Kamera von RPI


Ergebnis: aktuelles Bild der "entfernten Kamera" und altes Bild der "lokalen Kamera".




UweUwe

Hallo Schlimbo,
tolle Lösung, hab es gerade in mein grosses notify für die beiden Kameras eingebaut. Bekomme jetzt die aktuellen Bilder von jeder Kamera.  Ein kleineres Thema ist da noch.
Eine der beiden Kameras schickt 2 Bilder direkt nacheinander, nachdem ich das notify eingebaut hatte. Komisch.  Mal sehen, woran dies liegt.


UweUwe

Hab mal getestet, das grosse Thema Aktualität ist weg. Es sind die aktuellen Bilder.
Das notify bewirkt bei mir noch einen Nebeneffekt, den ich mir nicht erklären kann:

ZitatÜber eine Anfage vom Bot schicke ich, gesteuert durch ein notify entweder das Bild der Kamera A, Kamera B oder Kamera A und B.
Das Ergebnis ist, dass ich Anfrage  A: Nur  Kamera A  Ergebnis: 2 Bilder (identischer Zeitstempel, heisst nichts)
                                         Anfrage B: Nur Kamera B   Ergebnis : 2 Bilder (identsicher Zeitstempel, heisst nichts)
                                         Anfrage C gleichzeitige Anfrage A und B: Ergebis 3 Bilder: 2 Bilder der Kamera, die im DEF vorne steht und ein Bild der 2. Kamera.
im Detail nochmals
Anfrage A defmod sendSnapshot notify K.HN.snapshots.* set teleBot sendImage www/snapshots/K.HN_snapshot.jpg  2 Bilder

Anfage B defmod sendSnapshot notify K.XX.snapshots.* set teleBot sendImage www/snapshots/K.XX_snapshot.jpg   2 Bilder

Anfage C defmod sendSnapshot notify K.HN.snapshots.* set teleBot sendImage www/snapshots/K.HN_snapshot.jpg  2 Bilder
         defmod sendSnapshot notify K.XX.snapshots.* set teleBot sendImage www/snapshots/K.XX_snapshot.jpg   1 Bild
Hab schon vermutet, ob es an der identischen Namensgebung "sendSnapshot" liegt? hab schon geändert, keine Änderung im Ergebnis. Irgendwie bekommt der Event K.XX.snapshots.* und oder K.HN.snapshots.*  noch einen trigger.

Schlimbo

Zitat von: UweUwe am 20 Februar 2019, 20:35:52
du sagst also die Lösung ist, wenn ich meinen aktuellen Befehl:

fhem("set teleBot sendImage @#xxxxx ./www/snapshots/K.HN_snapshot.jpg ");
gegen defmod sendSnapshot notify K.HN.snapshots.* set teleBot sendImage www/snapshots/K.HN_snapshot.jpg ändere.
Da wär ich nie draufgekommen. Da fällt mir auf, dass ich dann ein notify innnerhalb eines notify habe. Funktioniert das
Nein, das "defmod sendSnapshot notify" war von mir nicht so gedacht, dass es den alten Befehl ersetzt und jedes Mal ausgeführt wird, mein Code sollte einmalig in die FHEM Kommandozeile eingegeben werden, danach triggert es immer auf einen neuen snapshot und sendet diesen.

Deine Anforderung für ein aktuelles Bild heißt dann nur noch:
fhem("get K.HN image")

UweUwe

Hallo, ja das Ergebnis ist prächtig, nur ein Bild und das Aktuelle.
Für alle, die auch vor dem Thema stehen, anbei noch die Zusammenfassung:

Ausgangssituation:
Ziel ein Snapshot auf Anforderung entweder von einer oder von beiden Kameras per teleBot abholen.

2 Kameras sind an ein FHEM System angeschlossen. 2x Instar IN-9010FULLHD
Physikalisch sitzt eine Kamera in dem lokalen Netz des Raspberry und eine Kamera ist über eine VPN (Fritzbox zu Fritzbox) angeschlossen.
Mit den üblichen Befehlen:
fhem("set K.xx raw tmpfs/snap.jpg?usr=admin&pwd=password");
fhem("get K.xx image");
fhem("set teleBot sendImage @#xxxxx ./www/snapshots/K.xx_snapshot.jpg ");
bekommt man nicht das aktuell von der Kamera aufgenomme Bild, sondern das zuvor aufgenomme Bild.
Von "Schlimbo"  8) kam der Hinweis, dass man einmalig in der Kommandozeile den folgenden Befehl absetzt. Kommt dann ein neues Bild an, und nur dann, dann schickt der teleBot dieses Bild weiter: defmod sendSnapshot notify K.xx.snapshots.* set teleBot sendImage www/snapshots/K.xx_snapshot.jpg
damit reduziert sich das Holen und Verschicken eines Bildes auf folgende Befehlsfolge:
fhem("set K.K1 raw tmpfs/snap.jpg?usr=user&pwd=password");
fhem("get K.K1 image");
Das Verschicken des Bildes geschieht durch den oben beschriebenen defmod Befehl implizit.  Hat man nun, wie in meinem Fall, 2 Kameras, so benötigt man 2 notifies :defmod sendSnapshotK1 notify K.K1.snapshots.* set teleBot sendImage www/snapshots/K.K1_snapshot.jpg
defmod sendSnapshotK2 notify K.K2.snapshots.* set teleBot sendImage www/snapshots/K.K2_snapshot.jpg
jeweils 1 x in der Kommandozeile abgesetzt.

Das Abholen von Bildern von beiden Kameras geschieht jetzt über:
fhem("set K.K1 raw tmpfs/snap.jpg?usr=user&pwd=passw");
fhem("get K.K1 image");

fhem("set K.K1 raw tmpfs/snap.jpg?usr=user&pwd=passw");
fhem("get K.K2 image");



Ohne den Hinweis von Schlimpo hätte dies nicht klappt..  8) 8) 8) Merci
                  





dk3572

Hallo,

kann mir bitte jemand erklären, wie der set Befehl in fhem aussehen muss, damit ich meine Instar IN-5905HD von Sommer- auf Winterzeit umstellen kann?

Das funktioniert schon mal nicht:
set ipcam_Garten raw param.cgi?cmd=setservertime&-dstmode=on

Hiermit kann ich den Status auf An setzen, aber die Zeit wird nicht aktualisiert:
cmd=setntpattr&-ntpenable=1&-ntpserver=0.de.pool.ntp.org&-ntpinterval=1&cmd=setservertime&-timezone=Europe/Amsterdam&cmd=set_instar_admin&-index=50&-value=on

Danke und VG
Dieter


dk3572

Zitat von: dk3572 am 23 Februar 2019, 14:01:22
Hallo,

kann mir bitte jemand erklären, wie der set Befehl in fhem aussehen muss, damit ich meine Instar IN-5905HD von Sommer- auf Winterzeit umstellen kann?

Das funktioniert schon mal nicht:
set ipcam_Garten raw param.cgi?cmd=setservertime&-dstmode=on

Hiermit kann ich den Status auf An setzen, aber die Zeit wird nicht aktualisiert:
cmd=setntpattr&-ntpenable=1&-ntpserver=0.de.pool.ntp.org&-ntpinterval=1&cmd=setservertime&-timezone=Europe/Amsterdam&cmd=set_instar_admin&-index=50&-value=on

Danke und VG
Dieter

Keiner eine Idee?  ???

Schlimbo

Bei mir hat es auf jeden Fall Mal so funktioniert, wie du geschrieben hast :
set ipcam_Garten raw param.cgi?cmd=setservertime&-dstmode=on

Habe es aber gerade noch mal bei meiner IN-8015 Full HD getestet und musste feststellen dass es jetzt auch nicht mehr funktioniert.
Der Schalter "Sommerzeit berücksichtigen" ändert sich zwar in der Weboberfläche, aber die Uhrzeit bleibt gleich.
Ist wohl ein Thema für den Support

Tungsten

Moin Zusammen,

ich habe ein Problem mit dem IPCAM Modul.

Ich habe eine Instar Webcam eingebunden, diese funktioniert auch gut.
Ich hole täglich mit einem DOIF ein Bild und verschicke es per Telegram.

Nun passiert es seit ein paar Wochen immer wieder, dass get image nicht funktioniert.

Im Log steht dann:
2019.04.29 08:29:35 1: IPCAM WebcamInstar Wrong or not supported image format: error while reading source image:

Nach einem Restart geht es wieder für eine gewisse Zeit. Woran kann das liegen. Das image format ändert sich ja durch einen FHEM restart nicht,
somit muss der Fehler irgendwo in FHEM liegen. Hat jemand eine Idee?

Danke Euch

Brockmann

Zitat von: Tungsten am 29 April 2019, 08:45:38
2019.04.29 08:29:35 1: IPCAM WebcamInstar Wrong or not supported image format: error while reading source image:

Nach einem Restart geht es wieder für eine gewisse Zeit. Woran kann das liegen. Das image format ändert sich ja durch einen FHEM restart nicht,
somit muss der Fehler irgendwo in FHEM liegen. Hat jemand eine Idee?
Das Modul braucht etwas Zeit, um das Bild zu holen und als Datei zu speichern. Wenn die Bilddatei noch nicht fertig ist, kann es zu dem beschriebenen Fehler kommen.
Deshalb am Besten zwischen Bild machen und Bild versenden einige Sekunden Pause einlegen.

Alternativ trennst Du Bild erstellen und Bild versenden. Dann kannst Du auf das vom Modul beim Erstellen erzeugte Event triggern und bist sicher, dass die Bilddatei dann auch schon fertig gespeichert wurde.