ich habe nach einigem Probieren nun folgendes erreicht:
entsprechend der Anleitung https://www.computerhilfen.de/info/usb-kamera-in-fhem-einbinden-so-gehts.html (https://www.computerhilfen.de/info/usb-kamera-in-fhem-einbinden-so-gehts.html) habe ich es geschafft die webcam manuell zu einen Foto zu zwingen (in den Zielordner, ausgeführt direkt über putty). Zudem habe ich auch einen notify der auf einen Schalter hört und sauber ausgeführt wird. Der notify ruft eine Sub auf, welche dann das Foto machen soll:
sub take_pic
{
system("fswebcam /opt/fhem/www/webcam-bilder/bild.jpg");
}
Im Fhem log bekomme ich nun folgende Fehlermeldung - und natürlich kein Foto:
^[[1m--- Opening /dev/video0...
^[[0m^[[0mtrying source module v412...
^[[0m^[[31mError opening device: /dev/video0
^[[0m^[[31mopen: permission denied
....
ich habe auch versucht alle Gruppen und Rechte entsprechend obiger Anleitung einzustellen.
Was kann ich zusätzlich tun, um die richtigen Rechte zu bekommen.
Danke im Voraus, Svenergy
Schauen welche Gruppe /dev/video0 hat
klingt gut, kannst du mir bitte kurz sagen wie - ich bin nicht der freak der das auf Anhieb auswendig kennt
Svenergy
Man muss nicht wissen wie es geht, es reicht das man weiß wo es steht, wie es geht! (http://linuxwiki.de/DateiRechte)
ahh stimmt, gefunden
/dev/video0 gehört zur Gruppe Video - also entsprechend der Anleitung hatte ich fhem genau dieser Gruppe zugefügt.
ob das geklappt hat muss ich morgen mal Googlen ;)
Svenergy
Super.
Kann das das Du FHEM noch mal neustarten musst. Also so richtig mit systemctl stop fhem und start fhem danach. Damit die neue Gruppenzuordnung greift.
Grüße
Leon
hab ich gemacht, aber leider ohne Erfolg
vielleicht hätt ich vorhin noch hinzufügen sollen:
^[[1m--- Opening /dev/video0...
^[[0m^[[0mtrying source module v412...
^[[0m^[[31mError opening device: /dev/video0
^[[0m^[[31mopen: permission denied
^[[0m^[[31mUnable to find a source module that can read /dev/video0.
^[[0m2017.07.23 23:29:00 3: make_pic_notify return value: -1
sorry aber die letzten zwei Zeilen verändern vielleicht die Ursache
Svenergy
Dann müssen wir das ganze erstmal in Ruhe angehen.
Bitte Logausgaben oder Code immer in Codetags posten. Das ist in der Symbolleiste das Rautezeichen.
Mach mal bitte folgendes. Anmelden am Pi. Dafür Sorgen das Du root bist. Dann
su -s /bin/bash fhem
Nun bist Du User fhem. Dann gibst Du ein
fswebcam /opt/fhem/www/webcam-bilder/bild.jpg
Und Du sagst mir mal was dann als Ausgabe kommt.
Deinen myUtils Code ändern wir am Ende dann auch noch. So blockiert er FHEM.
Okay hab mich eingeloggt und folgende Meldung:
fhem@raspberrypi:~$ fswebcam /opt/fhem/www/webcam-bilder/bild1.jpg
--- Opening /dev/video0...
Trying source module v4l2...
Error opening device: /dev/video0
open: Permission denied
Trying source module v4l1...
Error opening device: /dev/video0
open: Permission denied
Unable to find a source module that can read /dev/video0.
Und als root klappt es?
Mach mal bitte ein
ls -ll /dev/video0
Und ein
groups fhem
das kommt unter pi:
pi@raspberrypi:~ $ fswebcam /opt/fhem/www/webcam-bilder/bild1.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to '/opt/fhem/www/webcam-bilder/bild1.jpg'.
und es wurde ein neue Datei angelegt in dem Ordner
hier das Resultat des befehls unter pi:
pi@raspberrypi:~ $ ls -ll /dev/video0
crw-rw----+ 1 root video 81, 0 Jul 18 20:47 /dev/video0
grous fhem:
pi@raspberrypi:/opt/fhem/www/webcam-bilder $ groups fhem
fhem : dialout tty
Interessant. Warum ist der User fhem nicht in der Gruppe video wie besprochen :)
das ist eine gute Frage, ich bin mir absolut sicher dass ich
sudo adduser fhem vidoe
gemacht habe (vielleicht liegt es am ständig wechselnde PC für den Zugriff :)
nunja habe jetzt folgendes:
pi@raspberrypi:/ $ sudo adduser fhem video
Füge Benutzer »fhem« der Gruppe »video« hinzu ...
Benutzer fhem wird zur Gruppe video hinzugefügt.
Fertig.
pi@raspberrypi:/ $ groups fhem
fhem : dialout tty video
damit klappt jetzt auch:
fhem@raspberrypi:~$ fswebcam /opt/fhem/www/webcam-bilder/bild2.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to '/opt/fhem/www/webcam-bilder/bild2.jpg'.
letzter test aus fhem heraus über den notify finde ich im fhem-log:
^[[1m--- Opening /dev/video0...
^[[0m^[[0mTrying source module v4l2...
^[[0m^[[31mError opening device: /dev/video0
^[[0m^[[31mopen: Permission denied
^[[0m^[[0mTrying source module v4l1...
^[[0m^[[31mError opening device: /dev/video0
^[[0m^[[31mopen: Permission denied
^[[0m^[[31mUnable to find a source module that can read /dev/video0.
^[[0m2017.07.24 19:35:15 3: make_pic_notify return value: -1
klappt noch nicht
FHEM bitte neu starten. Und zwar mit systemctl stop fhem und start fhem
Und bitte nicht adduser sondern den User fhem gibt es ja schon, da wollen wir nur was ändern. Daher usermod -G
juhu Fehlermeldung ist eirst einmal weg:
$
^[[1m--- Opening /dev/video0...
^[[0m^[[0mTrying source module v4l2...
^[[0m^[[0m/dev/video0 opened.
^[[0m^[[0mNo input was specified, using the first.
^[[0m^[[0mAdjusting resolution from 384x288 to 352x288.
^[[0m^[[1m--- Capturing frame...
^[[0m^[[0mCaptured frame in 0.00 seconds.
^[[0m^[[1m--- Processing captured image...
^[[0m^[[0mWriting JPEG image to '/opt/fhem/www/webcam-bilder/bild.jpg'.
^[[0m2017.07.24 19:58:19 3: make_pic_notify return value: -1
2017.07.24 19:58:31 3: EnOcean set virtPTM_LED_Stube B0
und auch eine Bildatei wurde gerade erstellt -> super danke und juhu!!
jetzt noch die sub in der myUtils ;) bereinigen
Na dann noch viel Spaß
Grüße
/#bin/bash
rmmod uvcvideo
modprobe uvcvideo nodrop=1 timeout=5000 quirks=0x80
Laut https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=35689&p=300710&hilit=bandwidth%2bquirk#p300710
danke an CoolTux schon mal für die Geduld, aber gibt es noch einen TTipp wie ich meine sub routine so verbessern könnte, dass Fhem nicht blockiert?
habe einen notify:
Test_switch:buttons:.pressed {
take_pic;;
}
und dann die Sub:
sub take_pic
{
fhem "setreading virtPTM_LED_Stube state BI";
system("fswebcam /opt/fhem/www/webcam-bilder/bild.jpg");
}
wobei der fhem-Befehl nur für mich als Debugging da ist und eine Lampe anmacht wenn die Sub gelaufen ist.
Grüße Svenergy
Zitat von: Svenergy am 24 Juli 2017, 20:01:12
jetzt noch die sub in der myUtils ;) bereinigen
Haha, jetzt fällt es mir erst ein. Ok. myUtils brauchst dafür nicht.
Einfach im Notify nach der RegEx den Befehl eingeben, umgeben von Hochkommata
Also
"fswebcam /opt/fhem/www/webcam-bilder/bild.jpg"
Mehr nicht. Dadurch wird der Systembefehl nicht blockierend ausgeführt.
ohkayy, der Befehl direkt im notify:
Test_switch:buttons:.pressed "fswebcam /opt/fhem/www/webcam-bilder/bild3.jpg"
bringt im Log folgenden Fehler:
2017.07.24 20:40:40 3: make_pic_notify return value: Unknown command "fswebcam, try help.
Gib mal bitte für fswebcam den Pfad mit an.
oh je jetzt habe ich das Pi mit allen mir bekannten mitteln durchsucht aber keinen Pfad gefunden, wo sich das fswebcam befindet, ausser:
pi@raspberrypi:/ $ sudo find / -name fswebcam.*
/var/lib/dpkg/info/fswebcam.md5sums
/var/lib/dpkg/info/fswebcam.list
/usr/share/man/man1/fswebcam.1.gz
das kann es aber nich sein, denk ich mir. Bei Tante google bin ich auch zu blöd was sinnvolles herauszufinden.
which fswebcam
danke, gefunden
aber Fhem reagiert immer noch komisch:
2017.07.24 21:50:19 3: make_pic_notify return value: Unknown command "/usr/bin/fswebcam, try help.
Ok dann geht das so nicht. Dann lass uns das in ein bash Script packen. Weißt Du wie man das macht?
Also quasi eine Datei erzeugen, dort Deinen Aufruf rein packen und diese Datei ausführbar machen. Rechte für User fhem anpassen und unter /opt/fhem ablegen. Dann im notify mit Pfad aufrufen.
oh das gefällt mir und dabei kann ich auch gleich Datum und Zeit mit in den Dateinamen packen ohne mich zu verbiegen.
Also gemacht habe ich es erst einmal, aber traue mir zu das notwendige rasch zu finden, die einzelnen Schritte hast du mir ja grad genannt
irgendwo auf der Hälfte der Seite wirds interessant glaub ich, oder? ;) http://rpicam.blogspot.de/p/howto.html (http://rpicam.blogspot.de/p/howto.html)
falls es klappt schließe ich den Thread sonst frag ich weiter ;D.
vielen Dank, damit bin ich schon super weit und fast am Ziel
(Am Rande bemerkt, das gefällt mir gut: ich wollte schon lange ein Script basteln zum dropbox download, jetzt lern ich wie und dann klappt auch das andere)
~~~~~~~~~~~~~~~~~~~~~~~
#!/bin/bash
fswebcam -c /home/pi/fswebcam/fswebcam.conf
echo picture taken
ncftpput -u admin -p admin 192.168.100.111 /picam fswebcam.jpg
echo picture uploaded
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Natürlich nicht alle Zeilen. Nur das was Du für Dich als wichtig erachtet.
ja klasse so läufts jetzt:
eine config für das fswebcam -> fswebcam.conf
device /dev/video0
input 0
resolution 960x720
dann ein kleines script -> take_pic.sh in /opt/fhem/
#!/bin/bash
fswebcam -c /opt/fhem/www/webcam-bilder/fswebcam.conf /opt/fhem/www/webcam-bilder/Bild-"%Y-%m-%d_%H%M%S".jpg
die richtige Gruppe und fhem Zugehörigkeit
-rwxr-xr-x 1 fhem dialout 121 Jul 24 22:33 take_pic.sh
und im notify im FHEM der direkte Aufruf.
Test_switch:buttons:.pressed "/opt/fhem/take_pic.sh"
Als Resultat, Bilder mit Zeitstempel im Namen
-rw-r--r-- 1 pi pi 263218 Jul 24 22:33 Bild-2017-07-24_223337.jpg
-rw-r--r-- 1 pi pi 132498 Jul 24 22:49 Bild-2017-07-24_224921.jpg
-rw-r--r-- 1 fhem dialout 180739 Jul 24 22:50 Bild-2017-07-24_225000.jpg
wird nun der Schalter gedrückt, wird ein Bild gemacht (die ersten zwei Bilder sind aus dem direkten Test des scriptes, das dritter wurde aus Fhem mit dem Schalter geschossen).
Ich freu mich rießig. Und danke noch einmal für die Unterstützung. Da sag noch einmal die Maschbauer können nur Drehen und Bohren ;D
Svenergy