Depuis qu’Apple a (un peu) ouvert HomeKit, il devient possible de trouver des appareils HomeKit à bas prix en bidouillant un peu. Je vous présente ici un montage avec un Sonoff Basic, qui vaut moins de 10 €.
La gamme Sonoff vient d’un constructeur chinois (Itead) et comprend pas mal de produits. Ce sont des appareils basés sur une carte ESP8266, avec un firmware (modifiable) qui permet la prise de contrôle en Wi-Fi. L’ESP8266 est une carte à bas prix (quelques dollars) qui prend en charge le Wi-Fi, quelques GPIO et dotée d’un firmware programmable. On peut simuler un Arduino, commander en Wi-Fi, etc. Pour mon petit projet, commander à distance la tente photo achetée pour Noël, j’ai choisi un simple Sonoff Basic.
Le Sonoff Basic est un petit appareil qui sert d’interrupteur : on branche l’entrée d’un côté, la sortie de l’autre, et un bouton sur le boîtier permet de couper (ou activer) le passage du courant. L’intérêt, c’est que ça se commande en Wi-Fi et – surtout – que ça vaut moins de 10 €.
Il existe quelques firmware compatibles HomeKit, ce qui permet de se passer de pont, mais empêche évidemment d’utiliser les fonctions d’origine. Je vais vous expliquer comment configurer le tout. Attention, c’est de la bidouille, donc il faut sortir le fer à souder.
La partie matérielle
Première chose, flasher la carte. Ouvrez le boîtier et – évidemment – débranchez la prise électrique. Sur la carte, vous verrez des traces pour un header : il faut souder les broches nécessaires (quatre). Ça prend quelques minutes avec n’importe quel fer à souder, et on trouve les rangées de broches facilement. Une fois que c’est fait, il faut quatre câbles Dupont et un adaptateur USB/série qui prend en charge le 3,3 V (TTL). J’en avais un en stock depuis des années, mais sinon ça se trouve pour ~5 € (moins si vous pouvez attendre). Petite astuce pour macOS : on trouve des pilotes pour les CH340 (les versions d’entrée de gamme) là. Il suffit donc de chercher CH340 TTL USB pour trouver un adaptateur.
La broche GND
du Sonoff va sur la broche GND
(ground
) de l’adaptateur, la 3.3V sur la 3.3V (logique), la TX
du Sonoff sur la RX
de l’adaptateur et la RX
sur la TX
.
Avant de brancher l’adaptateur USB sur le Mac, pressez le bouton du Sonoff, gardez-le enfoncé, et ensuite connectez l’USB. Après une ou deux secondes, relâchez le bouton.
La partie logicielle
Sous macOS, il faut l’esptool.py
, la bibliothèque pyserial
(sudo python -m pip install pyserial
devrait suffire) et trois fichiers : otaboot.bin
, rboot.bin
et blank_config.bin
. Ils proviennent du firmware RavenCore.
Une fois les fichiers récupérés, il faut d’abord effacer le firmware installé. Vous aurez besoin du nom de votre adaptateur USB/série. Le plus simple est la commande suivante : ls /dev/cu*
. Vous obtiendrez une liste avec un truc qui doit contenir usb
(dans mon cas /dev/cu.usbserial-230
). La commande va effacer le firmware.
python esptool.py -p /dev/cu.usbserial-230 erase_flash
Une fois que c’est fait, il faut débrancher l’USB et recommencer le branchement : on presse le bouton, on branche, on relâche le bouton.
Seconde étape, les fichiers du firmware. La commande est similaire.
python esptool.py -p /dev/cu.usbserial-230 --baud 115200 write_flash -fs 1MB -fm dout -ff 40m 0x0 rboot.bin 0x1000 blank_config.bin 0x2000 otaboot.bin
Une fois que le flashage est terminé, il faut débrancher l’USB et installer le Sonoff. Il ne s’allume pas directement, mais c’est normal.
La configuration
Une fois alimenté, et après quelques secondes, le Sonoff va émettre un réseau Wi-Fi sous le nom OTA-xxxx
(une partie de l’adresse MAC). Il faut se connecter dessus avec un appareil iOS (le plus simple) et attendre que la page se charge. Là, il faut sélectionner votre réseau Wi-Fi dans la liste, taper le mot de passe et ne pas presser Join.
Il faut d’abord remplir les deux champs avec les valeurs suivantes : RavenSystem/ravencore
et main.bin
(attention à la casse). Ensuite, vous pouvez presser le bouton Join. Ensuite, il faut attendre. La mise à jour peut prendre plusieurs minutes (le développeur indique jusqu’à 7 minutes) et ça ne marche pas à chaque fois. Personnellement, j’ai dû recommencer. La LED s’illuminera rapidement en cas de succès, mais si vous avez un moyen de savoir ce qui se connecte à votre réseau, ça peut aider (personnellement, la FingBox m’a prévenu).
La configuration HomeKit
Avant dernière étape, HomeKit. Dans l’application Maison, il faut choisir le petit +
en haut à droite, ajouter un accessoire et indiquer code absent ou impossible à scanner. Normalement, le Sonoff devrait apparaître dans la liste.
Ensuite, iOS va prévenir que ce n’est pas certifié (pas très grave) et demander le code : 021-82-017
.
Une fois le Sonoff ajouté, il fonctionne comme un interrupteur, avec le choix du type d’appareil : interrupteur (plus basiquement, une prise connectée), lumière ou ventilateur. Ça joue sur les commandes via Siri, notamment.
Maintenant, il fonctionne via HomeKit, simplement en se connectant en Wi-Fi.
La configuration manuelle
La configuration avancée passe par l’application Eve. Il faut chercher l’adaptateur Sonoff et passer l’option Show Setup à On (activé
) et attendre qu’il redémarre (c’est automatique après quelques secondes).
Ensuite, un nouveau périphérique virtuel HomeKit va apparaître : Setup.
Les options sont bien expliquées sur la page du projet, mais en gros :
• Board Type est à 1 par défaut (Sonoff Basic).
• Firmware Update est désactivé (on peut l’activer, ce qui va forcer une recherche et mettre à jour).
• Init State SW1 est à 0. C’est la configuration de l’interrupteur : 0 indique éteint par défaut, 1 indique allumé par défaut, 2 indique que l’interrupteur prend la valeur qui était activée avant le redémarrage et 3 inverse cette valeur. En cas de coupure de courant, c’est toujours intéressant de choisir le comportement, surtout pour une lampe.
Les autres options servent si vous avez installé un autre type de Sonoff, mais je vous laisse regarder la documentation. Après la configuration, il est conseillé de désactiver le tout.
Et voilà. Vous avez un interrupteur basique compatible HomeKit pour moins de 10 € (et un peu de travail).
Mais c’est super ça ! Merci de l’article !
Est-ce que tu sais si il est possible de le rendre (ou si il l’est déjà) compatible avec google assistant ?
Google Assistant, aucune idée, mais c’est compatible Alexa.
Il est compatible Google Home d’origine!
Bonjour,
Merci pour votre auto mais je bloque dès l’effacement du firmware.
Voilà ce que j’ai en retour :
esptool.py v2.6-beta1
Serial port /dev/cu.usbserial-14140
Traceback (most recent call last):
File « /usr/local/bin/esptool.py », line 4, in
__import__(‘pkg_resources’).run_script(‘esptool==2.6b1’, ‘esptool.py’)
File « /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py », line 742, in run_script
self.require(requires)[0].run_script(script_name, ns)
File « /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py », line 1667, in run_script
exec(code, namespace, namespace)
File « /Library/Python/2.7/site-packages/esptool-2.6b1-py2.7.egg/EGG-INFO/scripts/esptool.py », line 2938, in
_main()
File « /Library/Python/2.7/site-packages/esptool-2.6b1-py2.7.egg/EGG-INFO/scripts/esptool.py », line 2931, in _main
main()
File « /Library/Python/2.7/site-packages/esptool-2.6b1-py2.7.egg/EGG-INFO/scripts/esptool.py », line 2632, in main
esp = ESPLoader.detect_chip(each_port, initial_baud, args.before, args.trace)
File « /Library/Python/2.7/site-packages/esptool-2.6b1-py2.7.egg/EGG-INFO/scripts/esptool.py », line 258, in detect_chip
detect_port = ESPLoader(port, baud, trace_enabled=trace_enabled)
File « /Library/Python/2.7/site-packages/esptool-2.6b1-py2.7.egg/EGG-INFO/scripts/esptool.py », line 222, in __init__
self._port = serial.serial_for_url(port)
File « /Library/Python/2.7/site-packages/serial/__init__.py », line 88, in serial_for_url
instance.open()
File « /Library/Python/2.7/site-packages/serial/serialposix.py », line 268, in open
raise SerialException(msg.errno, « could not open port {}: {} ».format(self._port, msg))
serial.serialutil.SerialException: [Errno 16] could not open port /dev/cu.usbserial-14140: [Errno 16] Resource busy: ‘/dev/cu.usbserial-14140’
Savez-vous d’où peut venir le problème ?
Merci
C’est une erreur liée à Python, visiblement.
C’est quelle version de macOS ? Et quelle version de Python ? Si vous avez utilisé Brew, un « brew install python » peut aider
hello,
déjà, merci pour ton tuto,
y a un truc que j’ai pas compris,
tu rend compatible le sonoff homekit, mais tu parle de pouvoir garder le contact physique de ta lampe ce que j’aimerai faire. comment tu fais?
Merci d’avance
Je ne comprends pas la question.
le boîtier Sonoff remplace l’interrupteur physique, mais il a un bouton qui permet de faire passer le courant.
En fait je pensais prendre ça pour mettre sur des ampoules entre l’inter et l’ampoule. Mais je voulais pas perdre la fonctionnalité de l’interrupteur et pour allumer l’ampoule malgré l’inter fermé. Possible?
@Droopy22: effectivement, tu vas perdre ton interrupteur, le sonoff ne sera plus alimenté si tu coupes la lumiere avec ton interrupteur.
Il existe des interrupteurs pilotés mais peut-etre pas compatible avec Homekit directement.
Bonjour,
De mon coté, j’ai appliqué correctement le tuto, tout fonctionne parfaitement mais au bout d’une journée, le sonoff ne repond plus.
J’ai utilisé le firmware ravencore et Gruppio, meme probleme…
Une idée ? Je seche.
Merci en tout cas pour ce tuto au top.
Bonsoir,
Je bloque au moment d’indiquer le réseaux wifi au Sonoff, j’ai bien identifié mon réseau, tapé mon mot de passe et modifié l’OTA Repository et binaire.
Et cela ne s’est pas connecté. Maintenant quand je re sélectionne en wifi le réseau du Sonoff la page Se connecter ne montre plus que les réseaux et le champ pour le mot de passe mais plus rien sous le bouton Join, normale ?
Bonjour, étant Apple, je tourne sur homekit… peu de produits…chers
Sonoff semble la solution. Je ne lis pas l’anglais et ne sais que souder. Où puis-je trouver un bon cours en français.
Merci
Bonjour,
Je me permets de te contacter car je n’arrive pas à voire avec la commande dans le terminal l’usb avec le Sonoff ? Tu pense à un problème de driver mac ?
Et comment étre sur et certain que le module est en mode recovery ? j’ai plus de lumière aprés le branchement.
Merci beaucoup de ton aide
Alors, normalement tu peux tester juste avec l’adaptateur USB branché (sans rien derrière), il devrait apparaître dans les périphériques série.
Bonjour,
J’ai réussi à flasher le sonoff. je me connecte dessus et ajoute le champs OTA Repository. Mais après 12 minutes, toujours pas de clignotement vert… j’ai ressayé plusieurs fois sans succès..
Quelqu’un à une idée svp.
Bonjour,
Y’a t’il un endroit précis où placer les fichiers « otaboot.bin, rboot.bin et blank_config.biné ».
En vous remerciant.
Bonjour,
j’ai suivi le tuto (et recommencé à plusieurs reprises) … tout semble bien se passer jusqu’à la dernière étape:
-> après plusieurs minutes la led ne clignote pas, par contre j’ai bien le sonoff connecté à mon réseau!
-> je ne vois pas de nouveau accessoire dans homekit.
D’avance merci pour votre suivi.
salut, méme problème que les autres des derniers commentaires ! tout ce passe bien mais pas de nouvel appareil dans l’app maison et pas de led verte non plus ? y a t’il des fichiers plus récents existants ? suite mise a jour iOS ? …