Ce projet permet de connecter une sonnette Tuya à Home Assistant via MQTT et de piloter une gâche électrique (ou tout autre DP Tuya) depuis HA.
Le script Python :
- surveille un DP Tuya pour détecter les événements (ex. bouton, PIR) et publie
ON/OFFsur un topic MQTT, - écoute un topic MQTT pour recevoir des commandes (
UNLOCK,LOCK) depuis Home Assistant et actionner un DP pour la gâche.
FROM python:3.9-slim
WORKDIR /app
COPY doorbell.py /app/doorbell.py
RUN apt-get update && \
apt-get install -y mosquitto-clients && \
rm -rf /var/lib/apt/lists/*
# --- Copier les fichiers de l'application ---
COPY requirements.txt /app/
COPY doorbell.py /app/
# --- Installer les dépendances Python ---
RUN pip install --no-cache-dir -r requirements.txt
# --- Commande par défaut ---
CMD ["python3", "doorbell.py"]docker-compose.yml
version: "3.9"
services:
ha-tuya-mqtt:
container_name: ha-tuya-mqtt
image: python:3.9-slim
working_dir: /app
#volumes:
# - /mnt/docker/ha-tuya-mqtt:/app #External storage if needed
command: sh -c "apt update && apt install mosquitto-clients -y && pip install --no-cache-dir -r requirements.txt && python3 doorbell.py"
restart: unless-stopped
environment:
# --- Config Tuya ---
DEVICE_ID: "ID_TUYADOORBELL"
DEVICE_IP: "@IP_DEVICE"
LOCAL_KEY: "GET_FROM_TUYA_IOT"
DEVICE_VERSION: "3.3" # En fonction de la version du device
# --- Config MQTT ---
MQTT_BROKER: "@IP_MQTT"
MQTT_PORT: "1883"
MQTT_TOPIC: "sonnette"
MQTT_COMMAND_TOPIC: "sonnette/commande"
# --- DP Tuya ---
DP_EVENT: "185" # DP surveillé pour déclencher l’événement lors de l\'appuie sur la sonnette
DP_GACHE: "148" # DP qui commande la gâcheLe conteneur va :
se connecter à l’appareil Tuya,
surveiller DP_EVENT et publier ON/OFF sur MQTT_TOPIC,
écouter MQTT_COMMAND_TOPIC pour activer/désactiver DP_GACHE.
Variable Description
DEVICE_ID ID Tuya de l’appareil
DEVICE_IP IP locale
LOCAL_KEY Clé locale Tuya
DEVICE_VERSION Version Tuya 3.3
MQTT_BROKER Adresse du broker MQTT
MQTT_PORT Port du broker MQTT 1883
MQTT_TOPIC Topic des événements (ON/OFF) sonnette
MQTT_COMMAND_TOPIC Topic des commandes depuis HA sonnette/commande
DP_EVENT DP surveillé pour détecter l’événement 185
DP_GACHE DP pour actionner la gâche 101
Sensor MQTT
mqtt:
- binary_sensor:
device:
name: Sonnette
name: Bouton
payload_off: 'OFF'
payload_on: 'ON'
state_topic: sonnetteLock MQTT
mqtt:
- lock:
command_topic: sonnette/commande
device:
name: Sonnette
name: Gache
payload_off: LOCK
payload_on: UNLOCK
state_topic: sonnette/commandeAppui sur le bouton / événement DP → publication ON puis OFF sur MQTT_TOPIC.
Home Assistant peut afficher cet événement ou l’utiliser dans des automatisations.
Commande depuis Home Assistant (UNLOCK/DEVERROUILLER) → action DP Tuya pour déverrouiller la gâche