Journaliser et graphiquer les événements d'un thermostat 24 V avec un optocoupleur et Raspberry Pi
De nombreux projets domotiques impliquent de construire un thermostat à partir de zéro, mais que faire si vous possédez déjà un thermostat programmable et voulez simplement enregistrer quand il s'allume ou s'éteint ? Ce guide explique comment utiliser un optocoupleur pour isoler en toute sécurité le système CVC 24 V AC d'un Raspberry Pi, capturer des signaux logiques, journaliser les événements et tracer les données de température en temps réel.
⚠️ Travailler avec une tension secteur peut être dangereux. Ne procédez que si vous comprenez la sécurité électrique et avez les compétences nécessaires. L'auteur ne peut être tenu responsable de dommages aux équipements, animaux ou biens.
Étape 1 : Rassembler les composants et outils
Composants requis :
- Optocoupleur HCPL3700 (inclut redresseur)
- 2 × résistances 3,3 kΩ, ½ W ou plus
- Condensateur électrolytique 10 µF, ≥10 V
- Condensateur céramique 0,1 µF
- Résistance de pull-up 8 kΩ (ou 3,3 kΩ + 4,7 kΩ en série)
- Raspberry Pi (tout modèle avec GPIO 3,3 V)
- Fil isolé deux conducteurs, de préférence avec connecteur à déconnexion rapide
- Fournitures électroniques de base : breadboard, fils de liaison, etc.
Capteur de température optionnel :
- Capteur de température numérique ADT7410
- Carte breakout SOIC
- Condensateur 0,1 µF supplémentaire
- 4 × résistances 10 kΩ
Outils de conception PCB optionnels :
- Borniers à vis deux bornes
- Connecteurs femelles pour carte SOIC
- Connecteurs mâles ou femelles pour connectivité Pi/Arduino
- Versions CMS des résistances pour réduire la taille de la carte
Outils :
- Multimètre (mode tension AC)
Prérequis :
- Système CVC 24 VAC
- Python et bibliothèques associées (ex.
hipi-i2c) - Optionnel : compte Plotly pour graphiques en ligne
- Optionnel : Eagle (version gratuite) pour conception PCB
Étape 2 : Identifier les fils du relais du thermostat
La plupart des systèmes CVC résidentiels fonctionnent en 24 VAC. Un thermostat programmable s'alimente généralement via un circuit « vol d'énergie » et commute un relais pour activer le chauffage ou le gestionnaire d'air. Pour surveiller l'état du relais, localisez la paire de fils qui transporte l'alimentation 24 VAC vers l'unité CVC.
Avec un multimètre en tension AC, testez chaque paire de fils pendant que le CVC est allumé et éteint. Enregistrez la lecture ; la bonne paire doit afficher ~24 VAC (souvent un peu plus, ex. 28–30 VAC) quand le système est actif et 0 VAC quand il est inactif.
Étape 3 : Ajouter des fils de surveillance
Coupez l'alimentation du CVC et confirmez avec votre multimètre qu'aucune tension n'est présente. Retirez soigneusement le thermostat de sa base de montage pour exposer le câblage. Attachez deux fils supplémentaires à la paire de conducteurs du relais choisie. Utilisez des connecteurs à déconnexion rapide côté Pi pour une maintenance facile.
Étape 4 : Construire le circuit d'isolation
Connecter directement du 24 VAC à un Raspberry Pi est impossible. Un optocoupleur comme le HCPL3700 fournit une isolation électrique tout en redressant automatiquement la tension d'entrée.
Points clés du schéma :
- Deux résistances 3,3 kΩ (classées ≥½ W) sur les broches d'entrée AC définissent le seuil de déclenchement. Référez-vous à la fiche technique HCPL3700 pour les calculs exacts.
- Un condensateur électrolytique 10 µF, ≥10 V à la sortie DC du redresseur lisse le signal et empêche le GPIO du Pi de scintiller à la fréquence secteur.
- Un condensateur céramique 0,1 µF aux broches d'alimentation de l'optocoupleur réduit le bruit haute fréquence.
- Comme le HCPL3700 utilise une sortie collecteur ouvert, une résistance de pull-up est requise. Une résistance 8 kΩ (ou 3,3 kΩ + 4,7 kΩ en série) tire fiablement la ligne haute pour la logique 3,3 V du Pi.
Connectez la sortie de l'optocoupleur à une broche GPIO du Pi (ex. GPIO23). Utilisez le rail 3,3 V du Pi pour alimenter les broches d'alimentation de l'optocoupleur. Mettez à la masse le Pi et l'optocoupleur ensemble.
Une fois câblé, le Pi peut détecter un niveau bas logique quand le relais CVC est énergisé et un niveau haut quand il est désénergisé.
Pour les schémas complets et calculs de composants, consultez la note d'application HCPL3700.
Étape 5 : Installer le logiciel et journaliser les données
Utilisez Python pour lire la broche GPIO, horodater chaque changement d'état et écrire les données dans un fichier CSV ou une base de données. Un script simple pourrait ressembler à ceci :
import RPi.GPIO as GPIO
import time
import csv
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
with open('thermostat_log.csv', 'a') as f:
writer = csv.writer(f)
while True:
state = GPIO.input(23)
timestamp = time.time()
writer.writerow([timestamp, state])
time.sleep(0.5)
Pour le graphique en temps réel, téléchargez le CSV sur Plotly ou utilisez une bibliothèque légère comme Matplotlib pour générer des graphiques locaux.
Étape 6 : Étendre avec un capteur de température (Optionnel)
Intégrez l'ADT7410 en I²C pour journaliser la température ambiante aux côtés de l'état du relais. Connectez le capteur aux broches SDA/SCL du Pi, définissez l'adresse (0x48 par défaut), et lisez le registre de température 16 bits. Stockez les relevés dans le même fichier journal avec une colonne séparée.
Quand vous avez les données de température, utilisez Plotly pour créer un graphique à double axe : CVC sur l'axe principal et température sur l'axe secondaire, vous permettant de corréler l'activité du thermostat avec les changements ambiants.
En suivant ces étapes, vous pouvez surveiller et journaliser en toute sécurité le comportement de votre thermostat existant sans modifier l'appareil lui-même.
Processus de fabrication
- Intégration MQTT transparente : capteurs NodeMCU DHT22 avec Raspberry Pi 3 B+ comme broker
- Profilage température Raspberry Pi précis avec Python, SQLite et LabVIEW
- Journaliser et graphiquer les événements d'un thermostat 24 V avec un optocoupleur et Raspberry Pi
- Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
- Surveillance transparente température et humidité sur Raspberry Pi avec EzTemp
- Surveillance météo à distance avec Raspberry Pi 3 et PubNub
- Intégration du TI SensorTag à Blynk via Node‑RED sur Raspberry Pi Zero
- Journalisation et système d'alerte photocellulaire Raspberry Pi – Construire un capteur de lumière basse consommation avec Python
- Contrôler une LED avec un capteur de mouvement PIR sur Raspberry Pi