Totalisation compteur Gazpar

Bonjour à tous.

J’ai équipé mon compteur Gazpar d’un petit capteur qui envoie des pulses tous les 10dm3 dans un esp8266 en mode serveur. Le pulse déclenche une interruption pour incrémenter l’index gaz.
Tout fonctionne correctement, j’ accède à l’index cpteur gaz depuis url : « ip_locale:port/indexGaz ».
Je voudrais que Jeedom puisse lire la valeur(json) de l’index dans le serveur esp8266.
Je ne sais pas si Jeedom sait faire cela et ne suis pas spécialiste dans la syntaxe GET ou POST, je suis allé consulter le net mais cela ‹ ne me parle pas ›.
Pouvez-vous m’aider ?

Bonjour,

Vous pouvez utiliser le #plugin-script pour avoir un équipement qui ira lire cette URL et sauvera la valeur dans une commande.
Il y a plein d’exemples dans la documentation.

Merci beaucoup pour ta réponse.

J’avais déjà essayé avec le plugin script mais ça n’aboutit pas.
Si j’ai bien compris l’exemple avec le json, dans le champ « requête » il y a un chemin avec un fichier en php pour récupérer le json.
Donc en ce qui me concerne pas besoin de remplir ce champ « requête » (à confirmer).

Ensuite dans le champ « option » j’indique l’url de ma carte esp8266 :
« 192.168.0.23:80/indexGaz » + « sauvegarde », puis « tester » => le résultat de la commande ne renvoie rien.
J’ai vu aussi ‹ ‹ qu’on parle › › d’une clé api. Peut-être que mon url est incomplète.

Excuses moi, mais je ne suis pas trop à l’aise avec ça. Si on aboutit à ce que je veux faire je serais plus confiant par la suite. :wink:

Non, que ce soit un fichier local ou une url http, c’est à configurer dans la case « URL du fichier » sous la colonne options comme vous l’avez compris.

Dans ce champ requête, vous devez « dire » au plugin quelle info vous voulez récupérer.
Regardez l’exemple dans la doc: https://doc.jeedom.com/fr_FR/plugins/programming/script/?theme=light#Exemple%20JSON
Je cite le texte sous le fichiers exemple:

Notez la syntaxe de la commande Requête, elle est de type élément0 > index du tableau > élément1

A vous d’adapter selon la structure de votre fichier pour extraire l’info de votre compteur

Si vous voulez plusieurs info, créez plusieurs commandes sur le même équipement

Yes, il y a du mieux, maintenant c’est un problème de syntaxe ‹ json › mais la valeur est lue, pas avec la commande ‹ tester › mais avec le bouton ‹ sauvegarder ›.

Bandeau rouge :
<< Json invalide ou non décodable : {« index_gaz »:766.26 m3} >>

Dans le champ requête j’écris simplement ‹ data ›.
Côté arduino, je n’ai qu’une seule valeur dans une variable ‹ float › (pas de tableau).

Je précise aussi quand je rentre l’url depuis firefox j’ai le retour :

  • onglet Données brutes : « {« index_gaz »:766.23 m3} »
  • onglet JSON : « SyntaxError: JSON.parse: expected ‹ , › or ‹ } › after property value in object at line 1 column 21 of the JSON data »

Donc sûrement un problème syntaxe json.
Je vais creuser de ce côté là mais je ne vois pas mon erreur et arduino en compilation n’en voit pas non plus.

Merci pour ton aide.

L’unité m3 rend le json invalide.
Vous devriez avoir:
En numérique:

{"index_gaz":766.26}

ou en texte:

{"index_gaz":"766.26 m3"}

Si vous voulez obtenir la valeur et l’unité, il faut les séparer dans le json:

{"index_gaz":766.26,"unité":"m3"}

Pensez à mettre vos exemples dans un Texte préformaté sinon le forum modifie certain caractères comme l’apostrophe ou les guillemets :wink:

J’ai corrigé l’erreur syntaxe dans arduino.
Maintenant dans la page web je n’ai plus d’erreur dans l’onglet JSON :

index_gaz	789.05

Dans le script je n’ai plus le bandeau rouge d’erreur, mais plus de valeur index.

Désolé mais dans la doc la structure json proposée en exemple ne correspond pas à ce que j’ai décaré dans arduino :

`void indexGaz() {
  
  String payload="";
  payload += "{";
  payload += "\"index_gaz\":" + String(cptGaz);
  payload += "}";
  Serial.println(payload);
  Serial.println();
  //type mime
  server.send(200,"application/json",payload);
 } //fin indexGaz`

Je ne sais pas ce qu’il faut écrire dans la requête. Je comprends qu’i faut renseigner une structure json du genre :

{
« cle »:valeur
}
Ce n’est pas clair pour moi. Désolé. :lying_face:

A priori, si votre json est ceci

{"index_gaz":766.26}

dans requête il faut juste mettre index_gaz

autre exemple, si vous aviez:

{
    "index": {
        "gaz": {
            "value":766.26,
            "unit": "m3"
        },
        "eau": {
            "value":766.26,
            "unit": "m3"
        }
        
    }
}

alors la requete serait: index>gaz>value

et ainsi de suite.
Et si vous avez un tableau dans la réponse, regardez l’exemple dans la documentation :wink:

Je viens de trouver la clé à renseigner dans la requête.

index_gaz

La valeur s’affiche bien avec le bouton ‹ tester ›.

Encore MERCI.
Ce fût laborieux ! :grinning:

Oui, ce que je disais juste au-dessus :wink:

Il faut cocher la case solution du poste donnant la solution et pas votre propre réponse.