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 :
- 1 ZiGate (PiZiGate / ZiGate-USB / ZiGate-DIN)
- 1 RaspberryPi (ou équivalent)
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 !