Posts by lema67

    Anleitung richtig gelesen ?

    Code
    Nach der installation wird der apache2 server nicht starten weil ein Logordner fehlt.
       Logordner anlegen: mkdir /etc/apache2/logs
       apache2 neu starten: /etc/init.d/apache2 restart


    Automatisch zusammengefügt:


    Ups Sorry. Hatte mich bei deiner Frage verlesen :wallbash: hast den Orner ja angelegt.
    Poste mal die Fehlermeldung evtl kann man da ja was mit anfangen

    gruß lema67

    Hi ich hatte vor ca. einem Jahr für einen Bekannten ein Faxserver mit nem PI aufgesetzt.
    Als Gui verwende ich Avantfax mit Hylafax als Server.
    Ich hatte mir damals die Schritte notiert. Ich bin mal so frei und stelle dir das hier zur Verfügung.
    Aber Frage mich bitte nicht wenn das was nicht geht da ich hier nix mehr an Fax-Hardware zum ausprobieren habe.
    Aber als Anfang denke ich ist das schon mal was.

    Hey starte mal das tron-radio mit

    Code
    cd /usr/src/tron-radio
    sudo python tron-radio.py

    Wenn du dein Netzwerk selber eingerichtet hast darfst du natürlich nicht wlan config über tron-radio ausführen. Erst wenn das das setup über tron-radio beendet wurde verändert tron-radio deine interfaces. Wo dann deine 2te IP herkommt ist mir schleierhaft.

    Kannst ja mal deine interfaces hier posten

    gruß lema67

    Hier gehts jetzt weiter mit meinem Mod des RPI-Tron-Radio.

    Mittlerweile bin ich bei Version 6 angelangt, in dieser Version läßt sich nun auch das Wlan konfigurieren. Allerdings erstmal nur als DHCP. Die Konfiguration mit fester IP dauert noch.

    Ein paar Infos zum Image. Ich benutze das aktuelle Raspian von hier.Packetmäßig muss python, pygame und der Player mpd und mpc dabei sein. Die Playliste im Anhang dient als Demo damit ihr seht wie der Aufbau ist.
    Damit Tron-Radio läuft muss natürlich euer Display samt Touchscreen funktionieren. Wenn ihr Probleme damit habt macht bitte im Display Thread dafür ein Thema auf.
    MPD kann natürlich mehr wie nur Internetstation abspielen. Das gehört hier aber auch nicht hin da Tron-Radio nur ein Webradio ist.

    Installationsanleitung:
    Diese Anleitung gilt für den Raspberry Pi B+ mit Raspbian wheezy vom 05.05.2015 mit EDIMAX EW-7811UN Wlanstick und das WaveShare 3,2" TFT LCD Display

    Raspbian wheezy auf eine mindestens 4GB microSd Karte aufspielen und Netzwerk einrichten

    System updaten und software installieren

    Code
    apt-get update
    apt-get upgrade
    apt-get install -y python-dev mpd mpc

    gpio installieren

    Code
    cd /usr/src
    wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz
    tar zxf RPi.GPIO-0.5.11.tar.gz
    cd RPi.GPIO-0.5.11
    python setup.py install

    /boot/config.txt anpassen

    Code
    dtoverlay=ads7846,cs=1,penirq=17,speed=1000000,swapy=0,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900

    /boot/cmdline.txt anpassen

    Code
    dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:VGA8x8

    /etc/modules anpassen

    Code
    snd-bcm2835
    i2c-bcm2708
    i2c-dev
    fbtft_device name=flexfb gpios=dc:22,reset:27 speed=48000000
    flexfb width=320 height=240 buswidth=8 init=-1,0xCB,0x39,0x2C,0x00,0x34,0x02,-1,0xCF,0x00,0XC1,0X30,-1,0xE8,0x85,0x00,0x78,-1,0xEA,0x00,0x00,-1,0xED,0x64,0x03,0X12,0X81,-1,0xF7,0x20,-1,0xC0,0x23,-1,0xC1,0x10,-1,0xC5,0x3e,0x28,-1,0xC7,0x86,-1,0x36,0x28,-1,0x3A,0x55,-1,0xB1,0x00,0x18,-1,0xB6,0x08,0x82,0x27,-1,0xF2,0x00,-1,0x26,0x01,-1,0xE0,0x0F,0x31,0x2B,0x0C,0x0E,0x08,0x4E,0xF1,0x37,0x07,0x10,0x03,0x0E,0x09,0x00,-1,0XE1,0x00,0x0E,0x14,0x03,0x11,0x07,0x31,0xC1,0x48,0x08,0x0F,0x0C,0x31,0x36,0x0F,-1,0x11,-2,120,-1,0x29,-1,0x2c,-3

    Energieverwaltung für edimax wlanstick abschalten (alles markieren und als root in eine Konsole kopieren, danach enter drücken)

    Code
    sh -c 'cat > /etc/modprobe.d/8192cu.conf << EOF
    options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
    EOF
    '

    udev regeln anlegen

    Code
    sh -c 'cat >> /etc/udev/rules.d/95-ads7846.rules << EOF
    SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{name}=="ADS7846*", SYMLINK+="input/touchscreen"
    EOF
    '
    Code
    sh -c 'cat >> /etc/udev/rules.d/95-stmpe.rules << EOF
    SUBSYSTEM=="input", ATTRS{name}=="stmpe-ts", ENV{DEVNAME}=="*event*", SYMLINK+="input/touchscreen"
    EOF
    '
    Code
    sh -c 'cat >> /etc/udev/rules.d/99-input.rules << EOF
    SUBSYSTEM=="input", GROUP="input", MODE="0660"
    EOF
    '

    #pointercal erzeugen

    Code
    sh -c 'cat > /etc/pointercal << EOF
    100 5840 -1141240 -4201 112 16048222 65536 
    EOF
    '

    tron-radio nach /usr/src kopieren

    playlist.m3u nach /var/lib/mpd/playlists kopieren

    tron-radio autostart in /etc/rc.local eintragen

    Code
    /usr/src/tron-radio/start_tron-radio.sh


    Download: tron-radio_v6.1.zip

    Download playlist: playlist.zip

    Update v6.1: Kleinen Bug behoben.-> Automatischer Rücksprung aus Stationlist nach 30 sek. war fehlerhaft



    Update: 05.02.2016
    Mittlerweile mochte ich das tron-radio Design nicht mehr leiden und habe es daher ein weniger Schlichter designt.
    Neu hinzugekommen ist nun auch noch eine Wetterstation als Screensaver.
    Die Wetterdaten kommen von worldweatheronline.com . Um den Service nutzen zu können muss man sich registrieren und eine Apikey erzeugen klick
    Weiterhin benötigt ihr dann noch euren Standort (Location). Dazu geht ihr auf die Weathermap klick und notiert euch die Koordinaten Lon & Lat die in dem Fenster angezeigt werden.
    Der generierte Apikey und euere Location muss dann in die config.txt datei eingetragen werden.

    Damit das Radio läuft muss nun nocht python-dateutil nachinstalliert werden (apt-get install python-dateutil).
    Damit die Wochentage in der Wetterstaion in Deutsch angezeigt werden und auch die Umlaute im Radio korrekt angezeigt werden, bitte die Locale auf de_DE.utf8 setzen und de_DE.utf8 auswählen.

     


    Download:
    Update 07.02.2016: Wetterlayout angepasst
    Update 11.02.2016: Kleinen Fehler im Radio screen behoben, Wetterlayout optimiert
    Update 13.02.2016: Damit mit man nicht mehr in der inet-radio.py rumschreiben muss gibt es nun eine config.txt. Bitte hier den apikey und die location eintragen.
    Config screen hinzugefüg. Hier lassen sich nun die Lautstärke sowie der Screensaver Ein- und Ausschalten und die Zeit in Sekunden einstellen.
    Achtung! Die Einstellungen werden erst in der config.txt gespeichert wenn unten 'zurück' angeklickt wird.

    Update 25.02.2016: Absturz behoben beim Wetterscreensaver wenn kein gültiger Apikey eingetragen ist.
    Update 07.03.2016: Wlan level und ip anzeige überarbeitet. Sollte jetzt mit Edimax EW-7811UN und RPI3 internes Wlan funktionieren.
    Update 16.05.2016: Wetteranbieter gewechselt da worldweatheronline seinen kostenlosen Dienst eingestellt hat. Die Wetterdaten kommen nun von openweathermap.org
    Update 18.05.2016: Bug behoben

    inet-radio_07.03.2016_2050.zip

    inet-radio mit wetterscreensaver, wetterdaten von openweathermap.org
    inet-radio_owm_V1.1_18052016.zip


    Edit 06.03.2016: Installationsanleitung Raspbian Jessie & Waveshare 3.2" (LCD B)

    1. Image '2016-02-26-raspbian-jessie-lite.img' auf microSD karte aufspielen
    Monitor und Tastatur an Raspberry anstöpseln und booten

    2. Maximalen Speicherplatz auf der micrSD Karte verfügbar machen und locale anpassen
    raspi-config
    -> Expand filesystem
    -> Set locale (de.utf8) und Timezone einstellen

    3. Netzwerk einrichten ( Ich mache es per Wlan, hat der RPI3 ja an Board )

    Code
    sudo nano /etc/wpa_supplicant/wpa_supplicant.conf


    folgendes zufügen:
      
    network={
    ssid="eure SSID"
    psk="euer WlanKey"
    key_mgmt=WPA-PSK
    }


    4. Wlan neu starten

    Code
    sudo ifdown wlan0
    sudo ifup wlan0

    5. root login erlauben:

    Code
    sudo nano /etc/ssh/sshd_config


    ändere PermitRootLogin without-password -> PermitRootLogin yes

    6. restart ssh

    Code
    sudo /etc/init.d/ssh restart

    7. root passwort festlegen
    sudo su
    passwd (dann passwort eingeben)

    danach mache ich am PC mit Putty weiter. Einloggen als root

    Edit 14.03.2016:
    Am ende dieses Post (Anhang 2) befindet sich ein Script das die kommenden Schritte 8 - 11 automatisch abarbeitet.

    8. system updaten

    Code
    apt-get update
    apt-get upgrade


    9. Packete installieren

    Code
    apt-get install -y python2.7-dev python-pygame python-dateutil python-pip mpd mpc xinput evtest tslib libts-bin

    10. Alte libsdl installieren sonst geht der Touch nicht richtig

    Code
    wget http://archive.raspbian.org/raspbian/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15-5_armhf.deb
    dpkg -i ./libsdl1.2debian_1.2.15-5_armhf.deb
    apt-mark hold libsdl1.2debian


    11. Display einrichten
      waveshare32b-overlay.dtb (klick) nach /boot/overlays kopieren geht auch ohne waveshare32.b-overlay

    /boot/cmdline.txt anpassen:

    Code
    sh -c 'cat > /boot/cmdline.txt << EOF
    dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fbcon=map:10 fbcon=font:VGA8x8
    EOF
    '

    /boot/config.txt anpassen:

    Code
    sh -c 'cat > /boot/config.txt << EOF
    #dtoverlay=waveshare32b:rotate=270
    dtoverlay=ads7846,cs=1,penirq=17,speed=1000000,swapxy=0,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900
    dtparam=audio=on
    dtparam=spi=on
    dtparam=i2c_arm=on
    EOF
    '


    flexfb.conf in /etc/modprobe.d anlegen

    Code
    sh -c 'cat >> /etc/modprobe.d/flexfb.conf << EOF
    options fbtft_device name=flexfb gpios=dc:22,reset:27 speed=48000000
    options flexfb width=320 height=240 buswidth=8 init=-1,0xCB,0x39,0x2C,0x00,0x34,0x02,-1,0xCF,0x00,0XC1,0X30,-1,0xE8,0x85,0x00,0x78,-1,0xEA,0x00,0x00,-1,0xED,0x64,0x03,0X12,0X81,-1,0xF7,0x20,-1,0xC0,0x23,-1,0xC1,0x10,-1,0xC5,0x3e,0x28,-1,0xC7,0x86,-1,0x36,0x28,-1,0x3A,0x55,-1,0xB1,0x00,0x18,-1,0xB6,0x08,0x82,0x27,-1,0xF2,0x00,-1,0x26,0x01,-1,0xE0,0x0F,0x31,0x2B,0x0C,0x0E,0x08,0x4E,0xF1,0x37,0x07,0x10,0x03,0x0E,0x09,0x00,-1,0XE1,0x00,0x0E,0x14,0x03,0x11,0x07,0x31,0xC1,0x48,0x08,0x0F,0x0C,0x31,0x36,0x0F,-1,0x11,-2,120,-1,0x29,-1,0x2c,-3
    
    
    EOF
    '

    etc/modules anpassen

    Code
    sh -c 'cat > /etc/modules << EOF
    snd-bcm2835
    i2c-bcm2708
    i2c-dev
    spi_bcm2835
    flexfb
    fbtft_device
    EOF
    '


    udev regeln für Touch anlegen

    Code
    sh -c 'cat >> /etc/udev/rules.d/95-ads7846.rules << EOF
    SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{name}=="ADS7846*", SYMLINK+="input/touchscreen"
    EOF
    '
    Code
    sh -c 'cat >> /etc/udev/rules.d/95-stmpe.rules << EOF
    SUBSYSTEM=="input", ATTRS{name}=="stmpe-ts", ENV{DEVNAME}=="*event*", SYMLINK+="input/touchscreen"
    EOF
    '
    Code
    sh -c 'cat >> /etc/udev/rules.d/99-input.rules << EOF
    SUBSYSTEM=="input", GROUP="input", MODE="0660"
    EOF
    '

    11. rebooten

    Code
    reboot


    12. Touchscreen Kalibrieren

    Code
    TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_calibrate

    13. inet-radio installieren
    ordner inet-radio nach /usr/src kopieren

    start.sh und inet-radio.py ausführbar machen

    Code
    chmod 755 /usr/src/inet-radio/start.sh
    chmod 755 /usr/src/inet-radio/inet-radio.py

    14. Playliste erzeugen

    15. Radio starten

    Code
    /usr/src/inet-radio/start.sh


    Anhang 1:
    waveshare32b-overlay.zip

    Anhang 2:
    1. Script jessie-setup.sh nach /usr/src kopieren
    2. Script ausführbar machen: chmod 755 /usr/src/jessie-setup.sh
    3. Script starten: /usr/src/jessie-setup.sh
    jessie-setup.sh

    Na dann zeig mal deine /etc/network/interfaces

    So schauts bei mir aus:

    Code
    auto lo
    iface lo inet loopback
    
    
    allow-hotplug eth0
    iface eth0 inet static
    address 192.168.178.4
    netmask 255.255.255.0
    gateway 192.168.178.1
    dns.nameservers 192.168.178.1

    Die 8 Blöcke sind nur Wiederholungen. Die kurzen und langen bits sind bestimt Manchastercodiert.
    Da gehören dann immer 2 (bits) zusammen. Übergang von kurz zu lang oder vom lang zu kurz.

    Ich hänge mal ein bild von mir ran von einem Scan hilft dir evtl.

    @maigrafd
    Nur so als Idee.

    Ich habe das bei mir mit den Ovalen momentan ein wenig anders gelößt.
    Ich nutze jetzt eine resourcenmap auf der sind alle Grafiken drauf.

    Für die Ovale sind folgende Teile auf meiner map. Dadurch kann ich über eine Funktion belibig große Ovale zusammen fügen.

    Edit: Zu den FPS bei mir. Ich bin heute auf gute 100 FPS gekommen (schwankte so zwischen 80-100). Ich hatte dazu mal testweise alles was irgendwie über subprocess daten holt in threads ausgelagert.
    Aber mein Code wird immer unübersichtlicher da da ja alles nur so nach und nach reingefriemelt ist. Im Moment bin ich wieder davon ab und habe FPS = 5 eingestellt. Reicht bei mir vollkommen aus für eine saubere Bedienung.
    Eigentlich müsste man das Ding von Grund auf neu aufziehen und dann gleich objekt orientiert(Grusel). Andererseits funktioniert ja alles so wie ich es haben will. Mal schauen was wird.

    meigrafd
    Ich fülle bei mir den Bildschrim erst mit schwarz, und positioniere dann die tranzparenten Grafiken. Deshalb zerschiesst mir auch der Text nicht die Hintergrundgrafik da da ja nix ist.
    Trotzdem brauche ich jetzt für den Text eine Hintergrundfarbe sonst legt sich mittels update der neue Text über den alten da kann man dann nix mehr lesen.

    Damit der Scrolltext nicht zu schnell läuft gibts im main loop ein USEREVENT das den Text im Sekundentakt um eine Position nach links verschiebt, da ist jetzt die Framerate egal.

    meigrafd
    Ich habe die letzten zwei tage auch viel rumprobiert und bin teilweise auf eine cpu last von 11% gekommen bei einer Framerate von 30 (geht aber auch noch mehr ;) ).

    Nutze mal für die Textfelder noch die hintergrundfarbe

    Code
    title_label = font18.render(title.decode('utf-8',errors='ignore'), True, font_color, font_background)


    und anstelle von

    Code
    pygame.display.flip()
    nutze mal
    pygame.display.update()


    dann brauchst du in der update_screen nicht immer die ganze gui neu zeichnen, sondern kannst einfach Teilbereiche überpainten.
    Allerdings muss ich noch mein scrolltext überarbeiten.

    gruß lema67

    Naja den namen des Albums must du dir rauspasen.
    Beispiel:

    Code
    lines = subprocess.check_output('mpc -f [%album%]', shell=True).split("\n")
    album = lines[0]
    
    
    ... hier noch was einbauen falls kein Album vorhanden ist!
    
    
    album_label = font18.render(album.decode('utf-8',errors='ignore'), 1, (font_color))
    screen.blit(album_label, (30, 80))

    Musst halt erstmal ein wenig mit mpc rumspielen um zu sehen was da für Ausgaben rauskommen.
    Also in einer konsole machste ertmal

    Code
    mpc -f %album%