NewTron-Radio: Auflösungsunabhängiges Tron-Radio

  • Das Problem hab ich gelöst, indem ich die SVG in einen Stringbuffer lade und dann mit Hilfe von re.sub() (Reguläre Ausdrücke) modifiziere. Will heißen, falls nicht vorhanden, füge ich viewBox= mit Original-Skalierung hinzu und modifiziere width= und height= passend für den Touchscreen. Erst dann kommt der pynanosvg Rasterizer zum Zug. Das ist noch nicht ganz Fehlersicher, funktioniert aber mit den per Inkscape erzeugten SVGs problemlos.


    Gruß,

    veloci

  • Hallo,


    leider hänge ich an einem anderen Problem fest, so dass ein Release eher unwahrscheinlich wird:

    Das alte Problem pygame -> SDL1.2 -> tslib verhindert, dass das Radio im Konsolenmodus sauber funktioniert.

    Ab Jessie wurde die tsllib-Abhängigkeit aus der libSDL1.2 rausgeschmissen und die alte funktionierende (wheezy-) libsdl1.2debian_1.2.15-5_armhf.deb lässt sich unter Buster leider nicht mehr installieren.

    Im Desktopmodus sollte es aber noch funktionieren (hab ich bisher nicht getestet).


    Wer noch ein funktionierendes Radio unter wheezy/jessie hat, kann ja mal das angehängte Radioskript ausprobieren.

    Vorher natürlich das alte Skript (newtron-radio.py) sichern!


    Da das neue Skript python3 verwendet müssen zuvor noch folgende Abhängigkeiten installiert werden:


    sudo apt install python3-pip

    sudo apt install cython3

    sudo apt install python3-pygame

    sudo python3 -m pip install pynanosvg

    sudo python3 -m pip install python-mpd2


    Dann die vorhandene newtron-radio.py durch diese Version: newtron-radio.py

    ersetzen.


    Wenn man wieder auf die alte Version zurück will reicht es, newtron-radio.py durch die vorher natürlich gesicherte newtron-radio.py zu ersetzen.


    gruß,

    veloci

  • veloci Danke, ich werde es ausprobieren, kle


    bei mir lief das NewTron Radio v2.7.5 mit pipaos-stretch-5.0.img (pipaos nimmt Stromausfall nicht übel)

    auf

    Model: RPi 3B+

    Display: waveshare 3.2" touchscreen

    Sound: Bluetooth Lautsprecher

    Internet: builtin 5GHz-WLAN


    nach den Kommandos

    sudo apt install python3-pip

    sudo apt install cython3

    sudo apt install python3-pygame

    sudo python3 -m pip install pynanosvg

    sudo python3 -m pip install python-mpd2

    und Austausch des python2.7-Skripts gegen das python3-Skript (und Rechte setzen mit chmod +x newtron-radio.py)

    ging es problemlos im Konsol-Betrieb.

    Edited 3 times, last by kle ().

  • Danke für die Rückmeldungen.


    Leider wird es für Buster keine mit tslib-Abhängigkeiten kompilierte libSDL1.2 mehr geben. Die Debian-Entwickler haben diese Abhängigkeiten wegen Überalterung und anderen Gründen rausgeschmissen - siehe Debian Bugreport zu libSDL.


    Von daher gibt es wohl nur drei Möglichkeiten:

    1. Warten auf eine pygame-SDL2 Implementierung für python3 - Und ob es dann funktioniert ist nicht sicher

    2. Komplettes Rewrite mittels Cairo statt pygame - Ist ein viel zu großer Aufwand

    3. Die libSDL1.2 mit libts-Support selbst neu bauen - wird aber immer eine Krücke bleiben, aber ich werds irgendwann mal probieren...


    Gruß,

    veloci

  • So,


    habe gerade die libSDL1.2 mit libts-Suppurt neu gebaut.

    mit dieser funktioniert es dann auch unter Buster...


    Mal schauen, wie ich das mache, damit die beim nächsten apt update/upgrade nicht gleich wieder überschrieben wird (apt mark hold?).


    Gruß,

    veloci

  • veloci hast Du mal daran gedacht die Wettervorhersage für "Morgen" so zu ändern, daß sie wieder kostenlos ist?

    ich habe mal mit folgendem diletiert:

    aus der Beobachtung, habe ich entnommen, daß min. und max. temperatur zw. 6 und 24 Uhr ermittelt wird.

    Wann "Morgen" beginnt ist auch tricky. (3 Uhr?) (Edit: ich weiß es nicht mehr auswendig).

    Schönen Gruß, kle


    Edit

    Edit2: spannend ist auch die Uhrzeit der täglichen Vorhersage: 11:00:00 UTC

    Edited 3 times, last by kle ().

  • Nein, anscheinend hab ich noch einen älteren OWM_KEY. bei mir wird "Morgen" einwandfrei angezeigt.


    gruß,

    veloci


    Ach so, anstelle von OWM_ID für den Ort kann man mit dem neuen Radioskript jetzt auch OWM_ZIP verwenden (z.B. OWM_ZIP="60313,de" wobei die Zahl die Postleitzahl ist).

  • Version 3.0 ist nur noch über meinen Dropbox-Account zu haben

    Download NewTron-Radio (Dropbox)


    Die aktuelle Version finden Sie dort ebenfalls - oder hier -> NewTron-Radio (Beitrag #1781)


    Was hat sich bei v3.0 geändert?

    • Statt dem nicht mehr funktionierenden kaa wird jetzt pynanosvg verwendet. Das vereinfacht auch die Installation.
    • Das Radioskript wurde auf python3 umgestellt.
    • Die beigefügten Radio-Playlistenbeispiele wurden aktualisiert.
    • Die Wettervorhersage funktioniert nun auch mit neueren API-Keys.
    • Der Ort für die Wetteranzeige kann anstelle der OWM_ID jetzt auch mittels Postleitzahl, geogr. Koordinaten oder Ortsnamen festgelegt werden.
    • Da die Raspbian-Version der libSDL keine Touchscreen-Unterstützung (libts) mehr bietet, stelle ich eine selbstkompilierte Version zur Verfügung (pygame benötigt libSDL für den 'touch'). Siehe oben
    • Viele weitere kleine Anpassungen...


    Gruß,

    veloci

    Edited 12 times, last by veloci: Downloads entfernt, Verweis auf Dropboxverzeichnis ().

  • veloci

    Test-Scenario:

    Model: RPi 3B+

    Boot: USB-Stick

    Display: waveshare 3.2" LCD(B)

    Sound:

    (1) 3.5mm Klinke

    (2) Bluetooth-Lautsprecher

    OS: 2019-06-20-raspbian-buster-lite.img *1

    *1 die neue raspbian-buster konnte ich nicht herunterladen (die Server waren nicht alle verfügbar).


    1. Schwierigkeit: Display konfigurieren

    (a) es gibt nur 1 framebuffer device /dev/fb0

    deshalb SDL_FBDEB korrigieren:

    export SDL_FBDEV=/dev/fb0

    am besten direkt im Aufruf von newtron-radio /usr/local/bin/newtron-radio


    (b)Info: /etc/pointercal hat sich geändert, da steht die Auflösung auch drin

    Beispiel:

    pipaos-stretch 18 5926 -1410596 -4361 165 16505220 655366

    buster -115 5682 -627432 -4245 20 16319850 65536 320 240 0


    2. bluetooth-Lautsprecher

    ich habe ein alsa pcm device headset in /etc/asound.conf angelegt.

    mit aplay -D headset /usr/share/sounds/alsa/Front_Center.wav höre ich auch was.

    Der mpd hingegen kann "headset" nicht ansprechen.

    das liegt nicht am NewTron-Radio sondern am mpd (sag ich mal).

    Vielen Dank & Schönen Gruß, kle

  • Das Problem mit /dev/fb0 hatte ich irgendwie auch mit der version vom 20.6. Nach einem apt update / upgrade Durchgang und anschließendem Reboot war der Kernel aktualisiert und Buster auf dem Stand vom 10.7 - und ich musste wieder auf /dev/fb1 umstellen.


    Das Headset ist auch in der mpd.conf als Output eingetragen?

  • Das Headset ist auch in der mpd.conf als Output eingetragen?

    dazu ist zu sagen:

    früher(tm) konnte bluetooth nicht connecten, wenn der mpd-output enabled war. Deshalb enabled   "no". Aber das ist vermutlich nicht mehr so.

  • alsa/bluetooth-Zeugs

    naja weil ich mit aplay -D headset ... etwas höre, vermute ich eher Probleme beim mpd.

    Code: /var/log/mpd/mpd.log
    1. Jul 15 18:48 : exception: Failed to open audio output
    2. Jul 15 18:58 : player: played "http://st01.dlf.de/dlf/01/128/mp3/stream.mp3"
    3. Jul 15 18:58 : exception: Failed to play on "TWNT-BT023" (alsa): snd_pcm_poll_descriptors_revents() failed: Invalid argument

    sagen Dir die Zeilen aus dem Log vielleicht etwas?

    Schönen Gruß, kle

    Edited 2 times, last by kle ().

  • Das usbmount Setup-Skript für mpd habe ich ebenfalls aktualisiert. Es sollte jetzt auch unter stretch und buster funktionieren.

    Es wäre schön, wenn das mal jemand testen könnte: usbmount-setup-for-mpd.sh


    • usbmount-setup-for-mpd.sh auf den pi mit dem Newtron-Radio kopieren
    • chmod +x usbmount-setup-for-mpd.sh (Skript ausführbar machen)
    • ./usbmount-setup-for-mpd.sh (Skript ausführen)
    • pi neustarten
    • USB-Stick mit Audiodateien einstecken
    • Nachschauen, ob der Stick im Radio sichtbar wird (in der Playlistenauswahl z.B. als usb0)
    • Etwas warten - je nach Anzahl der Audiodateien kann es etwas dauern bis der mpd seine Datenbank aktualisiert hat
    • Musikstück vom Stick auswählen und abspielen
    • Mitteilen, ob's funktioniert oder nicht unter Angabe von Raspbian version, Dateisystem auf dem Stick, usw...


    Hier eine Version, die alle angeschlossenen USB-Datenträger ReadOnly einhängt: usbmount-setup-for-mpd-ro.sh

    :!:Achtung: Diese Version nur verwenden, wenn nicht von USB gebootet werden soll, wenn keine Systemplatte am USB hängt oder wenn nicht auf die per USB angeschlossenen Datenträger geschrieben werden soll:!:

    Das automatische Einbinden von USB-Datenträgern mit den Linux-Dateisystemen ext2, ext3 und ext4 wurde in dieser Version deaktiviert.


    Danke im voraus,

    veloci

    Edited 7 times, last by veloci: - Fehlerhafte usbmount-setup-for-mpd.sh ersetzt - ReadOnly-Version hinzugefügt ().