(Gelöst) IPCAM - entweder Aufnehmen oder Speichern???

Begonnen von Ekkehard, 18 Juni 2018, 23:07:15

Vorheriges Thema - Nächstes Thema

Ekkehard

Hallo zusammen,

bin mit meinem Latein am Ende. Folgende Situation:

FHEM auf Raspi #1
Raspi #2 mit USB Webcam und PHP-Server, siehe https://www.computerhilfen.de/info/usb-kamera-in-fhem-einbinden-so-gehts.html#bedarf

Zugriff auf Raspi #2 funktioniert vom PC aus prima, sowohl
    http://192.168.178.46/webcam-bilder/bild.jpg (letztes Bild) als auch
    http://192.168.178.46/webcam-bilder/bild.php (Aufnahme und Übertragung neues Bild).

Test in FHEM mit IPCAM ("get Cam1 image")

defmod Cam1 IPCAM 192.168.178.46
attr Cam1 delay 50
attr Cam1 path /webcam-bilder/bild.php
attr Cam1 room Cam
attr Cam1 snapshots 1
attr Cam1 storage /opt/fhem/www/snapshots


Webcam blinkt, Bild wird tatsächlich aufgenommen aber nicht unter  /opt/fhem/www/snapshots gespeichert.

Ersetze ich in der zweiten Zeile .php durch .jpg
attr Cam1 path /webcam-bilder/bild.jpg

wird das gespeicherte Bild vom Raspi #2 tatsächlich  unter  /opt/fhem/www/snapshots gespeichert, nur leider wird kein neues aufgenommen.

Was mache ich falsch?

Ein Workaround wäre, zwei IPCAMs zu definieren. Eine macht das Bild und die andere holt es ab. Das kann es aber doch nicht sein?!

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Wuppi68

Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

helmut

Zitat von: Ekkehard am 18 Juni 2018, 23:07:15
attr Cam1 path /webcam-bilder/bild.php

Auszug aus der Comandref:
Zitatthen only the path and query part is specified here (without the leading slash (/).

Versuchs mal ohne den Slash vor webcam...

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Ekkehard

So, Fehler gefunden:

Habe zwei IPCAMs definiert, Cam1 mit ..../bild.php und Cam2 mit ..../bild.jpg.
Bei Cam1 wird die Webcam ausgelöst und bei Cam2 wird das Bild lokal gespeichert.

Bei Cam1 tritt Fehler auf: IPCAM Cam1 Wrong or not supported image format: error while reading source image: 

In einem anderen Thread (https://forum.fhem.de/index.php/topic,39022.msg312523.html#msg312523) gab es den Tipp, die File-Erkennung auszuschalten. Genau das habe ich gemacht und nun gesehen, dass meine Eigenbau-Raspi-Webcam ja gar kein Bild schickt, sondern HTML:
<html><body style="margin:0;padding:0;"><img src="bild.jpg"/></body>

Mein Workaround mit den beiden IPCAMs funktioniert zwar, gefällt mir aber nicht so richtig.
defmod TelegramHaustuerklingel notify Haustuerklingel:on { \
  fhem ("get Cam1 image");;\
  fhem ("define a_TeleHaus1 at +00:00:05 get Cam2 image");;\
  fhem ("define a_TeleHaus2 at +00:00:10 set TeleBot sendImage /opt/fhem/www/snapshots/Cam2_snapshot.jpg")\
}


Hat jemand eine bessere Idee?
Oder sollte ich die Frage in einem PHP-Forum stellen, damit die Kamera statt HTML direkt das Bild schickt?

Ekkehard

Problem gelöst!

Ersetzt man im PHP Script die Zeile
echo '<html><body style="margin:0;padding:0;"><img src="bild.jpg"/></body>'
durch
header('Content-Type: image/jpeg');
readfile('/var/www/webcam-bilder/bild.jpg'); 

wird ein Bild geschickt.

So einfach isses!  ;D

Ekkehard

So ganz 100%ig bin ich noch nicht zufrieden.    ;)

Ich hätte gern statt Knipsen, Warten und Senden 
  fhem ("get Cam1 image");
  fhem ("define a_TeleHaus1 at +00:00:05 set TeleBot sendImage /opt/fhem/www/snapshots/Cam1_snapshot.jpg")


nur diesen Einzeiler in der Notify:
  set TeleBot sendImage http://raspberrypi.fritz.box/webcam-bilder/bild.php

Leider kann Telegram nur Bilder von der Platte senden.
Eigentlich ist es ja auch wenig sinnvoll, ein Bild von einer URL zu holen und dann wieder ins Netz zu schicken. Ist aber eine lokale URL ...