Pi Zero radio aanvulling 2

Door synoniem op woensdag 10 juni 2020 21:08 - Reacties (5)
Categorie: Raspberry Pi, Views: 3.229

Bij de Pi Zero radio heb ik pydPiper in de Dockercontainer zo ingesteld staan dat als de container stopt gelijk een nieuwe gestart wordt. De Dockercontainer wordt automatisch als een service gestart door het pydpiper.service bestand in systemd op te nemen.

Vanuit het oogpunt van beheer heel gemakkelijk maar wat nu als er sporadisch een fout optreedt zeg 1 a 2 keer per dag? Dan zie je na een week ettelijke gestopte containers want er wordt wel een nieuwe gestart maar de oude wordt niet verwijderd.

Nu zat er in display.py zo'n sporadische fout:
code:
1
2
3
4
5
6
7
8
9
Uncaught exception
Traceback (most recent call last):
  File "/app/pydPiper.py", line 805, in <module>
    img = dc.next()
  File "/app/displays/display.py", line 1556, in next
    w = s.get()
  File "/app/displays/display.py", line 1257, in get
    widget, duration, conditional = self.widgets[self.currentwidget]
IndexError: list index out of range

Zoals de oorspronkelijke auteur in de documentatie aangeeft is het aansturen van het display vrij tijdkritisch. Dat is de waarschijnlijk de reden dat deze fout soms optreedt. En ik heb het opgelost door de exception te onderscheppen en vervolgens gewoon verder te laten lopen. Als iemand hier betere ideeën voor heeft en de code wil aanpassen, graag! Voor nu heb ik mijn nieuwe versie getest en op Github gezet.

Uiteraard wil je ook van de gestopte containers af want de Pi Zero is al geen snelheid- of geheugenmonster en deze ballast kan de boel alleen maar vertragen.

code:
1
2
3
4
$ sudo service pydpiper stop
$ sudo docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y

Het verwijderen duurt behoorlijk lang maar uiteindelijk zie je de hashcodes van alle verwijderde containers verschijnen en kun je pydpiper service weer starten met
code:
1
sudo service pydpiper start