Page 1 sur 2

comment avoir un retour de l'état d'un dash button sous domoticz

Posté : jeu. 28 juil. 2022 19:21
par dou_dou_69
bonjour,

J'aimerais savoir comment avoir un retour vers domoticz de l'état de la batterie d'un dash button portatif? exemple un bouton de commande d'une fonction télérupteur sous domoticz.

Re: comment avoir un retour de l'état d'un dash button sous domoticz

Posté : jeu. 28 juil. 2022 20:55
par domi
Bonjour,

La question n'est pas coté Domoticz, c'est le Dash Button qui doit être prévu pour retourner l'état de sa batterie.
Tous mes "devices" qui prennent en charge l'envoi de l'état de la batterie sont automatiquement mis à jour dans Domoticz sans configuration particulière de ma part, juste à ajouter le device.

Re: comment avoir un retour de l'état d'un dash button sous domoticz

Posté : ven. 29 juil. 2022 10:35
par dou_dou_69
d'accord

ils sont DIY ces devices ou ils sont achetés?

car moi ce qui m’intéresserait c'est des équipements DIY avec un esp8266 si possible.

Re: comment avoir un retour de l'état d'un dash button sous domoticz

Posté : ven. 29 juil. 2022 13:20
par domi
Mes devices qui retournent l'état de la batterie sont des devices achetés (Device sous protocole Zigbee). Pour ceux DIY, il faut le prévoir (matériel et logiciel), mais pour ma part, je ne le fait pas, car aucun de ceux que j'ai fait ont une fonction sensible.

Re: comment avoir un retour de l'état d'un dash button sous domoticz

Posté : dim. 7 août 2022 18:39
par dou_dou_69
Bonjour,

J'ai réussi a ce que le programme dans l'arduino me calcul le pourcentage de batterie testant via l'entrée analogique A0.

Maintenant de doit trouver le moyen de l'envoyer à domoticz ( ça devrait être jouable en trouvant comment lui envoyer un message par MQTT avec le pourcentage et l'index du matériel), mais il faudrait après lui faire afficher et prendre en compte pour qu'il puisse m'envoyer un email quand le pourcentage passe sous une limlite.

Re: comment avoir un retour de l'état d'un dash button sous domoticz

Posté : dim. 7 août 2022 22:09
par domi
Bonjour,
il suffit simplement d'envoyer la valeur de "Battery" dans la chaine MQTT, en plus de la commande "0" (éteint) ou 1 (Allumer).

exemple :

Code : Tout sélectionner

mosquitto_pub -h localhost -u USER-P PASSWD-t "domoticz/in" -m '{ "idx" : 380, "nvalue" : 1, "Battery" : 125}'
Pour cela, dans le code il faut ajouter sous :

Code : Tout sélectionner

doc["idx"]      = idxDevice;
  doc["value"]    = value;
la ligne contenant la valeur de la batterie :

Code : Tout sélectionner

doc["Battery"]      = VALEUR_BATTERIES;
Les valeurs de Batteries vont de "0" (vide), à la valeur 255 (pleine)

Re: comment avoir un retour de l'état d'un dash button sous domoticz

Posté : lun. 8 août 2022 17:33
par dou_dou_69
bonjour,

Dans ma fonction de calcul de batterie

String svaluebatt = String (P);
SendData ("udevice", idxpourcentagebatt, 0, svaluebatt); //pour m'afficher le pourcentage de batterie calculé dans un capteur virtuel de pourcentage. Ca ca marche mais m'oblige a créer un capteur en plus.

// J'aimerai visualiser la batterie dans la colonne prevu pour à coté de celle de RSSI (pas sur du nom de celle-ci).
// rajout de ces lignes pour l'inclure dans les données du device dans la colonne suivant celle rssi

int batterie = map(P, 0, 100, 0, 255);
String battery = String (batterie);
SendData ("udevice", idxdevicebatt, 0, battery);

dans la création json de ma librairie traitant du message MQTT
DynamicJsonDocument doc(256);
doc["command"] = command;
doc["idx"] = idxDevice;
doc["nvalue"] = nvalue;
doc["svalue"] = svalue;
doc["battery"] = battery; // ligne rajouter - à la compilation il me dit "battery was not declared in this scope

le fait de rajouter un doc, ne devrai-je pas changer le 256 prévu surement pour 4 docs en autres prevu pour 5, et ce 5eme doc est-ce un int ou string car j'ai lu quelque part que le senddata est SendData (string, int, int, string)

Re: comment avoir un retour de l'état d'un dash button sous domoticz

Posté : lun. 8 août 2022 21:09
par domi
La valeur "Battery" doit être un entier entre 0 et 255, il faut respecter ce qu'attend domoticz.
j'ai lu quelque part que le senddata est SendData (string, int, int, string)
SendData est une fonction utilisateur, c'est donc à vous de la définir dans votre code. Elle est adapté en fonction du besoin, vous pouvez également lui changer son nom, rien n'est défini ailleurs que dans votre code.
Voir dans le code la fonction comment elle est déclarée, et la modifier en conséquence.

Re: comment avoir un retour de l'état d'un dash button sous domoticz

Posté : mar. 9 août 2022 13:46
par dou_dou_69
voici ma fonction

void SendDatabatt (String command, int idxDevice, int nvalue, String svalue, int battery) {
// On vérifie la connexion MQTT
verif_connexion_mqtt();

// Création de la chaine JSON6
DynamicJsonDocument doc(256);
// On renseigne les variables.
doc["command"] = command;
doc["idx"] = idxDevice;
doc["nvalue"] = nvalue;
doc["svalue"] = svalue;

doc["battery"] = battery;

// On sérialise la variable JSON
String messageOut;
serializeJson(doc, messageOut);
char* topicOut = "domoticz/in";
// Convertion du message en Char pour envoi dans les Log Domoticz.
char messageChar[messageOut.length()+1];
messageOut.toCharArray(messageChar,messageOut.length()+1);
client.publish(topicOut, messageChar);
// Pause de 1 secondes
delay(1000);
Serial.println("\t -> Message envoyé à Domoticz");

mon programme

int batterie = map(P, 0, 100, 0, 255);

SendDatabatt ("udevice", idxdevicebatt, 0, 0, battery);

Serial.print ("\t batterie "); Serial.print(P); Serial.println("%");

comment intégrer la valeur de batterie calculée dans la message pour que domoticz le prenne en compte dans la ligne du device?

Re: comment avoir un retour de l'état d'un dash button sous domoticz

Posté : mar. 9 août 2022 17:29
par dou_dou_69
j'ai envoyé l'idx du device dont je veut afficher le niveau de batterie et son niveau de batterie (que j'ai mappé de 0-100 à 0-255 comme tu me l'a dit) via json mais rien ne s'affiche dans domoticz