Mon Pi reste hors ligne après 20 minutes d'inactivité et se réveille quand je me connecte en SSH
Traduit de English par IA ·
Bonjour à tous. Projet de fin d’études : un Pi 3B+ dans la serre que nous utilisons pour le projet lit un BME280 toutes les 15 minutes et envoie les données à Hermetry via MQTT (paho, keepalive laissé à la valeur par défaut 60). Le Pi est sur le Wi-Fi partagé du site.Il fonctionne un moment après le démarrage, puis l’appareil passe hors ligne dans Hermetry et les relevés s’arrêtent. Le plus étrange : dès que je me connecte en SSH pour regarder (la connexion prend très longtemps), tout revient et l’appareil est de nouveau en ligne. On dirait que le Pi se met en veille.L’onglet Log de l’appareil dans Hermetry indique :
Disconnected Reason: keepalive_timeout
Existe-t-il un mode veille sous Raspberry Pi OS que je pourrais désactiver ? Je n’en ai pas trouvé dans raspi-config.Ce que j’ai déjà essayé : réduire l’intervalle de publication à 1 minute (ça a tenu un peu plus longtemps, peut-être 40 minutes), une autre alimentation (l’officielle 2,5 A) et vérifier dmesg, qui ne montre rien d’évident au moment de la coupure. Le Pi fonctionne clairement, car une tâche cron qui écrit la température du CPU dans un fichier local chaque minute continue d’écrire pendant toute la durée, même quand Hermetry indique hors ligne. J’utilise Raspberry Pi OS Bookworm Lite, 32 bits.
Hi all. Final year project, a Pi 3B+ in the greenhouse we use for the project reading a BME280 every 15 minutes and sending to Hermetry over MQTT (paho, keepalive left at default 60). Pi is on the shared Wi-Fi there.
It works for a while after boot, then the device goes offline in Hermetry and the readings stop. The weird bit is that as soon as I SSH in to look (which takes a long time to connect), everything comes back and the device is online again. Feels like the Pi is going to sleep.
The device’s Log tab in Hermetry says:
Disconnected Reason: keepalive_timeout
Is there a sleep mode on Raspberry Pi OS I can turn off? I couldn’t find one in raspi-config.
What I already tried: lowering the publish interval to 1 minute (made it last a bit longer, maybe 40 minutes), a different power supply (official 2.5 A one), and checking dmesg, which shows nothing obvious around the time it drops. The Pi itself is clearly running, because a cron job writing the CPU temperature to a local file every minute keeps writing the whole time, even while Hermetry says offline. I’m on Raspberry Pi OS Bookworm Lite, 32-bit.
Traduit de English par IA ·
Je pense qu’il existe une option de mise en veille de l’écran dans raspi-config, peut-être que c’est ça qui le met en veille ? Chez moi, le HDMI s’éteint au bout de 10 min.
I think there’s a screen blanking option in raspi-config, maybe that’s putting it to sleep? Mine turns the HDMI off after 10 min.
Traduit de English par IA ·
Il est headless, il n’a aucun écran. J’ai quand même désactivé le blanking par précaution, sans changement.
It’s headless, no screen at all. I turned blanking off anyway just in case, no change.
Traduit de English par IA ·
Le blocage de l’écran n’y est pour rien. Classique économie d’énergie Wi-Fi sur la puce Broadcom du Pi ; j’ai eu le même problème avec un Pi 3B+ dans un local de pompage. Le Pi ne se met pas en veille, c’est le Wi-Fi qui le fait, et les paquets entrants sont retardés ou perdus. Ton client paho envoie un ping toutes les 60 s, la réponse n’arrive pas à temps, Hermetry ne voit rien pendant le keepalive et ferme la session, d’où keepalive_timeout. Ta connexion SSH réveille la radio, ce qui explique que tout revienne à ce moment-là.
Vérifie :
iw wlan0 get power_save
Power save: on
Pour le désactiver durablement sous Bookworm avec NetworkManager :
sudo tee /etc/NetworkManager/conf.d/wifi-powersave.conf <<EOF
[connection]
wifi.powersave = 2
EOF
sudo systemctl restart NetworkManager
(2 signifie désactivé.) Si tu utilises une image plus ancienne avec dhcpcd, place iw wlan0 set power_save off dans un script exécuté une fois le réseau démarré.
Fais aussi en sorte que ton client se reconnecte automatiquement : client.reconnect_delay_set(1, 120) et loop_forever ou loop_start, pour qu’une courte coupure se rétablisse d’elle-même.
Screen blanking won’t do it. Classic Wi-Fi power saving on the Pi’s Broadcom chip, I had the same with a Pi 3B+ in a pump house. The Pi doesn’t sleep, the Wi-Fi does, and incoming packets get delayed or lost. Your paho client sends a ping every 60 s, the answer doesn’t come back in time, Hermetry sees nothing within the keepalive and closes the session, hence keepalive_timeout. Your SSH wakes the radio up, which is why everything comes back then.
Check it:
iw wlan0 get power_save
Power save: on
Turn it off for good on Bookworm with NetworkManager:
sudo tee /etc/NetworkManager/conf.d/wifi-powersave.conf <<EOF
[connection]
wifi.powersave = 2
EOF
sudo systemctl restart NetworkManager
(2 means disabled.) If you’re on an older image with dhcpcd, put iw wlan0 set power_save off in a script that runs after the network is up.
Also make your client reconnect on its own: client.reconnect_delay_set(1, 120) and loop_forever or loop_start, so a short drop fixes itself.
Traduit de English par IA ·
La gestion de l’énergie était activée. J’ai ajouté le fichier de configuration, redémarré NetworkManager, et il est en ligne sans interruption depuis 3 jours, sans keepalive_timeout dans l’onglet Log depuis. La connexion SSH est aussi instantanée, ce que je n’avais même pas remarqué comme lié au problème. Merci Ciaran !
Power save was on. Added the conf file, restarted NetworkManager, and it’s been online for 3 days straight now, no keepalive_timeout in the Log tab since. SSH is instant too, which I hadn’t even realised was related. Thank you Ciaran!
Traduit de English par IA ·
Ha, donc c’était le Wi-Fi qui était en veille, pas le Pi. Je vérifie le mien maintenant.
Ha, so the Wi-Fi was asleep, not the Pi. Checking mine now.
- 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.

