[MySQL] Error code : 22001 (1406) historiser une commande

Bonjour,
J’ai ce message qui est apparu, si j’ai bien compris c’est parce que j’ai une commande qui envoie trop de caractères, je ne peux donc pas l’historiser…

jMQTT::fromDaemon_msgIn() a levé l'Exception: [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		

Du coup il y a quoi comme solution si je veux avoir l’historique quand meme ? c’est mon alarme qui envoie tous les événements meme ceux dont je n’ai pas besoins du style :
1271:history **security 2023-09-19T11:49:16Z Désactivation de la protection par la télécommande « télécommande 4 boutons »**

Merci pour votre aide

Bonjour @xavax59

Je vois 2 solutions :
1 - envoyer le résultat dans la timeline plutôt que d’historiser (case à cocher coté commande)
2 - utiliser plugin-logmanager pour générer un fichier de log propre à cette commande info

Norbert

merci je vais regarder ce que je peux faire avec le plug in log manager

J’ai regardé vite fait le plug in, ça n’a pas l’air simple à mettre en œuvre. Je n’ai pas compris comment je pouvais isoler l’historique d’une commande dans le plug in

Ce n’est pas compliqué du tout.
Le plugin te crée un fichier de log par équipement créé.
Il suffit que tu crées un scenario declencher par ta commande info.
et ce scenario renvoie la valeur de la commande dans la commande action « info »

Dans ton cas, tu peux éventuellement exclure des evenements via le scenario et/ou créer des equipements spécifiques dans logmanager pour créer un fichier de log par type d’evenement securité/desactivaiton alarme/…

Norbert

2 « J'aime »

je pense avoir compris le principe, il faut que je fasse des tests pour voir ce que l’alareme envoie pour filtrer dans le scénario

C’est pas mal! reste a tester si l’alarme envoie différentes rubriques pour les classer mais j’ai reussi

reste a savoir pour les accents ne sont pas pris en compte pour que ca fasse plus propre et savoir si c’est possible de faire en sorte de n’afficher que

> Désactivation de la protection depuis internet

je vais poser une question hors sujet mais c’est pour ton myfox2mqtt en fait?
tu m’as jamais répondu si tu avais bien un topic « homeassistant » visible sur ton broker ni si tu avais une option pour ca :wink:
car d’après leur doc ca devrait être le cas

je ne sais pas comment savoir si j’ai ca. et c’est bien pour mon histoire d’alarme. J’essaye de faire en sorte de simplifier au max. Ca pourrait servir a d’autres qui vont se rendre compte que ca ne fonctionne plus en 4.4

Comment je fais pour savoir si j’ai ca ? je peux le voir a distance ? J’ai un HA qui tourne pour essayer myfox2mqtt et c’est tout.

J’ai fait ceci pour tester sur JMQTT, c’est ca qu’il faut faire ?

oublies ton HA, le topic pourrait se nommer « bidule » ca serait pareil, aucun rapport avec le fait d’avoir HA installé ou pas

=> ouvre mqtt explorer, tu as surement cet outil, et regardes :wink:


non, tu n’as certainement pas besoin de ca

et du coup ca peut se gérer comment l’histoires des accents avec log manager ?

Faudrait déjà savoir ce qu’il y a exactement dans le log
logmanager ne transforme pas le contenu donc s’il affiche le é encodé unicode/utf16 (0x00E9) c’est que tu as cette valeur dans le fichier à priori et donc ce serait à la source qu’il faut corriger (si c’est possible)
=> peux-tu ouvrir le fichier depuis le menu analyses > log et également allez voir directement dans le fichier (via explorer de fichier jeedom par exemple) et montrez ce que tu vois?

tu peux te fair eun petit bloc code en amont :

// Étape 1 : Récupérer la valeur du tag Jeedom
$tags = $scenario->getTags(); // récupération des tags déjà implémentés
$messageComplet= $tags['#messageComplet#'];

// Diviser la chaîne en un tableau en utilisant l'espace comme séparateur
$champs = explode(" ", $messageComplet);

// et exclure les 3 premiers champs
$messageTronque= implode(" ", array_slice($champs, 3));
   
// Étape 2 : Mettre à jour la valeur d'un autre tag Jeedom
$tags['#messageTronque#'] = $messageTronque ;
$scenario->setTags($tags);

faut mettre ton message dans le tag messageComplet
et tu recuperes le résultat dans le tag messageTronque

Fait par chatGPT, non testé !!!

à défaut de lui demander d’écrire du code je devrais lui demander d’écrire mes réponses sur community :joy:

1 « J'aime »

Ça t’irait comme réponse de chatGPT ? … Il est très respectueux :wink:

Bien sûr, voici une réponse que vous pouvez utiliser sur le forum Jeedom concernant le plugin LogManager et l’affichage des caractères accentués :


Bonjour,

Pour résoudre le problème d’affichage des caractères accentués dans le plugin LogManager, vous pouvez suivre ces étapes :

  1. Assurez-vous que l’encodage de votre système est correctement configuré. Vous pouvez vérifier cela dans les paramètres régionaux de votre système d’exploitation.

  2. Vérifiez également l’encodage de votre base de données. Il doit être compatible avec l’encodage des caractères que vous utilisez dans vos logs.

  3. Dans les paramètres du plugin LogManager, assurez-vous que l’encodage est correctement configuré pour correspondre à celui de votre système et de votre base de données.

  4. Si vous utilisez des caractères spéciaux ou accentués dans vos logs, assurez-vous que les fichiers de logs eux-mêmes sont encodés correctement. Vous pouvez utiliser des outils comme « iconv » pour convertir l’encodage si nécessaire.

  5. Enfin, assurez-vous que votre navigateur web est également configuré pour afficher correctement les caractères accentués. Vous pouvez vérifier cela dans les paramètres de langue et d’encodage de votre navigateur.

En suivant ces étapes, vous devriez résoudre les problèmes d’affichage des caractères accentués dans le plugin LogManager.

J’espère que cela vous aidera à résoudre ce problème. N’hésitez pas à poser des questions supplémentaires si nécessaire.

Cordialement,
@mips

1 « J'aime »

il y a clairement plus de forme, si je dois écrire tant de chose à chaque réponse je ne m’en sors plus :sweat_smile:
d’un autre coté, pas dit qu’on arrive à une solution avec ce qui proposé, je ne sais pas ce qui est préférable :thinking:


version chatGPT:

Il semble y avoir une approche plus formelle. Je m’inquiète que la rédaction de messages plus longs devienne complexe :sweat_smile:. D’un autre côté, je ne suis pas sûr que les suggestions actuelles nous mèneront à une solution. Je me demande quelle est la meilleure approche :thinking:.

Je sens qu’on dérive du sujet de @xavax59 :grin:

0000|[2023-09-20 09:05:41]INFO : security 2023-09-19T15:30:46Z D\u00e9sactivation de la protection depuis internet
0001|[2023-09-20 11:44:38]INFO : security 2023-09-20T09:44:27Z D\u00e9sactivation de la protection depuis internet
0002|[2023-09-20 11:45:31]INFO : security 2023-09-20T09:45:22Z Activation totale de la protection depuis internet

Il n’y a pas l’accent. Ce que je ne comprends c’est pourquoi dans jmqtt je n’ai pas l’accent dans la commande mais sur le dashboard je l’ai

parce que le navigateur l’interprète correctement je pense

Je pense que cela s’explique par une interprétation correcte du navigateur.


et sur mqtt explorer?

ca donne ceci :