DoorPi (VoIP Wechselsprechanlage / Türsprechanlage mit Video-Support)

  • Ich butter hier mal einige Verbesserungsvorschläge rein:


    Allgemein vermisse ich ein kompaktes Installationsscript, sehe nur 3 Aufgeteilte aber verstehe nicht den wieso das aufgeteilt ist :huh:
    Auch wären ein paar Checks nicht verkehrt um sicher zu stellen das ein Befehl, wie zB wget, auch funktioniert hat bevor fortgefahren wird. Denn sonst hagelt es Fehlermeldungen wenn zB wget nicht funktionierte.

    1.Teil: https://github.com/motom001/DoorP…/DoorPi.prepare

    Spoiler anzeigen
    Code
    echo "dwc_otg.speed=1 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait" > /tmp/cmdline.txt
    sudo sh -c "cp /tmp/cmdline.txt /boot/"


    Das echo kann man gleich mit sudo davor in die cmdline.txt katapultieren. Besser fände ichs allerdings wenn geprüft werden würde ob der für DoorPI benötigte Eintrag vorhanden ist und nur falls nicht, nur diesen benötigten Eintrag nachzuholen. Denn meine cmdline.txt sieht anders aus, würde durch DoorPI dann aber derart verändert werden das zB UART zunächst nicht mehr nutzbar wäre.

    Code
    grep -v "snd-bcm2835" /etc/modules > /tmp/modules


    Das funktioniert nicht da das Module nicht "snd-bcm2835" heißt sondern "snd_bcm2835".

    Code
    sudo reboot

    Einen reboot würde ich wenn dann erst ganz zum Schluss durchführen.


    2.Teil: https://github.com/motom001/DoorP…rPi.install-dep

    Spoiler anzeigen
    Code
    cd
    mkdir tmp

    Wieso im Homedir des aktuellen Benutzers? Wieso nicht in /tmp/ oder wie es eigentlich üblich wäre /usr/src/ ?

    Code
    tar xvfj pjproject-2.1.tar.bz2

    Die Ausgabe welche Dateien entpackt wurden brauch man nicht zu sehen :fies: Also " v " weg lassen ;)
    v2.1 ist aber auch schon fast 2 Jahre alt, am 04.09.2014 kam v2.3 raus.

    Code
    make dep
    make
    sudo make install
    cd pjsip-apps/src/python
    make
    sudo make install

    Hier würde ich auch wieder Checks einbinden ob der vorherige Befehl überhaupt erfolgreich war. Das einfachste wäre " && " zu verwenden:

    Code
    make dep && make && sudo make install && cd pjsip-apps/src/python && make && sudo make install

    So wird sichergestellt das der nachfolgende Befehl nur ausgeführt wird wenn der vorherige erfolgreich/fehlerfrei war.


    3.Teil: https://github.com/motom001/DoorP…/DoorPi.install

    Spoiler anzeigen
    Code
    echo "* Install DoorPin service"

    Kleiner Schreibfehler :huh: DoorPin -> DoorPi :huh:

    https://github.com/motom001/DoorP…/service/doorpi könnte etwas schöner ausfallen, auch absolute Pfade für "python" verwenden, aber auch eine Pause im "restart" zwischen start und stop wäre gut um dem doorpi Script etwas Zeit zu lassen sich zu beenden (2 Sekunden sollten reichen).

    Code
    "Usage: /etc/init.d/doorpi.sh {start|stop|restart|status}"

    Schreibfehler? ;) Im DoorPi.install steht nämlich sudo cp $HOME/DoorPi/docs/service/doorpi /etc/init.d/ also heißt das Script nicht "doorpi.sh" sondern ohne Dateiendung :fies:
    Abhilfe schafft man indem man einfach $0 nutzt:

    Code
    "Usage: $0 {start|stop|restart|status}"
    Code
    sudo update-rc.d doorpi start defaults
    sudo update-rc.d doorpi stop defaults

    Eigentlich reicht es nur einen Aufruf zu machen:

    Code
    sudo update-rc.d doorpi defaults

    Aber bei deinen 2 Befehlen hagelt es leider auch einige "warning" 's:

    Wie die Warnings auch mitteilen ist die Datei nicht ausführbar, dazu fehlt in deinem Install-Script ein Befehl ;)


    Das sollte fürs erste reichen ;)

    Also wie gesagt, ein einziges Installations-Script wäre nicht schlecht - oder wieso hast du das in 3 Dateien aufgesplittet :huh:

  • DoorPi (VoIP Wechselsprechanlage / Türsprechanlage mit Video-Support)? Schau mal ob du hier fündig wirst!

  • Leider kann ich nur ein einziges Mal "gefällt" mir drücken...

    Die Installation muss vollkommen überarbeitet werden und ist viel zu kompliziert.
    Ich hab versucht, inspiriert von SetupPi, das mit einer TUI :) zu lösen.
    Aber dafür sind meine bash Grundlagen zu schlecht.

    Hab schon überlegt das als py-Datei zu realisieren, da ich dort "Ahnung" habe. Aber das wäre vom Vorgehen her falsch, denn Installation sollte per bash durchgeführt werden.

    Was ich mir vorgestellt habe ist eine TUI in der alle Punkte untereinander stehen und der User einen nach dem nächsten ausführt (oder "volle Installation" für alles). Mit den aktuellen Scripten sind (vermutlich) auch keine Updates möglich (z.B. weil der Eintrag schon vorhanden sein könnte).

    Die ganzen Fehler resultieren da ich einfach das DoorPi Projekt kopiert haben:
    https://github.com/mpodroid/door-berry
    Schon dort ist es falsch :)
    Vieles habe ich überarbeitet, aber die Grundzüge sollten noch erkennbar sein...

    Hast Du Lust an so einer TUI zu basteln? Sonst würde ich das auf meinen "offenen Punkte" Zettel schreiben und das etwas nach hinten verschieben, da ich dafür aktuell keine Kraft habe.

  • Was wünsche ich mir als TUI (Optik wie bei SetupPi):

    - Script wird gestartet und lädt epilog, zeigt das eine Sekunde lang.
    - Script stellt fest ob schon was installiert ist
    -- wenn ja, dann sucht es nach einer neuen Version auf github
    - Auswahl Installation (bzw. Update wenn möglich / nötig)
    -- Auswahl Installation:
    -- Auswahl benutzerdefinierte Installation oder volle Installation
    --- Auswahl volle Installation für alle Schritte der benutzerdefinierten Installation aus
    --- Auswahl benutzerdefinierte Installation
    ---- SystemUpdate
    ----- apt-get update && upgrade && dist-upgrade
    ----- rpi-update (ggf. nur bei Raspbian?)
    ----- Teil mit "snd_bcm2835"
    ----- Teil mit "dwc_otg.speed..."
    ---- Installation Abhängigkeiten
    ----- sudo apt-get install python python-dev python-pip python-daemon (ja, das sollte schon reichen)
    ----- Sipphone
    ------ Installation pjsua (ggf. vorher neuste Version abfragen)
    ----- Keyboard
    ------ GPIO (eigentlich nichts zu tun, oder?)
    ------ PiFace
    ----- Watchdog
    ---- Einrichten von einem Benutzer DoorPi und Gruppe DoorPi
    ---- Vorbereiten der Orderstruktur
    ----- /var/log/doorpi
    ----- (tja, wohin installiert man DoorPi - unter /usr/share/...)
    ----- (weitere Dateien - eventuell /usr/bin/ oder sowas die ausführbare main.py?)
    ---- Download DoorPi von xxx (aktuell github)
    ---- Installation DoorPi als Service
    ---- Konfiguration DoorPi
    ----- zusammenkopieren mehrerer Config-Demo-Dateie (stelle ich bereit) auf Grund von dem was installiert wurde (keyboard, ...)

    Für das Thema Update sollte es so ähnlich aufgebaut sein, nur eben dass nur "update-fähige" Elemente angezeigt werden.

    Zur Installation sollte eine Log-Datei erzeugt werden.

    So viel zu meinem Wunschkonzert...

  • Im Interesse von SetupPI (oder einer Abkopplung) wäre es besser ein einfaches install-Script zu verwenden ;)
    Da kann man dann aber auch eine Auswahl einbauen welche Aktion ausgeführt werden soll.

    ...ich hab da jetzt schon was zusammengebastelt und hab erst jetzt dein "Wunschkonzert" gesehen, da wars aber schon fertig :angel:

    "DoorPI.sh"

    Habs aber noch nicht vollständig getestet :fies:

  • versprochene Bilder:

    "Mein Hauseingang komplett (links über die Briefkästen an die Decke des Vordachs kommt die Netzwerkamera)"


    DSC_0331.JPG

    "Die Wechselsprechanlage (eine alte Schwaiger SGK 301 - [URL="http://www.meissner.me/DoorPi/SGK101_103%20Anleitung.pdf"

    Anleitung[/URL])"]
    DSC_0329_o.jpg

    "Die Wechselsprechanlage von innen"


    DSC_0322.JPG

    "Der Pi mit einer alten FritzBox 7270 als Stromversorgung und Switch (zusätzlich DECT-Basis und WLAN-AP für den Bereich Erdgeschoss und Garten)"


    DSC_0318.JPG

    "Der Pi mit einem alten PC-Gehäuse als Schutz an der gleichen Stelle"


    DSC_0321.JPG

    "Der Pi von innen"


    DSC_0315.JPG

  • meigrafd

    Super script, daß du da gebaut hast ... :bravo2:

    hab´s heute mal ausprobiert und möchte noch auf folgende Ergänzungen hinweisen:

    1. in den NeedPacks bitte noch "python-pifacedigitalio", "python-simplejson" und "python-requests" aufnehmen
    2. bei der function doorpi_install() bitte noch /var/log/doorpi anlegen
    3. bei der function package_install() ging´s ab

    Code
    tar xfj $(basename $pjsip

    nicht mehr weiter ... da bin ich noch am suchen woran es liegt

    Sonderwunsch, falls machbar

    4. in der /etc/modprobe.d/raspi-blacklist.conf den # vor blacklist spi-bcm2708 überprüfen/setzen, dann ist SPI für das PiFace auch gesetzt

    Gruß und danke für das tolle install-script,
    hermanthegerman2

  • meigrafd

    siehe hierzu RaspBMC & Piface Control & Display

    um den SPI einzuschalten für das PiFace muss
    in der /etc/modprobe.d/raspi-blacklist.conf:

    Code
    #blacklist spi-bcm2708

    stehen, dann wird das Modul beim booten des Raspi automatisch geladen.

    Vielleicht wäre hierzu ein weiterer Menüpunkt [R]eboot im script

    Code
    [O]S update | [F]irmware update | [P]akete installieren | [D]oorPI installieren  | [R]eboot  |  []Beenden:


    zielführend.

    BG,
    hermanthegerman2

  • Oke, hab das Script angepasst und erweitert ;)

    Man muss aber nicht rebooten nur weil snd_bcm2835 entfernt oder spi-bcm2708 eingebunden wurde, man kann die Module mit modprobe entladen bzw laden, was das Script nun auch machen sollte :fies:

    "DoorPI.sh"
  • Hm komisch. Dann probiers mal bitte hiermit:

    "DoorPI.sh"
  • hab gerade das Problem wenn ich Output Pins definiere, werden die mir dauerhaft geschaltet.
    Komm auf keinen grünen Zweig wie ich die konfigurieren muss, damit sie nur nach Eingabe von DTMF geschaltet werden.

  • Sorry... im Eifer des Gefechts vergessen

    Außerdem verschickt mein Pi keine Mails mehr beim Start :/
    wobei ich an dem Teil der config nichts geändert hab

    Edit: Kann das an dem autodetect liegen? Bzw. brauch ich das überhaupt noch wenn ich mein keyboard direkt definier?
    Danke!!

    Einmal editiert, zuletzt von Dandroide (23. Januar 2015 um 12:42)


  • Sorry... im Eifer des Gefechts vergessen

    Kein Problem, dann frag ich eben nach :)
    PS: In 99% der Fehlermeldungen interessiert mich auch die Log-Datei :)
    Keine Angst, Passworte sind in der Logdatei durch **** ersetzt.


    Edit: Kann das an dem autodetect liegen? Bzw. brauch ich das überhaupt noch wenn ich mein keyboard direkt definier?

    Kann sein, müsste in den Logs zu sehen sein, welches Keyboard geladen wird. Aber die config "keyboard = autodetect" unter DoorPi fürs Keyboard kann entfernt werden, da veraltet.

    Die Pins 3 und 5 sind gerade auch für I2C zuständig - ich würde die mal wechseln und andere testen, z.B. 11, 13 und 15.

  • So jetzt hab ichs mal geschafft :D
    Alle sind aus dem Haus und es heißt nicht die ganze Zeit warum geht der Türöffner und das Licht die ganze Zeit...

    Meine aktuelle Config:

    und das log:

    Es werden noch immer alle 4 Outpout Pins geschaltet

    Einmal editiert, zuletzt von Dandroide (23. Januar 2015 um 15:30)

  • Du benutzt den B+, richtig?

    Ändere bitte mal an dieser Stelle hier:
    https://github.com/motom001/DoorP…rom_gpio.py#L56

    das False in ein True und noch einmal testen. Es sollte dann in der Log zusehen sein wann welche Ausgänge geschalten werden.

    Mich wundert, dass beim init eigentlich alle Ausgänge erst einmal auf low gesetzt werden. Nur bei Dir anscheinend nicht. Merkwürdig...

    Vielleicht können wir uns mal im Chat treffen und dort direkt quatschen umd as Problem schneller zu beheben...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!