Comme je l’évoquais dans
mon article consacré à la box Tahoma, le monde de Somfy reste très fermé. Aujourd’hui, aucune API publique ne permet de consulter le statut de ses appareils ou de les commander. Pour ceux (comme moi) qui disposent d’une panoplie d’objets connectés, c’est embêtant de ne pouvoir les faire communiquer entre eux.
Tahoma disposant d’une application mobile, il apparait alors évident que des APIs soient exposées, ne serait-ce que pour cette utilisation. Un petit snif… et hop ! Voilà le contrôle des appareils possible 🙂
J’ai développe un petit plugin destiné à Node-Red (pour ceux qui ne connaissent pas, j’en ferai un article plus tard) pour contrôler ses assets Somfy connectés à la box Tahoma.
Avant de commencer
Une petite précision tout de même : ce plugin utilise les APIs
non officielles. C’est à dire que, du jour au lendemain, Somfy peut décider d’en modifier les spécifications et les contrats de services. Ce plugin pourrait alors se retrouver non fonctionnel du temps de l’adaptation.
Comment ça marche ?
Le plugin a pour vocation de vous permettre de
contrôler vos appareils plus qu’à n’en récupérer le statut en temps réel. Pourquoi ? Car un système de
polling est utilisé, et non une connexion socket.
Ainsi, lors de l’installation (voir plus bas), vous allez devoir saisir votre identifiant et mot de passe Tahoma (je précise que ceux-ci ne sont aucunement envoyés ou stockés sur un autre serveur que le votre : ils sont uniquement utilisés pour vous authentifier auprès du service).
Bref, le plugin va donc s’authentifier auprès de Somfy, et va ensuite exécuter à fréquence régulière des requêtes pour connaitre le statut de vos appareils. Lorsque vous allez émettre une action, la requête va être aussitôt envoyée à Somfy (ce qui permet d’obtenir des temps d’attente très faibles, voire inexistants).
Comment installer le plugin ?
Connectez-vous au serveur hébergeant votre instance de Node Red, puis lancez les commandes :
cd $HOME/.node-red
npm install node-red-contrib-tahoma
A noter que ce code suppose que votre config et vos plugins Node Red se trouvent dans ce répertoire.
Comment l’utiliser ?
Un schéma parle mieux qu’un long discours…

Voici l’exemple qui me sert à fermer les volets de ma chambre (en simplifié). Vous allez me demander : quel est le payload envoyé au node «
Chambre« , non ? Et bien tout dépend de l’aciton à réaliser. Par exemple, si je veux le
fermer en
vitesse réduite (on ne va pas réveiller tout le monde…) je vais envoyer :
{
"action": "close",
"lowspeed": true
}
Aussi simple que ça, nous avons une
action (« close » ou « open ») et un paramètre
lowspeed définissant si nous souhaitons activer le mode discret ou non.
Pour la liste complète des commandes, je vous laisser lire la
doc sur Github (en anglais).
Pour conclure
Je suis bien entendu preneur de tout retour d’expérience sur ce plugin (notamment pour allonger la liste des compatibilités). N’hésitez pas également à reporter tout petit bug (et même gros..) sur Github.
Les liens utiles
Bonjour,
J’ai du acheter une tahoma car tout mes volets sont en IO. Je n’ai pas fais gaffe en les achetant. Je lis pas mal de choses sur le contrôle au travers des api Somfy. Mais je n’arrive toujours pas à comprendre comment se fait la relation entre l’API et la box tahoma ?
Je voudrais bien essayer ce projet mais dans la description plus haut vous dites de rentrer les identifiants de la tahoma. Mais quand nodered se connecte il va sur les api de Somfy. Donc mes identifiants de la tahoma se retrouvent automatiquement chez Somfy ? Ou alors il manque une étape qui n’est pas expliquée ou que je n’ai pas compris.
Merci d’avance pour vos éclaircissements 😁
Bonjour 🙂
Tahoma est un outil (la box en fait) mise à disposition par Somfy. On ne peut malheureusement s’y connecter directement et sommes obligés de la contrôler via leur cloud. Ainsi, lorsque vous déposez vos identifiants dans votre installation node-red, ces derniers sont en effet envoyés à l’API Somfy (telle que le fait l’app mobile par exemple), pour dialoguer avec leur cloud qui se charge de faire le lien avec la box.
Bonne fin de journée 🙂
Bonjour,
Merci pour le développement de ce plugin, je viens de me m’apercevoir que mes volets sont IO et non RTS (dommage pour mon RFXCom…!). Sur le net je vois pas mal de choses autour de la box connexoon, est-ce que le node développé est aussi compatible avec cette box ? Si cela peux m’éviter d’investir dans une tahoma 🙂
Bonjour Damien,
Le module node-red utilise des APIs propres à TahomaLink pour le moment (non officiellement supportées d’ailleurs). Cependant, je suis en train de complètement réécrire ce plugin suite à la mise à disposition par Somfy d’une API pour les applications tierces (OpenAPI). D’après la documentation, ces APIs sont bien compatibles avec la box Connexoon. Je n’ai en revanche pas de date de release de la v2 du plugin pour le moment.
Bonjour Nicolas,
Merci pour le retour, je pense du coup m’orienter ver la Connexoon et garder le RFXcom pour la partie RTS. En regardant quelques forum d’autres système de domotique, certains utilisent déjà sans problème le plugin Tahoma pour leur connexoon 🙂
Bon courage dans ta mise à jour !
Bonjour,
J’ai récemment acheté une box TaHoma et rentre pas mal de difficulté à utiliser le plugin TaHoma sur Node Red.
Après quelques recherches j’ai trouvé que l’URL doit être du type http://xxx.xxx.xxx.xxx:1880/auth/somfy/callback, il semble manquer le « /auth » dans un tuto.
J’ai réussi à faire fonctionner le tout il y a quelques jours. Cela a bien marché durant 24h environ puis l’icone sur node red est passé en triangle rouge. J’ai cliqué sur le lien pour renouveler ma session et depuis je n’ai jamais réussi à me reconnecter 🙁 J’ai à chaque fois le message suivant:{« error »: »redirect_uri_mismatch », »error_description »: »The redirect URI provided does not match registered URI(s). »}
J’ai essayé avec un https:// mais cela n’a rien donné. Je suis à cour d’idées.
D’autres personnes rencontrent aussi le problème ? Y a t-il une solution par IFTTT de contrôler des scénarios ?
Merci d’avance pour vos idées !