ZwaveJS2Mqtt Installation sous docker Activation de la découverte dans Domoticz
Zwavejs2 https://zwave-js.github.io/zwavejs2mqtt/#/ zwavejs : - pose moins de problèmes que OZW1.6. - il est plus facile de supprimer les appareils non existants (ceux qui réapparaissent à chaque redémarrage), qu’avec OZW - L'interface Web est très fonctionnelle. - Avoir ZwaveJS2mqtt dans un conteneur indépendant de Domoticz offre plus de possibilités; Zigbee2mqtt est déjà séparé de Domoticz sur mon installation , voir cette page . - La mise à jour est un jeu d'enfant et les performances sont excellentes,..... Si Domoticz n'est pas encore installé sous Docker, il faut installer Docker et Docker composer, voir cette page. Pour mon système domotique j'ai installé Docker sur une machine virtuelle Debian 11, qui héberge: - Domoticz - Zigbee2mqtt - Zwavejs2mqtt
Installation de ZwaveJS2Mqtt Avec Putty ,
Téléchargement de l'image depuis Docker Hub
Pour vérifier la présence de l'image:
Télécharger le fichier de configuration docker-compose.yml:
Permettre à l-utilisateur d'accéder aux ports USB
Brancher la clé ZWave et rebooter le système.vérifier sur quel port est connectée la clé:
Ouvrir ce fichier avec nano: sudo nano docker-compose.yml,modifier la configuration en fonction de votre système:
Lancer Zwavejs2mqtt:
L'interface WEB Installer l'interface graphiqueComme indiqué dans docker-compose.yml le port est 8091on ouvre donc l'interface graphique sous : http://IP:8091
Copie d'écran de ma configuration pour récupérer automatiquement les dispositifs dans Domoticz Ajouter des clés de sécurité réseauje reste en HTTP car je peux accéder en HTTPS depuis mon sous domaine zwave.DOMAINE.ovh avec un certificat Letsencrypt (voir plus loin)
paramètres MQTT
Paramètre de la passerelle
Pour la découverte automatique si vous choisissez cette option:
Si vous choisissez d'utiliser Node pour envoyer les messages à Domoticz au lieu de la découverte automatique, voir le paragraphe concernant cette solution
Domoticz et MQTT avec découverte automatiqueDans Matériel choisir MQTT auto discovery client with LAN interface
les dispositifs découverts:
Lors d'un transfert d'installation , les dispositifs sur piles devront souvent être réveillés; les appareils endormis ne sont pas découverts mais ils le seront automatiquement lors du réveil..
Domoticz et MQTT et Node.jsles messages envoyés par zwavejs2mqtt:
les informations contenues dans le message:
un exemple avec le niveau de batterie:
Envoyer à Domoticz les données envoyées depuis zwave2mqtt
Avec Node-red: des outils existent , le module node-red-contrib-zwavejs2mqtt par exemple je ne les utilisais pas et depuis la version de Domoticz 2022_1 qui offre la découverte automatique , j'ai abandonné node-red pour Zwave et Zigbee. Dans Domoticz , il faut créer des dispositifs virtuels
Exemple de scripts :
le script concernant Zwavejs2mqtt:
// var ind = flow.get("count")||0; var valeur_bat = flow.get("val_bat")||0; var valeur_inter = flow.get("val_inter")||0; var parts = msg.topic.split("/"); idx=parseInt(parts[2]) ; nom_device=parts[3]; not=parts[4]; type_donnees=parts[6]; contenu = msg.payload ; id=contenu['nodeId']; // switch (not){ case "battery": //donnee=contenu['label']; if (type_donnees=="level") {//unite=contenu['unit']; valeur_bat=Math.round(contenu['value']); flow.set('val_bat',valeur_bat); ind=ind+1;} break; case "switch_binary": if (type_donnees=="currentValue"){ //donnee=contenu['label']; valeur=contenu['value']; if (valeur==false){valeur_inter=0;} if (valeur==true){valeur_inter=1;} flow.set('val_inter',valeur_inter); ind=ind+2;} break; default : return; } if (ind==3){ msg.payload = {"idx":idx,"nvalue":flow.get("val_inter"),"Battery":flow.get("val_bat")}; flow.set('count',0);flow.set('val_bat',0);flow.set('val_inter',0); return msg;} flow.set('count',ind);return;
Accès distantAvec Nginx: configuration de l'hôte: /etc/nginx/conf.d/zwave.confun exemple sur cette page
Demande du certificat letsencypt avec Cerbot:
Le fichier zwave.conf avec le certificat:
server { server_name zwave.DOMAINE.ovh; location / { proxy_pass http://192.168.1.76:8091/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /api { proxy_pass http://192.168.1.76:8091/api; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } server_name zwave.DOMAINE.ovh; #return 404; auth_basic "Mot de Passe Obligatoire"; auth_basic_user_file /etc/nginx/.htpasswd; listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/zwave.DOMAINE.ovh/fullchain.pem;$ ssl_certificate_key /etc/letsencrypt/live/zwave.DOMAINE.ovh/privkey.pe$ include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = zwave.DOMAINE.ovh) { return 301 https://$host$request_uri; } # managed by Certbot server_name zwave.DOMAINE.ovh; listen 80; server_name zwave.DOMAINE.ovh; return 404; # managed by Certbot }
Aperçu de ma page perso
crée le 02/04/2022