Publier un message MQTT
avec Python et domoticz



pip3 , Python3.7 , Domoticz 2020_2

 

 

Application pratique:

J'utilise Zigbee2mqtt installé sur la même machine que mon serveur MQTT.
L'interrupteur Zigbee pour commander l'éclairage du jardin est près de mon tableau électrique alors que l'éclairage du porche d'entrée est commandé par un interrupteur mécanique près de la porte de cette entrée.
J'ai donc installé un TS0011 de chez TUYA afin de commander à partir de cet interrupteur mécanique l' éclairage du jardin.
Je peux aussi commander cet éclairage depuis mon application perso ( d'un PC, tablette, smartphone) par l' intermédiaire de Domoticz, le schéma:

zb1

 

 

Les interrupteurs virtuels de Domoticz et le script Python

- celui qui commande l' éclairage du jardin est un simple capteur virtuel;
il reçoit la position du capteur par un message MQTT envoyé par zigbee2mqtt et par domoticz/out envoi par MQTT comme pour tous les capteurs leurs données
voir un exemple de code node-red dans cette page.
-celui , alias de l’interrupteur mécanique, qui allume la lampe du porche doit quand il reçoit un ordre d'allumage , envoyer un message mqtt pour allumer également le jardin.

zb2

zb3

les 2 lignes de commandes pour envoyer les messages mqtt:

le script Python:

Documentation Paho : https://www.eclipse.org/paho/index.php?page=clients/python/docs/index.php

pour éviter des erreurs (512 , 256) , penser à convertir le fichier python en UNIX si il a été crée avec notepad++, bloc note,....

zb4

Pour convertir le fichier en UNIX :



Attention aussi aux autorisations

zb5

zb6

 

 

Pour info , la connexion avec mon App perso

Le plan dans Domoticz
:
l’interrupteur est ajouté aux autres dispositifs , nécessaire pour la mise à jour de ma page perso , voir cette page.

zb7

le fichier exterieur.php est concerné car , quand l'allumage est actif , les lampes doivent être allumées.
les css pour l'image svg:

zb8

zb9

Les lampes concernées en gris passent en jaune si elles sont allumées:

zb10

zb11

La base de données de l'App perso ,assure l'interface entre les iD Domoticz et l'App perso , des infos ICI

zb12

zb14

Le script Javascript (en fin de html , ici : footer.php)
Ce script effectue la mise à jour de mon App perso à partir des id dans les images svg mais avec les lampes qui peuvent être nombreuses sur un même circuit , la mise à jour ce fait avec une class ce qui est un peut différent comme le montre la fonction ci dessous.

Au lieu d'un simple "document.getElementById(ID)" , il faut chercher et modifier chaque élément:

zb13

 

 

 

crée le 13/03/2021

page:67