Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 02-11-2016 18:00:38

passemoilaclede12
Membre
Inscription : 02-11-2016

Script python qui plante avec la crontab [Résolu]

Bonjour,

Mon installation :

Un RPi + une ligne I2C + un mcp23017 pilotant un LCD 20x4 + un mcp23017 pilotant une carte 8 relais.

voici un script python qui récupère des données dans le fichier piscine.txt pour :
1- afficher du texte sur l'afficheur via le mpc avec comme adresse 0x24
2- commander le relais via le mpc avec comme adresse 0x22

Quand j’exécute  ce script avec la console 'putty' le fonctionnement est parfait.

Mon but est de faire exécuter ce script  à intervalle régulier grâce à la crontab du Rpi

Quand la crontab exécute ce script, les relais du mpc 0x22 fonctionnent selon le script mais l'afficheur LCD piloté par le mpc 0x24 écrit des caractères bizarres un peu partout sur l’écran.

Quelle différence peut-il y avoir entre la console et la crontab ?
Je sèche complètement...... J'ai besoin d'aide

#!/usr/bin/python2.7
#-*- coding: utf-8 -*-

import time
from datetime import datetime, timedelta

import Adafruit_GPIO as GPIO
import Adafruit_GPIO.MCP230xx as MCP
import Adafruit_CharLCD as LCD

gpioPIS = MCP.MCP23017(0x22)
gpioLCD  = MCP.MCP23017(0x24)


lcd = LCD.Adafruit_CharLCD(15,13,12,11,10,9,20,4,14,gpio=gpioLCD)
lcd.set_backlight(1)
lcd.clear()



class Piscine:
  def __init__(self):
    self.OnOff = 0
    self.tab = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]
Piscine = Piscine()

def Initialisation():
  gpioPIS.setup(0,GPIO.OUT)
 
# Fonction lecture fichier piscine
def lirePiscine():
  FichierPiscine = open("/var/www/piscine.txt", "r")
  Piscine.OnOff = int(float(FichierPiscine.readline())) # On/Off
  i=1
  while i<= 23:
    Piscine.tab[i]=int(float(FichierPiscine.readline()))
    i=i+1
  FichierPiscine.close
  return
 
Initialisation()
maintenant = datetime.now()
lirePiscine()


if len(str(maintenant.hour))==1 :
  lcd.message("0")
  lcd.message(str(maintenant.hour))
else :
  lcd.message(str(maintenant.hour))
lcd.message(":")
if len(str(maintenant.minute))==1 :
  lcd.message("0")
  lcd.message(str(maintenant.minute))
else :
  lcd.message(str(maintenant.minute))


lcd.set_cursor(6,0)
lcd.message("Piscine : ")
if Piscine.OnOff == 1 :
  lcd.message("Auto")
  i=0
  while i <= 22:
    if maintenant.hour == i:
      if Piscine.tab[i+1]==1:
        gpioPIS.output(0,1)
        lcd.set_cursor(0,1)
        lcd.message("Filtration ON")
      else :
        gpioPIS.output(0,0)
        lcd.set_cursor(0,1)
        lcd.message("Filtration OFF")
    i=i+1
else :
  lcd.message("Manu")

Dernière modification par passemoilaclede12 (02-11-2016 19:49:14)

Hors ligne

#2 02-11-2016 18:07:01

bendia
Admin stagiaire
Distrib. : Stretch (et un peu Jessie)
Noyau : Linux 4.9.0-2-amd64
(G)UI : Gnome + Console
Inscription : 20-03-2012
Site Web

Re : Script python qui plante avec la crontab [Résolu]

Salut smile

passemoilaclede12 a écrit :

Quelle différence peut-il y avoir entre la console et la crontab ?


Les variables d'environnement genre LANG qui gère l'encodage des caractères ?


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

Hors ligne

#3 02-11-2016 18:41:36

passemoilaclede12
Membre
Inscription : 02-11-2016

Re : Script python qui plante avec la crontab [Résolu]

variables d'environnement genre LANG



merci pour cette rapide réponse, Bendia.

cela dépasse mes compétences, est-il possible d'en savoir plus ?

ce qui est bizarre : le script n'écrit que sur les deux premières lignes en console, et sur tout l'écran avec la crontab !

Merci

Dernière modification par passemoilaclede12 (02-11-2016 18:44:13)

Hors ligne

#4 02-11-2016 18:56:38

bendia
Admin stagiaire
Distrib. : Stretch (et un peu Jessie)
Noyau : Linux 4.9.0-2-amd64
(G)UI : Gnome + Console
Inscription : 20-03-2012
Site Web

Re : Script python qui plante avec la crontab [Résolu]

J'ai oublié de te souhaiter la bienvenue au fait wink

C'est une simple suggestion hein, pas une certitude loin de là. C'est juste que j'ai déjà expérimenté un script avec une tâche cron qui me faisait un truc du genre, et c'était une histoire de variable d'environnement.

Les variables d'environnements s'affichent avec la commande

env

...
LANG=fr_FR.utf8
...


Il s'agirait donc juste d'ajouter  ça dans la définition de ta tâche cron pour voir

*/10 * * * * export LANG=fr_FR.utf8 /chemin/script



Pour plus d'info sur le sujet, le man section 5 (pas certain que toutes les pages man soient installées sur Raspbian hmm )

man -a 5 crontab


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

Hors ligne

#5 02-11-2016 19:12:25

passemoilaclede12
Membre
Inscription : 02-11-2016

Re : Script python qui plante avec la crontab [Résolu]

Merci pour l'accueil.... je teste s'histoire de LANG

Hors ligne

#6 02-11-2016 19:28:04

passemoilaclede12
Membre
Inscription : 02-11-2016

Re : Script python qui plante avec la crontab [Résolu]

ET CA FONCTIONNE !!!!:D:D:D
Merci à toi, Bendia, grand maître de la crontab

voila ma ligne de commande dans la crontab :
* * * * * export LANG=fr_FR.utf8 /usr/bin/python2.7 /var/www/scriptpython/ScriptPiscine.py

Problème résolu

Hors ligne

#7 02-11-2016 19:29:19

bendia
Admin stagiaire
Distrib. : Stretch (et un peu Jessie)
Noyau : Linux 4.9.0-2-amd64
(G)UI : Gnome + Console
Inscription : 20-03-2012
Site Web

Re : Script python qui plante avec la crontab [Résolu]


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

Hors ligne

Pied de page des forums