Nous vous avons fait découvrir Zigbee2MQTT il y a quelques temps maintenant après vous avoir initié à MQTT. Pour rappel, MQTT est un protocole de communication ultra light, rapide et performant, parfait pour les objets connectés. Trop souvent mal expliqué, ce dernier peut faire peur et sembler compliqué à comprendre ou mettre en oeuvre. Pourtant, bien expliqué et vulgarisé comme nous avons essayé de le faire, il s’agit d’une solution très simple à mettre en place et redoutablement efficace !
Zigbee2MQTT est lui aussi un système très simple à mettre en place qui met en relation le célèbre protocole domotique Zigbee et MQTT. Autant vous dire que c’est une super plateforme autour de laquelle construire sa maison connectée. Je vous invite à lire nos différents guides autour de Zigbee2MQTT et MQTT si vous les découvrez à la lecture de ce nouveau guide. Cela vaut le détour.
Si vous avez déjà suivi nos guides, vous voulez peut-être mettre à jour Zigbee2MQTT pour profiter des dernières améliorations mais avez peur de tout casser ! Pas d’inquiétude, nous avons préparé un guide simple et rapide pour y parvenir sans soucis.
Mise à jour de Zigbee2MQTT : Par où commencer ?
Avant tout, si vous êtes sur un Raspberry Pi, je vous invite à effectuer une sauvegarde à l’aide du guide precédent. Si votre Zigbee2MQTT est hebergé sur une machine virtuelle, je vous invite à également procéder à cette sauvegarde avec, par sécurité un petit snapshot. Cela ne mange pas de pain, et vous permettra de rétablir le système en un clique.
Mise à jour de Zigbee2MQTT : Comment faire ?
Maintenant que le système en place est sauvegardé, nous pouvons passer aux choses sérieuses. Toutes les actions sont à faire en ligne de commande depuis un terminal distant en SSH, va l’application Terminal si vous êtes sous Linux ou mac OS, ou l’application Putty si vous êtes sous Windows.
1. Pour commencer, il faut arrêter le système :
sudo systemctl stop zigbee2mqtt
2. Il faut ensuite se placer dans le répertoire de Zigbee2MQTT :
cd /opt/zigbee2mqtt
3. Avant de lancer un backup des fichiers de configuration, il faut s’assurer qu’une sauvegarde n’existe pas et la supprimer avec la commande suivante :
rm -rf data-backup
4. Lancer le backup de la configuration :
cp -R data data-backup
5. On peut ensuite lancer la mise à jour avec les commandes suivantes :
git checkout HEAD -- npm-shrinkwrap.json
git pull
6. Si à l’exécution de la commande Git pull vous obtenez un message comme celui-ci :
Cela veut dire que la branche est sans doute détachée et le processus de mise à jour de git n’arrive plus à s’y retrouver. Si vous n’avez pas ce message, vous pouvez vous rendre directement au point 7 de la procédure.
6.1. Pour en savoir plus sur cette erreur, exécutez la commande suivante :
git status
Si en retour vous avez un message vous indiquant que HEAD est détaché, c’est bien le cas, nous allons devoir rattacher le head à sa branche pour permettre au processus de mise à jour de travailler sur les bons fichiers.
6.2. Tapez alors la commande suivante dans un premier temps :
git reset --hard
Un message devrait alors vous indiquer la position du HEAD.
6.3. C’est un bon début, il nous faut à present passer une seconde commande :
git checkout master
À présent git est correctement rattaché à la branche master. (Branche principale de Zigbee2MQTT, fortement conseillée car la branche dev, comme son nom l’indique peut se montrer instable et n’est pas à utiliser en production).
6.4. Comme le message l’indique, nous sommes à présent dans les bonnes conditions pour effectuer une mise à jour de Zigbee2MQTT sans problème. Reprenons alors le cours des choses avec la commande suivante :
git checkout HEAD -- npm-shrinkwrap.json
6.5. Puis lancez la mise à jour avec un git pull :
git pull
Contrairement à tout à l’heure, vous voyez le système travailler dans le terminal, il n’y a qu’à patienter quelques secondes.
7. Vous avez vu défiler de nombreux fichiers qui se sont vus mis à jour, c’est bon signe, il ne reste plus qu’à lancer l’installation des dépendances pour finaliser cette mise à jour. Pour ce faire, utiliser la commande suivante :
npm ci
Là encore, vous voyez défiler de nombreuses lignes, il n’y a qu’à patienter.
8. La mise à jour de Zigbee2MQTT est terminée, il ne reste plus qu’à restaurer votre configuration. Pour cela, utilisez la commande suivante :
sudo cp -R data-backup/* data
9. Puis dans la foulée, supprimez votre fichier de sauvegarde, ou exportez-le pour le conserver au cas où. Sinon, faites comme moi, je conserve le fichier jusqu’à la prochaine sauvegarde ou mise à jour, mais il faudra penser à le supprimer en début de procédure comme nous avons fait au début du guide.
Pour supprimer, utilisez la commande suivante :
rm -rf data-backup
10. C’est terminé, il ne reste plus qu’à relancer le système avec la commande start :
sudo systemctl start zigbee2mqtt
11. Pour vérifier simplement que vous disposez bien de la dernière version de Zigbee2MQTT, rendez-vous sur l’interface de management web, puis dans paramètres et à propos :
Pour aller plus loin
Si votre système fonctionne mais que vous n’arrivez plus à effectuer d’inclusion de nouveaux périphériques, il faut simplement effectuer un reset électrique du dongle. En effet, si vous avez tenté de redémarrer le système sans succès, voire même d’effectuer la mise à jour… Cela ne changera rien à ce problème, car dans la phase de reboot, que ce soit sur Raspberry Pi ou sur VM, le dongle Zigbee reste alimenté, donc lui, ne redémarre pas. Le simple fait de débrancher / rebrancher le dongle corrigera ce problème. Attention si vous êtes sur une VM, il faudra penser à repasser dans le superviseur pour redéclarer le port USB sur la machine virtuelle.
Cette opération ne fait qu’un reset éléctrique, vous ne perdrez rien de la configuration mais vous redonnerez un coup de souffle à votre dongle et vous verrez que les nombreuses heures passées à essayer d’intégrer un module, rebooter le système ou le mettre à jour n’auront servis à rien. Pas tout à fait car vous savez maintenant mettre à jour Zigbee2MQTT de façon simple et sûre, mais vous auriez pu régler ce petit soucis en quelques secondes seulement.
Rassurez-vous, je me suis aussi fait avoir, d’où ce partage pour vous faire gagner du temps !
Bonjour,
Pour ma part je rencontre l’erreur suivante au moment de faire git checkout HEAD — npm-shrinkwrap.json
error: pathspec ‘npm-shrinkwrap.json’ did not match any file(s) known to git