Installation Banana PI Raspian (Wheezy)

  • Installation von DoorPI auf einem Banana PI:


    Das Raspbian von lemarker.org installieren wie beschrieben.


    Der ssh-Server läuft standardmäßig. Man kann sich putty o.Ä. anmelden mit user "bananapi" und Kennwort "bananapi".


    Mit raspi-config locale und Tastatur-Layout setzen. Soundausgabe auf Analog setzen.


    Den Standardbenutzer "bananapi" auf den Rasberry-Standardbenutzer pi ändern mit:


    sudo adduser --no-create-home inter
    sudo visudo
    am Ende einfügen:
    inter ALL=(ALL) NOPASSWD: ALL


    Neu anmelden mit User inter:


    sudo usermod --move-home --login pi --home /home/pi bananapi
    (ggf müssen laufende Processe des alten Users mit: kill XXXX PID vorher beendet werden)
    Passwort ändern:
    sudo passwd pi


    sudo nano /etc/lightdm/lightdm.conf
    bei Autologin den User bananapi durch pi ersetzen.


    sudo reboot


    Neu anmelden mit User pi:
    sudo visudo
    den oben gemachten Eintrag "inter ALL=(ALL) NOPASSWD: ALL" löschen
    sudo deluser inter


    INSTALLATION:


    sudo apt-get update
    sudo apt-get dist-upgrade


    sudo apt-get install python-setuptools python-dev
    sudo easy_install pip
    sudo pip install --upgrade pip
    sudo pip install wheel
    sudo apt-get install python-daemon


    Jetzt die GPIO-Bibliothek:


    cd /home/pi/
    sudo git clone https://github.com/LeMaker/RPi.GPIO_BP -b bananapi
    cd RPi.GPIO_BP
    python setup.py install
    sudo python setup.py install
    (Wichtig!!! setup.py muss einmal mit und einmal ohne sudo installiert werden).


    Verzeichnis für DoorPi anlegen:


    cd /usr/local/etc
    sudo mkdir DoorPi
    sudo chown -R pi: DoorPi
    sudo git clone https://github.com/motom001/DoorPi DoorPi


    Fix für Download (Die Pfade sind für den Installer eingestellt und passen sonst nicht)


    cp DoorPi/doorpi/main.py DoorPi
    cp DoorPi/doorpi/metadata.py DoorPi


    Linphone installieren


    cd /usr/local/etc/DoorPi
    sudo mkdir linphone
    cd linphone


    sudo wget http://linphone.org/snapshots/…c03176e-cp27-none-any.whl
    sudo pip install linphone4raspberry-3.9.1_163_gc03176e-cp27-none-any.whl


    Erster Start von DoorPi (legt notwendige Dateien an)


    cd /usr/local/etc/DoorPi
    sudo ./main.py --trace


    DoorPi sollte starten und eine Konfigurationsdatei anlegen
    Wenn alles gestartet ist, DoorPi mit CTRL-C wieder beenden
    Konfigurationsdatei anpassen.


    sudo nano /usr/local/etc/DoorPi/conf/doorpi.ini


    Anmelden an der Weboberfläche mit http://XXXXX:YYYY (normalerweise Port 80)


    Einrichten als Dienst:


    Das Script muss angepasst werden. Die doorpi.sh von User Postler verwenden.
    Die Datei per FTP auf den BaPI nach "/usr/local/etc/DoorPi/doorpi.sh" kopieren
    Datei ausführbar machen und ins Init-Verzeichnis kopieren


    sudo chmod a+x /usr/local/etc/DoorPi/doorpi.sh
    sudo cp /usr/local/etc/DoorPi/doorpi.sh /etc/init.d/doorpi


    Hinweis: Dateiname "doorpi" im Init-Verzeichnis beachten!


    Datei als Dienst eintragen
    sudo update-rc.d doorpi defaults


    Das wars.
    Noch ein wichtiger Hinweis. Aus irgendeinem Grund der sich mir noch nicht erschlossen hat wird Pin 13 sofort nach dem Boot auf "high" gesetzt. Deswegen diesen Port nicht unbedingt verwenden. Die Eingangsspannung der Pin's darf 3,3 Volt nicht überschreiten !!!!
    Ich hoffe ich hab nichts vergessen....


    :angel:


    Peter

  • Mittlerweile funktioniert auch RFID. Wobei da eigentlich zu beachten ist, das der benötigte UART bein J11 rauskommt und nicht bei der CON3.
    Da durch das empfindliche Mikro onboard nicht beschreibbare Geraüsche entstanden, hab ich eine USB Soundkarte genommen. Den nachgeschalteten Verstärker (aus einem Pringles LAutsprecher :-)) ) lasse ich nur während des Rufes und Gespräches aktiv. Der LM4871 lässt sich über high/low ein/ausschalten.


    Folgende Änderungen für die USB Soundkarte sind notwendig:


    sudo nano /etc/modprobe.d/alsa-base.conf


    von
    options snd-pcsp index=-2
    # Keep snd-usb-audio from beeing loaded as first soundcard
    options snd-usb-audio index=-2
    auf
    #options snd-pcsp index=-2
    # Keep snd-usb-audio from beeing loaded as first soundcard
    options snd-usb-audio index=-1



    sudo nano /usr/share/alsa/alsa.conf


    Die in alsa.conf enthaltenen Zeilen


    defaults.ctl.card 0
    defaults.pcm.card 0


    ersetzen durch


    defaults.ctl.card 1
    defaults.pcm.card 1


    speichern der Einstellungen:


    sudo alsactl store


    DOORPI:


    von
    playback_device ALSA: default device
    capture_device ALSA: default device


    auf
    playback_device ALSA: USB Audio Device
    capture_device ALSA: USB Audio Device


    Falls jemand, so wie ich, RFID-Karten hat, bei denen keine Nummer draufsteht, sollte folgendes im großen weiten Netz gefundenes
    behilflich sein:
    einfach z.B. eine rfidtest.py erstellen und das folgende reinkopieren. Damit lässt sich auch gleich die Serielle Schnittstelle testen:


    import serial
    import sys
    import time
    from operator import xor
    # UART
    ID = ""
    Zeichen = 0
    Checksumme = 0
    Tag = 0
    # Flags
    Startflag = "\x02"
    Endflag = "\x03"
    # Open UART (close first just to make sure)
    UART = serial.Serial("/dev/ttyS0", 9600) <----- Beim Banana PI so ändern, nsonsten ttyAMA0
    UART.close()
    UART.open()
    while True:
    # Reset vars
    Checksumme = 0
    Checksumme_Tag = 0
    ID = ""
    # Read chars
    Zeichen = UART.read()
    # Start of transmission signaled?
    if Zeichen == Startflag:
    # Build ID
    for Counter in range(13):
    Zeichen = UART.read()
    ID = ID + str(Zeichen)
    # Remove endflag from string
    ID = ID.replace(Endflag, "" )
    # Calc checksum
    for I in range(0, 9, 2):
    Checksumme = Checksumme ^ (((int(ID[I], 16)) << 4) + int(ID[I+1], 1$
    Checksumme = hex(Checksumme)
    # Find tag
    Tag = ((int(ID[1], 16)) << 8) + ((int(ID[2], 16)) << 4) + ((int(ID[3], $
    Tag = hex(Tag)
    # Print data
    print "------------------------------------------"
    print "Data: ", ID
    print "Tag: ", Tag
    print "ID: ", ID[4:10], " - ", int(ID[4:10], 16)
    print "Checksum: ", Checksumme
    print "------------------------------------------"




    Was jetzt auch noch nicht schlecht wäre:


    Eine "Zeitgesteuerte" Zutrittberechtigung beim RFID.


    Ich hoffe das hilft dem einen oder anderen.