Script Python ne remonte pas via crontab

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
TG76
Messages : 49
Inscription : 10 nov. 2017, 12:04

Script Python ne remonte pas via crontab

Message par TG76 »

Bonjour,

j'ai laissé tombé quelques temps suite à une MAJ et perte de toutes mes données.

Je reviens pour essayer de relancer quelques scripts.

Mais je n'arrive pas à les lancer dans crontab=> enfin ils se lancent sans erreur et ne remonte pas sur DZ.

Pas de soucis en execution via geany ou en l'executant, mais impossible en les automatisant.
J'ai essayé via sudo crontab -e et crontab -e. mais rien y fait.

quelqu'un aurait-il une piste?

D'avance merci
Domoticz sur raspberry pi4 + station météo WMR86
Porte auto poulailler par détournement moteur porte de garage
suivi nas synology et onduleur
mike913
Messages : 159
Inscription : 18 oct. 2014, 10:22
Localisation : Morsang / Orge - Essonne
Contact :

Re: Script Python ne remonte pas via crontab

Message par mike913 »

Bonjour,
Pour qu'un script soit parfaitement exécuté dans crontab il faut que tous les chemin soient absolus.
DS718+ 2 x 3To(SHR) - Firmware: DSM 7.0.1-42218
DS712+ 2 x 4To (SHR) - Firmware: DSM 6.2.4-25556
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox Delta
https://meteo.folcke.net
https://wiki.folcke.net
TG76
Messages : 49
Inscription : 10 nov. 2017, 12:04

Re: Script Python ne remonte pas via crontab

Message par TG76 »

Merci pour la reponse.

C'est le cas. Il semblerait que le problème vienne du bluetooth. Il semble verrouillé.

Je suis en train de repartir a 0. vu que je n'avais pas grand chose dessus
Domoticz sur raspberry pi4 + station météo WMR86
Porte auto poulailler par détournement moteur porte de garage
suivi nas synology et onduleur
TG76
Messages : 49
Inscription : 10 nov. 2017, 12:04

Re: Script Python ne remonte pas via crontab

Message par TG76 »

Meilleurs voeux à toutes et tous.

Du coup malgré une réinstall toute fraiche, toujours le même problème.

les infos remontent via un json manuel
en lancant mon script dans mu manuellement tout est ok
LYWSD02
0 T = 18.77 *C, H = 72 %
b'{\n\t"status" : "OK",\n\t"title" : "Update Device"\n}\n'
>>>
et bonne remontée dans domoticz

en revanche j'ai maintenant un message d'erreur dans crontab (en sudo crontab -e et en crontab -e)
src/adapter.c:store_conn_param() Unable to load key file from /var/lib/bluetooth/DC:A6:32:2A:39:6D/E7:2E:00:53:4C:CD/info: (No such file or directory)

En espérant que quelqu'un ait une piste voir une solution.

Bonne journée

TG76
Domoticz sur raspberry pi4 + station météo WMR86
Porte auto poulailler par détournement moteur porte de garage
suivi nas synology et onduleur
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Script Python ne remonte pas via crontab

Message par Chrominator »

Bonne année aussi.

Pour info, sans le script en question ni un petit sommaire décrivant la tâche exécutée, on ne pourra pas beaucoup aider.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Script Python ne remonte pas via crontab

Message par Keros »

Il me semble de que j'ai déjà vu des problèmes générés par le Bluetooth. Tu as essayé de le désactiver ?

Tu peux essayer de faire un sh qui lance le script python. Je sais, ce n'est pas joli, mais on pourra voir si le problème vient de la crontab ou pas?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
TG76
Messages : 49
Inscription : 10 nov. 2017, 12:04

Re: Script Python ne remonte pas via crontab

Message par TG76 »

Merci Chrominator,
Je pensais que cela pouvait être une erreur de config avant une erreur de script.

Donc je souhaite remonter les infos un thermometre xiaomi LYWSD02.

Ca a fonctionné mais une mise à jour m'a tout planté (malgré un backup) et je n'ai jamais réussi à remonter les infos.
Donc j'utilise le script : https://mysku.club/blog/diy/76505.html

Code : Tout sélectionner

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

domoticzserver   = 'xxx.xxx.x.x:xxxx'
domoticzusername = 'user'
domoticzpassword = 'pwd'
IDX = 'xxx'
mac_addr_LYWSD02 = 'xx:xx:xx:xx:xx:xx'

from bluepy import btle
import struct
import urllib.request
import base64

class MyDelegate(btle.DefaultDelegate):
    def handleNotification(self, cHandle, data):
        global HUM
        global TEMP
        HUM = data[2]
        TEMP = struct.unpack('h', data[:2])[0] / 100

def _encodeBase64(consumer_key, consumer_secret):
    dummy_param_name = 'bla'
    key_url_encoded = urllib.parse.urlencode({dummy_param_name: consumer_key})[len(dummy_param_name) + 1:]
    secret_url_encoded = urllib.parse.urlencode({dummy_param_name: consumer_secret})[len(dummy_param_name) + 1:]
    credentials = '{}:{}'.format(key_url_encoded, secret_url_encoded)
    bytes_base64_encoded_credentials = base64.encodebytes(credentials.encode('utf-8'))
    return bytes_base64_encoded_credentials.decode('utf-8').replace('\n', '')

def domoticzrequest (url):
  request = urllib.request.Request(url)
  request.add_header("Authorization", "Basic %s" % base64string)
  response = urllib.request.urlopen(request)
  respond = response.read()
  response.close()
  return respond

p = btle.Peripheral (mac_addr_LYWSD02)
p.setDelegate(MyDelegate())
uuid = ''
ch = p.getCharacteristics(uuid=uuid)[0]
desc = ch.getDescriptors(forUUID=0x2902)[0]
desc.write(0x01.to_bytes(2, byteorder="little"), withResponse=True)

print ("LYWSD02")

i = 0
HUM = 0
TEMP = 0

while not p.waitForNotifications(5):
     i += 1
     if i >= 20 :
       break

p.disconnect()

print(i,"T =",TEMP,"*C,   H =", HUM,"%")

base64string = _encodeBase64(domoticzusername, domoticzpassword)

HUM_STAT = "0" 
if HUM > 85:
  HUM_STAT = "3" 
elif HUM < 20:
  HUM_STAT = "2" 
elif HUM <= 60 and HUM >= 40:
  HUM_STAT = "1" 

print(domoticzrequest("http://" + domoticzserver + "/json.htm?type=command&param=udevice&idx=" + IDX + "&nvalue=0&svalue=" + str(TEMP)[:4] + ";" + str(HUM) + ";" + HUM_STAT))
les paramètres au début sont correctement saisi
Juste le UUID, il y en a un de saisi, mais je ne sais pas s'il correspond. je ne me souviens pas l'avoir modifier.

mais en exécution manuelle, les informations remonte sur DZ, c'est juste quand je veux automatiser l'exécution.

d'avance merci
Domoticz sur raspberry pi4 + station météo WMR86
Porte auto poulailler par détournement moteur porte de garage
suivi nas synology et onduleur
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Script Python ne remonte pas via crontab

Message par denis_brasseur »

Tu peux aussi regarder les logs de crontab sous

Code : Tout sélectionner

/var/log/syslog
Montre nous aussi la ligne que tu as inséré dans la crontab
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
TG76
Messages : 49
Inscription : 10 nov. 2017, 12:04

Re: Script Python ne remonte pas via crontab

Message par TG76 »

visiblement sur debian 12 ça n'est plus le cas, mais via journalctl -f
Dernière modification par Keros le 01 janv. 2024, 16:38, modifié 1 fois.
Raison : Citation supprimée. Merci de ne pas citer le message précédent lors d'une réponse directe.
Domoticz sur raspberry pi4 + station météo WMR86
Porte auto poulailler par détournement moteur porte de garage
suivi nas synology et onduleur
Répondre