Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
openatelier:projet:sampler_puredata_pour_raspberry_pi_sans_ecran [2025/05/26 11:13] cyril [En Python avec des boutons physiques de récupération] |
openatelier:projet:sampler_puredata_pour_raspberry_pi_sans_ecran [2025/05/26 11:45] (Version actuelle) cyril [Lancement automatique du script python au démarrage du Raspberry Pi] |
||
---|---|---|---|
Ligne 99: | Ligne 99: | ||
====Lancement automatique du script python au démarrage du Raspberry Pi ==== | ====Lancement automatique du script python au démarrage du Raspberry Pi ==== | ||
+ | |||
+ | On va utiliser la méthode "systemd" (si j'ose dire...) qui gère le lancement de "services" au démarrage du Raspberry Pi (en gros...). | ||
+ | |||
+ | Tout est décrit ici: [[https://www.youtube.com/watch?v=kQjnesqBMzQ]] et tout se passera en ligne de commande. | ||
+ | |||
+ | * On crée un nouveau fichier pour le nouveau service: | ||
+ | |||
+ | <code> sudo nano /etc/systemd/system/waxmonde.service</code> -> vous pouvez donner le nom du service que vous voulez bien entendu... | ||
+ | |||
+ | * Dans nano, on édite le fichier avec ce qui suit: | ||
+ | <code> [Unit] | ||
+ | Description=Lecteur de samples Waxmonde v1.0 | ||
+ | After=alsa-restore.service | ||
+ | [Service] | ||
+ | ExecStart=/usr/bin/python3 /home/waxmonde/samples/gpio_music_box08.py | ||
+ | WorkingDirectory=/home/waxmonde/samples | ||
+ | User=waxmonde | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </code> | ||
+ | |||
+ | Vous pouvez retrouver les explications sur les différentes sections du code sur les internets. | ||
+ | |||
+ | Il y a par exemple la documentation officielle ici: [[https://systemd.io/]] | ||
+ | |||
+ | Et la documentation pour systemd sur debian ici (PatchboxOs étant basée sur Debian) : [[https://wiki.debian.org/systemd]] | ||
+ | Vous pouvez sauvegarder votre fichier, sachant qu'il est possible qu'il y ait des réglages à faire ultérieurement. | ||
+ | |||
+ | * À la suite de quoi, on donne les droits qu'il faut à ce fichier: | ||
+ | <code> sudo chmod 644 /etc/systemd/system/waxmonde.service</code> | ||
+ | Vous pouvez vous référer au man de chmod pour plus de détails sur cette commande. | ||
+ | |||
+ | * On démarre le service: | ||
+ | |||
+ | <code> sudo systemctl start waxmonde.service</code> | ||
+ | systemctl est la commande qui permet de gérer les lancements, arrêts, etc. des différents services à chaud. | ||
+ | |||
+ | * On rend le servie actif au démarrage: | ||
+ | |||
+ | <code> sudo systemctl enable waxmonde.service</code> | ||
+ | |||
+ | * On vérifie le statu du service, à savoir s'il a été lancé, si cela a fonctionné et si il est actuellement en route ou à l'arrêt: | ||
+ | |||
+ | <code> sudo systemctl status waxmonde.service</code> | ||
+ | |||
+ | Dans notre cas, on avait ceci en réponse: | ||
+ | |||
+ | <code>× waxmonde.service - Lecteur de samples Waxmonde v1.0 | ||
+ | Loaded: loaded (/etc/systemd/system/waxmonde.service; enabled; preset: enabled) | ||
+ | Active: failed (Result: exit-code) since Sun 2025-05-25 13:18:30 CEST; 8h ago | ||
+ | Duration: 19.682s | ||
+ | Process: 585 ExecStart=/usr/bin/python3 /home/waxmonde/samples/gpio_music_box08.py (code=exited, status=1/FAILURE) | ||
+ | Main PID: 585 (code=exited, status=1/FAILURE) | ||
+ | CPU: 1.999s | ||
+ | |||
+ | May 25 13:18:29 patchbox python3[585]: pygame 2.1.2 (SDL 2.26.5, Python 3.11.2) | ||
+ | May 25 13:18:29 patchbox python3[585]: Hello from the pygame community. https://www.pygame.org/contribute.html | ||
+ | May 25 13:18:29 patchbox python3[585]: Traceback (most recent call last): | ||
+ | May 25 13:18:29 patchbox python3[585]: File "/home/waxmonde/samples/gpio_music_box08.py", line 9, in <module> | ||
+ | May 25 13:18:29 patchbox python3[585]: mixer.init() #créé une instance de la classe "mixer" de la b> | ||
+ | May 25 13:18:29 patchbox python3[585]: ^^^^^^^^^^^^ | ||
+ | May 25 13:18:29 patchbox python3[585]: pygame.error: ALSA: Couldn't open audio device: Unknown error 524 | ||
+ | May 25 13:18:30 patchbox systemd[1]: waxmonde.service: Main process exited, code=exited, status=1/FAILURE | ||
+ | May 25 13:18:30 patchbox systemd[1]: waxmonde.service: Failed with result 'exit-code'. | ||
+ | May 25 13:18:30 patchbox systemd[1]: waxmonde.service: Consumed 1.999s CPU time. | ||
+ | lines 1-18/18 (END) | ||
+ | </code> | ||
+ | |||
+ | Ce qui signifie que le service a été lancé, que le script s'est lancé mais qu'il a rencontré une erreur. | ||
+ | |||
+ | L'erreur ici est que alsa ne sait pas sur quel carte son se lancer, alors que le script lorsqu'il est lancé à la main, en ssh, s’exécute sans soucis. | ||
+ | |||
+ | La question a été posée sur le forum de la distribution PatchboxOs, utilisée ici sur le raspberry pi: | ||
+ | |||
+ | |||
+ | [[https://community.blokas.io/t/how-to-start-a-python-script-at-the-boot-of-patchboxos/5852]] | ||
+ | |||
+ | Et par ce biais des explications ont été trouvées ici: | ||
+ | |||
+ | |||
+ | [[https://forums.raspberrypi.com/viewtopic.php?t=360496]] | ||
+ | |||
+ | |||
Il faut donc créer un fichier de conf dans /etc/, le tout en sudo donc: | Il faut donc créer un fichier de conf dans /etc/, le tout en sudo donc: |