Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

Plugin jMQTT

Retrouvez ici des sujets concernant le protocole MQTT et les modules domotiques de type MQTT utilisés avec JEEDOM
/!\ Plugin MQTT non officiel
Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 13 mai 2018, 10:01

Bonjour Fabrice,
Oui, chez moi il tourne bien en 3.2.6.
Si tu ne l'as pas déjà fait, relances l'installation des dépendances.
Le log jMQTT devrait te fournir des informations complémentaires sur les raisons du NOK sur les dépendances. Quelles sont elles?
domotruc
Plugins jMQTT, jElocky
domotruc.com

fpoulet
Timide
Messages : 26
Inscription : 29 juin 2017, 12:44

Re: Plugin jMQTT

Message par fpoulet » 13 mai 2018, 13:13

Bon j'ai un peu avancé dans mes investigations ! mais mes dépendances ne sont toujours pas OK.
[2018-05-13 13:09:52][DEBUG] : dependancy_info: NOK
[2018-05-13 13:09:52][DEBUG] : * Nb of mosquitto related packaged installed: 4 (shall be greater equal than 2)
[2018-05-13 13:09:52][DEBUG] : * Mosquitto extension loaded:

Je pense qu'il s'agit de l'extension php de mosquitto qui n'est pas installée où qui n'est pas détectée correctement.
Je tourne pour l'instant en php5 dans un docker Debian-Jessie sous Fedora 26. Est-ce qu'il faudrait que je passe à php7 ?

Fabrice.
Fedora 26 Docker / Jeedom 3.2.6
Protocoles : ZWave/Rfxcom/X10 CM15Pro (Mochad)/Mi-Light/IR RMPro+
Materiel : Proguard 800 / Chacon / MiLight / IP-Camera / Popp Thermostat / Fibaro Plug Wall / Fibaro Smoke / Sonoff
Assistant Vocal : Google Home

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 13 mai 2018, 14:25

Oui, cherche du côté de l'installation de la librairie mosquitto sur le serveur web (apache sur debian jessie je pense).
Il n'est pas nécessaire de passer à php7.
Regardes la section "Install php mosquitto wrapper" dans le script d'installation des dépendances, /var/www/html/plugins/jMQTT/resources/install_apt.sh, et essayes d’exécuter les commandes l'une après l'autre dans une console (être root) pour comprendre ce qu'il se passe.
domotruc
Plugins jMQTT, jElocky
domotruc.com

fpoulet
Timide
Messages : 26
Inscription : 29 juin 2017, 12:44

Re: Plugin jMQTT

Message par fpoulet » 13 mai 2018, 19:30

J'y suis arrivé, mais malheureusement je ne sais pas comment ;-)
En essayant plein de chose tout d'un coup ca fonctionne. Ce que j'ai fait principalement est mettre à jour mon debian.
Merci pour l'aide et le plugin, maintenant tout est ok. Mon integration Sonoff Touch T1 fonctionne à merveille.
Fabrice.
Fedora 26 Docker / Jeedom 3.2.6
Protocoles : ZWave/Rfxcom/X10 CM15Pro (Mochad)/Mi-Light/IR RMPro+
Materiel : Proguard 800 / Chacon / MiLight / IP-Camera / Popp Thermostat / Fibaro Plug Wall / Fibaro Smoke / Sonoff
Assistant Vocal : Google Home

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 13 mai 2018, 20:40

Parfait, super ! :)
domotruc
Plugins jMQTT, jElocky
domotruc.com

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 18 mai 2018, 06:53

Bonjour,

Est-ce que quelqu'un utilise le paramètre Lifetime cache qui se trouve sur chaque commande de type info et saurait m'en expliquer le fonctionnement?

Le code du plugin n'en fait rien, j'ai cherché si le core l'exploitait et je n'ai rien trouvé. Avant de le supprimer, je préfère poser la question ;) .
domotruc
Plugins jMQTT, jElocky
domotruc.com

Loic74
Actif
Messages : 709
Inscription : 24 oct. 2017, 22:45
Localisation : Haute-Savoie
Contact :

Re: Plugin jMQTT

Message par Loic74 » 18 mai 2018, 08:43

Est-ce que quelqu'un utilise le paramètre Lifetime cache
Salut,
pas moi pour le moment et je ne sais pas ce que c’est, merci.
---------------------------------------
Jeedom v3.3.19, VM sur Synology RS1619xs+, Arduinos, ETH-IO32B, MQTT, TTN, LoRa, Service Pack Power Ultimate
Ma présentation
Ma piscine connectée
ioBoard

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Plugin jMQTT

Message par Seki » 23 mai 2018, 13:08

Bonjour,

J'ai récemment installé ce plugin dans le cadre d'un projet d'utilisation d'un IHM industriel comme interface pour Jeedom, et j'ai quelques questions. :)

Vous trouverez quelques détails de mon projet ici.

Maintenant, mes questions:
- lorsque j'effectue une commande sur mon IHM (saisie de consigne de température par exemple), je reçois la valeur dans une commande info au niveau de ce plugin. Cette valeur devra éventuellement être transmise à un autre plugin, et passer par des scénarios ne m'emballe pas du tout. Du coup, est-il envisageable d'avoir un champ supplémentaire dans les commandes infos qui permettrait de les associer avec une commande action d'un autre plugin, et donc qu'en cas de modification de la valeur de l'info, la commande action liée soit exécutée?
- pour les commandes de type action de ce plugin, il y a possibilité de les liées avec une commande de type info d'un autre plugin. En cas de mise à jour de la valeur de la commande action liée, la commande action du plugin jmqtt est-elle exécutée automatiquement ? Je n'ai pas pu tester ayant eu un problème avec mon Jeedom de test.
- y-a-t-il une limitation en terme de nombre de commandes mqtt possibles dans le plugin?

Questions subsidiaires non liées au plugin, mais à mqtt en général, et vu que je suis encore très loin de tout connaître de ce protocole, je fais donc appel à vos retours d'expérience:
- est-il possible qu'un client s'abonne à un topic générique? En gros, si je définie des topic genre ihm/commandes, ihm/mesures, est-ce que je peux indiquer à ma passerelle de s'abonner au topic générique ihm sans être obligé de lui indiquer tous les topic ihm/commandes et ihm/mesures?
- de vos expériences, vaut-il mieux avoir le broker sur la box Jeedom ou externalisé?
- en terme de performance, vaut-il mieux regrouper les topics dans un Json ou les passer individuellement?

Voilà, merci par avance à ceux qui voudront bien m'éclairer. :)

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 23 mai 2018, 22:28

Seki a écrit :
23 mai 2018, 13:08
Bonjour,

J'ai récemment installé ce plugin dans le cadre d'un projet d'utilisation d'un IHM industriel comme interface pour Jeedom, et j'ai quelques questions. :)

Vous trouverez quelques détails de mon projet ici.

Maintenant, mes questions:
- lorsque j'effectue une commande sur mon IHM (saisie de consigne de température par exemple), je reçois la valeur dans une commande info au niveau de ce plugin. Cette valeur devra éventuellement être transmise à un autre plugin, et passer par des scénarios ne m'emballe pas du tout. Du coup, est-il envisageable d'avoir un champ supplémentaire dans les commandes infos qui permettrait de les associer avec une commande action d'un autre plugin, et donc qu'en cas de modification de la valeur de l'info, la commande action liée soit exécutée?
Bonjour Seki,
c'est déjà possible via la roue crantée de la commande info, panneau configuration, Action sur valeur. Là tu choisis par exemple différent de PHP_FLOAT_MIN, puis tu ajoutes une action. Je viens de faire un test et ça marche.
- pour les commandes de type action de ce plugin, il y a possibilité de les liées avec une commande de type info d'un autre plugin. En cas de mise à jour de la valeur de la commande action liée, la commande action du plugin jmqtt est-elle exécutée automatiquement ? Je n'ai pas pu tester ayant eu un problème avec mon Jeedom de test.
Non, ce ne marchera pas directement. L'action doit être déclenchée pour qu'elle s’exécute. Tu peux le faire par la méthode précédente .
- y-a-t-il une limitation en terme de nombre de commandes mqtt possibles dans le plugin?
Non, pas de limitation (autre que la charge CPU).
Questions subsidiaires non liées au plugin, mais à mqtt en général, et vu que je suis encore très loin de tout connaître de ce protocole, je fais donc appel à vos retours d'expérience:
- est-il possible qu'un client s'abonne à un topic générique? En gros, si je définie des topic genre ihm/commandes, ihm/mesures, est-ce que je peux indiquer à ma passerelle de s'abonner au topic générique ihm sans être obligé de lui indiquer tous les topic ihm/commandes et ihm/mesures?
Oui, s'abonner au topic ihm/#.
Si l'anglais ne te rebute pas, je te conseille de lire la série d'articles MQTT Essentials, c'est très bien écrit et tu sauras tout ;).
- de vos expériences, vaut-il mieux avoir le broker sur la box Jeedom ou externalisé?
Je n'ai pas d'avis étayé.
- en terme de performance, vaut-il mieux regrouper les topics dans un Json ou les passer individuellement?
Je n'ai pas d'avis étayé, faudrait faire des tests.
domotruc
Plugins jMQTT, jElocky
domotruc.com

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 24 mai 2018, 07:28

Bonjour,

Nouvelle version beta 2018-05-24 disponible qui apporte les évolutions d'interface suivantes :
  • Ajout de messages d'alerte (bannière en haut de page) informant de la création automatique de commande information;
  • Ajout d'un bouton d'actualisation dans les pages équipement;
  • Correction: certains paramètres n’entraînaient pas de demande de confirmation de sortie de page sur modification sans sauvegarde.
domotruc
Plugins jMQTT, jElocky
domotruc.com

mycev
Timide
Messages : 62
Inscription : 29 déc. 2015, 01:26

Re: Plugin jMQTT

Message par mycev » 24 mai 2018, 19:13

Loic74 a écrit :
18 mai 2018, 08:43
Est-ce que quelqu'un utilise le paramètre Lifetime cache
Salut,
pas moi pour le moment et je ne sais pas ce que c’est, merci.
Bonsoir,
Désolé, moi non plus...

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Plugin jMQTT

Message par Seki » 24 mai 2018, 23:35

@Domotruc, merci pour les infos. :)

Pour les commandes, effectivement cela fonctionne, enfin tout du moins dans un sens (commande action mqtt vers ma passerelle), je n'ai pas eu le temps de le faire dans l'autre sens.
Pour tester, j'ai utiliser la commande latence du plugin Network, dans l'action sur valeur j'ai configuré une commande action mqtt avec la valeur de la latence comme payload. Ma passerelle a bien reçu cette valeur toute les minutes.

Petite question, ça correspond à quoi PHP_FLOAT_MIN? Je ne pas vraiment trouvé d'infos.

Sinon, pour ma passerelle mqtt, je vais repartir sur cet excellent projet et y insérer la partie modbus TCP.
J'ai fait quelques tests de charges ce soir sur la partie Modbus, l'ESP encaisse à 50% de sa vitesse 500 words en lecture et autant en écriture sans broncher. :D
Afin de ne pas balancer 500 commandes mqtt à chaque fois, j'ai rajouter un système de détection de changement de valeur pour lancer les commandes. Là encore, ça encaisse sans problème et ça reste super fluide. 8-)

Du coup, je vais pouvoir l'avoir ma belle interface industrielle et je ne vais pas me taper des maux de tête à faire du css / html façon Jeedom... :lol:

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 25 mai 2018, 06:50

Bonjour Seki,

1) Est-ce que la fonctionnalité présentée ici, pour laquelle j'avais fait un appel à intérêt sur ce forum il y a quelque temps sans réel retour, t'intéresserait?

2) Ta question:
Seki a écrit :
24 mai 2018, 23:35
Petite question, ça correspond à quoi PHP_FLOAT_MIN? Je ne pas vraiment trouvé d'infos.
C'est du langage php, ca représente la valeur minimale pouvant être stockée dans une variable de type float. C'est une astuce pour faire que le test soit toujours vrai et que la commande s’exécute. L'idéal serait de modifier le core de Jeedom pour ajouter des conditions, par exemple Action sur valeur, si modifiée, ou systématique.
domotruc
Plugins jMQTT, jElocky
domotruc.com

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Plugin jMQTT

Message par Seki » 25 mai 2018, 07:03

Bonjour @domotruc,

Carrément que ça n'intéresserait cette fonction, mais l'idéal serait un fonctionnement bidirectionnel.

En gros, il faudrait un fonctionnement un peu comme jeelink.

Pour l'action sur valeur, on est d'accord, il manque des options.

Merci pour ton aide.

Envoyé de mon GT-I9100 en utilisant Tapatalk


Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 25 mai 2018, 16:41


Seki a écrit :Bonjour @domotruc,

Carrément que ça n'intéresserait cette fonction, mais l'idéal serait un fonctionnement bidirectionnel.
Je ne comprend pas l'aspect bidirectionnel.
Aujourd'hui, le plugin permet de remonter dans Jeedom sous forme de commande infos tout le trafic vu par le broker. Il suffit, par exemple, de créer un équipement dont le topic de souscription est #.
La nouvelle fonction aurait pour objet de publier vers le broker toutes (ou partie selon ce que l'on selectionne) les commandes infos des autres plugins.

Tu penses à autre chose?

Envoyé de mon SM-G9350 en utilisant Tapatalk

domotruc
Plugins jMQTT, jElocky
domotruc.com

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Plugin jMQTT

Message par Seki » 26 mai 2018, 10:56

Salut @Domotruc,

Pour la bidirectionnalité, je vais prendre un exemple concret. :)
Mes volets sont commandés par le plugin Myhome (interrupteur Zigbee), j'ai donc 3 commandes dans ce plugin (montée, descente, stop). Sur mon IHM, je vais donc créer 3 boutons (montée, descente, stop), chacune associée à un registre Modbus. Lorsque ma passerelle va recevoir une valeur dans les registres Modbus associés à ces commandes, elle va émettre une commande mqtt correspondante (volet/cuisine/commandes {"monter" : 1, "descente" : 0, "stop": 0) par exemple). Du coup, dans ton plugin, je vais avoir trois commandes status correspondantes à la montée, la descente et le stop.
Ce que je souhaite, c'est que lorsque Jeedom va mettre à jour la commande status mqtt correspondante au topic reçue, il exécute automatiquement la commande Myhome "associé". Oui, on peut le faire avec l'action sur valeur, mais je trouve ça très peu user friendly. :D

Je pourrais aussi le faire avec des scénarios, mais ça va vite faire usine à gaz...

Après, il y a peut-être une solution toute simple, et un seul topic pourrait suffire à agir sur l'ensemble des commandes Jeedom. :)
Imaginons créer un topic jeedom/commande/ id avec en payload l'ID, en php il est simple de récupérer l'id de cette commande et de faire un execcmd, non? :)

Ce topic pourrait très bien être créer par défaut au même titre que le Jeedom de ton plugin, puisqu'il exécuterai une fonction particulière.
Certains diront peut-être que c'est pas très safe, mais en même temps, mqtt c'est pas fait pour être safe. :D
Là, vu que les commandes seraient passées par un ID, y a pas trop de risques, enfin moins que si ont passaient les commandes en clair comme ce que je dis au début de mon message.

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 26 mai 2018, 14:55

Seki a écrit :
26 mai 2018, 10:56
Pour la bidirectionnalité, je vais prendre un exemple concret. :)
Mes volets sont commandés par le plugin Myhome (interrupteur Zigbee), j'ai donc 3 commandes dans ce plugin (montée, descente, stop). Sur mon IHM, je vais donc créer 3 boutons (montée, descente, stop), chacune associée à un registre Modbus. Lorsque ma passerelle va recevoir une valeur dans les registres Modbus associés à ces commandes, elle va émettre une commande mqtt correspondante (volet/cuisine/commandes {"monter" : 1, "descente" : 0, "stop": 0) par exemple). Du coup, dans ton plugin, je vais avoir trois commandes status correspondantes à la montée, la descente et le stop.
Ce que je souhaite, c'est que lorsque Jeedom va mettre à jour la commande status mqtt correspondante au topic reçue, il exécute automatiquement la commande Myhome "associé". Oui, on peut le faire avec l'action sur valeur, mais je trouve ça très peu user friendly. :D
Bonjour Seki,
Bien compris, merci pour le détail. Je ne suis pas très chaud pour ajouter un champ sur les commandes infos dans l'interface de 1er niveau, pour les raisons suivantes:
  • C'est une utilisation spécifique;
  • L'action sur valeur via la paramétrisation avancée fait le job, et que cette paramétrisation avancée est gérée par le core et est commune à toutes les commandes (de tous les plugins).
Faudrait juste ajouter les options manquantes dans le core, là je veux bien proposer un PR.

D'autant que dans l'exemple ci-dessus, faut bien tester que la valeur reçue par la commande info volet/cuisine/commandes{"monter"} vaut 1 pour déclencher la commande.
Je pourrais aussi le faire avec des scénarios, mais ça va vite faire usine à gaz...
Suis d'accord.
Après, il y a peut-être une solution toute simple, et un seul topic pourrait suffire à agir sur l'ensemble des commandes Jeedom. :)
Imaginons créer un topic jeedom/commande/ id avec en payload l'ID, en php il est simple de récupérer l'id de cette commande et de faire un execcmd, non? :)

Ce topic pourrait très bien être créer par défaut au même titre que le Jeedom de ton plugin, puisqu'il exécuterai une fonction particulière.
Certains diront peut-être que c'est pas très safe, mais en même temps, mqtt c'est pas fait pour être safe. :D
Là, vu que les commandes seraient passées par un ID, y a pas trop de risques, enfin moins que si ont passaient les commandes en clair comme ce que je dis au début de mon message.
Là, je suis beaucoup plus intéressé ! ;)
Celà revient à mettre à disposition une API Jeedom via protocole MQTT, comme l'API JSON RPC ou l'API HTTP.
Je vais créer un point ouvert sous GitHub. Je ne peut pas te promettre grand chose en terme de délai d'implémentation... :?
domotruc
Plugins jMQTT, jElocky
domotruc.com

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 26 mai 2018, 15:50

Bonjour,

Nouvelle version beta 2018-05-26 disponible qui apporte les évolutions suivantes :
  • Amélioration #45: décodage immédiat des payloads JSON sur activation de parseJSON;
  • Amélioration #52: activer l'export d'un équipement dans un fichier json
domotruc
Plugins jMQTT, jElocky
domotruc.com

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Plugin jMQTT

Message par Seki » 26 mai 2018, 19:18

domotruc a écrit :
26 mai 2018, 14:55
Seki a écrit :
26 mai 2018, 10:56
Après, il y a peut-être une solution toute simple, et un seul topic pourrait suffire à agir sur l'ensemble des commandes Jeedom. :)
Imaginons créer un topic jeedom/commande/ id avec en payload l'ID, en php il est simple de récupérer l'id de cette commande et de faire un execcmd, non? :)

Ce topic pourrait très bien être créer par défaut au même titre que le Jeedom de ton plugin, puisqu'il exécuterai une fonction particulière.
Certains diront peut-être que c'est pas très safe, mais en même temps, mqtt c'est pas fait pour être safe. :D
Là, vu que les commandes seraient passées par un ID, y a pas trop de risques, enfin moins que si ont passaient les commandes en clair comme ce que je dis au début de mon message.
Là, je suis beaucoup plus intéressé ! ;)
Celà revient à mettre à disposition une API Jeedom via protocole MQTT, comme l'API JSON RPC ou l'API HTTP.
Je vais créer un point ouvert sous GitHub. Je ne peut pas te promettre grand chose en terme de délai d'implémentation... :?
Cool, merci! :)

En attendant, je vais modifier (à l'arrache) ton plugin pour faire des tests courant semaine prochaine. :lol:

Loic74
Actif
Messages : 709
Inscription : 24 oct. 2017, 22:45
Localisation : Haute-Savoie
Contact :

Re: Plugin jMQTT

Message par Loic74 » 28 mai 2018, 05:02

Salut Domotruc,

Je suis en train de faire des essais de Publication de messages MQTT avec ton plugin vers mon broket local.
J'ai donc créé une commande de type ACTION et ai renseigné un topic et un message associé. J'ai deux questions:

1/ quel sous-type doit on choisir et sur quoi cela influence t-il?
2/ une fois ma commande créée, je l'ai associée à un virtuel pour faire un essai d'envoi. Dans les paramètres je dois alors renseigner un TITRE et un MESSAGE, comme lors de l'envoi d'un message SMS ou TELEGRAM par exemple. Je remarque néanmoins que ces infos ne sont pas relayées vers le broker.
3/ Enfin, si je ne renseigne pas de TITRE, le message n'est pas relayé du tout vers le broker

Merci
Loic
---------------------------------------
Jeedom v3.3.19, VM sur Synology RS1619xs+, Arduinos, ETH-IO32B, MQTT, TTN, LoRa, Service Pack Power Ultimate
Ma présentation
Ma piscine connectée
ioBoard

Verrouillé

Revenir vers « [Plugin Tiers] MQTT »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invités