Le Pi 4 affiche 52 degrés, c'est le CPU. Comment lire la température de la pièce et l'envoyer ?
Traduit de English par IA ·
Je débute complètement côté Pi. Je veux que mon Raspberry Pi 4 mesure la température de mon atelier au sous-sol et l’envoie à Hermetry toutes les minutes. J’ai suivi un tutoriel qui utilisait vcgencmd measure_temp et la partie envoi fonctionne avec paho, la valeur s’affiche sur mon tableau de bord. Mais elle indique 52 degrés, et mon sous-sol ne fait certainement pas 52 degrés.J’ai donc acheté un DS18B20 (la version étanche avec câble). Rouge sur 5V, noir sur GND, jaune sur GPIO4. Rien n’apparaît dans /sys/bus/w1/devices/, seulement w1_bus_master1, parfois même pas. J’ai vu des gens mentionner une résistance, mais le kit n’en contenait pas.
Total newbie with the Pi side of things. I want my Raspberry Pi 4 to measure the temperature in my basement workshop and send it to Hermetry every minute. I followed a tutorial that used vcgencmd measure_temp and got the sending part working with paho, the number shows on my dashboard. But it says 52 degrees and my basement is definitely not 52.
So I bought a DS18B20 (the waterproof one with the cable). Wired red to 5V, black to GND, yellow to GPIO4. Nothing shows up in /sys/bus/w1/devices/, only w1_bus_master1 or sometimes not even that. I’ve seen people mention a resistor but the kit didn’t have one.
Traduit de English par IA ·
Le Pi n’a-t-il pas déjà son propre capteur de température ? C’est ce que lit vcgencmd, je pense.
Doesn’t the Pi have its own temperature sensor already? That’s what vcgencmd reads I thought.
Traduit de English par IA ·
Si, mais c’est la température de la puce CPU, d’où les 52. À l’intérieur du boîtier, ce ne sera jamais la température ambiante.
It does but it’s the CPU chip temperature, that’s why 52. It’ll never be room temperature inside the case.
Traduit de English par IA ·
As-tu activé 1-Wire dans raspi-config ? Et la résistance n’est pas facultative, 4,7k entre les données et l’alimentation.
Did you enable 1-Wire in raspi-config? And the resistor is not optional, 4.7k between data and power.
Traduit de English par IA ·
Ne l’alimentez pas non plus en 5V. La ligne de données est tirée vers la tension d’alimentation utilisée, et les broches GPIO du Pi ne supportent que 3.3V.
Also don’t feed it 5V. The data line gets pulled up to whatever you power it from, and the Pi’s GPIO pins are 3.3V only.
Traduit de English par IA ·
J’ai eu le même problème en première année, la sonde a fonctionné par la suite, mais j’ai eu de la chance. Liste de contrôle complète :Câblage : rouge sur 3V3 (broche 1), noir sur GND (broche 6), jaune sur GPIO4 (broche 7), et une résistance de 4,7 k entre le jaune et 3V3. Ajoutez dtoverlay=w1-gpio dans /boot/firmware/config.txt (ou /boot/config.txt sur les anciennes images), puis redémarrez. Vous devriez voir un dossier 28-xxxxxxxxxxxx.Ensuite, le script, avec le code paho que vous avez déjà :
import glob, json, time
import paho.mqtt.client as mqtt
dev = glob.glob('/sys/bus/w1/devices/28-*/w1_slave')[0]
def read_c():
lines = open(dev).read().splitlines()
if not lines[0].endswith('YES'):
return None # CRC failed, skip this one
return int(lines[1].split('t=')[1]) / 1000.0
c = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="basement-pi")
c.username_pw_set("YOUR_ACCESS_TOKEN") # token as username, no password
c.tls_set()
c.connect("YOUR_BROKER_HOST", 8883, keepalive=60)
c.loop_start()
while True:
t = read_c()
if t is not None:
c.publish("v1/telemetry", json.dumps({"temp_c": round(t, 2)}), qos=1)
time.sleep(60)
Utilisez un nouveau nom de clé comme temp_c pour que les relevés du CPU ne se mélangent pas dans le même graphique. L’hôte du broker figure sur la carte Connection details de l’appareil.
Did the same thing in first year, the probe was fine afterwards but I was lucky. Full checklist:
Wiring: red to 3V3 (pin 1), black to GND (pin 6), yellow to GPIO4 (pin 7), and a 4.7k resistor from yellow to 3V3. Add dtoverlay=w1-gpio to /boot/firmware/config.txt (or /boot/config.txt on older images) and reboot. You should see a 28-xxxxxxxxxxxx folder.
Then the script, on the same paho code you have:
import glob, json, time
import paho.mqtt.client as mqtt
dev = glob.glob('/sys/bus/w1/devices/28-*/w1_slave')[0]
def read_c():
lines = open(dev).read().splitlines()
if not lines[0].endswith('YES'):
return None # CRC failed, skip this one
return int(lines[1].split('t=')[1]) / 1000.0
c = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="basement-pi")
c.username_pw_set("YOUR_ACCESS_TOKEN") # token as username, no password
c.tls_set()
c.connect("YOUR_BROKER_HOST", 8883, keepalive=60)
c.loop_start()
while True:
t = read_c()
if t is not None:
c.publish("v1/telemetry", json.dumps({"temp_c": round(t, 2)}), qos=1)
time.sleep(60)
Use a new key name like temp_c so the CPU readings don’t mix into the same chart. Broker host is on the device’s Connection details card.
Traduit de English par IA ·
J’ai reçu une résistance d’un ami, déplacé le rouge sur 3V3, activé l’overlay et le dossier 28- est apparu. La sonde a survécu au 5V. Le sous-sol affiche 17,8, ce qui semble correct. J’ai gardé la valeur du CPU comme clé séparée, ça pourrait être utile.
Got a resistor from a friend, moved red to 3V3, enabled the overlay and the 28- folder appeared. Probe survived the 5V. Basement is 17.8, which sounds right. Kept the CPU one as a separate key, might be handy.
Traduit de English par IA ·
Si vous faites un jour passer le câble sur plus de quelques mètres et que les mesures deviennent instables, réduisez la résistance à 2,2k.
If you ever run the cable longer than a few metres and readings get flaky, drop the resistor to 2.2k.
- Vous devez être connecté pour répondre à ce sujet.
Rejoignez la discussion
Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

