Pi Zero radio aanvulling 3

Door synoniem op donderdag 23 juli 2020 22:30 - Reacties (6)
Categorie: Raspberry Pi, Views: 2.698

Hoewel op een lager pitje afgelopen tijd, blijf ik nog wel verbeteringen aan mijn Pi Zero radio doorvoeren.
Behalve de "gewone" bugs die ik tegen kom in het gebruik is Python 2 inmiddels end of life. Reden genoeg om pydPiper te promoveren naar Python 3.

Voor een deel kun je dat geautomatiseerd doen met 2to3 maar dan blijft er nog genoeg handwerk over. Daarnaast heb je een andere Docker container nodig omdat de oorspronkelijke container van dhrone op Python 2 gebaseerd is. Ook dat vergde wat handwerk om uit te vinden welke versie van de bibliotheken je nodig hebt. De voorbeeld Dockerfiles van dhrone werkte niet zonder meer.

Uiteindelijk heb ik zelf een image gereleased: synoniem/pydpiper3:latest op hub.docker.com. Deze werkt in ieder geval voor pydPiper3 met het 16x2 LCD display dat ik gebruik. Overige displays zul je eventueel zelf moeten testen. De image is gebaseerd op arm32v6/python:3-alpine die in principe op alle Pi's zou moeten werken. Voor alle versies van de Pi vanaf 2 zou je ook arm32v7/python:3-alpine als basis kunnen nemen.

En uiteraard moet je Python3 versie van pydPiper gebruiken waarvoor ik een nieuwe repo aangemaakt heb op https://github.com/synoniem/pydPiper3.

Naar aanleiding van de discussie onder Pi Zero radio aanvulling 2 was het ook tijd om het pydpiper.service voor systemd eens aan te pakken. Dus ook hier is een nieuwe versie voor gekomen.

code:
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description = pydPiper
Requires = docker.service
After=volumio.service

[Service]
Restart = always
ExecStart = /usr/bin/docker run --rm --network=host --privileged --name pydpiper -v /var/log:/var/log:rw -v /home/volumio/pydPiper3:/app:rw synoniem/pydpiper3:latest python /app/pydPiper.py
ExecStop = /usr/bin/docker stop -t 2 synoniem/pydpiper3:latest
[Install]
WantedBy = multi-user.target

Zoals je kunt zien wordt bij het stoppen van de service de gebruikte container nu direct verwijderd. Uiteraard wordt de Python 3 code en image gebruikt voor het opstarten en krijgt de container de naam van pydpiper mee.

Allemaal geen grote schokkende verbeteringen maar vele kleintjes maken één grote. De volgende stip op de horizon is om Volumio zelf te containeriseren. De eerste pogingen in die richting stemmen nog niet hoopvol. Zo is op dit moment het alleen mogelijk om met een X86_64 onder Debian Jessie (versie 8!) een nieuwe image te bouwen. Er wordt wel gewerkt aan een versie voor de huidige Debian stable Buster (versie 10) maar zover is het nog niet.

Volgende: Pi Zero radio aanvulling 2 10-06 Pi Zero radio aanvulling 2

Reacties


Door Tweakers user ThaStealth, donderdag 23 juli 2020 23:11

Ik snap niet goed waarom je een service gebruikt voor het creëren/starten en stoppen/verwijderen van je docker container. Wat is het voordeel hiervan?

Door Tweakers user synoniem, donderdag 23 juli 2020 23:19

Even afgezien van het feit dat de oorspronkelijke auteur dhrone het zo ingericht had, vind ik het ook wel prettig werken. Één keer het service bestand op de goede plaats kopiëren en je hebt er geen omkijken meer naar. Het is maar een Pi Zero met 1 of 2 containers die bovendien altijd aan staat dus valt de stroom er een paar keer af of crashed de container, het wordt automatisch opgeruimd en opnieuw gestart.

Door Tweakers user Mattie112, donderdag 23 juli 2020 23:47

ThaStealth schreef op donderdag 23 juli 2020 @ 23:11:
Ik snap niet goed waarom je een service gebruikt voor het creëren/starten en stoppen/verwijderen van je docker container. Wat is het voordeel hiervan?
Jup je kan ook de --restart flag gebruiken in docker. Geen losse service nodig!

https://docs.docker.com/c...lly/#use-a-restart-policy

Edit: en het is ook wel gek dat je de --rm flag gebruikt. Dus na een stop is je container (en state) weg. En bij een start maak je weer een nieuwe?

[Reactie gewijzigd op donderdag 23 juli 2020 23:48]


Door Tweakers user synoniem, vrijdag 24 juli 2020 00:08

Mattie112 schreef op donderdag 23 juli 2020 @ 23:47:
[...]
Edit: en het is ook wel gek dat je de --rm flag gebruikt. Dus na een stop is je container (en state) weg. En bij een start maak je weer een nieuwe?
Het hele idee om hier een service gebruiken is juist dat je geen oude 'state' wil bewaren en ook de reden om geen docker --restart te gebruiken.

Door Tweakers user Vinvb, vrijdag 24 juli 2020 09:26

Even off topic, maar heb je ook gekeken naar Moode Audio? Een prachtige mediaspeler die al je functionaliteiten kan.

Door Tweakers user synoniem, vrijdag 24 juli 2020 10:30

Vinvb schreef op vrijdag 24 juli 2020 @ 09:26:
Even off topic, maar heb je ook gekeken naar Moode Audio? Een prachtige mediaspeler die al je functionaliteiten kan.
Zo te zien is MoOde ook geforked van de audiospeler van Andrea Coiutti en Simone De Gregori. En ook gebaseerd op MPD en zou goed met pydPiper moeten samenwerken. Ik zal eens kijken of dat werkend te krijgen is en of er een container van te maken is.

Reactie formulier
(verplicht)
(verplicht, maar wordt niet getoond)
(optioneel)