Page 1 sur 1
Script Python ne remonte pas via crontab
Publié : 31 déc. 2023, 15:16
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
Re: Script Python ne remonte pas via crontab
Publié : 31 déc. 2023, 16:29
par mike913
Bonjour,
Pour qu'un script soit parfaitement exécuté dans crontab il faut que tous les chemin soient absolus.
Re: Script Python ne remonte pas via crontab
Publié : 31 déc. 2023, 16:44
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
Re: Script Python ne remonte pas via crontab
Publié : 01 janv. 2024, 11:00
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
Re: Script Python ne remonte pas via crontab
Publié : 01 janv. 2024, 11:08
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.
Re: Script Python ne remonte pas via crontab
Publié : 01 janv. 2024, 11:39
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?
Re: Script Python ne remonte pas via crontab
Publié : 01 janv. 2024, 11:53
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¶m=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
Re: Script Python ne remonte pas via crontab
Publié : 01 janv. 2024, 16:30
par denis_brasseur
Tu peux aussi regarder les logs de crontab sous
Montre nous aussi la ligne que tu as inséré dans la crontab
Re: Script Python ne remonte pas via crontab
Publié : 01 janv. 2024, 16:33
par TG76
visiblement sur debian 12 ça n'est plus le cas, mais via journalctl -f