Installation de Zigbee 2 MQTT

Afin de se débarrasser des diverses passerelles IKEA, HUE, … Qui pour certaines ne sont plus maintenue par leur fabricant. Coucou Phillips. Il existe une solution, pour intégrer tout ce petit monde facilement à votre domotique en passant via MQTT.

Source : https://github.com/koenkk/zigbee2mqtt

Prérequis

La clé CC2538 + CC2592 – Zigbee 3.0 de Mister3D

Installation

Si vous avez besoin d’un serveur MQTT : Installer un broker MQTT – Mosquitto – Ubuntu le tuto est applicable sans problème sur votre installation de Raspberry Pi OS.

  • Après si nécessaire avoir flashé votre clé Zigbee, il suffit de la brancher sur le Raspberry Pi,
ls -l /dev/tty*

Pour la plupart des clés USB le port sera ttyACM0 ou ttyUSB0.

Petite mise à jour du Pi et installation de Node.js, Git et de quoi compiler.

sudo apt-get update && apt-get upgrade
sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs git make g++ gcc

On clone le dépôt GitHub de Zigbee2MQTT et on règle les permissions

sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt

On passe à l’installation

cd /opt/zigbee2mqtt
npm ci --production

Si tout se passe bien vous devriez avoir un retour dans votre terminal ressemblant à ça :

node-pre-gyp info ok
added 383 packages in 111.613s

Le nombre de « packages » et le temps peuvent être différents sur votre installation.

L’installation est maintenant terminée ! Il reste maintenant à passer à un peu de configuration.


Configuration

La configuration se fait via le fichier configuration.yaml dans /opt/zigbee2mqtt/data/.

nano /opt/zigbee2mqtt/data/configuration.yaml
# MQTT settings
mqtt:
  # MQTT base topic for Zigbee2MQTT MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL
  server: 'mqtt://localhost'
  # MQTT server authentication, uncomment if required:
  # user: my_user
  # password: my_password

Dans la configuration de base, vous pouvez configurer base_topic qui sera le « préfixe » de tout les topics MQTT provenant de Zigbee2MQTT et la configuration MQTT. Pensez à dé-commenter user et password si nécessaire.

Après avoir fini d’éditer la configuration, lancez la commande suivante afin de générer la clé du réseau.

echo "\n\nadvanced:\n    network_key: GENERATE" >> /opt/zigbee2mqtt/data/configuration.yaml

Il est temps de tester et de démarrer Zigbee2MQTT.

cd /opt/zigbee2mqtt
npm start

Pas d’erreur ? Tout fonctionne ? CRTL + C afin d’arrêter le processus en cours.


Démarrage automatique

Afin de ne pas se soucier du lancement, nous allons mettre Zigbee2MQTT au démarrage du Raspberry Pi.

Créez le fichier de configuration systemctl zigbee2mqtt.service :

sudo nano /etc/systemd/system/zigbee2mqtt.service

Ajoutez ceci au fichier que vous venez de créer/ouvrir :

[Unit]
Description=zigbee2mqtt
After=network.target

[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
# Or use StandardOutput=null if you don't want Zigbee2MQTT messages filling syslog, for more options see systemd.exec(5)
StandardError=inherit
Restart=always
User=pi

[Install]
WantedBy=multi-user.target

Si vous êtes sur un pi zéro jetez un œil à ce guide. Il est nécessaire de remplacer ExecStart=/usr/bin/npm start par ExecStart=/usr/local/bin/npm start

Maintenant, il suffit d’activer le service.

sudo systemctl enable zigbee2mqtt.service

Pour terminer cette partie quelques commandes utiles :

  • Voir le statut : systemctl status zigbee2mqtt.service
  • Arrêter : sudo systemctl stop zigbee2mqtt
  • Démarrer : sudo systemctl start zigbee2mqtt
  • Voir le log : sudo journalctl -u zigbee2mqtt.service -f

Conclusion

La partie installation est terminée. Vous trouverez plus d’informations dans les sources ci-dessous. La prochaine étape sera l’appairage des différents appareils Zigbee. Comme d’habitude vous avez mes réseaux sociaux et maintenant le Discord ioodyme ainsi que le tout nouveau groupe Telegram.


Sources

Raspberry Pi – Moniteur caméras RTSP

Cet article détail le fonctionnement du moniteur vu dans l’article Confinement.S02E21.

Un écran est installé dans la pièce principale du hackerspace afin de voir qui sonne à la porte et/ou de surveiller les imprimantes 3D, …

La méthode est probablement loin d’être parfaite, mais elle marche parfaitement sans discontinu depuis des mois.


Prérequis


Si vous n’avez pas encore installé les prérequis commencez par :

sudo apt update
sudo apt install omxplayer screen

Ensuite, clonez le repo Gitub :

git clone https://github.com/LgHS/dashboard-camera-config.git

Vous devriez maintenant avoir un README.md (qui lit les readme ?) et un simple camera.sh. Voyons ce que contient ce camera.sh, c’est très KISS.

C’est simplement un script qui tue les screens et les relances selon la configuration de votre cron. Pourquoi cela ? Nous avons remarqué qu’au bout d’un certain temps, la lecture prenait du retard sur le live sans trop comprendre pourquoi. Alors en cas de doute, reboot.

Il y a aussi un peu de configuration d’omxplayer, comme la position et taille des lecteurs.

Ajoutez le script dans le crontab :

crontab -e

Ci-dessus, ce que vous devez ajouter à votre crontab. Dans notre cas le refresh des flux se fait toutes les 15 minutes.

*/15 * * * * /home/pi/dashboard-camera-config/camera.sh > /dev/null

Voilà pour répondre à la demande. Adaptez le script à vos besoins, vos flux, …

Merci Haydar, pour ce quick & dirty? qui fonctionne bien depuis des mois.

Installer un broker MQTT – Mosquitto – Ubuntu

Pour ma domotique, j’utilise principalement MQTT pour la communication entre les sondes, actuateurs, services et serveur.

MQTT est un protocole de messagerie fonctionnement par publication / souscription. Tous les clients se connectent au serveur (le broker) pour publier des messages ou souscrire afin de recevoir les messages ou les deux à la fois.

Installation de Mosquitto

Actuellement, je fonctionne avec Ubuntu 18.10 dans un container sous Proxmox PVE.

Le tuto est établi sur Ubuntu 18.10, mais il devrait parfaitement être applicable également sur des versions supérieures.

Commençons par le début, un update/upgrade

sudo apt update && apt upgrade

Installation de Mosquitto

sudo apt install mosquitto

En l’état, vous avez un Mosquitto parfaitement fonctionnel, mais sans la moindre sécurité.

Placez-vous dans le dossier de Mosquitto. Par défaut /etc/mosquitto

cd /etc/mosquitto

Créer le fichier d’authentification et le premier utilisateur. Après la commande, il vous sera demandé de renseigner un mot de passe.

Configuration de Mosquitto

sudo mosquitto_passwd -c passwordfile VOTRE_PREMIER_UTILISATEUR

Attention ! Le paramètre -c permet de créer le passwordfile si vous l’utilisez par la suite le fichier sera écrasé, et donc tous les utilisateurs perdus.

Créer un autre utilisateur.

sudo mosquitto_passwd passwordfile UTILISATEUR_SUIVANT

Modifiez le fichier de configuration de Mosquitto afin de limiter son accès aux utilisateurs avec un compte. (Positionnez-vous dans /etc/mosquitto)

sudo nano mosquitto.conf

Ajoutez ces deux lignes en fin de fichier et sauvegardez.

allow_anonymous false
password_file /etc/mosquitto/passwordfile

Voilà ! Il est possible d’aller plus loin avec Mosquitto et par exemple, restreindre un utilisateur en lecture ou de restreindre la publication à un seul topic, … Pour cela, penchez-vous sur les ACL. Il est également possible de chiffrer les communications avec le broker et d’y installer un certificat SSL.

Vous pouvez maintenant créer un petit capteur communicant en MQTT


Sources :