Erreur sur meteofrance::pullDataVigilance() : [MySQL] Error code : 22001 (1406). Data too long for column 'value' at row 1 : REPLACE INTO history SET cmd_id=:cmd_id, `datetime`=:datetime, value=:value
Bonjour,
Dans la bdd, la colonne value de la table history est limitée à 127 caractères.
Regardez dans les commandes Vigilance de type Autre lesquelles sont historisées et décochez l’historisation sur ces commandes. Principalement la commande « Vigilance - Json » qui dépasse allégrement les 127 caractères.
Ça serait peut-être pas mal un substr sur les valeurs en string afin de réduire leur longueur et éviter cette erreur MySql pas propre.
Et aussi que les commandes créées par exemple par le plugin virtual ne soient pas historisées par défaut.
J’explique pourquoi ces commandes ont une string de plus de 127 caractères.
Dans le plugin-meteofrance, pour faire cela:
J’avais le choix entre
Créer des dizaines de cmd à assembler dans un équipement pour chaque heure, jour, moment de la journée des prévisions météo. Le plugin meteofrance était déjà à environ 170 cmds. Ces commandes n’auraient alors comme seul lien entre elles que leur nom alors qu’elles sont très liées entre elles.
Créer une seule cmd dont la valeur sera en json. Le json peut être parsé en javascript par le navigateur. Des widgets qui le font sont fournis avec le plugin.
Si un utilisateur a besoin d’un valeur contenue dans une cmd en json, une fonction php est fournie pour l’extraire. Actuellement, il faut créer un scénario qui ira chercher la valeur et l’affectera à une cmd d’un virtual. Si l’on pouvait ajouter cette fonction dans utils.inc.php, on pourrait le faire directement dans le virtuel en calcul. Est-ce possible ?
PS: Ce n’est pas tout à fait du json qui est dans la valeur de la cmd. Il a fallu contourner le $result = str_replace('"', '', $result); du plugin virtual en remplacant les " par "
Bonjour
Hésites pas à faire un pr, perso je le ferais pas car derrière je vais avoir des tonnes de ticket de pk ma chaîne est pas complète… Sans compter la maintenance en plus si on agrandit la colonne un jour…
OK.
Ce message d’erreur ne me dérange pas . Je sais comment le traiter. Pourvu que tout ce qui était à faire après l’erreur MySQL soit fait.
Un avis peut-être sur ma façon de faire pour éviter la création de dizaine de cmds et la possibilité d’intégrer une fonction d’extraction de data dans du json dans utils.inc.php?
Je comprends pas ce que tu fais donc compliqué de te répondre… De plus ya tout ce qu’il faut en php pour gérer les JSON donc je sais pas trop ce qu’il te manque
Les cmds json passent partout designs, équipements, plugin virtuel …
Si c’est dans la configuration d’un équipement, il faudra faire des adaptations partout dans Jeedom.
$cmdValue est du texte en json. $request est sous la forme T > value ( Même syntaxe que le plugin script. )
Sur ce json dans $cmdValue, {"dt":1688000400,"T":{"value":16.5,"windchill":18.8},"h.... la fonction va retourner 16.5
J’ajoute que c’est comme ça que fonctionne le plugin-meteofrance dans sa dernière version.
Il y a juste l’erreur MySQL si une commande json est archivée. Et l’extraction de données d’une commande json qui nécessite un bloc code de scénario