Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Passerelle ZWave – Ethernet (détournement de la ZiGate-Ethernet part 2)

Nous l’avons vu dans l’article précédent, la ZiGate-Ethernet est un « couteau suisse » de la domotique. Initialement destiné à être une passerelle PiZiGate Réseau, il donne la possibilité d’être compatible aussi avec ses concurrents. Par exemple, vous pouvez désormais créer une RaspBee Ethernet si vous le souhaitez.

Toujours en gardant le firmware par défaut, nous allons voir comment créer une passerelle ZWave / Ethernet.

Vote :

 

Utilisation de OpenZWave

Pour résumé, le ZWave est un protocole radio qui utilise la fréquence 868Mhz (en Europe) dédié à la domotique. Il y a quelques temps, il semblait être le principal canal de communication pour la domotique chez les particuliers mais l’évolution du ZigBee a freiné son déploiement.

Pourtant réputé fiable, il n’a pas su prendre le tournant pour s’imposer principalement à cause des tarifs élevés des appareils, son évolution lente et sa licence contraignante. Cependant, il reste encore très répandu et beaucoup de maisons sont encore pilotés avec les dispositifs ZWave.

Côté matériel, il existe des clefs USB mais aussi des modules pour Raspberry Pi. Dans notre cas, nous allons utilisé le module Razberry pour RPI piloté par la librairie OpenZWave.

Razberry_module

J’utilise une vieille version du Razberry mais le principe est le même pour les nouvelles versions.

Pour piloter le module, le principe est toujours le même, le contrôleur ZWave reçoit et envoie les commandes par l’intermédiaire d’un port série (UART TTL).

Cependant, comme il n’existe pas à ma connaissance de passerelle ZWave Ethernet, les outils domotiques n’ont pas été développé pour permette d’attaquer une adresse IP et port TCP.

C’est pour cette raison qu’il est nécessaire de faire des modifications côté box domotique.

Paramétrage

Côté ZiGate-Ethernet

Par défaut, tout est paramétré correctement sur la ZiGate-Ethernet.

Il suffit juste de brancher correctement le module ZWave sur les GPIOs comme suit : (Comme sur un Raspberry Pi)

ZiGate-Ethernet_ZWave

Ensuite, vous pourrez alimenter, brancher sur le réseau et suivre le tutoriel pour le paramétrage du réseau.

Côté Box domotique

C’est dans cette partie que cela se corse. En effet, que ce soit sur Jeedom ou domoticz, il n’y a pas d’options pour utiliser le ZWave au travers d’une adresse IP. Seul le paramétrage d’un port série est possible.

L’objectif va être alors de créer un port série virtuel qui redirigera le trafic vers l’adresse IP et le port de la ZiGate-Ethernet.

Connectez-vous sur votre box domotique (sous linux) en ligne de commande:

Installation de socat

socat est un outil permettant de manipuler des sockets. Dans notre cas, il permet de faire le lien entre des sockets et un port série. Tous les flux (de manière bidirectionnelle) entre le port série virtuel et un port TCP seront alors relayés.

$ sudo apt-get install socat

Une fois installé, il suffit de lancer la commande suivante :

$ (sudo socat pty,link=/dev/ttyUSB2,user=pi,group=dialout,mode=660,ignoreof,waitslave tcp:<IP_de_la_ZiGate-Ethernet>:9999) &

/dev/ttyUSB2 : doit être un port non utilisé
<IP_de_la_ZiGate-Ethernet>correspond à l’adresse IP de la ZiGate-Ethernet

Une fois la commande lancée, il suffit d’aller sur Jeedom ou Domoticz par exemple.

Jeedom

Pour Jeedom, il faut installer le plugin Z-Wave.

zwave

Ensuite, il faut aller dans le panneau : Configuration

Jeedom_configuration

Sélectionner le port Z-Wave (celui que vous aurez créé) puis sauvegarder

razberry_jeedom

Il suffit ensuite de procéder comme pour une clef ou module classique.

Domoticz

Dans le cas de domoticz, il faut aller dans le menu Configuration –> Matériel puis sélectionner le type openZWave USB

domoticz_openzwave

Enfin sélectionner le port série /dev/ttyUSB2 (port virtuel de socat) puis cliquer sur Ajouter

domoticz_razberry

Une fois ajouté, il est possible d’aller dans la configuration et observer que la communication se fait.

Conclusion

Bon bin voilà, après la gestion des modules ZigBee, il est désormais possible de piloter un contrôleur ZWave à travers Ethernet.

L’installation côté ZiGate-Ethernet est assez simple. Seule une petite modification est nécessaire sur les plateformes domotiques. Peut-être que les différents développeurs feront une petite modification pour permettre l’accès au ZWave directement par TCP/IP 😉

La ZiGate-Ethernet n’a pas encore délivrée tous ses secrets. Dans un prochain article, je pense que je ferai un tutoriel pour une intégration ESPHome.

A bientôt !

Détournement ZiGate-Ethernet / part 1 – Coordinateurs ZigBee

On me demande souvent de faire plus d’articles sur les détournements de produits ou hacks  électroniques/domotiques. En effet, c’est toujours sympa de voir qu’un objet peut avoir d’autres fonctions que celle pour laquelle il a été prévu.

Cette fois-ci, c’est encore plus particulier car c’est une série de  « détournements » d’un produit que j’ai moi-même conçu. (Du coup, je ne sais pas si on peut appeler ça un détournement ;))

Vote :

 

Présentation ZiGate-Ethernet

La ZiGate-Ethernet est un produit fraichement sorti qui permet de transformer une PiZiGate en ZiGate sur Ethernet ou WiFi.

Pour résumé, la ZiGate-Ethernet est née d’une forte demande de la communauté de gestion du protocole ZigBee à travers un câble réseau. En effet, la praticité de la ZiGate-WiFi (possibilité de positionner son contrôleur ZigBee stratégiquement) a beaucoup plu.

Cependant, certains utilisateurs cherchaient plus de fiabilité et une réactivité à toute épreuve. En effet, dans certains cas, le WiFi et le ZigBee ne font pas forcément bon ménage. (Pensez à changer de canal WiFi ou ZigBee si vous avez des perturbations).

Du coup, afin de mêler tous les avantages, j’ai décidé de suivre les conseils de la communauté et j’ai développé la ZiGate-Ethernet. ZiGate-ethernet-definition

Description de la ZiGate-Ethernet

Elle est munie d’un ESP32 avec 16 Mo de Flash qui pilote la partie Ethernet avec un LAN8720 (très utilisé sur les anciens modèles de Raspberry Pi).

L’objectif a été d’utiliser le même « form factor » que le Raspberry Pi 4 B afin de permettre d’utiliser les boitiers compatibles.

De plus, je me suis dit qu’utiliser les mêmes fonctions (alimentation, masse et IOs) que le Raspberry Pi serait une bonne idée. Du coup, le GPIO de la ZiGate-Ethernet correspond à celui du RPi. GPIO_zigate_ethernet Cette configuration permet donc d’utiliser/recycler une PiZiGate pour la transformer en ZiGate-Ethernet.

Pour avoir plus d’informations détaillés, vous pouvez aller sur les pages suivantes :

https://zigate.fr/documentation/descriptif-de-la-zigate-ethernet/

Firmware d’origine : https://github.com/fairecasoimeme/ZiGate-Ethernet

Maintenant que vous avez une idée de comment fonctionne une ZiGate-Ethernet voici comment la « détourner ».

Utilisation avec Deconz / Elelabs / TI

Le premier « détournement » est bien entendu de tester les produits concurrents à la ZiGate. Du coup, je me suis procuré 3 produits différents (technologies différentes) pour les tester.

  • le Raspbee I (Deconz)
  • le ELR023 (Elelabs – EZSP)
  • le CC2652P2 (TI – Z-stack3.x)

pizigate_elelabs_deconz_cod.m ZiGate-Ethernet-Raspbee ZiGate-Ethernet-ELR023 ZiGate-Ethernet-CC2652P2 ZiGate-Ethernet-PiZigate

L’objectif est d’utiliser le firmware d’origine de la ZiGate-Ethernet pour voir si cela fonctionne et rendre accessible par Ethernet une RaspBee par exemple. (la RaspBee 2 n’a pas été testée mais il n’y a pas de raison que cela ne fonctionne pas).

Pour effectuer les tests, j’ai utilisé 2 plateformes domotiques : Jeedom et Home-Assistant.

En effet, c’est deux plateformes utilisent la technologie Zigpy permettant de rendre compatible les technologies ZigBee.

Rappel : L’objectif n’est pas de donner un avis sur les plateformes mais juste valider le fonctionnement du détournement.

Avant de passer à l’étape suivante, il faut que vous ayez paramétré votre ZiGate-Ethernet pour qu’elle soit accessible à partir d’une adresse IP. Du coup, suivez le tutoriel prévu.

Paramétrage Jeedom

Pour piloter la ZiGate-Ethernet, il faut installer le plugin ZigBee  plugin_zigbee Une fois installé, il faut utiliser les paramétrages suivant selon votre module zigbee.

NB : sur les captures d’écrans, c’est le « Contrôleur 2 » car sur le « Contrôleur 1 », il y a bien entendu une ZiGate. 😉

NB2 : l’adresse IP : 192.168.0.45 correspond à l’adresse IP de ma ZiGate-Ethernet. Bien entendu, il faut que vous mettiez votre propre adresse IP.

CC2652P2 RPi serial

Jeedom_config_cc2652P2

Deconz RaspBee I ou II

jeedom_raspbee_config

ELR023 elelabs

Jeedom_elr023_config Une fois paramétré, il suffit de relancer le daemon et vous verrez dans les logs le dialogue de Jeedom avec votre coordinateur ZigBee.

Ensuite procédez, comme vous avez l’habitude, pour piloter vos appareils ZigBee.

Paramétrage HomeAssistant

Pour Home-Assistant, il faut installer l’intégration ZHA zha_nouvelle_integration Ensuite, il faut rentrer les paramètres manuels zha_enter_manually Puis sélectionner le type radio (choisir le bon) ZHA_choose_radio_type Selon le type de radio, la configuration diffère mais un seul paramètre est à changer : le périphérique série ZHA_parametrage_port Comme sur la capture d’écran et peu importe le type radio, il faut rentrer dans le chemin du port série : socket://<IP_de_la_ZiGate-EThernet>:9999

Ensuite, il suffit de cliquer sur « soumettre » pour valider l’installation.

Une fois, effectué, vous aurez l’intégration ZHA présente sur votre dashboard et vous n’aurez plus qu’à procéder normalement pour gérer vos appareils ZigBee.

Spécificités selon les modules ZigBee

Pour faire fonctionner les différentes plateformes, il suffit d’utiliser le firmware de la ZiGate-Ethernet.

Ce firmware a été conçu pour fonctionner directement sorti du carton avec une PiZiGate. Cependant, pour certains modules, il est nécessaire de changer un paramètre.

Deconz RaspBee I

Par défaut, la ZiGate-Ethernet est configurée pour dialoguer avec le port série à 115200 bauds.

Cependant, la RaspBee, communique à 38400 bauds.

Il faut donc modifier la vitesse du port série de la ZiGate-Ethernet.

Pour cela, il faut utiliser son navigateur préféré et lancer la page de configuration : http://<IP_de_la_ZiGate_Ethernet

Ensuite il faut aller dans la page de configuration du port série :

Config_serial_zigate_ethernet Puis changer la vitesse par défaut config_serial_zigate-ethernet

ELR023 elelabs

Pour cette carte, qui est très bavarde, ce n’est pas la vitesse du port série qu’il faut changer mais il peut arriver qu’il y ait des coupures de connexions (reset by peer).

Pour corriger le problème, il suffit de couper toutes connexions web vers la ZiGate-Ethernet ou cocher l’option « Disable web server when ZiGate is connected » qui se trouve dans Config –> General

config_general_zigate-ethernet Cette option, coupera l’interface Web lorsque celle-ci sera connecté à votre plateforme domotique.

Conclusion

Nous venons de voir qu’il est possible d’utiliser tous les modules ZigBee compatible Raspberry PI avec la ZiGate-Ethernet et son firmware par défaut. Cependant, il est possible d’aller encore plus loin. Le prochain « détournement » concernera le ZWave.

En effet, à ma connaissance, il existe pas ou peu de passerelle ZWave – Ethernet et pourtant, à l’aide d’un Razberry, nous verrons qu’il est possible de piloter le ZWave (open zwave) par Ethernet à l’aide de la ZiGate-Ethernet.

PS : Pour ceux qui diront que … gnagnagna … utiliser une Raspberry Pi directement est une meilleure solution et moins couteuse, vous oubliez l’instabilité et la lourdeur d’un système d’exploitation, vous avez surement plein d’alimentations 5V- 3A et votre budget en carte SD est surement illimité 😉

PS2 : Je plaisante bien entendu 😉 chacun voit midi à sa porte.

A très bientôt !

L’importance du maillage (mesh) en ZigBee

Dans ce billet, comme le titre le stipule, je vais tenter grâce à mon expérience personnel de montrer l’importance du maillage en ZigBee.

En effet, j’ai déménagé il n’y a pas longtemps dans une nouvelle maison qui n’était, bien entendu, pas équipée de système de domotique. Parmi les besoins les plus urgents, il y a la centralisation des volets roulants.

Dans la maison précédente, qui était en construction, j’ai pu facilement câbler grâce à des modules Yokis. Rien ne vaut le filaire ! Cependant, quand c’est de la rénovation, on change forcément de stratégie.

Le ZigBee étant mon protocole radio préféré (on se demande pourquoi ;)), j’ai donc décidé, de domotiser les 10 volets roulants électriques de la maison.

Vote :

 

Le point fort du ZigBee

Sur ce blog nous avons déjà parlé énormément du protocole radio ZigBee avec ces astuces, ces avantages et certains inconvénients.

Cependant, même si nous avons eu l’occasion d’en parler, nous n’avons pas assez insisté sur une fonction (présente dans d’autres technologies radios) qui donne tout son sens au ZigBee mais surtout corrige en partie ses défauts.

Le maillage (mesh), dans sa généralité, permet tout d’abord de renforcer les liens radios entre le concentrateur (coordinator) et les appareils (capteurs, interrupteurs, lumières etc…). Ce système donne la possibilité à un appareil d’être accessible et/ou de pouvoir atteindre son but en utilisant le meilleur chemin.

Structure-of-typical-ZigBee-mesh-network

Comme on peut le voir sur la schématique, il existe plusieurs routes pour atteindre le coordinateur (coordinator) et de même dans l’autre sens.

Il faut aussi savoir que la création du maillage en ZigBee est automatique et que vous n’aurez absolument pas la maîtrise des différents liens. La création du maillage est aussi dynamique. En effet, le maillage change en fonction de plusieurs paramètres dont la qualité, et comme ce sont des choses qui évoluent, le maillage évolue… lentement … mais surement.

Ce que l’on peut aussi observer, c’est qu’il existe 2 autres types d’appareils (devices) en ZigBee, les routeurs et les « end devices ».

Dans le maillage ZigBee, seuls les routeurs sont en mesures de transférer l’information et donc d’être un maillon du réseau. En général, tous les appareils sur secteur sont en mesure d’avoir cette fonction. Il arrive parfois que ce ne soit pas le cas (assez rare). Par contre, aucun appareil sur pile n’est en mesure d’accroître le maillage (en tout cas, à ma connaissance).

Du coup, la première chose à penser lorsque l’on a décidé de se lancer dans le ZigBee, c’est de trouver les éléments indispensables au maillage. Ils devront être sur secteur (obligatoirement) et répartis sur l’ensemble de la maison pour bien couvrir et renforcer le réseau.

Le meilleur moyen de quadriller sa maison

Comme dit précédemment,  l’urgence pour moi était de domotiser les volets de la maison. En effet, il est évident que la centralisation de 10 volets me paraît nécessaire pour un fainéant comme moi ;). (La domotisation des volets apporte bien sûr d’autres atouts ).

Commencer par les volets est aussi une très bonne manière de créer un réseau ZigBee performant. En effet, une maison (SI elle dispose de volets roulant électriques) est logiquement entourée d’ouvrants et donc de volets. Ce qui permet de disposer d’un routeur ZigBee sur toute la périphérie de la maison.

Voici le schéma (grossier) de ma maison :

schema_domo_maison

En Orange : Les volets roulants
En Rouge : un routeur ZigBee
En bleu : Coordinateur ZigBee

En débutant donc avec ce principe, le réseau ZigBee sera déjà correctement maillé pour accueillir des capteurs dans la maison mais aussi dans le jardin.

Comme rien n’est parfait, il faudra peut-être prévoir d’autres routeurs ZigBee (type « répéteur Ikea ») pour renforcer le maillage ou couvrir des zones d’ombres.

A mon sens, la domotisation des volets roulant reste le meilleur moyen de créer « naturellement » un réseau ZigBee avec un maillage  efficace.

Concrètement

Maintenant que mes objectifs sont claires, il faut trouver les bons appareils pour domotiser le tout.

Mes volets roulant électriques sont filaires et pilotés avec un interrupteur Schneider.

interrupteur-volet-roulant_1

J’ai cherché le moyen le moins couteux et le moins intrusif pour que tout fonctionne même si la domotique tombe en panne.

Pour cela, 2 moyens possibles… soit changer tous les interrupteurs, soit rajouter un micro module.

Mon choix s’est finalement porté sur un micro module car je n’ai pas trouvé d’interrupteur assez joli (pour madame) ou trop cher (10x interrupteurs Legrand, c’est une somme ;))

J’ai donc choisi ce micromodule :


Sur Amazon pour les plus pressés

ou

Sur Aliexpress pour les avoir moins cher

Ce micro module s’interface très bien avec l’interrupteur et possède toutes les fonctionnalités nécessaires :

micro module volet zigbee

Fonctionnalités ZigBee :

  • Monter
  • Stop
  • Descendre
  • Position (en pourcentage)
  • Etat

L’appairage se fait en mettant votre coordinateur ZigBee préféré en mode « Appairage » et avec une aiguille de laisser appuyer 5 sec sur le bouton présent dans le petit trou en haut à droite du module.

Bon comme tout n’est jamais rose, ce micro module a des inconvénients.

Inconvénients

Le micromodule prend forcément de la place et si vous avez des boites d’encastrement au chausse pieds et un espace restreint, cela se révèle très compliqué d’insérer le module. Alors qu’avec un interrupteur ZigBee Legrand, vous n’avez pas ce souci.

L’autre particularité de ce micro module est qu’il faut le calibrer. En effet, par défaut, les commandes « monter » ou « descendre » sont actives 10 sec puis s’arrêtent. Donc si vous avez des petits volets, souvent cela suffit mais pour des volets de portes-fenêtres ou baies vitrées, ce n’est pas suffisant.

Calibrage du micro module

Voici un petit tutoriel pour calibrer ces micro modules. Pour cela, j’utilise une ZiGate (forcément) et l’outil de test ZWGUI (que vous pouvez retrouver sur le site ZiGate.fr)

En effet, avant d’intégrer tous les modules dans la domotique, j’ai préféré les calibrer un par un car le calibrage est une fonction spécifique et les box domotiques ne sont pas toutes en mesure d’organiser la calibration.

Pour ce faire, j’ai donc choisi un volet, démonté l’interrupteur et branché les modules (un par un).

J’ai branché une ZiGate puis lancé l’outil ZWGUI.

micromodule_volet_zigbee

Pour l’outil de test ZWGUI, il faut suivre le test classique présent sur zigate.fr  et aller jusqu’à la fin. Vous serez en position d’appairage « Permit Join »

Quand la ZiGate clignote, il suffit d’appuyer 5 sec (à l’aide d’une aiguille) sur le bouton dans le petit trou en haut du module. Le module va clignoter bleu puis s’éteindre. Côté ZWGUI, vous aurez les messages de « Device Announce » qui vont apparaître :

ZWGUI_appairage

Une fois le module appairé, on vérifie dans quel mode il est configuré. Pour cela, on va faire une commande « Read Attribute » (onglet Général)

ZWGUI_Read

La commande va interroger le cluster « Window covering » 0x0120 sur l’attribut 0xF000

ZWGUI_Read_response

Voici la réponse 0x8100 qui montre une valeur à 0x01 qui stipule que le module est en mode « production ».

Du coup, pour le passer en mode calibration, il faut écrire 0x00 dans cet attribut. Pour cela, il faut utiliser la commande « write attribute ».

ZWGUI_Write_0

Une fois effectuée, on peut s’apercevoir après une nouvelle lecture que le mode calibration est bien actif.

ZWGUI_Read_response_0

Maintenant, nous sommes prêt pour la calibration du module. Voici la marche à suivre:

Il faut tout d’abord fermer le volet. Pour cela, il faut utiliser la commande « Window Covering »et entrer la valeur 0x01

command_1

Quand le volet est totalement fermé, il faut relancer la commande avec la valeur 0x02

command_2

Ensuite ouvrir le volet complètement (valeur 0x00)

command_0

Et relancer la commande avec la valeur 0x02 (STOP) lorsque le volet est complètement ouvert.

command_2

Une fois que tout est ok, il suffit de remettre le module en mode production :

ZWGUI_Write_1

Et voilà, le module est calibré.

Même si cette calibration est un peu laborieuse (surtout parce que les box domotiques n’ont pas encore intégré cette fonctionnalité), elle apporte une certaine sécurité pour les moteurs de volets roulant mais aussi permet de pouvoir gérer la position du volet (pourcentage du temps d’ouverture ou fermeture) et ce dernier point est plutôt très utile.

Conclusion

Le maillage ZigBee, dans une maison, est vraiment primordiale et permet d’avoir une domotique le plus fiable/performante. Personnellement, je trouve que commencer par la domotisation des volets est une très bonne solution, un bon point de départ pour créer un réseau ZigBee.

Chaque maison et environnement est bien entendu différent et il peut y avoir d’autres alternatives. Cependant, je pense que l’infrastructure d’une maison est globalement la même et qu’énormément de maisons sont conçues comme la mienne, à savoir des volets roulant qui entourent la maison.

Voici un exemple de maillage de ma maison à un instant T

schema_domo_maison_maillage_3

Vous l’aurez compris, j’ai une nouvelle maison et du coup, il y aura d’autres articles sur les modifications et sa domotisation.

A bientôt !

Hack -Détournement de la passerelle Lidl silvercrest

Alors au départ, je voulais faire un article de tests sur les nouveaux produits Lidl dans la gamme domotique. Cependant, il en existe tellement et n’ayant pas la réactivité nécessaire, j’ai changé mon fusil d’épaule.

D’autant plus que tous les produits Lidl smart home silvercrest sont compatibles ZiGate ou avec les autres passerelles universelles.

Du coup, je suis plutôt parti sur un détournement de la passerelle.

Transformer la passerelle Lidl en ZiGate Ethernet !

L’objectif est bien entendu de faire POC (Proof Of Concept), de s’amuser mais en même temps de répondre à un besoin personnel.

 

Démontage et analyse

La première chose, quand on veut faire un détournement d’un objet, c’est de faire une analyse (ou reverse engineering) et pour cela, pas le choix, il faut démonter l’appareil pour observer ce qu’il contient.

Donc la première étape c’est de démonter la passerelle.

Le démontage n’est pas aisé, pas de vis mais des clips. Il faut alors « déclipper » le boitier mais très compliqué sans abimer (il y a un peu de colle je pense). Les non soigneux, s’abstenir 😉

Demontage_boitier_lidl

Une fois le capot enlevé, on va pouvoir analyser rapidement ce qu’il y a.

Demontage_lidl__zigbee_face

Commençons par la partie face :

En bleu : C’est le module Zigbee de chez tuya. le TYZS4 à base de Cortex-M4 EFR32MG1B232. Il permet de communiquer avec les objets en Zigbee.

En rouge : C’est le cerveau de la passerelle. Le Realtek RTL8196E. C’est lui qui va piloter le module Zigbee (par des commandes sur l’UART) et permettre la gestion complète de la passerelle.

En rose : C’est la mémoire RAM utilisée par le CPU. 32Mo de SDRAM. EM6AA160

En orange : C’est la mémoire flash utilisé par le CPU. 16Mo. GD25Q127

En bleu clair : C’est l’interface permettant de gérer l’Ethernet. H16107DF

En vert : C’est le connecteur permettant d’accéder à la console de la passerelle et de mettre à jour le module ZigBee.

Pour l’autre côté de la carte, c’est beaucoup moins intéressant… quoi que les inscriptions sont d’une aide précieuse :

demontage_pile_zigbee_lidl

En rouge : Ce sont les LEDs permettant d’avoir le statut de l’Ethernet et du ZigBee. A gauche le statut de l’Ethernet et à droite le statut du Zigbee.

On peut aussi observer sur cette partie, qu’il existe des inscriptions et on pourra remarquer les RX TX 3V3 et GND qui sont les points importants pour débuter le détournement.

Bon, du coup, en observant ce qui compose cette passerelle, on peut rapidement comprendre que nous avons à faire à un système embarqué probablement sous linux qui pilote un « modem » ZigBee.

Afin de prendre la main sur cette passerelle, il convient donc de trouver une porte d’entrée. Bien entendu, vous l’aurez compris, la console caractérisée par le RX/TX sera ce point d’entrée.

Avant de sortir l’artillerie lourde, il faut avoir le reflexe de chercher s’il n’existe pas déjà quelqu’un qui a fait le travail. Du coup, je me suis mis à chercher les travaux déjà existant sur la passerelle et je suis tombé sur l’article permettant de prendre la main sur cette passerelle.

Root de la passerelle

Un gros merci pour « PaulBanks » qui m’a fait économiser énormément de temps. En suivant scrupuleusement ces travaux, il a été très facile de prendre le contrôle de ma passerelle Lidl.

Du coup, je vous laisse aller lire l’ensemble de son œuvre et je vais résumer ce que j’ai fait afin de me permettre de casser le mot de passe root.

Tout d’abord, il faut s’occuper du connecteur pour aller chercher la console avec un convertisseur USB-TTL.

Console_lidl_gateway_zigbee

Orange = RX
Rouge = TX
Marron = GND

De l’autre côté un convertisseur USB-TTL. (n’oubliez pas de croiser RX / TX)

Lidl_Convertisseur_USB-ttl

Ensuite, une fois connecté, il suffit d’ouvrir un hyperterminal (dans mon cas putty) sur le bon port (38400baud 8N1) et de démarrer la carte.

Console_demarrage_lidl

Pour pouvoir « rooter », il faut rentrer sur la busy-box (le bootloader) et pour cela il faut rapidement appuyer sur la touche « echap ». Donc on met hors tension puis sous tension et « echap ».

lidl_busy_box

La prochaine étape consiste à lire des emplacements mémoires pour récupérer le mot de passe et la clef de chiffrement correspondante.

Vous aurez plus d’informations en suivant ce tutoriel.

Voici les premières commandes

FLR 80000000 401802 16
DW 80000000 4

Vous devriez récupérer les informations suivantes :

Clé de chiffrement (bien entendu avec des blocs différents):

80000000: XXXXXXXX YYYYYYYY ZZZZZZZZ AAAAAAAA

Puis :

 FLR 80000000 402002 32
 DW 80000000 8

Le mot de passe (sur 2 lignes)

80000000: BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE
80000010: FFFFFFFF GGGGGGGG HHHHHHHH LLLLLLLL

Sauvegardez les 3 lignes puis récupérer le script python et suivez les instructions.

Vous devriez récupérer le mot de passe root en clair : Root password: b’XXXXXXXX

Une fois le mot de passe root décoder, vous avez accès à l’ensemble de la passerelle sur laquelle vous pourrez faire à peu près tout ce que vous voulez.

Une ZiGate Lidl ?

Bon, c’est une bonne chose de faite, nous pouvons désormais utiliser la passerelle Lidl.

La prochaine étape consiste à analyser et repérer comment fonctionne le module Tuya ZigBee pour le remplacer par une ZiGate

Analyse du module Tuya TYZS4

L’objectif ici est de repérer à quoi correspondent les différents PINs mais surtout l’interface UART. (En effet, pour piloter une ZiGate, on utilise une interface UART)

Pour cela, je suis allé sur le site Tuya pour récupérer la datasheet du module.

tuya_TYZS4

Une fois repéré, il faut maintenant dessouder le module.

2 solutions s’offrent à nous. En effet, ce module à deux lignes de PINs de part et d’autres donc c’est assez simple :

  • soit on utilise un pistolet à air chaud.
  • soit on charge en étain une ligne en faisant légèrement levier et ensuite on charge la 2ème ligne et le module se décolle.

Personnellement, j’ai pris la deuxième méthode mais elle est plus risquée pour les non avertis.

Ensuite on nettoie tout avec une tresse et un peu de flux et on obtient cela :

lidl_passerelle_demontage_tuya

Premiers tests avec un module ZiGate

Une fois l’analyse faite, il suffit de brancher une ZiGate sur les bons PINs et de procéder à quelques tests pour s’assurer que tout fonctionne comme il le faut.

Avant de faire l’installation finale, il convient de souder quelques straps :

lidl_zigate_strap_tests

Ensuite on se connecte sur 2 consoles de la passerelle (à l’aide de SSH).

Sur l’une on tape les commandes suivantes (réception de port série) :

$stty -F /dev/ttyS1 speed 115200 cs8
$ cat /dev/ttyS1

Sur l’autre console :

$ echo -ne '\x01\x02\x10\x10\x02\x10\x02\x10\x10\x03' > /dev/ttyS1

Une fois la commande lancée, vous devriez avoir sur la première console une réponse. Alors malheureusement, vous verrez des caractères spéciaux car c’est de l’hexadécimal et qu’il n’y a pas d’outil du type hexdump sur la passerelle.

Mais ça suffit pour valider que cela communique bien.

La passerelle Ethernet / Série

Pour que la passerelle Lidl se transforme en passerelle ZiGate, il faut procéder de la même façon que la ZiGate-WiFi. En effet, il faut que les requêtes TCP/IP soit transmises au port série et inversément. Pour cela, il faut utiliser les outils Ser2Net ou Socat mais dans notre cas, il faut développer soi-même le programme.

En soi, ce n’est pas très complexe et en plus, ça a déjà été développé.

Grâce a paulbanks et Ordspilleren, tout a déjà été fait, il n’y a plus qu’à suivre le tutoriel suivant et télécharger les sources.

Contrairement au tutoriel, j’ai utilisé la fonction tftp pour transférer le fichier serialgateway.

lidl_hack_tftpserver

On choisit, le répertoire où se trouve le fichier à transférer puis on sélectionne la bonne interface réseau.

Enfin sur la console de la passerelle on tape la commande suivante :

$ cd /tuya
$ tftp -gr serialgateway <ip de votre machine>
$ chmod +x serialgateway

Ensuite, il suffit de reprendre le tutoriel pour changer les scripts de démarrage pour l’adapter à la nouvelle passerelle. Attention, dans notre cas et pour coller à la ZiGate-WiFi, il faut changer le port par défaut : 9999

if [ ! -f /tuya/tuya_start.original.sh ]; then cp /tuya/tuya_start.sh /tuya/tuya_start.original.sh; fi

cat >/tuya/tuya_start.sh <<EOF
#!/bin/sh
/tuya/serialgateway -d/dev/ttyS1 -p9999 -f &
echo 1 > /proc/led1
EOF
chmod 755 /tuya/serialgateway
if [ ! -f /tuya/ssh_monitor.original.sh ]; then cp /tuya/ssh_monitor.sh /tuya/ssh_monitor.original.sh; fi
echo "#!/bin/sh" >/tuya/ssh_monitor.sh

Une fois effectué, vous pouvez redémarrer la passerelle et faire le même test que le tutoriel pour la ZiGate-WiFi …sauf qu’il faudra mettre la bonne adresse IP (celle de la passerelle Lidl)

Modification hardware

Pour que le hack soit complet, j’avais dans l’idée de rajouter une antenne externe pour augmenter les performances et de brancher la LED de statut ZigBee à la ZiGate.

Concernant l’antenne externe, pas de problème, il suffit de prendre une module ZiGate avec connecteur uFL.

Pour la LED de statut, j’ai un peu triché, j’ai dessoudé la résistance de pull-up de la LED de statut et j’ai connecté le GPIO17 de la ZiGate sur cette dernière. J’ai du rajouter dans le script de démarrage la ligne :

echo 1 > /proc/led1

Lidl_led_status

Repérage des LEDs statut Zigbee

lidl_zigate_gateway

Montage de la ZiGate sur la passerelle Lidl

Lidl_zigate_ethernet

Ajout de l’antenne externe et fermeture du boitier

Lidl_zigate_ethernet_on

Mise sous tension et réseau de la nouvelle ZiGate Ethernet

Une fois démarré, il suffit de paramétrer votre box domotique compatible comme une ZiGate-WiFi. il faut rentrer l’adresse IP et le port 9999.

Vous avez désormais une ZiGate Ethernet compatible Jeedom / Domoticz ou Home-assistant.

\o/

Conclusion

La catégorie détournement et hack font partis de mes articles préférés et je prend beaucoup de plaisir à vous partager mes découvertes.

Cependant, ce détournement me permet aussi d’utiliser une ZiGate sur Ethernet. (utile pour mes plateformes de tests)

Alors, je vous avez déjà proposé un tutoriel pour construire la même chose avec un RaspberryPi, mais dans ce cas précis, on a une passerelle plus aboutie et qui ne risque pas de planter à cause d’une carte SD. C’est du solide !

Enfin l’objectif de cet article n’est pas de reproduire en série mais bien de s’amuser « utile » et d’apprendre comment fonctionne ce genre de matériel.

J’espère que ces travaux vous auront plu et que vous avez avez pu apprendre 2-3 trucs.

A bientôt !

LoRaGate (Projet complet) – partie 1 – l’étude

Bon … avant toute chose, je dois dire que je n’ai pas suivi de cursus dans l’électronique mais plutôt dans l’informatique et que la vie a fait que je me suis lancé dans ce domaine. Je n’ai donc pas les bases scolaires et je me défini plutôt comme autodidacte en la matière.

Du coup, si vous, vous êtes du métier et que je dis des bêtises ou qu’il y a des manquements ou améliorations à apporter, n’hésitez pas à le signaler en commentaire, je ne vous en voudrai pas.

Parce que c’est toujours plus simple de montrer les choses par l’exemple, je vais partir d’un produit qui devrait sortir (à l’issue des articles) sur la boutique LiXee. A savoir la LoRaGate

 

Introduction au projet LoRaGate

Ce projet est un projet assez simple et permet de comprendre les bases sans trop rentrer dans la complexité technique. En effet, cet appareil sera un simple modem LoRaWAN permettant d’envoyer des commandes AT au travers d’une interface USB.

Comme il va être compliqué de tout condenser dans un seul article, il y aura une série de 1, 2, 3 ou 4 articles sur le sujet.

Voici toutes les étapes du projet que je vais tenter de détailler :

  • L’étude (permet de lancer le projet et de répertorier tous les besoins)
  • La conception (grâce à un outil de CAO, on lance la schématisation et le design de la carte électronique)
  • La réalisation (on affine le design, on optimise et on corrige ce qui ne va pas grâce à certains outils avant d’envoyer en production)
  • L’optimisation. On adapte l’antenne pour qu’elle résonne à la fréquence voulue

L’étude de la LoRaGate

A quoi sert la LoRaGate

La LoRaGate sera une passerelle/modem LoRaWAN permettant d’envoyer et recevoir des messages. Elle permettra donc de rendre votre box domotique (par exemple) compatible avec ce réseau destiné aux objets connectés.

Le protocole LoRa et le réseau LoRaWAN

Mais qu’est-ce que le LoRa / LoRaWAN ?

Comme d’habitude (vous commencez à me connaître), je ne vais pas entrer trop dans les détails. Si vous le souhaitez vous pouvez le faire en suivant le lien Wikipedia.

Premièrement, il faut distinguer le LoRa du LoRaWAN car ce n’est pas exactement la même chose et souvent, on les mélange par abus de langage.

La modulation

Le LoRa est une modulation de fréquence généralement sur la bande 868Mhz (en Europe) 915Mhz (au USA ou ceux qui utilisent la FCC) mais aussi récemment sur le 2.4Ghz

C’est une modulation qui a été développée par des frenchies (Cycléo) à la base !! (cocorico) puis rachetée par Semtech. C’est une modulation assez révolutionnaire (à mon sens) car elle permet de communiquer en dessous du niveau de bruit radio.

En effet, normalement, il est compliqué, voir impossible, de communiquer dans le bruit. Le niveau de bruit radio ambiant / interférence se situe généralement aux alentours de -90dBm. C’est comme si vous tentiez de discuter avec un ami avec la musique à fond. Difficile de communiquer. C’est un « peu » pareil avec la radio, soit c’est lié à beaucoup d’interférences, soit c’est lié à la distance. Ce bruit va constituer la limite des performances de votre conversation.

Spectrum_analyzer_display_noise_floor

D’ailleurs si vous regardez la sensibilité des modules radio bluetooth, zigbee, WiFi etc … vous verrez qu’ils ne descendent quasiment jamais en dessous du bruit, soit -100dBm max (en condition de laboratoire).

Voici donc la première innovation de la modulation et contrairement à une modulation classique qui possède 2 fréquences pour signaler les 1 et 0, le LoRa repose sur des sauts de fréquences qui représentent des groupes de bits.

modulation_lora

Et pour garantir l’intégrité des données, la modulation utilise le Spreading Factor (SF) qui va utiliser une signature du motif plus ou moins longue. Plus le motif est important, moins il y a de perte d’intégrité et plus on peut aller loin.

Spreading factor LoRa

Bien entendu, tous ces avantages entraînent forcément un inconvénient (quoi que…) qui est le débit. En effet, on ne peut pas tout avoir… Cette modulation n’est pas faite pour faire du débit mais pour aller loin.

data rate

Bon la technologie est complexe et il y aurait beaucoup à dire mais ce qu’il faut retenir c’est que :

  • Cette modulation LoRa permet de communiquer sur de longues distances (jusqu’à 15 Km environ)
  • Elle ne peut faire transiter que des messages très courts (51 octets utiles)

Le réseau LoRaWAN

Maintenant que l’on a vu la modulation de fréquence, qu’est-ce que le LoRaWAN.

Hé bien, le LoRaWAN est tout simplement un réseau qui permet d’interfacer les appareils qui communiquent en LoRa.

Alors pareil, difficile de synthétiser tout ça en quelques lignes mais ce qu’il faut retenir, c’est que le LoRaWAN rassemble une infrastructure plus ou moins complexe à mettre en place, permettant de traiter / décoder les informations remontées par les appareils LoRa pour les rendre exploitables.

lorawan_network

Il existe 2 types d’infrastructures possible en LoRaWAN :

  • La publique qui est en quelque sorte l’opérateur (Orange, Objenious, The Things Network(TTN), etc… )
  • La privée qui peut être développée à la maison (whouaouuuu !!)

Pour l’opérateur, c’est assez simple. Il faut prendre un abonnement et vous pourrez (sous réserve de couverture) récupérer les informations de votre appareil LoRa pour les rediriger vers votre serveur d’exploitation de données. En effet, ils mettent à disposition des API ou « routage » vous permettant de rediriger la donnée brute vers votre serveur personnel.

Pour le réseau privé, il vous faudra :

  • Une passerelle LoRaWAN pour récupérer la donnée brute et assurer l’intégrité des données. Il existe beaucoup de passerelles plus ou moins professionnelles. Vous pouvez les retrouver en partie ici : https://www.thethingsnetwork.org/docs/gateways/start/list.html
  • Un/des serveur(s) pour stocker les données et la rediriger vers votre service de traitement de l’information.

Bien entendu, ce réseau LoRaWAN est sécurisé de bout en bout et vous serez le seul à pouvoir interpréter les données. (sachant que le risque de piratage ne peut pas être égal à zéro)

Chaque objet souhaitant se connecter sur le réseau devra choisir sa « classe » et son mode d’authentification (OTAA – Over The Air ou ABP – Activation By Personalization) et ensuite, renseigner, selon son mode d’authentification, ses identifiants:

Pour OTAA : DEVEUI, APPEUI, APPKEY
Pour ABP :  DEVADDR, NWSKEY, APPSKEY

Pour la classe, il en existe 3 (A, B, C). Chacune utilise un mode de communication différent:

  • Class A : On envoie un message toutes les x minutes et on se met en écoute x secondes dans la foulée au cas où il y aurait 1 message à réceptionner. Ce mode, destiné aux objets sur pile permet de très peu consommé. (majorité du temps en veille)
  • Class B : Cette classe est une sorte de compromis entre la classe A et C. Elle utilise des « beacons » permettant une synchronisation entre le serveur et l’appareil. Du coup, l’appareil se mettra en écoute au moment ou le serveur enverra un message. Ce mode est encore très peu utilisé et incompatible avec les opérateurs publiques.
  • Class C : Dans ce mode, on est en écoute permanente de messages. On peut émettre toutes les X minutes (en respectant les normes et les temps d’occupation de la fréquence). Ce mode est destiné aux appareils alimentés.

Alors je sais, je survole de très haut tout ces concepts (et ça me perturbe parce que j’ai l’impression de rien dire) mais c’est tellement vaste … Bref voici les éléments essentiels de ce réseau que je trouve encore trop peu connu.

L’autre réseau IoT…

Dans la même catégorie, il existe aussi le réseau Frenchie Sigfox (cocorico bis) qui n’utilise pas du tout la même modulation et qui a l’inconvénient de ne fonctionner qu’en passant par un opérateur (mais ça changera…). Je développerai sans doute des produits sur ce réseau et je ne manquerai pas de vous en faire part.

Alors, l’autre énorme avantage que je n’ai pas cité plus haut de ces réseaux, c’est que les appareils ne consomment quasiment rien pour émettre leur message et du coup permet de créer des IoT sur pile (ou sans pile), très petit et qui durent dans le temps. Mais bon vu que ce projet, en particulier, est sur alimentation USB, ce point est moins important. (Mais sera la base des projets suivants ;))

Les besoins du projets

Alors pour réaliser ce projet, il y a 3 points importants :

L’alimentation

Il y a de grandes chances qu’il faille du 3.3VDC (souvent utilisé dans les microcontrôleurs). La LoRaGate sera branchée en USB (5VDC) donc il faudra une régulation de tension. Contrairement au WiFi gourmant, le LoRa devrait consommer 50 mA lors de l’émission (consommation max du coup)  donc la régulation n’aura pas besoin d’être dans la « puissance ».

Le driver USB-TTL

Pour faire communiquer la LoRaGate avec son hôte, il faut évidemment pouvoir transformer les signaux TTL vers l’USB et inversement. Et pour cela, il faut un pilote. J’en ai déjà testé quelques un lors de mes projets antérieurs et je pense que le pilote FTDI répondra au besoin et notamment sur la partie régulation 3.3VDC.

Avec ce pilote, on ne se trompe pas beaucoup, il fera le taff et sera fiable. Le seul inconvénient, c’est son prix mais comme il peut nous faire économiser la partie régulation, ça compense.

Le module Radio

Enfin le dernier élément, le module LoRa. Il existe pleins de solutions et de combinaisons pour dialoguer en LoRa mais pour ce projet, je souhaitais quelque chose de simple et « ready to play ». Après quelques recherches, je suis tombé sur ce module : le E78-868LN22S

Alors, il est assez cher mais il est vraiment prêt à l’emploi. Il suffit de lui envoyer des commandes AT pour le paramétrer et envoyer des messages. Comme un vulgaire SIM800L 😉

Conclusion

Bon, on va pas se le cacher, la partie 1, c’est la partie la plus pompeuse… beaucoup de théorie et du blabla technique. Pourtant, promis, j’essaie de faire le plus synthétique (quitte à faire d’énormes raccourcis). Malgré tout, c’est le passage indispensable.

Voilà ce qu’on a appris dans cette partie.

  • L’objectif du produit est assez clair. Passerelle ou Modem LoRaWAN pour box domotiques.
  • On comprend comment la modulation radio et le réseau fonctionne.
  • On a listé les besoins primaires pour concevoir le produit.

Dans la prochaine partie, on verra comment faire la schématique et le design du produit au travers d’Eagle CAD.

A bientôt.

EDIT : Le Modem LoRaGate est désormais disponible sur la boutique

Capteur température Zigbee pour piscine – Détournement Konke

Bon, cet article n’est pas en soi une nouveauté, mais il est plutôt un complément de l’article précédent. Donc, si vous ne comprenez pas tout ou qu’il manque des choses, faites un saut sur le lien.

D’ailleurs, vous avez pu voir que le détournement en question avait un défaut. Il n’était pas vraiment adapté à la piscine mais plutôt au domaine de l’agriculture… Du coup, j’ai reacheté (grâce à vos liens … merci ) le bon capteur étanche pour le Xiaomi Aqara.

Capteur_exterieur_sht31Capteur à choisir : SHT20
URL : https://fr.aliexpress.com/item/32905069890.html
Prix : ~= 13€

En suivant, le même principe décrit dans l’article du détournement, le capteur fonctionne très bien dans l’eau.

 

Konke, un capteur plus adapté

Comme vous le lisez souvent dans mes articles, Xiaomi est pour moi une super marque que j’adore détourner. Cependant, elle a pour mon cas personnel un gros problème de stabilité de connexion. Il faut que le maillage zigbee et la distanciation soit maîtrisée. Du coup, pour mon cas personnel, par rapport à la piscine, ça ne va pas et les déconnexions sont trop nombreuses car la piscine est trop éloignée de ma ZiGate.

Pour résoudre mon problème, j’ai testé quelques autres capteurs et le capteur Konke semble mieux fonctionner (il faut juste penser à paramétrer son canal zigbee sur 15, 20 ou 25)

konke_temperature_humidite

J’ai donc suivi le même mécanisme de détournement et voici le résultat:

capteur_konke_demonte

Voici le capteur démonté, on repère en haut à droite le capteur de température / humidité SHT20. La seule « difficulté » est de dessouder ce capteur. Personnellement, je le fait avec un pistolet à air chaud.

capteur_sht20

capteur_sht20_dessoude

Une fois dessoudé, il faut repérer les pattes SDA et SCL. (en suivant la datasheet) Pour cette fois, il est possible de souder les straps (petits fils) directement sur l’emplacement du capteur.

straps_sht20

(SCL à gauche et SDA à droite)

Voilà le plus dur est fait !

Il ne reste plus qu’à souder le capteur étanche SHT20 ( vous pouvez l’acheter sur le même lien qu’en haut en sélectionnant SHT20)

Pour l’alimentation du capteur, j’utilise exactement le même principe que dans l’article précédent.

alimentation_capteur_konke alimentation_capteur_konke_pilecapteur_konke_sht20

(l’étiquette sur le capteur donne la correspondance couleur / fonction)

A partir de cette étape, il faut tester que tout fonctionne avant de figer mécaniquement l’ensemble (Appairage et remonter de température + humidité)

Si tout est OK, on bloque avec de la colle chaude.

blocage_colle_chaude_sht20

blocage_colle_chaude_alimentation

Enfin, on appaire le capteur à la ZiGate et on remet tout dans son boitier étanche.

boitier_etanche_konke

Pensez à disposer l’antenne vers le haut, c’est toujours mieux.

boitier_etanche_konke_fini

On revisse enfin l’ensemble et c’est fait ! plouf dans la piscine

piscine_capteur_sht20_konke

Conclusion

Bon finalement, cela ne s’est pas fait du premier coup. Il a fallu quelques échecs pour arriver à ses fins. Cependant, il reste encore une étape pour atteindre la « perfection », c’est rajouter un bouton étanche au boitier, pour piloter le bouton d’appairage.

Avec ce capteur Konke, je n’ai plus eu de problèmes et cela fait 2 semaines qu’il est en test sans déconnexion. (Du coup, le bouton n’est plus indispensable)

Normalement, la pile CR123A devrait tenir dans les 3 ans … je vous tiendrai au courant … si je fais encore des articles 😉

La précision du capteur est toujours bonne. Les capteurs Sensirion ont, en général, une bonne précision et j’ai pu remarqué un décalage de 0.15 °C par rapport au DS18B20 que j’utilise en parallèle.

Capture_jeedom_temperature

Bref, ce hack a souvent été demandé et c’est chose faite… A vous de jouer maintenant !

A bientôt !

❌
❌