Présentation du problème

L'auteur de l'article a récemment emménagé dans un appartement à New York et a constaté que la climatisation était contrôlée par des boutons analogiques montés directement sur l'unité. Pour éviter de devoir se lever pour ajuster la température, il a décidé de créer un système de contrôle intelligent en utilisant un moteur pas à pas, un ESP32 et une connexion MQTT.

Le fonctionnement du système

Le système est basé sur un moteur pas à pas qui tourne les boutons de la climatisation pour ajuster la température. Le moteur est contrôlé par un ESP32 qui communique avec un serveur Home Assistant via MQTT. Le serveur envoie des commandes au moteur pour ajuster la température en fonction de la température ambiante.

L'implémentation technique

La mise en œuvre du système a nécessité la création d'un montage mécanique pour relier le moteur pas à pas aux boutons de la climatisation. L'auteur a utilisé un coupler d'arbre et un bracket L pour fixer le moteur à l'unité de climatisation. Le système est alimenté par une alimentation électrique et utilise une connexion MQTT pour communiquer avec le serveur Home Assistant.

Les implications et les limites

Le système créé par l'auteur est une solution intelligente et économique pour contrôler la climatisation sans avoir à modifier l'unité elle-même. Cependant, il est important de noter que cette solution peut ne pas être applicable dans tous les cas, notamment si l'unité de climatisation est plus complexe ou si les boutons ne sont pas accessibles. De plus, la sécurité et la fiabilité du système doivent être prises en compte pour éviter tout problème.

import machine
import time

# Initialisation du moteur pas à pas
stepper = machine.Stepper(1)

# Connexion au serveur Home Assistant via MQTT
import mqtt
client = mqtt.Client()
client.connect('homeassistant', 1883)

# Boucle principale
while True:
    # Lecture de la température ambiante
    temp = read_temperature()
    
    # Envoi de la commande au moteur pour ajuster la température
    if temp > 25:
        stepper.step(100)
    else:
        stepper.step(-100)
        
    # Attente de 1 minute avant de répéter la lecture de la température
    time.sleep(60)