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 » 09 mai 2018, 08:16

Ah oui, les topics dans la capture Commandes.jpg ne sont pas montrés en entier.
D'accord pour que tu me passes les éléments pour que j'essaye de reproduire.
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 » 09 mai 2018, 08:32

Ok je te passe cela dés que j’ai accès à mon PC.
Ce qui me chiffonne c’est sue cela fonctionne un certain temps avant de bugger...
---------------------------------------
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
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 09 mai 2018, 09:26

Je suis assez pessimiste quant à la possibilité de reproduire mais je vais essayer.

As tu vérifier que la carte mémoire de ton RPI3 n'est pas corrompue suite au plantage? Aucun autre symptôme que le dysfonctionnement jMQTT?

J'ai eu un RPI3 pendant un an, avec de nombreux plantages et corruptions. Lorsque le PI redémarrait, il arrivait que certaines fonctionnalités ne marchent plus. Exemple: la gestion des paquets, python, etc.

Essayes peut être de vérifier la carte avec fsck.

Envoyé de mon SM-G9350 en utilisant Tapatalk

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 » 09 mai 2018, 09:45

Oui je penses que tu as raison.
Je t'ai quand même envoyé le flow par email, des fois que tu remarques un truc pas net.
Mon RPI3 tourne sur un disque SSD assez récent et pour l'instant je n'ai pas remarqué d'autre dysfonctionnement.
Je vais quand même le vérifier et te tiens au jus

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

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

Re: Plugin jMQTT

Message par domotruc » 09 mai 2018, 14:24

Ça y est, j'ai mis NodeRed en place et je récupère ton flux MQTT sur un jeedom tournant sur VM Debian.

Je pense à un truc, n'aurais tu pas supprimé les commandes info contenant les données brutes JSON, je ne les vois pas sur la copie d'écran que tu m'as passé. Si oui, c'est normal que ça ne marche plus :(

Et il faudra que tu m'expliques le principe/fonctionnement de tes capteurs TTN, je ne connais pas et ça m’intéresse.
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 » 10 mai 2018, 07:47

Salut
Les commandes info sont bien là, je n’avais juste pas tout copié/collé.

Parc contre J’ai un souci pour vérifier le SSD avec la commande fsck car je vois qu’il faut unmounter le disque, donc etre a proximité de mon RPI3, hors je suis à l’étranger pour plusieurs mois....
Je vais plutot tenter de réinstaller le plugin de zero car malgré un redémarrage le plugin est toujours planté.
Je vais te donner plus d’infos sur les capteurs
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

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

Re: Plugin jMQTT

Message par Loic74 » 10 mai 2018, 09:06

Alors pour les capteurs ils répondent à un besoin de capteurs distants (plusieurs km voire plus) avec un faible besoin en bande passante (eg. 1 mesure toutes les 10mins et petit payload en json) et en énergie (sur piles). Dans mon cas il s’agit de mesurer la hauteur de cours d’eaux et prévenir/agir en cas de crue à venir.
La com se fait par radio (techno LoRa pour moi mais ça pourrait etre du SigFox qui est payant). Les capteurs publient leurs mesures vers des gateways (publics ou privés) de type LoRaWan. Il existe un réseau open qui fédère ces gateways, c’est TTN (The Things Network). Les serveurs TTN (cloud) collectent les données publiées par les capteurs et les met à disposition (eg. via un broker MQTT qu’ils hébergent également ou via une API).
NodeRed a un plugin TTN qui permet facilement de collecter les données depuis TTN et les publier vers mon broker en local (Mosquitto) qui a son tour les renvoie vers jMQTT pour les traiter/historiser dans Jeedom.

Pour les plateforme des capteurs, un Arduino ou similaire avec shield LoRa ou SigFox (regarde aussi « Airboard ») ou bien des produits du commerce existants (« Decent labs » de mémoire propose tout un tas de capteurs
---------------------------------------
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
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Plugin jMQTT

Message par domotruc » 10 mai 2018, 09:34

Bonjour Loic,

Bonne nouvelle, je reproduis le problème sur Taillanderie (Haut et Bas) depuis ce matin, après avoir laissé tourné depuis hier début d'après-midi, voir fichier joint. J'investigue et te tiens au courant.

Merci pour le explications, ça me donne envie de tester, j'ai une cuve à eau éloignée de ma maison dont j'aimerais surveiller la hauteur d'eau...
Pièces jointes
jMQTT.txt
(49.28 Kio) Téléchargé 21 fois
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 » 10 mai 2018, 09:49

Cool!
Pour ta cuve ca peut etre simple si tu as de la couverture TTN chez toi. Si non im te faudra également ajouter un GateWay LoraWan.
Après c’est pas la seule techno radio existante. Il faut faire un CDC avec la distance de la cuve à chez toi, cloud ou pas cloud, piles ou pas, taille de la cuve... il y a un autre fil sur des mesures ultra-son pour mesures de niveau mais je peux pas le chercher facilement maitenant, là je suis en Edge sur un bateau! 😜
---------------------------------------
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

vinssurfer
Timide
Messages : 21
Inscription : 29 déc. 2014, 19:26

Re: Plugin jMQTT

Message par vinssurfer » 10 mai 2018, 14:57

Bonjour à tous,
Je débute avec ce plugin et j'ai un problème pour faire fonctionner le Keepalive ou LWT.
Je suis sous RPI3 avec des capteurs sous arduino et la librairie pubsubclient.
Comment faire pour que Jeedom nous indique qu'un client arduino n'est plus connecter au broker?

En lançant mosquitto dans un terminal, je connecte l'arduino sur le topic "Salon_switch" avec un Keepalive de 15 secondes. Voici ce que me donne le log de mosquitto :

Code : Tout sélectionner

pi@raspberrypi:~ $ sudo mosquitto -p 1884 -v
1525956461: mosquitto version 1.4.10 (build date Fri, 22 Dec 2017 08:19:25 +0000) starting
1525956461: Using default config.
1525956461: Opening ipv4 listen socket on port 1884.
1525956461: Opening ipv6 listen socket on port 1884.
1525956464: New connection from 192.168.0.100 on port 1884.
1525956464: New client connected from 192.168.0.100 as Salon_switch (c1, k15, u'Jeedom').
1525956464: Sending CONNACK to Salon_switch (0, 0)
1525956464: Received SUBSCRIBE from Salon_switch
1525956464: 	Salon_switch/# (QoS 0)
1525956464: Salon_switch 0 Salon_switch/#
1525956464: Sending SUBACK to Salon_switch
1525956479: Received PINGREQ from Salon_switch
1525956479: Sending PINGRESP to Salon_switch
1525956494: Received PINGREQ from Salon_switch
1525956494: Sending PINGRESP to Salon_switch
1525956515: Client Salon_switch has exceeded timeout, disconnecting.
1525956515: Socket error on client Salon_switch, disconnecting.
On voit bien que toutes les 15s j'ai le keepalive

Code : Tout sélectionner

1525956479: Received PINGREQ from Salon_switch
1525956479: Sending PINGRESP to Salon_switch
1525956494: Received PINGREQ from Salon_switch
1525956494: Sending PINGRESP to Salon_switch
et quand je débranche l'arduino j'ai bien un timeout

Code : Tout sélectionner

1525956515: Client Salon_switch has exceeded timeout, disconnecting.
1525956515: Socket error on client Salon_switch, disconnecting.
Comment remonter dans Jeedom cette erreur de déconnexion?

Merci.

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

Re: Plugin jMQTT

Message par domotruc » 10 mai 2018, 14:59

J'ai avancé dans l'investigation.

La dernière valeur décodée par Jeedom pour TaillanderieBas (noeud 723) est datée du 09/05 22:57:42.

Le log NodeRed donne:

Code : Tout sélectionner

9 May 22:57:42 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.924, distance: 1017, node_id: 723 }
9 May 22:57:42 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.924, distance: 1017, node_id: 723 }
9 May 22:58:06 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.924, distance: 1080, node_id: 722 }
9 May 22:58:06 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.924, distance: 1080, node_id: 722 }
9 May 23:01:00 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.961, distance: 1222, node_id: 724 }
9 May 23:01:00 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.961, distance: 1222, node_id: 724 }
9 May 23:07:45 - [info] [debug:abe8bb61.412fa] 
<Buffer 02 02 d3 00 03 03 f9 00 0f 0b 6c>
9 May 23:07:45 - [info] [debug:abe8bb61.412fa] 
<Buffer 02 02 d3 00 03 03 f9 00 0f 0b 6c>
9 May 23:08:10 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.924, distance: 1080, node_id: 722 }
9 May 23:08:11 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.924, distance: 1080, node_id: 722 }
9 May 23:10:57 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.961, distance: 1211, node_id: 724 }
9 May 23:10:57 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.961, distance: 1211, node_id: 724 }
9 May 23:17:49 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.924, distance: 1018, node_id: 723 }
9 May 23:17:49 - [info] [debug:abe8bb61.412fa] 
{ battery_voltage: 2.924, distance: 1018, node_id: 723 }
On retrouve bien la dernière valeur décodée à 22:57:42. On voit aussi que la valeur suivante pour ce noeud, à 23:07:45, n'est pas décodée et est probablement erronée.

Le log mosquitto à cette même date (09/05/2018 23:07:45 => 1525900065 en temps système):

Code : Tout sélectionner

1525900065: Received PUBLISH from mqtt_e1d4f1f5.157ab (d0, q1, r0, m32599, 'Taillanderie/HauteurEau/TaillanderieBas', ... (11 bytes))
1525900065: Sending PUBACK to mqtt_e1d4f1f5.157ab (Mid: 32599)
1525900065: Sending PUBLISH to mosqsub|29324-ossau (d0, q0, r0, m0, 'Taillanderie/HauteurEau/TaillanderieBas', ... (11 bytes))
1525900065: Sending PUBLISH to jeedom (d0, q1, r0, m272, 'Taillanderie/HauteurEau/TaillanderieBas', ... (11 bytes))
1525900065: Received PUBACK from jeedom (Mid: 272)
1525900065: Received PUBLISH from mqtt_e1d4f1f5.157ab (d0, q1, r0, m32600, 'Taillanderie/HauteurEau/TaillanderieBas', ... (11 bytes))
1525900065: Sending PUBACK to mqtt_e1d4f1f5.157ab (Mid: 32600)
1525900065: Sending PUBLISH to mosqsub|29324-ossau (d0, q0, r0, m0, 'Taillanderie/HauteurEau/TaillanderieBas', ... (11 bytes))
1525900065: Sending PUBLISH to jeedom (d0, q1, r0, m273, 'Taillanderie/HauteurEau/TaillanderieBas', ... (11 bytes))
1525900065: Received PUBACK from jeedom (Mid: 273)
1525900073: Received PINGREQ from mosqsub|29324-ossau
1525900073: Sending PINGRESP to mosqsub|29324-ossau
1525900090: Received PUBLISH from mqtt_e1d4f1f5.157ab (d0, q1, r0, m32601, 'Taillanderie/HauteurEau/MoulinEtangHaut', ... (55 bytes))
1525900090: Sending PUBACK to mqtt_e1d4f1f5.157ab (Mid: 32601)
1525900090: Sending PUBLISH to mosqsub|29324-ossau (d0, q0, r0, m0, 'Taillanderie/HauteurEau/MoulinEtangHaut', ... (55 bytes))
1525900090: Sending PUBLISH to jeedom (d0, q1, r0, m274, 'Taillanderie/HauteurEau/MoulinEtangHaut', ... (55 bytes))
1525900090: Received PUBACK from jeedom (Mid: 274)
1525900091: Received PUBLISH from mqtt_e1d4f1f5.157ab (d0, q1, r0, m32602, 'Taillanderie/HauteurEau/MoulinEtangHaut', ... (55 bytes))
1525900091: Sending PUBACK to mqtt_e1d4f1f5.157ab (Mid: 32602)
1525900091: Sending PUBLISH to mosqsub|29324-ossau (d0, q0, r0, m0, 'Taillanderie/HauteurEau/MoulinEtangHaut', ... (55 bytes))
1525900091: Sending PUBLISH to jeedom (d0, q1, r0, m275, 'Taillanderie/HauteurEau/MoulinEtangHaut', ... (55 bytes))
montre qu'il s'agit bien de TaillanderieBas, que la trame est publiée vers Jeedom, qu'elle ne fait que 11 octets (et pas les 55 habituels).

La profondeur de log jeedom n'est pas suffisante.

J'ai cherché si il y a d'autres valeurs erronées dans les logs: il y en a 2 en tout, celle ci, et une autre aujourd'hui à 04:50:57 concernant TaillanderieHaut. C'est bien le moment où Jeedom a arrêté de décoder les valeurs de TaillanderieHaut.

A partir d'une conf propre, si j'envoie un message contenant les 11 octets donnés par le log NodeRed via cette commande:

Code : Tout sélectionner

echo -ne "\x02\x02\xd3\x00\x03\x03\xf9\x00\x0f\x0b\x6c" | mosquitto_pub -t "Taillanderie/HauteurEau/TaillanderieBas" -s
je reproduis bien le problème, la commande HauteurEau/TaillanderieBas perd son topic et sa valeur, et les messages suivants ne sont plus décodés.
Par contre aucune trace dans le log jeedom, il ne loggue absolument rien concernant ce message.

Il faut donc maintenant que je rajoute des traces dans le code pour comprendre ce qui se passe.

De ton côté, as tu idée de l'origine de ces messages erronés?
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 » 10 mai 2018, 15:37

Super job 😎

Je ne connais pas assez cette techno/capteurs pour savoir d’où vient le problème. De mon coté je vais donc travailler sur 2 axes:

1/ filtrer en amont les messages éronnés (au niveau de TTN ou NodeRed)

2/ comprendre comment cela peut arriver

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

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

Re: Plugin jMQTT

Message par domotruc » 10 mai 2018, 15:43

Bonjour vinssurfer,
Il faut que ton capteur indique au broker son message LWT (arguments willTopic, willQoS, willRetain, willMessage de la méthode connect avec la librairie pubsubclient).
Ainsi, lorsque le broker détecte la déconnexion (via le mécanisme de keepalive), il publie le LWT. Et les clients ayant souscrits à ce message (dont Jeedom) en sont informés.
domotruc
Plugins jMQTT, jElocky
domotruc.com

vinssurfer
Timide
Messages : 21
Inscription : 29 déc. 2014, 19:26

Re: Plugin jMQTT

Message par vinssurfer » 10 mai 2018, 15:54

Cool, merci ça fonctionne.

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

Re: Plugin jMQTT

Message par domotruc » 10 mai 2018, 19:53

Loïc, maintenant qu'il est confirmé que jMQTT doit être corrigé concernant ton problème, j'ai ouvert un bug sur GitHub: https://github.com/domotruc/jMQTT/issues/46. J'ai bon espoir de publier la correction ce soir ou demain matin.
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 » 10 mai 2018, 20:35

Bonsoir,
Nouvelle version du plugin disponible dès maintenant sur le market. Les évolutions principales sont:
  • la correction du bug mis en évidence par Loic74 sur payload erronée entraînant perte de la commande info associée;
  • l'amélioration de la lisibilité du panel des commandes.
Pour les autres évolutions, voir le change log.
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 » 10 mai 2018, 20:55

Loic, il faut donc que mettes à jour le plugin, que tu supprimes les commandes info erronées (celles contenant normalement le message JSON) et que tu actives l'ajout automatique des commandes. Lorsque les commandes seront recréées, faudra cocher le parseJSON.

Je conserve une VM avec ton flux NodeRed pour vérifier que le problème a bien disparu. Bizarre, je n'ai rien reçu depuis plus d'une heure.
domotruc
Plugins jMQTT, jElocky
domotruc.com

meute
Actif
Messages : 1102
Inscription : 26 août 2017, 11:07
Localisation : Belgique

Re: Plugin jMQTT

Message par meute » 10 mai 2018, 22:56

Hello, pour info depuis la mise à jour aujourd'hui j'ai cette erreur :
Erreur sur jMQTT::daemon() : Error Object ( [message:protected] => Call to undefined function mb_check_encoding() [string:Error:private] => [code:protected] => 0 [file:protected] => /var/www/html/plugins/jMQTT/core/class/jMQTT.class.php [line:protected] => 410 [trace:Error:private] => Array ( [0] => Array ( [function] => mosquittoMessage [class] => jMQTT [type] => :: [args] => Array ( [0] => Mosquitto\Message Object ( [mid] => 0 [topic] => ebusd/bai/WPPWMPower [payload] => { "percent0": {"value": 0}} [qos] => 0 [retain] => ) ) ) [1] => Array ( [file] => /var/www/html/plugins/jMQTT/core/class/jMQTT.class.php [line] => 319 [function] => loopForever [class] => Mosquitto\Client [type] => -> [args] => Array ( ) ) [2] => Array ( [file] => /var/www/html/core/php/jeeCron.php [line] => 72 [function] => daemon [class] => jMQTT [type] => :: [args] => Array ( ) ) ) [previous:Error:private] => )
PS, Je suis en stable donc le problème a été introduit sur une des deux betas vu que je l'avais pas juste avant avec la version du 2018-04-29.

L'erreur revient exactement toutes les 5 minutes, peut-être synchrone avec un de mes poolings, il faut que je vérifie ...
Jeedom VM ESXI sur NUC
Ilot I/O Modbus Wago Z-Wave (11 volets,prises,présences) + RFXCom (sondes T°+RH, prises)
Pont Hue et une vingtaine d'ampoules,une flopée de Xiaomi aquara, Harmony Elite
8 Google Home et un PC tactile All-In accroché au mur

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

Re: Plugin jMQTT

Message par domotruc » 11 mai 2018, 07:28

Bonjour meute,
J'ai ouvert un problème sous GitHub: https://github.com/domotruc/jMQTT/issues/47
On poursuit la discussion là-bas.
Stéphane
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 » 11 mai 2018, 07:31

Merci Stéphane pour la réactivité, je teste cela tout à l’heure.
NB: Le flux TTN est-il revenu?
---------------------------------------
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 1 invité