Récupération de données en fonction d'une autre valeur car même chemin "Json"

Bonjour,

Merci pour ce plugin, j’ai réussi à mettre en place mon Hub 2000 de la marque Zendure qui utilise un autre broker car je ne voulais pas passer sur HA

J’ai une petite question, je veux récupérer une valeur en fonction d’une autre savoir si c’est possible ? quand j’ai ce schéma là il y a aucun soucis c’est pour packData

{
  "solarPower2": 136,
  "electricLevel": 10,
  "solarPower1": 139,
  "packData": [
    {
      "maxVol": 315,
      "sn": "CO4HMC4MDA02911"
    },
    {
      "maxVol": 315,
      "sn": "CO4HMCJMD800126"
    }
  ],
  "sn": "HO1HMC4MD700239",
  "outputPackPower": 260
}

Sauf des fois j’ai qu’une partie par exemple celui là

{
  "electricLevel": 11,
  "packData": [
    {
      "socLevel": 11,
      "sn": "CO4HMC4MDA02911"
    }
  ],
  "sn": "HO1HMC4MD700239"
}

Donc je veux récupérer une des valeur par rapport au sn qui est toujours présent

Merci d’avance
Cordialement

Salut,

Je ne comprend pas la question.
Tu veux récupérer quoi?

En mqtt ce n’est pas important si toutes les données ne sont pas dans chaque message.
Configures le « mapping » entre tes commandes jeedom et les clés du message et suivant le message les commandes seront mises à jour et c’est tout.

Donc si tu as electriclevel et solarpower alors 2 commandes seront mises à jour mais si une des deux valeurs n’est pas présentes ce n’est pas grave

Dans packData en gros j’ai 2 batteries avec des informations différentes, par exemple je veux récupérer le maxVol ou une autre information mais le [packdata][0] ca peux être soit l’une soit l’autre et différent en fonction du sn donc ce que je veux faire en fonction du sn récupérer la bonne information.

Ah ok, compris maintenant

là je ne connais pas assez jmqtt pour savoir si c’est possible

Hello,

Passe par un virtuel et une expression ternaire.

Je ne pense pas que ce soit gérable dans jmqtt, mais peut être que Bad aura une idée…

Sans certitudes, essaye $..packData[?(@.sn="CO4HMC4MDA02911")].maxVol

1 « J'aime »

Hello @shun84,

La réponse de Jeandhom est presque bonne :

Utilise le jsonPath $.packData[?(@.sn=="CO4HMC4MDA02911")].maxVol pour l’une des batteries et le jsonPath $.packData[?(@.sn=="CO4HMCJMD800126")].maxVol pour l’autre.

Je rappel qu’il y a un testeur de jsonPath ici :

Bad

2 « J'aime »

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