Json invalide ou non décodable lorsque "nan" dans la réponse

Bonjour,

J’utilise le plugin script depuis un bon moment sans aucun problème pour récupérer des données JSON du controleur de ma piscine. Mais depuis quelques jours, un capteur de température est tombé en panne et renvoie une réponse de tytpe « nan ». Depuis le plugin script produit une erreur qui empêche toute mise à jour de donnée, modification ou enregistrement de paramètre.

Voici une ligne type du log

[2021-01-23 14:13:56][ERROR] : Erreur pour [Piscine][Commande Piscine][Consigne ORP] : Json invalide ou non décodable : { "pH": 7.20 , "Chlore": 720 , "TempEau": 27.00 , "TempAir": nan , "HumAir": 0.00 , "Filtration": 1 , "RegulpH": 0 , "InjectpH": 0 , "RegulChlore": 1 , "InjectChlore": 1 , "QteTotalPH": 2625 , "QteMensPH": 467 , "QteHebdoPH": 163 , "QteQuotPH": 0 , "PHInjection": 0.00 , "PHCible": 7.40 , "ORPCible": 675 }

Voici une capture d’écran du popup erreur

Une idée ? Merci pour votre aide.

Samuel

Une petite mise en forme serait nécessaire pour améliorer la lecture
[TUTORIEL] Comment inclure des log ou textes long dans un post

Juste une idée, remplace Nan par autre chose dans la chaîne

Bonjour, Je ne peux pour le moment pas remplacer le « nan » pour vérifier car il me faut modifier le code du controleur de la piscine pour cela et pas possible en ce moment. :frowning:

Bjr, en effet, merci pour la remarque et le tuto

Pas possible alors d’interpréter le json car avec ce « nan » il est invalide…

Le plus simple est de dépanner le capteur de température. :innocent:
Le plugin script avec une requête json ne permet pas de modifier le json avant le json_decode.
Il faudrait faire un script qui récupère le json, modifie le nan, décode le json et extrait les données.

ah !! les autres champs sont pourtant corrects ! Cela veut dire que si un équipement est en panne (données invalides), alors toutes les autres ne peuvent plus etre utilisées ? Bizarre non ? N’est-il pas possible d’apporter un correctif au plugin ? pour traiter ce genre d’erreur ?

oui il va etre dépanné mai sle temps de commander un nouveau capteur il peut se passer des semaines ! et pendant ce temps là … plus de gestion des données !! pas cool !

Non c’est à l’équipement à envoyer du json valide !

Sinon comme @jpty dit, tu fais un script à la main avec un str_replace(« nan »,0,$jsonBrut) avant de faire le json_decode

1 « J'aime »

Peut-être est-il possible de faire des requêtes au controleur de la piscine pour une seule valeur pour pouvoir recup les autres données correctes ?

1 « J'aime »

@nebz : Bon… Ok… je vais gérer…
@jpty : C’est déja ce que je faisais, une requete par équipement, mais cela ne fonctionne pas qd même !

Merci pour vos réponses rapides, je vais gérer comme je peux. au moins je sais qu’il s’agit d’une limite du plugin (et non un bug comme je le pensais) et qu’il me faut contourner le pb.

cdlt,
Samuel

C’est un bug du controleur qui fournit un json invalide.
Firefox ne decode pas non plus le json.
image

1 « J'aime »

Je pensais à des requetes pour recup une seule valeur dans l’équipement.

ah ! au temps pour moi… j’en restais aux données brutes. je vais modifier mon code pour gérer ce type d’erreur et reprogrammerai mon contrôleur dès que possible. merci pour l’éclairage

c’est ce que je voulais dire . ci dessous une capture d’écran

Bonjour,
Une autre idée.
Tu peux modifier le code du plugin pour remplacer nan par null avant l’appel de json_decode.

Avec null à la place de nan, ça fonctionne pour Firefox:
image

super ! par contre je ne sais pas ou trouver le code du plugin ! j’ai été voir dans /var/www/html/plugins/script/ mais après ?
Pourriez vous m’aiguiller ?
Merci

core/class/script.class.php