Pin 13 (GPIO27) et Mise a jour [RESOLU]
Modérateur : Francois
Pin 13 (GPIO27) et Mise a jour [RESOLU]
Bonjour et merci de m’accepter sur ce forum.
Sur mon Raspberry Pi Type B j’ai une sonde DT22 en Pin 13 (GPIO27) et je récupère tous les 5 minutes la température et l’hygrométrie extérieure. Ça fonctionne sans problème depuis 2014.
j'ai effectué une mise a jour de ma carte SD .Et depuis sa ne fonctionne plus ! Est ce du a cela ?
root@PiHome:/home/www/Graph# python3 readDHT22T.py
Traceback (most recent call last):
File "readDHT22T.py", line 50, in <module>
humidity,temperature = get_outputs("22",pin)
File "readDHT22T.py", line 38, in get_outputs
OK = search("Temp", outputs_raw) and search("Hum", outputs_raw)
File "/usr/lib/python3.2/re.py", line 161, in search
return _compile(pattern, flags).search(string)
TypeError: can't use a string pattern on a bytes-like object
Avez vous une idée Merci .
Sur mon Raspberry Pi Type B j’ai une sonde DT22 en Pin 13 (GPIO27) et je récupère tous les 5 minutes la température et l’hygrométrie extérieure. Ça fonctionne sans problème depuis 2014.
j'ai effectué une mise a jour de ma carte SD .Et depuis sa ne fonctionne plus ! Est ce du a cela ?
root@PiHome:/home/www/Graph# python3 readDHT22T.py
Traceback (most recent call last):
File "readDHT22T.py", line 50, in <module>
humidity,temperature = get_outputs("22",pin)
File "readDHT22T.py", line 38, in get_outputs
OK = search("Temp", outputs_raw) and search("Hum", outputs_raw)
File "/usr/lib/python3.2/re.py", line 161, in search
return _compile(pattern, flags).search(string)
TypeError: can't use a string pattern on a bytes-like object
Avez vous une idée Merci .
Re: Pin 13 (GPIO27) et Mise a jour
Bonjour,
qu'entends-tu par mise à jour de la carte SD?
As-tu changé de version de Rapsbian ou Python?
Guillaume.
qu'entends-tu par mise à jour de la carte SD?
As-tu changé de version de Rapsbian ou Python?
Guillaume.
Re: Pin 13 (GPIO27) et Mise a jour
Mise a jour en faisant
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get update
sudo apt-get dist-upgrade
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: Pin 13 (GPIO27) et Mise a jour
problème de type
OK = search("Temp", outputs_raw) and search("Hum", outputs_raw)
un truc du genre est plus coherant :
OK = search("Temp", outputs_raw.decode('utf-8')) and search("Hum", outputs_raw.decode('utf-8'))
OK = search("Temp", outputs_raw) and search("Hum", outputs_raw)
un truc du genre est plus coherant :
OK = search("Temp", outputs_raw.decode('utf-8')) and search("Hum", outputs_raw.decode('utf-8'))
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
Re: Pin 13 (GPIO27) et Mise a jour
Merci Bud Spencer , je ne comprend pas pourquoi il faut retoucher le code car sa fonctionnais bien avant la mise a jour ,mais j'ai essayé et il y a du mieux
Sa fonctionne 1 fois sur 2 !!
root@PiHome:/home/www/Graph# python readDHT22T.py
DHT22:19.3Celsius, 70.0%
root@PiHome:/home/www/Graph# python readDHT22T.py
DHT22:---Celsius, ---%
root@PiHome:/home/www/Graph#
#Fonction pour lecture DHT22
def get_outputs(typ,pin):
i=0
Hmax=100
for test_output in range(5):
i=i+1
outputs_raw = subprocess.check_output(["/root/Adafruit_DHT", typ, pin])
if len(outputs_raw)==44:
return None,None
OK = search("Temp", outputs_raw.decode('utf-8')) and search("Hum", outputs_raw.decode('utf-8'))
if (OK):
result_humid = search("Hum =\s+([0-9.]+)", outputs_raw)
humidity = result_humid.group(1)
if float(humidity)<=Hmax:
result_temp = search("Temp =\s+([0-9.]+|-[0-9]+)", outputs_raw)
temperature = result_temp.group(1)
if float(temperature)!=-3276:
return humidity,temperature
return None,None
Sa fonctionne 1 fois sur 2 !!
root@PiHome:/home/www/Graph# python readDHT22T.py
DHT22:19.3Celsius, 70.0%
root@PiHome:/home/www/Graph# python readDHT22T.py
DHT22:---Celsius, ---%
root@PiHome:/home/www/Graph#
#Fonction pour lecture DHT22
def get_outputs(typ,pin):
i=0
Hmax=100
for test_output in range(5):
i=i+1
outputs_raw = subprocess.check_output(["/root/Adafruit_DHT", typ, pin])
if len(outputs_raw)==44:
return None,None
OK = search("Temp", outputs_raw.decode('utf-8')) and search("Hum", outputs_raw.decode('utf-8'))
if (OK):
result_humid = search("Hum =\s+([0-9.]+)", outputs_raw)
humidity = result_humid.group(1)
if float(humidity)<=Hmax:
result_temp = search("Temp =\s+([0-9.]+|-[0-9]+)", outputs_raw)
temperature = result_temp.group(1)
if float(temperature)!=-3276:
return humidity,temperature
return None,None
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: Pin 13 (GPIO27) et Mise a jour
Ça c’est un problème récurrent avec les mise à jours et python. Généralement ça se corrige bien (encore que, avec la fin du support python2 et les milliers de références plus maintenues, ca pleure dans pas mal d'entreprises ...), mais pour ça il faut lire et les docs pour scruter les points de ruptures. Pour les sonde DHTx, c’est pareil. Le protocole utilisé par la plupart des lib est un ‘pseudo’ one wire soft et les erreurs sont plus fréquentes que les bonnes lectures. Perso, je m’étais amusé un peu avec ce type de sonde pour faire quelques tutos ici (et ailleurs), mais elles ont vite rejoint les fonds de tiroir (et en plus elles sont d’une imprécision remarquable …)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
Re: Pin 13 (GPIO27) et Mise a jour
salut,
Tu devrais peut-être aussi appliquer la modif suggérée par Bud sur les deux lignes avec tes expressions régulières qui récupèrent tes valeurs:
result_humid = search("Hum =\s+([0-9.]+)", outputs_raw.decode('utf-8'))
Tu devrais peut-être aussi appliquer la modif suggérée par Bud sur les deux lignes avec tes expressions régulières qui récupèrent tes valeurs:
result_humid = search("Hum =\s+([0-9.]+)", outputs_raw.decode('utf-8'))
Re: Pin 13 (GPIO27) et Mise a jour
Merci pour votre aide je viens de découvrir que mon probleme viens de la librairie adafruit ! Je me suis un peu mélanger les pinceaux avec mes Raspberry !
J'ai bien fait une mise a jour sur mon Raspberry B , ensuite j'ai sauvegardé la carte SD et je l'ai recopié sur une micro SD que j'ai mise dans un Raspberry 2 , Après versification sa fonctionne toujours sur mon Raspberry B, mais pas sur mon Raspberry 2 .CA ne viens pas du tout de la mise a jour, mais de la librairie adafruit qui est différente pour les Raspberry 2 et 3 !
J'ai bien fait une mise a jour sur mon Raspberry B , ensuite j'ai sauvegardé la carte SD et je l'ai recopié sur une micro SD que j'ai mise dans un Raspberry 2 , Après versification sa fonctionne toujours sur mon Raspberry B, mais pas sur mon Raspberry 2 .CA ne viens pas du tout de la mise a jour, mais de la librairie adafruit qui est différente pour les Raspberry 2 et 3 !
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: Pin 13 (GPIO27) et Mise a jour
C’est bien du fait d'une mise à jour python (et forcement des libs qui ont évolué avec). Depuis je ne sais plus quel version (2.x...) , les stream de bytes doivent être converti explicitement en précisant l’encodage pour de très nombreuse fonctions et c’est valable aussi dans le sens inverse (exemple)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: Pin 13 (GPIO27) et Mise a jour
ou plus simplement en une seule fois en le faisant dès réception des données la ligne
outputs_raw = subprocess.check_output(["/root/Adafruit_DHT", typ, pin])
outputs_raw = subprocess.check_output(["/root/Adafruit_DHT", typ, pin]).decode('utf-8')
ou un truc dans l'genre
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).