Problème de récupération de données MBUS

Bonjour,

J’utilise depuis quelques années déjà Jeedom, installé sur une VM Synology, avec entres autres une intégration d’un compteur MBUS de type Aquastream M-Bus de chez Integra (Suisse).

Je récupère les données via une carte M-Bus Master Hat connectée à un Raspberry Pi sur lequel est installée la librairie libmus puis avec un script je pousse les informations en format .json sur JMQTT toutes les minutes avec un cron.

Depuis quelques jours je n’arrive plus à faire en sorte que les valeurs transmises dans mon message .json soient synchrones avec les valeurs captées dans mon équipement JMQTT, je m’explique

Le broker jMQTT est configuré comme ceci

Et je récupère les informations dans l’équipement suivant, jusque là rien de bien sorcier

Pour l’intégration des valeurs dans mon équipement j’ai lancé le mode réel

Je lance le mode en temps réel dans mon équipement JMQTT et je vois bien les informations du compteur avec un Timestamp UTC + 2heures chez moi donc 2024-08-26 20 :03 :02

J’ajoute ensuite ceci à mon équipement et dans l’équipement je configure les informations que je veux récupérer (commandes).
Lorsque je crée mon équipement cela fonctionne mais au bout d’un certain temps les valeurs réelles transmises par mon Pi (en .json) sont décalées par rapport à la valeur intégrée dans Jeedom, comme si l’équipement ne recevait plus le .json en mode synchrone (minute). Tout est décalé entre les valeurs du Pi et celles affichées dans Jeedom.

J’ai vérifié avec l’outil MQTT Explorer que mon compteur mbusmeters transmet bien les informations à la minute et cela fonctionne très bien

On remarque bien la mise à jour de l’information

Et dans Jeedom (équipement) le .json n’est pas synchrone (ci-dessous)

Je perds environ 2 à 3 minutes par rapport à l’heure réel et très rapidement tout est décalé, la valeur de mon compteur et en retard de quelques heures le lendemain et ce n’est plus représentatif de la consommation d’eau. Cela rentre dans l’ordre si je redémarre mon Jeedom…

Le lendemain le résultat est le suivant
Dans MQTT Explorer les valeurs sont synchrones avec l’heure (ci-dessous)

Et dans Jeedom (équipement) le .json n’est pas synchrone du tout (ci-dessous)

Si je relance le mode réel la valeur du .json est correcte mais l’équipement n’est pas mis à jour

Normalement mon compteur Mbus enregistre les impulsions dès que de l’eau est consommée et le cron minute envoie la nouvelle valeur à JMQTT.

S’agit-il d’un problème de mise à jour de la valeur (cron) qui n’est pas synchrone avec mon envoi du message à la minute depuis mon Raspberry ?
Est-ce que l’envoi à la minute est trop précis ?

Je ne comprends pas car depuis 2021 cela fonctionnait bien, tout était synchrone à la minute près. Cela ne fonctionne plus depuis quelques semaines.

Rien de particulier sur la page santé de Jeedom.

Et les logs du broker

[2024-08-26 20:29:52]WARNING : Attention, Payload '{   "MBusData": {     "SlaveInformation": {       "Id": "5500572",       "Manufacturer": "IMT",       "Version": "1",       "ProductName": null,       "Medium": "Water",       "AccessNumber": "186",       "Status": "00",       "Signature": "0000"     },     "DataRecord": [       {         "@id": "0",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Volume (m m^3)",         "Value": "2258252",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "1",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Tariff": "1",         "Device": "0",         "Unit": "Volume (m m^3)",         "Value": "0",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "2",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Volume flow (m m^3/h)",         "Value": "0",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "3",         "Function": "Maximum value",         "StorageNumber": "0",         "Unit": "Volume flow (m m^3/h)",         "Value": "2000",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "4",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Time Point (time & date)",         "Value": "2024-08-26T19:50:00",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "5",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Tariff": "0",         "Device": "0",         "Unit": "Fabrication number",         "Value": "10024068",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "6",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Tariff": "0",         "Device": "1",         "Unit": "Fabrication number",         "Value": "5500572",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "7",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Firmware version",         "Value": "111",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "8",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Hardware version",         "Value": "1",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "9",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Error flags",         "Value": "0",         "Timestamp": "2024-08-26T18:27:03Z"       },       {         "@id": "10",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Reserved VIF extension",         "Value": "4556",         "Timestamp": "2024-08-26T18:27:03Z"       }     ]   } }' reçu sur le Topic 'mbusmeters/05500572B4250107' traité en 809ms (très long), vérifiez les commandes affiliées : #[Agrégateurs][Agrégateur H2O][05500572B4250107]#, #[Agrégateurs][Agrégateur H2O][Compteur global eau]#, #[Agrégateurs][Agrégateur H2O][Débit]#, #[Agrégateurs][Agrégateur H2O][Error flags]#, #[Agrégateurs][Agrégateur H2O][Fabrication number]#, #[Agrégateurs][Agrégateur H2O][Firmware version]#, #[Agrégateurs][Agrégateur H2O][ID]#, #[Agrégateurs][Agrégateur H2O][Màj]#, #[Agrégateurs][Agrégateur H2O][Manufacturer]#, #[Agrégateurs][Agrégateur H2O][Nb accès]#, #[Agrégateurs][Agrégateur H2O][Reserved VIF extension]#, #[Agrégateurs][Agrégateur H2O][Type]#
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Compteur global eau]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Débit]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Error flags]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Fabrication number]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Firmware version]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][ID]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Màj]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Manufacturer]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Nb accès]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Reserved VIF extension]# est de type info Json : ignorée
[2024-08-26 20:30:13] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Type]# est de type info Json : ignorée
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][05500572B4250107]# <- {   "MBusData": {     "SlaveInformation": {       "Id": "5500572",       "Manufacturer": "IMT",       "Version": "1",       "ProductName": null,       "Medium": "Water",       "AccessNumber": "187",       "Status": "00",       "Signature": "0000"     },     "DataRecord": [       {         "@id": "0",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Volume (m m^3)",         "Value": "2258252",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "1",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Tariff": "1",         "Device": "0",         "Unit": "Volume (m m^3)",         "Value": "0",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "2",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Volume flow (m m^3/h)",         "Value": "0",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "3",         "Function": "Maximum value",         "StorageNumber": "0",         "Unit": "Volume flow (m m^3/h)",         "Value": "2000",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "4",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Time Point (time & date)",         "Value": "2024-08-26T19:51:00",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "5",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Tariff": "0",         "Device": "0",         "Unit": "Fabrication number",         "Value": "10024068",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "6",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Tariff": "0",         "Device": "1",         "Unit": "Fabrication number",         "Value": "5500572",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "7",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Firmware version",         "Value": "111",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "8",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Hardware version",         "Value": "1",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "9",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Error flags",         "Value": "0",         "Timestamp": "2024-08-26T18:28:03Z"       },       {         "@id": "10",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Reserved VIF extension",         "Value": "4556",         "Timestamp": "2024-08-26T18:28:03Z"       }     ]   } }
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Compteur global eau]# <- 2258252
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Débit]# <- 2000
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Error flags]# <- 0
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Fabrication number]# <- 10024068
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Firmware version]# <- 111
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][ID]# <- 5500572
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Màj]# <- 2024-08-26T18:28:03Z
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Manufacturer]# <- IMT
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Nb accès]# <- 187
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Reserved VIF extension]# <- 4556
[2024-08-26 20:30:13] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Type]# <- Water
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Compteur global eau]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Débit]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Error flags]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Fabrication number]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Firmware version]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][ID]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Màj]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Manufacturer]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Nb accès]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Reserved VIF extension]# est de type info Json : ignorée
[2024-08-26 20:33:52] DEBUG  : Cmd #[Agrégateurs][Agrégateur H2O][Type]# est de type info Json : ignorée
[2024-08-26 20:33:52] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][05500572B4250107]# <- {   "MBusData": {     "SlaveInformation": {       "Id": "5500572",       "Manufacturer": "IMT",       "Version": "1",       "ProductName": null,       "Medium": "Water",       "AccessNumber": "188",       "Status": "00",       "Signature": "0000"     },     "DataRecord": [       {         "@id": "0",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Volume (m m^3)",         "Value": "2258252",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "1",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Tariff": "1",         "Device": "0",         "Unit": "Volume (m m^3)",         "Value": "0",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "2",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Volume flow (m m^3/h)",         "Value": "0",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "3",         "Function": "Maximum value",         "StorageNumber": "0",         "Unit": "Volume flow (m m^3/h)",         "Value": "2000",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "4",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Time Point (time & date)",         "Value": "2024-08-26T19:52:00",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "5",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Tariff": "0",         "Device": "0",         "Unit": "Fabrication number",         "Value": "10024068",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "6",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Tariff": "0",         "Device": "1",         "Unit": "Fabrication number",         "Value": "5500572",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "7",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Firmware version",         "Value": "111",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "8",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Hardware version",         "Value": "1",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "9",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Error flags",         "Value": "0",         "Timestamp": "2024-08-26T18:29:03Z"       },       {         "@id": "10",         "Function": "Instantaneous value",         "StorageNumber": "0",         "Unit": "Reserved VIF extension",         "Value": "4556",         "Timestamp": "2024-08-26T18:29:03Z"       }     ]   } }
[2024-08-26 20:33:52] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Compteur global eau]# <- 2258252
[2024-08-26 20:33:52] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Débit]# <- 2000
[2024-08-26 20:33:52] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Error flags]# <- 0
[2024-08-26 20:33:52] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Fabrication number]# <- 10024068
[2024-08-26 20:33:52] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Firmware version]# <- 111
[2024-08-26 20:33:52] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][ID]# <- 5500572
[2024-08-26 20:33:54] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Màj]# <- 2024-08-26T18:29:03Z
[2024-08-26 20:33:54] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Manufacturer]# <- IMT
[2024-08-26 20:33:54] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Nb accès]# <- 188
[2024-08-26 20:33:54] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Reserved VIF extension]# <- 4556
[2024-08-26 20:33:54] INFO  : Cmd #[Agrégateurs][Agrégateur H2O][Type]# <- Water

Rien d’anormal si ce n’est les lignes dans le logs avec : Cmd #[Agrégateurs][Agrégateur H2O][Compteur global eau]# est de type info Json : ignorée

Est-ce que quelqu’un aurait une idée de la cause de ce problème ?

Merci beaucoup

Joël

Bonjour Joël,

Si tu te connectes sur un Mosquitto local, as-tu vraiment besoin de définir login/mdp et Client-Id ?

Il semblerait qu’il y ait en effet du lag dans le traitement

Je veux bien quand même ta page santé, si ça lag à ce point, c’est souvent un problème de charge, surtout avec ce type de message dans les logs :

Ce n’est pas anormal, c’est de logs de debug lors de la mise en correspondance des messages et des commandes Jeedom.

Question subsidiaires :

  • As-tu installé depuis peu un autre plugin utilisant MQTT ?
  • As-tu changé autre chose sur ton Jeedom ?
  • Peux-tu fournir le « pavé de diagnostic » généré par le bouton en haut à droite dans jMQTT:
    image
    du style :
OS version: debian 10 on kvm
PHP version: 7.3.31-1~deb10u7
Python version: 3.7.3
Core version: 4.4.10 (master)
Nb lines in http.error: 337
Plugins: birthday blitzortung brother FreeSms gsh homeconnect JeedomConnect jMQTT mail meteofrance mode Monitoring networks prixcarburants rteEcowatt script sunshutter thermostat ttscast virtual weather

jMQTT: 23.11.8 (2024-06-08 14:14:48) branch: beta
Nb Errors or Warnings in jMQTT logs: 2925 (level is warning)
Daemon Status: Started (2024-08-15 17:43:09)
Nb eqBrokers: 2 / eqLogics: 101 / cmds: 918

Merci,

Bad

Bonjour,

Alors voici les informations

OS version: debian 10 on microsoft
PHP version: 7.3.31-1~deb10u7
Python version: 3.7.3
Core version: 4.4.13 (master)
Nb lines in http.error: 1024
Plugins: airpollen alarm AlternativeMarketForJeedom arlo baro cloudsyncpro conso consoWidget dataexport devolo_cpl digicode gardena groupe heliotrope HomeAssistantConnect htmldisplay icon JeedomConnect jeelink jMQTT mail MeteoFull mode Monitoring monitoring2 mymodbus netatmopro networks Nut_free onduleursolaredge philipsHue piHole pimpJeedom pyenv rfxcom rosee script shelly SomfyHomeAlarm stopleak strava Swissms telegram thermostat virtual watchdog webview wifilightV2

jMQTT: 23.11.8 (2024-06-08 14:14:45) branch: stable
Nb Errors or Warnings in jMQTT logs: 586 (level is error)
Daemon Status: Started (2024-08-26 17:04:49)
Nb eqBrokers: 4 / eqLogics: 4 / cmds: 203

Et la page de santé

Je vais supprimer le client ID, username et password de mon Broker
Je n’ai pas installé un autre plugin utilisant MQTT dernièrement.
J’ai apportée des adaptations sur la manière de traiter les historiques des commandes et ai purger la DB.

A noter que j’ai prévu de transférer mon jeedom de ma VM Synology vers un NUC sur lequel j’installerais ProxMox.

Joël

Hello et merci pour les infos,

Quelles sont les caractéristiques de ta VM stp ?

Je pense qu’elle est beaucoup trop petite, la charge est énorme !

Tu as aussi pas mal de choses dans ton log http.error et des erreurs/warnings dans jMQTT, tu peux m’en dire plus ? (mais je pense que je problème de latence vient de la surcharge de la VM).

Bad

Caractéristiques NAS

Caractéristiques de la VM
Processeur 1
Mémoire 2 GB
Stockage 60 GB

Si tu le souhaite je peux t’envoyer le log http.error par MP?

Je vais faire un essai en boostant ma VM avec 2 processeurs et 3GB de mémoire.

Joël

Le 2 vCPU sont (selon moi) necessaires en effet, mais 2 Go de RAM semble être assez.

Pas pour le moment, je ne pense pas y trouver d’info pertinente, on vera si le CPU supplémentaire ne donne pas un peu d’air à Jeedom.

Je vais surveiller mais apparemment ça à l’air d’être bon désormais, la mise à jour est synchrone.
Je check, merci.
Bon en même temps j’ai lu souvent qu’une VM sur un « petit » Synology c’est un peu limite pour faire tourner Jeedom.

1 « J'aime »

Oui, c’est souvent assez limité et peut impacter les perfs du syno.

Ravi que tu ais trouvé un semblant de solution, il va falloir maintenant que tu comprennes pourquoi tu as une telle charge sur Jeedom.

Bad

Après 1 journée tout est rentré dans l’ordre, problème de charge.
Je vais analyser correctement ce qui génère autant de charges sur mon Jeedom (scénarios, plugins, etc.)
Qu’est-ce qu’il faut vérifier finalement ?

Au final est-ce qu’il y a une valeur de charge « admissible » sur Jeedom, les chiffres affichés ne sont pas super parlant.

Merci encore

Joël

Hello,

Tu trouveras quelques informations par ici :

En gros, il ne faut pas que la charge dépasse « trop » le nombre de processeurs de ta machine.

Pour ce qui est d’identifier les problématiques de charge dans Jeedom, je te recommande d’ouvrir sujet dédié, ça peut être trop d’historique ou de virtuels, des scripts ou des plugins gourmands, ou juste que 1vcpu c’était un peu short…

Bad

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.