Installationsprozess

    • Offizieller Beitrag

    Ich durfte gerade DoorPi komplett neu aufsetzen, drum war ich auf der Suche nach dem Installationsartikel. Der war leider nicht mehr verfügbar. Allerdings ist die momentane setup.py aus dem github Rep auch nicht mehr funktionstüchtig. Von d.h. hier mal ein paar Notizen dazu:


    Installation von DoorPi

    Zunächst besorgt euch das aktuelle Image von Raspian Buster Lite (https://www.raspberrypi.org/downloads/raspbian/) und packt es mit z.B. Etcher auf eure SD-Karte. Hier dann noch eine Datei "ssh" (ohne Endung) anlegen, falls ihr die Konfiguration im "Headless"-Betrieb vornehmen wollt. Mit Putty (o. anderem SSH-Client) einloggen und mit raspi-config die wichtigsten Einstellungen vornehmen. Dann kommt die eigtl. DoorPi-Installation.


    Euer System auf den aktuellen Stand bringen:

    Code
    sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade 

    Dann brauchen wir git zum clonen des Reps (hier Master branch)

    Code
    sudo apt-get install git
    git clone https://github.com/motom001/DoorPi.git -b master /tmp/DoorPi

    Für die Installation brauchen wir noch pip. Die Installation innerhalb von setup.py scheitert allerdings. Also holen wir uns eine aktuelle Version von get-pip.py und installieren es damit.

    Code
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python get-pip.py

    In das DoorPi Verzeichnis wechseln:

    Code
    cd /tmp/DoorPi

    Jetzt müssen wir die setup.py modifizieren (Zeile 52) (entweder über SCP oder per nano/vi/etc.):

    Python
    from pip.req import parse_requirements

    ersetzen durch:

    Python
    try: # for pip >= 10
        from pip._internal.req import parse_requirements
    except ImportError: # for pip <= 9.0.3
        from pip.req import parse_requirements

    Damit sollte jetzt der Aufruf von setup.py funktionieren.

    Code
    sudo python setup.py install

    Jetzt sollte der Start von doorpi eigtl. bereits ebenfalls funktionieren:

    Code
    sudo doorpi_cli --trace

    Raus kommt ihr da mit [Strg]+[C]. Leider wird das python-daemon - Modul bei der Installation auch nicht mehr korrekt installiert, sodass ein Start als Service noch nicht möglich ist. Das korrigieren wir schnell:

    Code
    sudo pip install python-daemon


    Es fehlt noch Linphone damit auch das telefonieren klappt. PIP haben wir ja schon installiert, also:

    Code
    sudo pip install linphone4raspberry


    Jetzt bietet es sich noch - je nach Lokalisation des Projektes - an das Webinterface offline verfügbar zu machen:

    Code
    sudo git clone https://github.com/motom001/DoorPiWeb.git /usr/local/etc/DoorPiWeb


    Abschließend starten wir DoorPi als Service und stellen sicher, dass das auch beim Systemstart passiert:

    Code
    sudo systemctl enable doorpi.service
    sudo systemctl start doorpi.service

    Das sollte jetzt eigtl. funktionieren. Ansonsten mal schauen, wass "journalctl -xe" euch noch zeigt.



    RTSP Server

    Das ist jetzt die Stelle, wo die meisten zu unterschiedlichen Paketen greifen. u.A. gibt es neben v4l2rtspserver (https://github.com/mpromonet/v4l2rtspserver.git) noch MotionEye, VLC, RPI-Webcam-Interface, gstreamer, ffmpeg und mjpeg-streamer als Möglichkeiten einen Video-Stream von der Kamera zu bekommen (falls ihr überhaupt das Raspberry Camera Modul nutzt). Unterschiede bestehen im Funktionsumfang, der Kompression des Streams und vor allem hinsichtlich der Performance. Generell ist der PI aber mit einem h264-Hardware-Encoder ausgestattet.


    Los geht's: Kamera-Treiber laden

    Code
    sudo modprobe -v bcm2835-v4l2

    v4l2rtspserver muss leider einmal selbst gebuildet werden, also brauchen wir cmake:

    Code
    sudo apt-get install cmake

    Weiter geht's mit dem Clonen des Reps und dem anschließenden build. Abschließend wird es noch installiert.

    Code
    git clone https://github.com/mpromonet/v4l2rtspserver.git /tmp/v4l2rtspserver
    cd /tmp/v4l2rtspserver
    cmake .
    make
    sudo make install

    v4l2rtspserver sollte sich selbst als Service registrieren ("sudo service --status-all" listet euch zur Kontrolle sowohl DoorPi als auch v4l2rtspserver-Services), muss allerdings noch aktiviert werden:

    Code
    sudo systemctl enable v4l2rtspserver

    Ansonsten kann man auch hierbei noch die Parameter verändern in "lib/systemd/system/v4l2rtspserver.service" unter ExecStart steht mit welchen Parametern der Server gestartet wird. Die PiCamera unterstützt folgende Auflösungen: https://picamera.readthedocs.io/en/release-1.12/fov.html, sodas z.B. folgendes gehen würde:

    Code
    ExecStart=/usr/local/bin/v4l2rtspserver -H 1944-W 2592 -F 15 /dev/video0 

    Der Stream ist dann unter folgender Adresse erreichbar:

    Code
    rtsp://{IPAddressOfYourPI}:8554/unicast





    Evtl. formulier ich den Beitrag nochmal um, falls mir unterwegs noch mehr Stolpersteine begegnen ...

    • Offizieller Beitrag

    Lexikon ist noch nicht migriert in die neue Version - deshalb danke für Deine Hilfe.


    Ansatz für die Installation ist auch beim Test mit Travis (automatische Erstellung als Code-Test) zu finden:

    https://travis-ci.org/motom001/DoorPi


    z.B.: https://travis-ci.org/motom001/DoorPi/jobs/520705666

    als RAW-Log: https://api.travis-ci.org/v3/job/520705666/log.txt


    genutzt werden die Installscripte von hier:

    https://github.com/motom001/DoorPi/tree/master/.travis

  • Also ich konnte meinen DoorPi kürzlich problemlos unter Raspbian Buster Lite neu aufsetzen. Allerdings nutze ich auch das RPi_Cam_Web_Interface.


    Hier habe ich meinen Installationsvorgang beschrieben, falls es jemanden interessieren sollte.

  • dtp :
    Klasse Projekt! Respekt!
    Ganz so aufwendig möchte ich meine Haustürüberwachung nicht umsetzen.
    Kurze Umschreibung: auf meinem Iobroker ist die Haustürklingel schon smart vorhanden, jetzt soll über den GPIO-Fernzugriff das Kamerabild an die Fritz-Box angezeigt werden. Für eine Gegensprechanlage fehlt mir noch Lautsprecher und Micro, USB-Soundkarte für den PI ist vorhanden. Wer hat Tipp bezüglich der Audio Komponenten?

    In Deiner Anleitung würde ich noch hinzufügen das der erste Start von DoorPi mit

    Code
    sudo doorpi_cli --trace

    ausgeführt wird. Soweit bin ich jetzt und wie auch von Dir beschrieben wird die Fehlermeldung angezeigt, jedoch komme ich nicht auf das Webinterface da ein User mit PW abgefragt wird.
    Schlagt mich, aber wie lautet dieser? Pi und mein PW ist es nicht. Habe schon so ziemlich alles ausprobiert, komme an der Stelle nicht weiter.

  • Hallo,

    ich hänge mich mal da dran. Ich habe heute auf einem Testsystem ebenfalls mit Buster (PI4) ein neuen Doorpi aufgesetzt. Die Kommunikation mittels Telegram klappt. Jetzt komme ich zu dem eigentichen Problem: der Aufruf mailto aus Python wurde verändert.


    mailto: Bla@t-online.de, Betreff, Text_in_Mail, aktiv


    läßt die Fehlermeldung


    Traceback (most recent call last):

    File "/usr/local/lib/python2.7/dist-packages/doorpi/action/SingleActions/mailto.py", line 73, in fire_action_mail

    server.sendmail(smtp_from, smtp_tolist, msg.as_string())

    File "/usr/lib/python2.7/smtplib.py", line 748, in sendmail

    raise SMTPRecipientsRefused(senderrs)

    SMTPRecipientsRefused: {'Bla@t-online.de': (450, 'Requested mail action not taken: mailbox unavailable\nMail send limit exceeded.')}


    erscheinen. Die Syntax ist wohl: server.sendmail(smtp_from, smtp_tolist, msg.as_string()).


    Nur ich bekomme die Sysntax einfach nicht hin. Ich brauche mal eure Erfahrung. Ich habe die Befürchtung dass die Argumente von Doorpi nicht korrekt in Python übernommen werden, da ich unter Beteiligte in meinem Postfach immer meine Mailadresse stehen habe. Hat jemand schon ein ähnliches Problem gelöst?

    Vielleicht hast Du, dtp, eine Idee was falsch läuft?


    Gruß


    Chris

    • Offizieller Beitrag

    Wäre eigtl sinnvoller ein eigenes Topic dafür aufzumachen, weil ich denke, dass das mehr ein Problem deiner Parameter/Config ist. Ich hab es nicht ausprobiert aber mal in die entsprechende Action geschaut - https://github.com/motom001/Do…n/SingleActions/mailto.py. Wie sieht deine Config aus? Hast du den smtp-Server genauer definiert?


    https://docs.python.org/2/library/smtplib.html ist die Doc der verwendeten Bibliothek. Da siehst du, dass der Aufruf in DoorPi durchaus noch richtig ist:

    Python
     SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

    und der Fehler eher bei deinem SMTP-Server oder deiner entsprechenden DoorPi-Config liegt. Aus letzterer werden folgende Werte ausgelesen (falls ein dritte Wert in der Funktion steht ist dass der Standardwert):

    Python: mailto.py
    smtp_host = doorpi.DoorPi().config.get('SMTP', 'server', 'smtp.gmail.com')
    smtp_port = doorpi.DoorPi().config.get_int('SMTP', 'port', 465)
    smtp_user = doorpi.DoorPi().config.get('SMTP', 'username')
    smtp_password = doorpi.DoorPi().config.get('SMTP', 'password')
    smtp_from = doorpi.DoorPi().config.get('SMTP', 'from')
    smtp_use_tls = doorpi.DoorPi().config.get_boolean('SMTP', 'use_tls', False)
    smtp_use_ssl = doorpi.DoorPi().config.get_boolean('SMTP', 'use_ssl', True)
    smtp_need_login = doorpi.DoorPi().config.get_boolean('SMTP', 'need_login', True)

    In deiner DoorPi-Config sollte der SMTP-Server entsprechend definiert sein. (Hab es mal am Beispiel T-Online ausgefüllt, weil deine Mail daher stammte ...):

    Code
    [SMTP]
    server = securesmtp.t-online.de
    port = 995
    username = hansimaus
    password = Hansi12345
    from = hansi@t-online.de
    # Die zwei folgenden kannst du weglassen (Std.-Wert)
    use_ssl = True 
    need_login = True
  • Hallo,

    danke für die Antwort.

    Ich habe einen Doorpi laufen, auf dem noch eine Nextcloud,etc läuft. Die Nextcloud mag sich aufgrund älterer libs nicht mehr updaten. Daher bin ich "gezwungen" upzudaten. Ausserdem gibt es Probleme mit dem mjpg-Streamer so das ich das RPi_Cam_Web_Interface nutze. Läuft einfach top. Snapshots, Streamen alles klappt so wie es soll.

    Meine funktionierende auf dem Altsystem config sieht so aus.

    ich bekomme jetzt im log Fehlermeldungen in der Zeile, also alle Zeilen, die mailto: beihalten.


    Code
    z.B.  mailto:BLa@online.de,DoorPi-Tuer neu gestartet, neu gestartet,false


    Aber auch erst seit Buster. Es wird dann natürch keine Mail versandt. Jetzt ist die spannende Frage des Programmablaufes. Ich sende einen mailto Auftrag mit Parametern an Doorpi. Doorpi sendet es an sendmail und bekommt einen Error als Ergebnis zurück und trägt das in die log ein. Richtig? Dann könnte es sein, dass sendmail einen veränderten Aufruf hat.


    Und mit Python 2.xxx geht es auch schon zu Ende...


    Chris

    • Offizieller Beitrag

    Ok kannst du evtl. mal den Inhalt aus dem Log 1 zu 1 kopieren?


    Ich hab ja schon keine Ahnung von Python aber du scheinbar auch nicht :D

    Füge doch mal in der Zeile 41 in der mailto.py folgendes ein:

    Python: mailto.py
    server.set_debuglevel(1)

    Dann solltest du schonmal genauere Fehlermeldungen bekommen.


    Ansonsten einfach mal ne Python-Konsole öffnen und darin mal folgendes ausführen:

    Dabei dürfte dir dann auch eine Fehlermeldung entgegen kommen. Wie gesagt entspricht der Aufruf weiterhin dem in der Dokumentation...


    Dass DoorPi auf Python 2.7 stehen geblieben ist wurde ja mehrfach schon thematisiert. Du kannst dich ja an motom001 wenden, falls du die Portierung hinbekommst bzw soll die Grundstruktur ja geändert werden.

  • Hallo,

    ich habe heute den ganzen Tag mit dem "Fehler" verbracht. Nun, die Lösung ist ganz einfach. Vor allem: Es muss der Ausgangserver und ssl also port 465 sein.


    unter dem Rosa-Riesen

    [SMTP]

    server = securesmtp.t-online.de

    port = 465

    username = Bla@t-online.de

    password = DEIN_PASSWORT

    from = Bla@t-online.de

    need_login = True

    use_ssl = true


    unter 1+1

    [SMTP]

    server = smtp.1und1.de

    port = 465

    need_login = True

    use_ssl = true

    need_login = true

    username = Bla@online.de

    password = DEIN_PASSWORT

    from = BLa@online.de


    sollte immer klappen. Warum meine Produktivversion läuft, weiss ich nicht. Kommen auch nicht so viele Mails.


    Mir ist aber aufgefallen, dass ich nach dem Kalt-Start, bevor das Netzwerk hochgefahren ist, viele Fehlermeldungen bekomme aus dem Netzwerkbereich . Es liegt anscheinend an den PI4. Scheint schneller zu sein;). Ich werde jetzt in die Autostart für den DoorPi eine Zeitverzögerung von 1s einbauen.


    Und ja Du hast Recht, ich habe keine Ahnung von Python und wenig von Linux. Ich bin Steuerungtechniker und programmiere hauptsächlich Wago-Steuerungen mit Codesys. Neulich ist mir ein Wago-Controller mit Linux auf dem Schreibtisch gekommen. Da werde ich mit wohl einige Linux-Lehrgänge buchen müssen ;) Und von dem Rest habe ich zu wenig Ahnung um hier helfen zu können 8). Leider.

    Vielen Dank für deine Mühen

    Gruß


    Chris

  • Hallo,


    ich hatte auch Probleme mit dem Versenden von Mails. Ich habe es gefixt indem ich die Leerzeichen vor dem Usernamen und Passwort lösche. Jetzt funktioniert es...


    Gruß,

    Ben

  • Hallo bekomme folgenden Fehler bei der Installation


    Raspian 2019-09-26

    Raspi 2


  • Hi ich bin Strikt nach Anleitung vorgegangen hänge aber jetzt bei der setup.py


    Code
    pi@raspberrypi:/tmp/DoorPi $ sudo python setup.py install
    install missing pip now (No module named pip)
    Collecting pip
      Using cached https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl
    Collecting setuptools
      Using cached https://files.pythonhosted.org/packages/68/75/d1d7b7340b9eb6e0388bf95729e63c410b381eb71fe8875cdfd949d8f9ce/setuptools-45.2.0.zip
    setuptools must be installed to install from a source distribution
    install pip failed with error code 1

    Würde mich über eure hilfe freuen

    • Offizieller Beitrag

    Merkwürdig. Dann hat die aktuelle PIP Installation wohl einen Fehler :/ Installier doch sonst die setuptools mal manuell:

    Zitat


    To fix the problem once it's occurred, you'll need to manually install the new setuptools, then rerun the upgrade that failed.

    - Download ez_setup.py (https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py)

    - Run python ez_setup.py

  • Ich habe jetzt pip und pip3 installiert, über sudo apt install python-pip bzw. sudo apt install python3-pip dann hat das installieren der setup.py funktioniert