Ah ok je vais ajouter un check sur la longueur de la chaine avant le setConfiguration alors.
Mais çà pourrait vraiment casser toute la configuration de l’eq ??
Bon fausse alerte mon for php n’est pas bon (à jongler entre les languages…)
Donc génération d’une string de 338000 chars, puis setConfiguration :
Erreur exécution de la commande [Maison][Activité][Rafraichir] : [MySQL] Error code : 22001 (1406). Data too long for column ‹ configuration › at row 1
Donc çà ne vient pas de là !!
J’ai aussi ajouté :
filter_var($thisData, FILTER_SANITIZE_STRING);
Mais toujours le bug avec un nuc blea.
Et j’en ai pas donc impossible de débugger en live grrr…
Oui je fais bien un save après. Le plugin en soit marche très bien chez plusieurs personnes, juste une personne qui a ce problème avec un nut blea et la commande info present.
Oui c’est ce que je viens de faire.
Pas de substr par contre, je met un message comme quoi ce n’est pas normal, trop de répétitions de valeurs.
Là c’est une presence par un nut, l’historique remonte une donnée presque chaque seconde ! Pour les perfs de jeedom en général çà doit pas être génial.
Il n’y a pas le choix sur du bluetooth. Ce n’est pas toutes les secondes c’est très exactement toutes les 29 secondes
Il est impossible de savoir que quelquechose n’est plus là par contre on peut savoir qu’il est là. Et donc il faut notifier sa présence régulièrement et il n’y a que l’absence de notification sur X cycles qui permet de savoir et confirmer l’absence.
Donc non je pense qu’alexandre a raison, tu ne connais pas les besoins des autres plugins, par contre tu connais les tiens donc je pense que il vaut mieux t assurer que pour ce que tu veux faire tu as ce qu’il faut en limitant la data à ce que tu veux stocker. Ca evitera que tu sois reconfronté au soucis sur un autre cas
Je me suis penché a l’instant sur le code de ton plugin pour voir si j’avais une idée et je pense que c’est un point que tu devrais envisager, ton plugin stock en quelquesorte un historique de data sous forme de string, je ne pense pas que le setconfiguration soit judicieux pour ce cas là. je pense que stocker ta data dans un fichier indépendant type json soit beaucoup plus pertinent. Un peu comme le fait Jeedom pour la timeline
Oui je pense passer par un fichier Json, j’y pensais de dès les debut pour gérer un cache et ne pas reprendre ce qui a déjà été inscrit.
Pour la présence blea j’ai ajouté une option ne pas répéter pour éviter de flooder le log.
Je voulais déjà tenter un premier plugin car le moteur tourne depuis décembre sous forme de script. Les retours sur le forum on déjà permis de l’ameliorer, le json est l’etape d’apres
À ce propos si je créer un jeelog.json dans un dossier data du plugin, serat automatiquement supprimer avec le reste du plugin quand qql un le désinstalle ?
Salut a la désinstallation oui, mais avantage ce dossier n’est pas écrasée lors d’une mise à jour.
Oui je pense que le json est une bonne piste dans ton cas. Car tu risques d’avoir d’autres cas
Exemple une personne qui voudra se servir de ton plugin pour afficher sur un widget tous les changements de son horoscope lol. Alors oui aucun sens mais vu qu’avec Jeedom on peut tout faire les gens prennent l’habitude de vouloir tout faire meme le plus fou.
Mais c’est qu’un exemple. Et oui effectivement avoir une propre notion de non répétition pour ton plugin est une bonne idée. Car ça aura pleins d’autres applications
Pour le moment même si ça évoluera, le rescue=1 permet d’éviter les erreurs 500 isolés dans un plugin. Si c’est le core qui est dans les choux rescue le sera aussi. Mais c’est qu’un début
Oui ça tronque effectivement mais un json tronqué n’est plus valide. Ce qui explique pourquoi dans tous les champs configuration tu retrouves le début du json. Les infos n’ont pas disparus juste que le json n’est plus interpretable
J’ai une nouvelle version qui est prête avec les datas dans un fichier txt (pas besoin de json pour çà).
Je le nomme dans monplugin/data/id.txt id étant l’id de l’eqlogic.
Est-ce qu’un plugin a toujours le droit d’écrire dans son répertoire ? Que ce soit smart, docker, rpi etc ?
Pour supprimer les anciennes données dans la configuration, je fais en preSave():
$this->setConfiguration(‹ data ›, null);
Par contre comment le faire lors de l’update du plugin par le market ? Pour tout ses équipements.