Convertir vos thermomètres Xiaomi en Zigbee
Je pense que vous connaissez tous, ou du moins vous avez déjà vu et entendu parler des petits thermomètres connectés Xiaomi, les Mi Temperature and Humidity Monitor 2 ( LYWSD03MMC )
Dans cet article, nous allons vous expliquer comment convertir ces petits thermomètres qui sont de base en Bluetooth pour les passer en Zigbee et d’intégrer l’appareil dans Home assistant grâce à Zigbee2MQTT .
À propos du LYWSD03MMC
Le LYWSD03MMC est donc de base en BLE (Bluetooth Low Energy Sensor), qui intègre la puce Telink TLSR8258. Les puces Telink utilisées dans ces appareils peuvent être flashées avec un firmware personnalisé qui débloque plusieurs options.
Actuellement, le firmware personnalisé pvvx prend en charge les modèles suivants :
- Xiaomi (LYWSD03MMC)
- Xiaomi (MJWSD05MMC)
- Qingping (CGG1)
- Qingping (CGDK2)
- Xiaomi MiaoMiaoCe (MHO-C401)
- Xiaomi MiaMiaoCe (MHO-C122)
Le LYWSD03MMC est un modèle carré avec un petit écran LCD, alimenté par une petite pile CR2032, très commune et facilement trouvable.
Avec son firmware par défaut, il envoie via BLE une fois toutes les 10 minutes les informations captées.
Le firmware personnalisé Zigbee pour cet appareil a été développé par Ivan Belokobylskiy (devbis) et peut être flashé via OTA (Over-the-Air) ou avec un adaptateur USB-TTL.
Dans cet article, je vais vous expliquer la méthode OTA car elle est plus facile et ne nécessite pas le démontage de l’appareil et de soudure.
Conversion du Mi Temperature and Humidity Monitor 2 en Zigbee 3.0 (OTA)
Tout d’abord, vous devez #activer-experimental-web-platform-features dans Chrome, Opera ou Edge pour pouvoir obtenir l’adresse MAC de l’appareil. Copiez les liens suivants pour le navigateur que vous utilisez et collez-le dans la barre d’adresse :
- Chrome : chrome://flags/#enable-experimental-web-platform-features
- Opera : opera://flags/#enable-experimental-web-platform-features
- Edge : edge://flags/#enable-experimental-web-platform-features
Redémarrez votre navigateur.
Flashage du LYWSD03MMC
Avant de passer au firmware final il faut passer par un firmware de transition
Téléchargez le fichier de firmware de transition ATC_ota_40000.bin
1/Dans votre navigateur, accédez à https://atc1441.github.io/TelinkFlasher.html
2/Cliquez sur Connect
3/Sélectionnez votre appareil dans la liste des périphériques Bluetooth détectés et cliquez sur Jumeler
4/Attendez que la connexion soit établie
5/Appuyez sur « Do Activation » et attendez
6/Sélectionnez le fichier téléchargé plutôt en cliquant sur « Choisir un fichier«
7/Cliquez sur « Start Flashing » et attendez que le processus se termine
8/Retirez la pile du Xiaomi LYWSD03MMC et attendez 15 à 20 secondes. Réinstallez la pile et attendez que l’appareil redémarre.
9/Téléchargez le firmware Zigbee «z03mmc.bin » ici.
https://github.com/devbis/z03mmc/releases
10/Appuyez à nouveau sur Connect cette fois-ci, le nom de l’appareil sera différent, il commencera par « ATC »
11/Appuyez sur « Associer »
12/Cliquez sur Choisir un fichier et sélectionnez le fichier téléchargé précédemment « z03mmc.bin »
13/Appuyez sur Démarrer et attendez que le processus se termine
Le processus peut prendre entre 4 et 5 minutes.
Connexion du LYWSD03MMC à Zigbee2MQTT
- Créez un nouveau fichier dans le dossier zigbee2mqtt (à côté de configuration.yaml)
- Nommez le « lywsd03mmc.js »
- Ouvrez le fichier et copiez y le contenu ci-dessous :
const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const ota = require('zigbee-herdsman-converters/lib/ota');
const e = exposes.presets;
const definition = {
zigbeeModel: ['LYWSD03MMC'],
model: 'LYWSD03MMC',
vendor: 'Xiaomi',
description: 'Temperature & humidity sensor',
fromZigbee: [fz.temperature, fz.humidity, fz.battery],
toZigbee: [],
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
const bindClusters = ['msTemperatureMeasurement', 'msRelativeHumidity', 'genPowerCfg'];
await reporting.bind(endpoint, coordinatorEndpoint, bindClusters);
await reporting.temperature(endpoint, {min: 10, max: 300, change: 10});
await reporting.humidity(endpoint, {min: 10, max: 300, change: 50});
await reporting.batteryVoltage(endpoint);
await reporting.batteryPercentageRemaining(endpoint);
},
exposes: [e.temperature(), e.humidity(), e.battery()],
ota: ota.zigbeeOTA,
};
module.exports = definition;
- Enregistrez le fichier
- Ouvrez le fichier configuration.yaml de Zigbee2MQTT (PAS celui de Home Assistant)
- L’emplacement du fichier est zigbee2mqtt/configuration.yaml
- Activez le convertisseur externe en ajoutant les lignes suivantes :
external_converters:
- lywsd03mmc.js
Redémarrez Zigbee2MQTT
Retirez la pile du thermomètre, attendez quelques secondes puis réinstallez la pile, il entrera automatiquement en mode de jumelage. Si ce n’est pas le cas, vous pouvez utilisez un court morceau de fil électrique pour relier les contacts RESET et GND pendant 3 secondes.
Une fois que l’appareil sera découvert et jumelé dans Zigbee2MQTT, il sera identifié comme un EndDevice par le fabricant Xiaomi et le modèle LYWSD03MMC.
Il expose les entités suivantes dans Home Assistant via Zigbee2MQTT :
Si vous utilisez ZHA, une fois le firmware installé, vous n’avez plus qu’à appairer de manière standard votre appareil.
Retrouver notre article sur le thermomètre Zigbee tuya sur auto-domo.fr
bonjour
est il possible de l’integrer dans alexa?
merci
Ouah ! C’est un truc de fou !
J’attends l’intégration dans DeConz et je me lance.
Merci pour ce tuto !
L’auteur du hack parle pas mal de ses avancées sur son Twitter : https://twitter.com/atc1441
Bonjour, quand je clic sur do activation
Rien ne se passe! Il me marque Activating now, please wait…
Sans d’autres informations.
Quelq’un pourrait il m’aiguiller
Bonjour, les écrans se figent après quelques jours de flashage. Je voudrais soit flasher avec la nouvelle version soit revenir sur le firmware d’origine mais comment faire ? Je ne trouve plus les thermomètres dans la liste
J’ai le même problème toi !