xavierlp
Posts: 1
Joined: Sun Apr 19, 2020 11:20 am

Script Pyton en tant que service

Sun Apr 19, 2020 11:32 am

Bonjour à tous.

Je viens de suivre un tuto Domoticz sur la detection des beacons et cela fonctionne très bien.

Cependant je bute sur la mise en place du service : et la c'est que du raspbain si je ne me trompe

J'ai donc créé le fichier check_beacon_presence.service de cette façon

Code: Select all

Description=check_beacon_presence Service
After=multi-user.target

[Service]
User=root
Type=idle
ExecStart=python /usr/local/bin/check_beacon_presence.py

[Install]
WantedBy=multi-user.target
J'ai ensuite activé le service

Code: Select all

 sudo systemctl enable  check_beacon_presence.service
Puis démarré ce même service

Code: Select all

 sudo systemctl start check_beacon_presence.service
Et verifier que tout fonctionne

Code: Select all

pi@raspberrypi4:~ $ sudo systemctl status check_beacon_presence.service -l
● check_beacon_presence.service
   Loaded: loaded (/etc/systemd/system/check_beacon_presence.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-04-18 19:30:22 CEST; 1min 7s ago
 Main PID: 7213 (python)
    Tasks: 2 (limit: 3911)
   Memory: 12.0M
   CGroup: /system.slice/check_beacon_presence.service
           └─7213 /usr/bin/python /usr/local/bin/check_beacon_presence.py

avril 18 19:30:22 raspberrypi4 systemd[1]: Started check_beacon_presence.service.
avril 18 19:30:22 raspberrypi4 sudo[7219]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/hciconfig hci1 down
avril 18 19:30:22 raspberrypi4 sudo[7219]: pam_unix(sudo:session): session opened for user root by (uid=0)
avril 18 19:30:22 raspberrypi4 sudo[7219]: pam_unix(sudo:session): session closed for user root
avril 18 19:30:22 raspberrypi4 sudo[7229]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/hciconfig hci1 up
avril 18 19:30:22 raspberrypi4 sudo[7229]: pam_unix(sudo:session): session opened for user root by (uid=0)
avril 18 19:30:22 raspberrypi4 sudo[7229]: pam_unix(sudo:session): session closed for user root
avril 18 19:30:22 raspberrypi4 sudo[7239]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/hciconfig
avril 18 19:30:22 raspberrypi4 sudo[7239]: pam_unix(sudo:session): session opened for user root by (uid=0)
avril 18 19:30:22 raspberrypi4 sudo[7239]: pam_unix(sudo:session): session closed for user root
ensuite je relance le rpi et la meme commande me renvoie ceci

Code: Select all

pi@raspberrypi4:~ $ sudo systemctl status check_beacon_presence.service -l
● check_beacon_presence.service
   Loaded: loaded (/etc/systemd/system/check_beacon_presence.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2020-04-18 19:25:09 CEST; 1s ago
  Process: 4777 ExecStart=/usr/bin/python /usr/local/bin/check_beacon_presence.py (code=exited, status=1/FAILURE)
 Main PID: 4777 (code=exited, status=1/FAILURE)

avril 18 19:25:09 raspberrypi4 sudo[4803]: pam_unix(sudo:session): session opened for user root by (uid=0)
avril 18 19:25:09 raspberrypi4 sudo[4803]: pam_unix(sudo:session): session closed for user root
avril 18 19:25:09 raspberrypi4 python[4777]: Traceback (most recent call last):
avril 18 19:25:09 raspberrypi4 python[4777]:   File "/usr/local/bin/check_beacon_presence.py", line 182, in <module>
avril 18 19:25:09 raspberrypi4 python[4777]:     hci_toggle_le_scan(sock, 0x01)
avril 18 19:25:09 raspberrypi4 python[4777]:   File "/usr/local/bin/check_beacon_presence.py", line 102, in hci_toggle_le_scan
avril 18 19:25:09 raspberrypi4 python[4777]:     bluez.hci_send_cmd(sock, OGF_LE_CTL, OCF_LE_SET_SCAN_ENABLE, cmd_pkt)
avril 18 19:25:09 raspberrypi4 python[4777]: _bluetooth.error: (1, 'Operation not permitted')
avril 18 19:25:09 raspberrypi4 systemd[1]: check_beacon_presence.service: Main process exited, code=exited, status=1/FAILURE
avril 18 19:25:09 raspberrypi4 systemd[1]: check_beacon_presence.service: Failed with result 'exit-code'.
Aussi j'ai pensé à ce que ce soit root qui lance le service
Donc j'ai vérifié en ligne de commande de cette façon:

Code: Select all

pi@raspberrypi4:~ $ sudo su
root@raspberrypi4:/home/pi# python /usr/local/bin/check_beacon_presence.py
Les beacons sont mis à jour et le fichier de log est bien mis à jour.

Donc si je le lance à la main cela focntionne mais au redemarrage du RPI cela ne passe pas.

Je suis sous buster et avec un rpi4

Je ne comprends pas pourquoi j’ai cette erreur…
Peut-être ai-je mal compris comment faire…

J’espère que quelqu’un saura m’aguiller.

Merci d’avance pour votre aide !

Bonne journée et bon confinement

jelopo
Posts: 1601
Joined: Wed Oct 17, 2012 7:53 pm

Re: Script Pyton en tant que service

Mon Apr 20, 2020 5:53 am

Bonjour,
En lacement automatique, a mon avis, l' erreur significatives est la suivante:

Code: Select all

avril 18 19:25:09 raspberrypi4 python[4777]: _bluetooth.error: (1, 'Operation not permitted')
Il n'a pas le droit d'agir sur le bluetooth. Dans la séquence de boot, cheack beacon est-il bien lancé après le bluetooth ?

Tenter d'ajouter ces directives:

Code: Select all

After=bluetooth.target
Requires=bluetooth.target
Voir la doc pour la syntaxe précise.
A+

Return to “Français”