domotruc / jMQTT

Jeedom plugin to interface as a client with an MQTT broker.
16 stars 8 forks source link

Les données issues d'un JSON parsé ne sont pas rafraichies #76

Closed p-wieser closed 4 years ago

p-wieser commented 5 years ago

Bonjour, Soit un équipement jMQTT dans Jeedom qui reçoit le payload suivant : {"data":[[1561420202805,[20]],[1561420204806,[20]],[1561420206807,[20]]],"unit":"%"} Il s'agit d'un des sensors d'un smartphone Android qui retourne les trois dernières valeurs du niveau de batterie. Pour accéder à la troisième valeur, j'ai successivement coché la case "parseJSON" jusqu'à obtenir ma commande Info "{data}{2}{1}{0}". Tout va bien. Et comme il y a beaucoup de sensors sur les smartphones, et que certains peuvent retourner jusqu'à 70 (!) valeurs d'historiques, j'ai donc beaucoup parsé. Soient env. 10 sensors x 20 valeurs en moyenne => je me retrouve avec ~200 commandes Info dont seules 10 m'intéressent (une par sensor). Donc ça charge beaucoup l'interface et c'est mal. Mais jusque là tout va encore bien. C'est très long, mais ça marche. En revanche, lorsque j'imagine de détruire toutes les commandes Info qui ne me servent pas, ça coince :

  1. Is it a feature ?
  2. Suis je obligé de conserver tous les niveaux intermédiaires de parsing ?
p-wieser commented 5 years ago

batlevel

Merci d'avance.

domotruc commented 5 years ago

Bonjour, Oui, dans le fonctionnement actuel du plugin, il est nécessaire de garder les niveaux intermédiaires (et leur cases parseJson cochées) pour que le dernier niveau soit rafraîchi. Tu n'es pas le seul à remonter le problème, je vais réfléchir à une autre solution. Il faudrait aussi éviter d'avoir a créer les niveaux intermédiaire pour les supprimer ensuite. Ce n'est ni simple, ni immédiat.

domotruc commented 5 years ago

Bonjour @pwieser , Je suis en train de regarder le problème et j'aimerais reproduire ta configuration. Peux-tu m'expliquer comment transmettre les senseurs de son téléphone android vers un broker MQTT? Merci

p-wieser commented 5 years ago

Bonjour,

Ce que j'ai fait, c'est juste utiliser l'API de l'application Android IP Webcam ( [ https://play.google.com/store/apps/details?id=com.pas.webcam | https://play.google.com/store/apps/details?id=com.pas.webcam ] ). Cette API retourne tous les senseurs du téléphone, au format JSON. Dans Jeedom, un scenario est programmé toutes les 5mn, exécute un script, qui exécute un wget et transforme le JSON en MQTT via un script perl (ci-joint) :

wget -q --user xperia --password mypassword http://xperia:8090/sensors.json -O- | \ MQTT_SIMPLE_ALLOW_INSECURE_LOGIN=1 /opt/trychlos.pwi/json2mqtt/libexec/json2mqtt.pl -account xperia --password mypassword --host broker -topic xperia/sensors -verbose -detailed

Et voilà !

Hope that helps.

Cordialement, Pierre

PS: Je n'ai pas trouvé d'app Android qui fournisse juste l'API sensors. Pour se passer d'Android IP Webcam, ma prochaine piste serait de coder le machin en bsh sous PAW Server (quand j'aurai du temps...).

From: "domotruc" notifications@github.com To: "domotruc/jMQTT" jMQTT@noreply.github.com Cc: "pwieser" pwieser@trychlos.org, "Mention" mention@noreply.github.com Sent: Saturday, July 27, 2019 9:09:37 AM Subject: Re: [domotruc/jMQTT] Les données issues d'un JSON parsé ne sont pas rafraichies (#76)

Bonjour [ https://github.com/pwieser | @pwieser ] , Je suis en train de regarder le problème et j'aimerais reproduire ta configuration. Peux-tu m'expliquer comment transmettre les senseurs de son téléphone android vers un broker MQTT? Merci

— You are receiving this because you were mentioned. Reply to this email directly, [ https://github.com/domotruc/jMQTT/issues/76?email_source=notifications&email_token=ABPFI4YB2JSKJDJI35DBKWDQBPYDDA5CNFSM4H3DHXU2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD26FNXI#issuecomment-515659485 | view it on GitHub ] , or [ https://github.com/notifications/unsubscribe-auth/ABPFI44W2HR263KPGG65EN3QBPYDDANCNFSM4H3DHXUQ | mute the thread ] .

domotruc commented 4 years ago

Cette amélioration est embarquée dans la version 2019-10-19, voir l'annonce ici.