Introduction
Ce projet concerne le contrôle de prises connectées utilisées avec des lampadaires dans mon salon. Je possède un kit de 3 prises avec une télécommande. La télécommande utilise des radio-fréquences (RF) pour envoyer les commandes aux prises. Le signal RF est le commun 433 Mhz.
Mon serveur domotique est hébergé chez moi et construit autour de Home Assistant. Mes périphériques principaux communiquent ensemble grâce à un broker MQTT.
Mon but est d’utiliser un Sonoff RF Bridge pour lier les « bêtes prises RF433 » (prises = réception uniquement, télécommande = envoi uniquement) à mon instance Home Assistant au travers du broker MQTT. De base le Sonoff RF Bridge utilise une application cloud de Sonoff appelée eWeLink. Je remplacerai ceci par un firmware open source: Tasmota.
Résumons ce dont nous avons besoin :
- Replacer le firmware (« micrologiciel ») Sonoff par Tasmota pour débrider tout le potentiel du boitier et l’intégrer localement à Home Assistant;
- Configurer Tasmota sur le réseau WiFi;
- Définir les touches de contrôle dans Tasmota;
- Intégrer Tasmota à Home Assistant.
Spoiler : Tout ça a échoué car la télécommande utilise des rolling codes alors que le pont ne supporte que des codes fixes. Ce que j’ignorais lors de l’achat du boitier. Je poste malgré tout ceci afin de debugger cela plus tard.
Ou plutôt, pas vraiment, car chaque bouton n’utilise que 4 codes. Toujours les 4 mêmes codes en boucle. C’est un point d’attention que j’ai afin de finir le boulot.
Flasher Tasmota
A propos de Tasmota
Il est plus simple de citer le site Tasmota :
Tasmota is an open source firmware for ESP8266 based devices created and maintained by Theo Arendst.
Everything began as Sonoff-MQTT-OTA-Arduino with a commit on 10. March 2016. by Theo Arendst. Its goal was to provide ESP8266 based ITEAD Sonoff devices with MQTT and ‘Over the Air’ or OTA firmware using Arduino IDE.
What started as a simple way to hack a cloud bound Sonoff Basic (one of the first cheap and accessible smart home devices in the market) into a locally controlled device has grown into a fully fledged ecosystem for virtually any ESP8266 based device.
Tout ce qui se trouve ici a débuté de la page Getting Started page du site Tasmota. Tasmota a une documentation très complète, voyez la page Commands.
Préparer le flash
Pour flasher un firmware, il faut accéder à l’interface série de la puce, habituellement cela requière un adaptateur USB-Serial et quelques fils à connecter sur le PCB.
D’abord, retirez les pieds en caoutchoucs et dévisser les vis, cela donnera accès à tous les points de connexion sur le PCB. Afin de réaliser ces photos, j’ai désoudé le gros LED vert qui illumine le logo SONOFF du boitier.
Le PCB a quelques headers :
- J4 (près du buzzer et du quartz) : 3V3, C2CK, C2D, GND
- J3 (entre la puce RF et le gros bouton à glissière) : GND, TX, RX, 3V3
- J5 (sous le J3, à gauche du ESP8285) : 3V3, GPIO5, GPIO4, GND
- J2 (à droite du gros bouton à glissière) : SDA, GND, TX, RX, 3V3
C’est le J2 qui nous intéresse car il expose les lignes TX et RX. Le trou carré identifie le 3V3.
Adaptateur USB-to-Serial (FTDI)
J’avais déjà un adapteur FTDI USB pour les Wemos D1 Mini, basés sur de l’ESP8266. C’est un simple circuit USB vers FTDI avec 4 cables Dupont collés ensemble.
Attention : Mon adaptateur a un jumper pour choisir entre 5V et 3.3V (3V3). Assurez vous de le positionner sur le 3V3.
Pour le flashage, vous devez connecter l’adaptateur FTDI de manière à ce que les lignes RX/TX soient croisées entre l’adaptateur et la carte.
Voici les connexions du FTDI vers le PCB:
- (brun) GND <> GND (brun)
- (rouge) RX <> TX (orange)
- (orange) TX <> RX (rouge)
- (jaune) 3V3 <> 3V3 (jaune)
Flashage avec Tasmotizer (Windows)
Une fois que tout est correctement câblé, cela devient vraiment facile. Les gens intelligents de Tasmota fournissent Tasmotizer, un outil à part entière autonome.
Le plus simple est de sélectionner l’image que vous voulez flasher sous « Select image > Release 8.2.0 » et la compilation par défaut de tasmota.bin.
Appuyez sur Tasmotize! et voilà.
L’appareil va redémarrer et démarrer un nouveau point d’accès WiFi appelé tasmota_xxxxx.
At that moment, remove the FTDI cable and you can put back everything into the box and power it using a USB cable. You’re done for the hardware and flashing part.
Configuration de Tasmota
Configuration initiale du WiFi
Avec votre smartphone ou un ordinateur, connectez-vous au réseau tasmota_xxxxx et configurez le WiFi à utiliser (AP1). Vous pouvez même définir un réseau WiFi secondaire (AP2).
A partir d’ici, connectez vous à l’appareil Tasmota depuis le portail par défaut : http://192.168.4.1/
Après l’installation du WiFi proprement dit, l’appareil se connecte au réseau approprié et obtient une adresse IP de celui-ci.
Configuration de Tasmota
Première connexion à Tasmota
Comme l’appareil n’a pas d’écran, vous devrez obtenir son adresse IP auprès de votre routeur domestique ou de l’administrateur du point d’accès. Dans mon cas, elle provient des ordinateurs connectés au routeur domestique du fournisseur d’accès (qui est une poubelle, j’envisage d’acheter un UniFi Security Gateway).
Connectez vous à cette IP depuis votre navigateur, par exemple sur http://192.168.0.3/
Ceci ouvre le serveur web intégré de configuration de Tasmota.
Configuration MQTT
Depuis l’accueil, allez sous Configuration > MQTT.
Après un nouveau redémarrage, vous commencerez à voir les messages de votre appareil sur le serveur MQTT. On s’en rapproche ! Vous pouvez également obtenir une vue depuis la console Tasmota. C’est très utile pour obtenir les codes RF envoyés par la télécommande.
Connexion à Home Assistant
Configurer les appareils
Setup manuel
Comme j’aime bien faire les choses moi-même, j’ai commencé par le faire manuellement. La façon habituelle, lorsque Home Assistant est en place et fonctionne, est de déclarer les nouvelles entités MQTT. Vous trouverez ci-dessous un exemple pour l’une des fiches d’alimentation (appelée « Eclairage – Meuble TV »).
switch: - platform: mqtt name: "Eclairage - Meuble TV" command_topic: cmnd/tasmota_B2E86C/rfcode availability_topic: "tele/tasmota_B2E86C/LWT" payload_available: "Online" payload_not_available: "Offline" payload_on: "#C80E70" payload_off: "#CCCC10" optimistic: true
Il y a trois choses importantes à noter :
- Mon pont RF Sonoff est connu sous le nom de tasmota_B2E86C ;
- Le code RF pour la prise ON est C80E70;
- Le code RF pour le plug OFF est CCCC10.
NB : Les codes RF sont ce que je pensais qu’ils étaient. Comme mon profil utilise des sortes de rolling codes, cela ne fonctionnera pas, mais la configuration est correcte, pour autant que je sache.
Vous devez répéter le même bloc d’entités pour chaque fiche d’alimentation que vous souhaitez déclarer. Ainsi, pour une télécommande avec 4 boutons On/Off (A, B, C et D) mais seulement 3 prises de courant, vous obtiendrez 3 blocs pour le MQTT. Chaque bloc a 2 codes RF (On & Off).
Découverte automatique
Tasmota et Home Assistant peuvent également utiliser la découverte automatique. Pour cela, vous devez activer un ensemble d’options spécifiques. Je n’ai pas encore eu l’occasion de l’essayer. Voici un peu de lecture :
- https://community.home-assistant.io/t/sonoff-rf-bridge-strategies-for-receiving-data/108181
- https://community.home-assistant.io/t/help-with-sonoff-tasmota-rf-bridge-switch-config/85949
- https://tasmota.github.io/docs/Home-Assistant/
- https://community.home-assistant.io/t/tasmota-sonoff-automated-discovery-in-hass/126131
Conclusion
J’ai vraiment apprécié ce projet (raté) car j’ai appris de nouvelles choses, c’est pourquoi j’aime bien pirater des trucs.
- J’ai pu découvrir le micrologiciel Tasmota, qui a l’air incroyable et constitue un choix de premier ordre pour mes autres prises WiFi (article à suivre) ;
- Le matériel Sonoff est un plaisir à hacker, il est convivial et reçoit beaucoup de soutien de la part de la communauté ;
- Home Assistant n’est pas toujours facile à installer, mais cela devient intéressant maintenant que j’ai plus que des appareils de chauffage.
Références
Et encore un peu plus de documentation:
- https://1technophile.blogspot.com/2018/02/adding-infrared-emitter-to-sonoff-rf.html
- https://github.com/arendst/Tasmota/wiki/Sonoff-RF-Bridge-433 (cache)
https://hometechhacker.com/sending-rf-signals-sonoff-rf-bridge/