Table des matières:

NEST Votre ancien thermostat : 4 étapes (avec photos)
NEST Votre ancien thermostat : 4 étapes (avec photos)
Anonim
Image
Image
Comment fonctionne un thermostat
Comment fonctionne un thermostat

Le système de chauffage de ma maison est probablement aussi vieux que la maison elle-même. Il a environ 30 ans, ce qui est bien en termes d'années de maison, mais à peu près coincé dans l'ère glaciaire en ce qui concerne la technologie. Il y a 2 problèmes principaux avec les solutions commerciales:

  • prix prohibitifs
  • produit en tant que service

Nous nous souvenons tous de ce qui est arrivé à Revolv et je n'ai pas trop envie que cela m'arrive au milieu de l'hiver. Dans cet esprit, je vous présente un contrôleur NEST-Alike incroyablement suspect mais fonctionnel pour votre ancien thermostat. Ne vous inquiétez pas, je prévois d'ajouter bientôt une bien meilleure enceinte !

Caractéristiques:

  • possibilité d'utiliser un thermostat existant (au cas où la femme gémirait à ce sujet)
  • accès à distance
  • Mode ABSENT
  • indicateur de température optimale
  • Fonctionne avec Alexa

Bientôt (vérifiez ici pour les mises à jour)

  • Google Home
  • Google Agenda
  • Plusieurs capteurs
  • Commandes de radiateur
  • Intégrations IFTT
  • Assistance aux Taskeurs
  • Requêtes
  • Un boîtier bien plus beau

Étape 1: Comment fonctionne un thermostat

Comment fonctionne un thermostat
Comment fonctionne un thermostat
Comment fonctionne un thermostat
Comment fonctionne un thermostat

Le thermostat est probablement connecté à la HAUTE TENSION ! N'essayez pas de faire quoi que ce soit à moins de vous être assuré que le circuit est éteint. Vous pouvez vous blesser et endommager l'équipement connecté. Pensez à consulter un électricien qualifié pour assurer votre sécurité

Le thermostat Honeywell est une unité murale, alimentée par le secteur (les bases Sonoff ont besoin d'au moins 90 V, mon circuit a 230 V). Le boîtier est connecté à l'unité de contrôle principale (qui est un boîtier plus avancé) et il envoie le signal lorsque la température descend en dessous du niveau cible. Bien que votre unité puisse être différente, le principe est probablement le même. Si vous avez 3 fils et aucune connexion radio entre l'unité murale, ce tutoriel est fait pour vous.

Je sais comment fonctionnent les thermostats 3 fils dans un principe, ce qui ne m'a pas empêché de faire sauter un fusible en court-circuitant 2 fils par accident ! J'ai 3 fils connectés à l'unité (le 4ème étant la terre). Mon thermostat Honeywell n'est pas sans fil, donc pour changer le signal, je peux utiliser Sonoff Basic. Il est temps de le démonter et de voir comment le signal est envoyé à l'unité. Après une inspection plus approfondie, le terminal est connecté de la manière suivante:

  1. (bleu) – Terre
  2. (jaune) - signal, lorsqu'il est tiré vers le haut, le chauffage est allumé
  3. hors service
  4. (rouge) - le fil sous tension utilisé pour tirer le signal haut

Pour atteindre mon objectif, je dois court-circuiter le fil sous tension avec le fil de signal lorsque je veux que mon chauffage soit allumé. Si vous avez un thermostat connecté de la même manière, vous avez de la chance car Sonoff Basic suffira à faire l'affaire.

Étape 2: Préparation de Sonoff Basic

Préparer Sonoff Basic
Préparer Sonoff Basic
Préparer Sonoff Basic
Préparer Sonoff Basic
Préparer Sonoff Basic
Préparer Sonoff Basic

Avant de commencer à connecter les fils, nous devons ajouter un capteur de température (DHT11) au mélange. Assurez-vous que le micrologiciel Tasmota est flashé sur votre appareil Sonoff (j'ai un excellent guide de flash ici) et que votre Sonoff compatible Tasmota est correctement configuré (également déjà couvert par moi). Maintenant, il ne vous reste plus qu'à connecter le capteur DHT11 au Sonoff et à le configurer pour le rapport de température.

Le DHT11 est livré avec 3 broches câblées: Signal - GPIO14Vcc - 3.3VGND - GND

J'ai percé un trou, je ne me soucie pas de ce à quoi cela ressemble maintenant, tout ce dont j'ai besoin est la preuve de concept et la validation. Je ferai un joli boîtier brillant une fois mon imprimante 3D arrivée. J'ai prêté une attention particulière à la façon dont je câble le Sonoff, car je dois m'assurer que le fil sous tension se connecte au fil de signal à l'autre extrémité de l'appareil Sonoff. L'unité Honeywell a la résistance de charge (R) intégrée à l'intérieur qui limite le courant. Alors que le circuit est protégé par le fusible 3A, il est judicieux de faire correspondre la même résistance pour une protection supplémentaire. Une fois les fils prêts, il était temps de couper l'alimentation principale et de rebrancher le Sonoff.

Sonoff Tasmota - Thermostat Honeywell

ENTREE Live - 4ème borne Live

ENTREE GND - 1ère borne GND

SORTIE Signal - 2ème borne Signal

J'ai déjà mentionné cela pour l'instant, je ne vais pas insister sur l'apparence de cela. La femme a été convaincue et je peux me concentrer sur la fonctionnalité et éliminer les bugs qui pourraient survenir. La bonne chose est que le thermostat d'origine fonctionne toujours. Si je l'augmente, il remplacera celui basé sur Sonoff Tasmota. Cela devrait être une excellente sauvegarde pour tout événement inattendu.

Étape 3: NodeRED

NodeRED
NodeRED
NodeRED
NodeRED
NodeRED
NodeRED

Veuillez noter que la vidéo peut contenir des références NodeRed plus anciennes, je travaille constamment à améliorer la conception. Il s'agit de petits changements et les fichiers d'articles sont tenus à jour

Je suis tombé sur cette conception en ligne. Il a fière allure, mais après une inspection minutieuse, le widget n'est pas vraiment adapté à NodeRED. Il a besoin de 5 charges utiles pour être définies, ce qui n'est tout simplement pas le fonctionnement de la conception de nœuds similaires. Il m'a fallu un certain temps pour trouver le meilleur moyen de transmettre toutes ces informations pour mettre à jour le widget et le garder fonctionnel. Je suis sûr qu'avec le temps, je passerai plus de temps sur la conception afin de pouvoir envoyer toutes les mises à jour nécessaires avec un seul objet msg. Pour l'instant, c'est comme ça.

Flux de température

DHT11 rapporte toutes les X secondes au serveur NodeRED. J'ai augmenté cette fréquence via la console du Tasmota. Exécutez simplement la commande pour définir la fréquence en secondes:

TelePeriod Définir la période de télémétrie entre 10 et 3600 secondes

Ceci est fait principalement pour les tests, car je ne veux pas attendre quelques minutes pour voir si mes corrections de bogues ont fonctionné. Maintenir une fréquence élevée entraînera un déclenchement plus fréquent du chauffage pendant des périodes plus courtes, alors évitez de le régler sur 10 secondes à des fins autres que de test. Le nœud MQTT extrait les données de:

sonoff/télé/CAPTEUR

et conserve les données les plus utiles dans les objets suivants:

msg.payload. DHT11. Temperature msg.payload. DHT11. Humidity

Pour limiter les erreurs, j'ai ajouté le nœud smooth pour faire la moyenne des résultats et mis à jour la variable de flux: NodeRED:

Nœud de fonction - Mettre à jour le 'TempAmbient'

flow.set('TempAmbient', msg.payload. DHT11. Temperature); return msg;

Mise à jour des widgets

J'ai décidé que 5 secondes est un bon taux de rafraîchissement, donc je pousse toutes les valeurs nécessaires avec cette fréquence. La seule exception est le curseur, qui, pour une raison évidente, répond instantanément.

Chaque nœud correspondant envoie la charge utile avec le sujet attribué au widget imbriqué.

  • couleur (chauffage|refroidissement*|off & hvac_state)
  • feuille (true|false & has_leaf)
  • loin (vrai|faux & loin)
  • Température ambiante (nombre & ambient_temperature)
  • Température cible (nombre et température_cible)

*hors service

NodeRED: nœud de fonction - Mise à jour du widget

Couleur

x = flux.get('TempTarget'); //ciblez = flow.get('TempAmbiant'); //ambiant

si (z = x){

flow.set('heatingState', "off"); flow.set('heatingSwitch', "OFF"); } msg.payload = z; msg.topic = "ambient_temperature"; renvoyer le message;

feuille

x = flow.get('TempAmbiant'); if (x > 17 && x < 23){ flow.set('leaf', true); msg.payload = true; msg.topic = "has_leaf"; renvoyer le message; } else{flow.set('leaf', false); msg.payload = false; msg.topic = "has_leaf"; renvoyer le message; }

Ignorer les couleurs

x = flux.get('loin'); if (x === true){ msg.topic = "hvac_state"; msg.payload = "off"; renvoyer le message; }

msg.topic = "hvac_state";

msg.payload = flow.get('heatingState');

renvoyer le message;

Une façon

x = flux.get('loin'); if (x === true){ flow.set('heatingSwitch', "OFF"); flow.set('heatingState', "off"); }

msg.topic = "absent";

msg.payload = flow.get('away'); renvoyer le message;

Température cible

if (msg.topic === "mise à jour"){ msg.topic = "target_temperature"; msg.payload = flow.get('TempTarget'); renvoyer le message; }

if (msg.command === "SetTargetTemperatureRequest") {

flow.set('loin', false); msg.topic = "température_cible"; flow.set('TempTarget', msg.payload); }

if (msg.topic === "curseur") {

flow.set('loin', false); msg.topic = "température_cible"; flow.set('TempTarget', msg.payload); }

if (msg.command === "GetTemperatureReadingRequest"){}

renvoyer le message;

Comme vous le voyez, j'ai opté pour les variables de flux, afin que je puisse rappeler la valeur à tout moment. J'ai un flux de débogage qui lit essentiellement toutes les valeurs stockées.

  • 'TempAmbinet' - stocke la température actuelle
  • 'TempTarget' - contient la valeur cible temporaire
  • « feuille » – affiche la feuille si nécessaire
  • « absent » – affiche le statut d'absence si nécessaire
  • ‘heatingState‘– change la couleur de l’affichage
  • ‘heatingSwitch’ – contrôle l’état du relais.

Le défi était de s'assurer réellement que les informations sont mises à jour sur « mise à jour » et lorsqu'elles sont demandées via d'autres moyens (Alexa, etc.). C'est pourquoi vous verrez différentes conditions dans le JavaScript. Chaque fois que les valeurs sont mises à jour, envoyées à la variable de flux et le widget est actualisé.

Glissière

Les tests ont révélé qu'une mise à jour supplémentaire du curseur (le curseur pousse la température cible) est nécessaire. Slider envoie la charge utile (nombre) avec le sujet associé slider) lorsqu'il est déplacé. En plus de cela, je veux que le curseur se place dans la bonne position si plusieurs interfaces Web sont en place. Pour ce faire, toutes les 5 secondes, je mets simplement à jour la position du curseur sur une température cible actuelle.

NodeRED: Nœud de fonction – Mettre à jour le curseur'

msg.payload = flow.get('TempTarget');return msg;

Contrôle de relais

Le contrôleur de relais est simple, il prend (pour l'instant) deux entrées. Le vrai|faux d'Alexa et l'interaction qui suit une mise à jour de la variable de flux « commutateur de chauffage ». Il n'y a pas besoin d'une action instantanée, donc pour la simplicité, il fonctionne sur la même fréquence de mise à jour de 5 secondes que le reste du flux.

Le relais est connecté via MQTT. Le nœud publie des commandes ON|OFF dans le sujet:

sonoff/cmnd/POWER1

Le nœud de fonction accepte le vrai|faux d'Alexa et modifie également l'état de l'entrée en fonction de la variable de flux « heatingSwitch ».

NodeRED: nœud de fonction - relais de contrôle »

if (msg.command === "TurnOffRequest"){ msg.payload = "OFF"; renvoyer le message; }

if (msg.command === "TurnOnRequest"){

msg.payload = "ON"; flow.set('TempTarget', 21); renvoyer le message; } if (msg.topic === "update"){ msg.payload = flow.get('heatingSwitch'); } renvoie le message;

Intégration Alexa

C'est le premier appareil que j'ai eu à désactiver la "reconnaissance automatique". Au lieu de supposer automatiquement une réponse, j'en ai généré une car je veux pouvoir interroger la température définie. En principe, msg.payload = true|false indique si la requête a abouti, et les modèles trouvés ici font le reste. Si vous êtes nouveau sur Alexa et NodeRed, assurez-vous de lire ceci.

J'ai décidé de passer les accusés de réception séparément (je sais que ce n'est pas le meilleur moyen) pour pouvoir tout contrôler un peu mieux. Correctement, chaque réponse doit être donnée à la fin de la chaîne de commande. Le mien risque de ne pas renvoyer d'erreurs si celles-ci se produisent. Notez que pour être cohérent, je ne mets à jour que les variables, tandis que la boucle de rafraîchissement envoie les nouvelles valeurs au widget.

NodeRED: nœud de fonction - Traiter les réponses Alexa

// Quelle est la température cible du thermostatif (msg.command === "GetTemperatureReadingRequest"){ x =flow.get('TempTarget'); msg.extra = { "temperatureReading": { "value": x}, "applianceResponseTimestamp": new Date().toISOString()}; msg.payload = true; renvoyer le message; } // Réglez la température sur (pas inférieure à 10 ou supérieure à 30) if (msg.command === "SetTargetTemperatureRequest"){ if (msg.payload 30) { var range = { min: 10,0, max: 30,0 } msg.payload = false; msg.extra = plage; } else { msg.extra = { targetTemperature: { value: msg.payload } }; msg.payload = true; } renvoie le message; } // Activez-le if (msg.command === "TurnOnRequest"){ msg.payload = true; flow.set('loin', false); flow.set('TempTarget', 21); renvoyer le message; } // Désactivez-le if (msg.command === "TurnOffRequest"){ msg.payload = true; flow.set('loin', true); renvoyer le message;

Étape 4: Conclusion

Conclusion
Conclusion

Si vous exposez le tableau de bord NodeRED au WAN, l'ensemble du système de chauffage peut être contrôlé à distance. Je vous recommande de lire les articles suivants pour vous familiariser avec NodeRED et la sécurité NodeRED.

  • NodeRED pour les débutants
  • Sécurité NodeRED

De plus, si vous souhaitez être informé des mises à jour de ce projet, pensez à me suivre sur la plateforme de votre choix:

  • Instagram
  • Youtube

Et si vous avez envie de m'acheter un café ou de me soutenir de manière plus continue:

  • Pay Pal
  • Patréon

J'espère que vous avez apprécié le projet!

Conseillé: