Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:
  • openatelier/projet/sampler_puredata_pour_raspberry_pi_sans_ecran.txt
  • Dernière modification: 2025/05/26 11:45
  • par cyril