Python / MySql (MariaDB) ay démarrage (service)

Bonjour,

Des heures que je cherche un moyen de faire démarrer un script python au démarrage de mon pi, et comme d’habitude sous Linux, il faut toujours passer 10 heures à faire les trucs les plus basiques…

rc.local => Ne fonctionne pas.
init.d => Ne fonctionne pas.

J’ai donc tenté de créer un service et là Bingo ! Sauf que bien entendu, comme jamais rien ne fonctionne du premier coup et bien c’est maintenant le script qui ne fonctionne plus.

J’utilise MySql Connector pour python. Quand j’exécute le script via la ligne de commande « python conso.py » il fonctionne parfaitement, mais via le service j’ai l’erreur:

● conso.service - PiConso service
Loaded: loaded (/lib/systemd/system/conso.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2018-10-25 00:07:13 UTC; 12min ago
Process: 905 ExecStart=/usr/bin/python /home/pi/conso.py (code=exited, status=1/FAILURE)
Main PID: 905 (code=exited, status=1/FAILURE)

Oct 25 00:07:13 ConsoPi systemd[1]: Started PiConso service.
Oct 25 00:07:13 ConsoPi python[905]: Traceback (most recent call last):
Oct 25 00:07:13 ConsoPi python[905]: File « /home/pi/conso.py », line 3, in
Oct 25 00:07:13 ConsoPi python[905]: import mysql.connector as mariadb
Oct 25 00:07:13 ConsoPi python[905]: ImportError: No module named mysql.connector
Oct 25 00:07:13 ConsoPi systemd[1]: conso.service: Main process exited, code=exited, status=1/FAILURE
Oct 25 00:07:13 ConsoPi systemd[1]: conso.service: Unit entered failed state.
Oct 25 00:07:13 ConsoPi systemd[1]: conso.service: Failed with result ‹ exit-code ›.

Voici le script en question:

#!/usr/bin/env python
import datetime
import mysql.connector as mariadb
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

mariadb_connection = mariadb.connect(
  host="localhost",
  user="root",
  passwd="*************",
  database="Conso"
)

cursor = mariadb_connection.cursor()

counter = 0
while True:
    GPIO.wait_for_edge(23, GPIO.RISING)
    counter += 1
    cursor.execute("""INSERT INTO Impulsions (date_created, room) VALUES (%s, %s)""", (datetime.datetime.now(), """office"""))
    mariadb_connection.commit()
    print(cursor.rowcount, "record inserted.")
    print "Counter is now", counter/1000.0, "kWh"
    GPIO.wait_for_edge(23, GPIO.FALLING)

GPIO.cleanup()

Je ne sais pas si c’est que MySql connector n’est pas encore chargé ou quoi, ou bien si c’est un problème de droits.

Merci pour votre aide. Je suis au bord du suicide (nan je déconne bien sur, mais votre aide serait grandement appréciée ^^)

Bonjour,

Déjà est-ce que le script démarre avec le user root en ligne de commande ?

Sinon, le paquet « python-mysql.connector » est-il installé ?
$ dpkg -l python-mysql.connector

A+