Rechercher par mot-clé

Créer une passerelle ZiGate-Ethernet avec un Raspberry Pi

La ZiGate se décline en plusieurs solutions et sous différents “form factor” mais il manquait une solution. D’ailleurs certains d’entre vous m’avez sollicité pour concevoir une ZiGate-Ethernet.

Hé bien, dans cet article, nous allons voir comment faire pour atteindre cet objectif.

Pourquoi une ZiGate-Ethernet ?

Ethernet est un protocole très fiable. En effet, le plus souvent utilisé avec un câble, il permet d’assurer la communication entre 2 points. De plus, en utilisant la couche TCP, les données qui transitent ont une probabilité très importante d’atteindre l’objectif.

Si je devais faire une comparaison avec le WiFi, on peut dire (sans prendre trop de risque) qu’un câble Ethernet est plus fiable.

Le fait de construire une passerelle ZigBee-Ethernet permet :

  • De déporter le coordinateur ZigBee pour optimiser la qualité d’écoute et le mettre au centre du réseau.
  • D’éliminer un protocole radio supplémentaire qui peut dans certains cas interférer avec le ZigBee.
  • De rendre plus “intelligent” la passerelle. Associé à un RaspberryPi, vous pourrez avoir une gestion plus approfondie de la passerelle.

Par contre, la passerelle nécessite :

  • D’être à portée d’un accès au réseau Ethernet.
  • D’être à portée d’une alimentation
  • D’être plus volumineuse

Encore une fois chaque solution a son lot d’avantages et d’inconvénients et vous êtes les seuls à savoir quelle solution est la plus adaptée à votre besoin.

Ce dont vous avez besoin

Pour construire cette passerelle, il vous faudra le matériel suivant :

Peu importe la version de la RaspberryPi (PiZeroW ou Pi1,2,3,4), la passerelle est principalement logicielle. Il faut juste que la ZiGate puisse être connectée matériellement à la RaspberryPi.

PS : Évidemment, pour la Pizéro il faudra faire le lien avec l’interface WiFi mais sinon tout est identique

Passerelle logicielle socat

Socat est un logiciel en ligne de commande (assez puissant) qui permet de manipuler des sockets et faire communiquer deux interfaces entre elles. Cet outil est sous licence GPL.

Installation de socat

$ sudo apt-get update
$ sudo apt-get install socat

Paramétrage de socat

$ sudo socat /dev/serial0,b115200,raw,echo=0 tcp4-listen:9999

Bien entendu, il vous faut remplacer /dev/serial0 par l’interface correspondant à votre ZiGate.

Pour tester rapidement que ça fonctionne vous pouvez rajouter -vvv pour que socat soit plus bavard.

A lire : manpage de socat

Automatiser la passerelle

Avant de commencer, sachez que ce n’est qu’un exemple parmi tant d’autres. Il y a surement des choses à revoir mais ça reste une première approche.

Tout d’abord, je vais créer un fichier shell pour paramétrer la ZiGate en mode production puis lancer la commande socat

#!/bin/sh

gpio mode O out
gpio mode 2 out
gpio write 2 1
gpio write 0 0
gpio write 0 1
/usr/bin/socat /dev/serial0,b115200,raw,echo=0 tcp4-listen:9999

Il suffit de le sauvegarder, par exemple sur /home/pi/socat_daemon.sh

puis je le rend exécutable :

sudo chmod +x /home/pi/socat_daemon.sh

Ensuite je vais créer un service avec systemd

[Unit]
Description=ZiGate_Socat

[Service]
ExecStart=/home/pi/socat_daemon.sh
Restart=always

[Install]
WantedBy=multi-user.target

Je sauvegarde le tout dans /etc/systemd/system/socat.service

et je le rend exécutable  :

sudo chmod +x /etc/systemd/system/socat.service

Enfin je lance les commandes suivantes pour activer et lancer le service.

systemctl enable socat.service
systemctl start socat.service

Pour contrôler que tout est OK, il suffit de lancer la commande :

systemctl status socat.service

vous obtiendrez :

● socat.service - ZiGate_Socat
Loaded: loaded (/etc/systemd/system/socat.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-12-19 13:41:23 GMT; 9min ago
Main PID: 7748 (socat_daemon.sh)
Tasks: 2 (limit: 4915)
Memory: 736.0K
CGroup: /system.slice/socat.service
├─7748 /bin/sh /home/pi/socat_daemon.sh
└─7754 /usr/bin/socat /dev/serial0,b115200,raw,echo=0 tcp4-listen:9999

Dec 19 13:41:23 raspberrypi systemd[1]: Started ZiGate_Socat.

Si tout est OK, vous avez gagné !

Il ne vous reste plus qu’à paramétrer votre plugin sur <IP>:9999 pour pointer vers votre passerelle.

Conclusion

Grâce à cette astuce, on peut rapidement construire une passerelle ZigBee-Ethernet simple. Bien évidemment, développer une passerelle sur un RaspberryPi permet d’ouvrir les fonctionnalités comme gérer des backups, optimiser le trafic, créer un webadmin, etc…

Bref, pleins de choses à faire et imaginer !

A bientôt !

Translate »