Forum

Einloggen | Registrieren | RSS  

luemar(R)

22.12.2017,
14:32
 

Raspberry und PIR(2) (Computertechnik)

Hall Bastelix und Experten,
vermute, dass mit meinen beiden letzte Einträgen etwas schief lief:

(1) Hallo Bastelix
» habe nun auf meinen 3. Raspberry 3 das schon von Dir entworfene Script
» (auf https://gist.github.com/anonymous/5c25da72e1c24705d626c46a99a59b18)
» installiert.
» Es funktioniert, aber wenn der Sensor nach dem ersten Mal weitere Male
» aktiviert wird bekomme ich eine Fehlermeldung wie folgt, wobei ich die das
» Teil-Script
» für die Foto-Aufnahme mit der PiCamera mit try und except ('Camera Fehler')
» abgesichert habe:
» :
» #root@raspberry3:/home/pi# ./PIR_V1.py
» #./PIR_V1.py:12: RuntimeWarning: This channel is already in use, continuing
» anyway. Use #GPIO.setwarnings(False) to disable warnings.
» gpio.setup(23, gpio.IN)
» #PIR3 wartet auf PIR3 IRQ
» #PIR3 IRQ um 29.11.2017 14:31:07 zum 1ten mal aktiviert
» #PIR3 wurde 1 mal ausgeloest
» #PIR3 IRQ um 29.11.2017 14:31:19 zum 2ten mal aktiviert
» >mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV):
» ENOSPC
» >mmal: mmal_port_enable: failed to enable connected port
» (vc.null_sink:in:0(OPQV))0x1a6dd80
» >(ENOSPC)
» >mmal: mmal_connection_enable: output port couldn't be enabled
» >Camera Fehler
» #PIR3 wurde 2 mal ausgeloest
» #PIR3 IRQ um 29.11.2017 14:31:36 zum 3ten mal aktiviert
» >mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV):
» ENOSPC
» >mmal: mmal_port_enable: failed to enable connected port
» (vc.null_sink:in:0(OPQV))0x1a6f510 (ENOSPC)
» >mmal: mmal_connection_enable: output port couldn't be enabled
» >Camera Fehler
» #PIR3 wurde 3 mal ausgeloest
» #Schlafmodus fuer 30 Sekunden
» ........
»
-------------------------------------------------------------------------------------------------------------
(2) Hallo Bastelix und Experten,
muss nochmals in gleicher Sache um Hilfe bitten:

Habe auf dem Raspberry 3 (s.o.) ein vereinfachtes Python Script unter:
https://gist.github.com/luemar/d512decbdc7376b96c81a55da486f994
installiert:

Wenn der PIR zum ersten Mal anspricht funktioniert das Script wie vorgesehen.
Nach dem 2. und den folgenden Ansprechen des PIR bekomme ich wie in
meinem Eintrag oben(1)
a) folgenden Fehlermeldung(en):

root@raspberry3:/home/pi# ./PIR_V2.py
PIR 3 aktiviert 1 Mal #alles i.O.
PIR 3 aktiviert 2 Mal
mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC
mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0x75b20ad0 (ENOSPC)
mmal: mmal_connection_enable: output port couldn't be enabled
Camera Fehler
PIR 3 aktiviert 3 Mal
mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV): ENOSPC
mmal: mmal_port_enable: failed to enable connected port (vc.null_sink:in:0(OPQV))0x75b22830 (ENOSPC)
mmal: mmal_connection_enable: output port couldn't be enabled
Camera Fehler
Schlafmodus

und b) es werden bei jeder PIR-Aktivierung zwar E-Mails gesendet, aber immer mit dem selben bzw. ersten
Bild, das bei der ersten PIR-Aktivierung auf genommen wurde.

Die erste Überwachungsanlage in meinem Ferienhaus mit dem Python Script unter:
https://gist.github.com/anonymous/5c25da72e1c24705d626c46a99a59b18, welches aber denselben Funktions-block
enthält schickt mir jeden Tag ein Bild (/etc/crontab).
An Hand der immer gleichen Bild-Helligkeit -nun bald über ein halbes Jahr - muss ich schliessen,
das es auch immer dasselbe ist, nämlich das erste, das noch einschalten des Raspberrys aufgenommen wurde.

Ich habe die aufgeführten Fehlermeldungen gegoogelt aber kein schlüssiges "Rezept" gefunden vermute aber
es könnte an der Bildspeicherung liegen oder daran, dass die jeweils aufgenommenen Bilder nicht automatisch
gelöscht werden ????

Wenn ein Bild mit dem Befehl <camera.capture()> aufgenommen wird, was passiert dann genau mit den Bilddaten ?

Grüsse und frohe Weihnachten luemar.

bastelix(R)

23.12.2017,
00:31

@ luemar

Raspberry und PIR(2)

Hallo luemar,

» vermute, dass mit meinen beiden letzte Einträgen etwas schief lief:
Möglich, ich hab nix davon mitbekommen aber ich hatte die letzten Wochen auch relativ viel zu tun (incl. Mailserver reparieren....) und war nicht sonderlich oft im Forum. Der Thread ist aber auch schon gefühlte 100 Jahre alt ;)

Meine Antwort fällt jetzt auch recht knapp aus, weil ich noch etwas eingespannt bin. Nach den Feiertagen sollte ich dann mehr Luft haben mir das genauer anzuschauen.

» » #./PIR_V1.py:12: RuntimeWarning: This channel is already in use, continuing
» » anyway. Use #GPIO.setwarnings(False) to disable warnings.
So spontan würde ich darauf tippen, dass der Port schon von einem anderen Programm verwendet wird bzw. vom System noch als für jemand anderen reserviert markiert ist. Das kann auch ein Zombie deines Scriptes sein. Ggf. hat sich dein Programm beendet bevor es in die Ausnahmebehandlung mit gpio.cleanup() gelaufen ist.

Versuch mal einen anderen GPIO-Port, ggf. erledigt sich das Problem damit.

» mmal: mmal_vc_port_enable: failed to enable port vc.null_sink:in:0(OPQV):
» ENOSPC
» mmal: mmal_port_enable: failed to enable connected port
» (vc.null_sink:in:0(OPQV))0x75b20ad0 (ENOSPC)
Sieht für mich so aus als wären das Meldungen vom Treiber, also ein paar Abstraktionsebenen unter deinem Python-Script und vermutlich liegt die Ursache auch nicht direkt in deinem Python-Script sondern irgendwo darunter.

» und b) es werden bei jeder PIR-Aktivierung zwar E-Mails gesendet, aber
» immer mit dem selben bzw. ersten
» Bild, das bei der ersten PIR-Aktivierung auf genommen wurde.
Ups...

Also laut Doku ( http://picamera.readthedocs.io/en/release-1.10/recipes1.html ) sollte die Methode in die Datei schreiben egal ob da schon was existiert oder nicht.
Aber die deklaration der Variablen fn solltest du nicht im try-block machen sondern vorher. (In dem gist sind übrigens auch Tabs vorhanden, das hat mein pyhton-interpreter angemault ;) ) Und du könntest statt einem festen Dateinamen einen variablen Dateinamen verwenden, z.B. "fn = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S";)" ("import datetime" nicht vergessen)

Dann hängst du das Bild an die Mail an, egal ob except aufgerufen wurde oder nicht. Es könnte also sein, dass eine Exception fliegt, behandelt wird und dann die zuletzt erfolgreich geschriebene Datei versendet wird.
Das müsste man etwas fehlertoleranter umschreiben. Nach den Feiertagen müsste ich mal etwas Luft haben um da etwas zusammen zuhacken auf dem du Aufbauen kannst.

Hoffe das hilft dir schon mal etwas weiter. Wie gesagt, mehr nach den Feiertagen. Falls du bis Silvester nichts von mir hörst musst du mich nochmal dran erinnern ;)

Btw. ich hab jetzt auch einen RPI3 (lag da ganz "zufällig" in ner größeren Bauteilbestellung dabei ;) )

Gruß und Frohe Weihnachten
Bastelix

luemar(R)

23.12.2017,
16:41
(editiert von luemar
am 05.01.2018 um 17:28)


@ bastelix

Raspberry und PIR(2)

» Hallo luemar,
»
» » vermute, dass mit meinen beiden letzte Einträgen etwas schief lief:
» Möglich, ich hab nix davon mitbekommen aber ich hatte die letzten Wochen
» auch relativ viel zu tun (incl. Mailserver reparieren....) und war nicht
» sonderlich oft im Forum. Der Thread ist aber auch schon gefühlte 100 Jahre
» alt ;)
»
» Meine Antwort fällt jetzt auch recht knapp aus, weil ich noch etwas
» eingespannt bin. Nach den Feiertagen sollte ich dann mehr Luft haben mir
» das genauer anzuschauen.
»
» » » #./PIR_V1.py:12: RuntimeWarning: This channel is already in use,
» continuing
» » » anyway. Use #GPIO.setwarnings(False) to disable warnings.
» So spontan würde ich darauf tippen, dass der Port schon von einem anderen
» Programm verwendet wird bzw. vom System noch als für jemand anderen
» reserviert markiert ist. Das kann auch ein Zombie deines Scriptes sein.
» Ggf. hat sich dein Programm beendet bevor es in die Ausnahmebehandlung mit
» gpio.cleanup() gelaufen ist.
»
» Versuch mal einen anderen GPIO-Port, ggf. erledigt sich das Problem damit.
»
» » mmal: mmal_vc_port_enable: failed to enable port
» vc.null_sink:in:0(OPQV):
» » ENOSPC
» » mmal: mmal_port_enable: failed to enable connected port
» » (vc.null_sink:in:0(OPQV))0x75b20ad0 (ENOSPC)
» Sieht für mich so aus als wären das Meldungen vom Treiber, also ein paar
» Abstraktionsebenen unter deinem Python-Script und vermutlich liegt die
» Ursache auch nicht direkt in deinem Python-Script sondern irgendwo
» darunter.
»
» » und b) es werden bei jeder PIR-Aktivierung zwar E-Mails gesendet, aber
» » immer mit dem selben bzw. ersten
» » Bild, das bei der ersten PIR-Aktivierung auf genommen wurde.
» Ups...
»
» Also laut Doku (
» http://picamera.readthedocs.io/en/release-1.10/recipes1.html ) sollte die
» Methode in die Datei schreiben egal ob da schon was existiert oder nicht.
» Aber die deklaration der Variablen fn solltest du nicht im try-block machen
» sondern vorher. (In dem gist sind übrigens auch Tabs vorhanden, das hat
» mein pyhton-interpreter angemault ;) ) Und du könntest statt einem festen
» Dateinamen einen variablen Dateinamen verwenden, z.B. "fn =
» datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S";)" ("import datetime"
» nicht vergessen)
»
» Dann hängst du das Bild an die Mail an, egal ob except aufgerufen wurde
» oder nicht. Es könnte also sein, dass eine Exception fliegt, behandelt wird
» und dann die zuletzt erfolgreich geschriebene Datei versendet wird.
» Das müsste man etwas fehlertoleranter umschreiben. Nach den Feiertagen
» müsste ich mal etwas Luft haben um da etwas zusammen zuhacken auf dem du
» Aufbauen kannst.
»
» Hoffe das hilft dir schon mal etwas weiter. Wie gesagt, mehr nach den
» Feiertagen. Falls du bis Silvester nichts von mir hörst musst du mich
» nochmal dran erinnern ;)
»
» Btw. ich hab jetzt auch einen RPI3 (lag da ganz "zufällig" in ner größeren
» Bauteilbestellung dabei ;) )
»
» Gruß und Frohe Weihnachten
» Bastelix

Hall Bastelix,
vielen Dank !
Habe mittlerweile den Fehler gefunden, in meinem aktuellsten, nach Deinen
Angaben modifizierten Script (und auch den alten) in:
"https://gist.github.com/luemar/d512decbdc7376b96c81a55da486f994.js"
Es fehlten in Linie 32 die Klammern.
(leider gelingt es mir nicht die Zeilen 43 - 42 korrekt einzurücken, der Editor
frisst die Korrektur einfach nicht).

Allerdings klapp die Einfügung des Datums nicht, der betreffende "Einschub"
wird vom Modul smtplib etc. nicht akzeptiert, damit kann ich aber leben.

Jetzt funktioniert es wie geplant, mit einer Ausnahme:

Wenn ich das Script (PIR_V2.py) über PuTTY mit dem Kommando ./ aktiviere und
dann PuTTY schliesse endet auch das Script, auch wenn ich es im Hintergrund
(./PIR_V2.py &;) laufen lasse.
????
Frohe Weihnachten, luemar

Hallo Bastelix,
die oben in meinem letzten Absatz erwähnte Ausnahme war zu voreilig, das Script läuft
weiter, auch nach Beenden von PuTTY. "Sorry".
Auch werden von meinen Raspberry's 1 und 3 jeweils aktuelle Bilder gesendet, wie ich
nach Tests feststellen konnte.

Die nun letzten Probleme sind folgende:
a) Wenn der Rapberry 3 zu Hause läuft wird zwar x-mal am Tag, wenn jemand vorbeiläuft
das Script ausgelöst, die auslösende Person ist aber nie auf dem Foto.
Vermute, dass in der Zeit, die das Script braucht vom PIR-Ansprechen bis
Auslösen der PiCamera die auslösende Person das Kamera-Blickfeld bereits verlassen hat.
???

b) Auch bei meinem Raspberry 1 im Ferienhaus erfolgen Scriptabläufe mitten in der Nacht
wenn nun wirklich niemand herumläuft.
Könnte das durch Temperaturänderungen, z.B. Anspringen der Heizung bedingt sein ?

Ein gutes, ja noch besseres neues Jahr, Luemar.