Espeasy: Bug dans la détermination de l'index de Plugin_ptr

Créé le 21 oct. 2019  ·  5Commentaires  ·  Source: letscontrolit/ESPEasy

J'ai trouvé un bug très, très sérieux dans le code __Plugin.ino et il semble que je l'ai introduit vers 20180705. Voir : https://github.com/letscontrolit/ESPEasy/commit/2fde3d28a8af4ff044ae123ca820d312b7e59a90

Le problème est dans la gestion de certaines fonctions comme PLUGIN_xxx (WRITE/READ/etc)
Il utilise ensuite le mauvais index pour faire des choses, ce qui peut donner des résultats étranges sur les versions avec tous les plugins inclus (principalement test et personnalisé)

L'impact est un peu difficile à prévoir, mais je suppose que cela peut conduire à des accidents étranges.
C'est également à peu près à l'époque où les redémarrages de WDT ont commencé à être signalés.
Ainsi, une fois corrigé, il peut, espérons-le, résoudre un certain nombre de problèmes.

Plugin_ptr n'utilisera que des indices basés sur le nombre de plugins inclus dans la construction.
Il doit donc être adressé en utilisant un index basé sur le DeviceIndex (pas sûr que ce soit le bon index) et non sur le numéro d'identification du plugin (par exemple 004 pour le capteur Dallas)

Stabiliy Bug

Tous les 5 commentaires

C'est peut-être pour cela que j'ai récemment changé de périphérique d'IRTX à Switch après avoir remplacé le firmware ESP_Easy par une version personnalisée sans plug-in IRTX tout en conservant la configuration... :-)
Bravo, Gijs, que tu aies trouvé ce bug !

Le bug semble être assez ancien, donc vous ne savez pas quel grand saut vous avez fait dans les versions ?

De plus, je travaille déjà sur une refactorisation du code pour rendre le nom des variables un peu plus descriptif car ils m'ont également un peu dérouté.
Peut-être que le bogue est un peu moins grave, mais il devrait quand même être clair ce que fait le code et le code actuel n'est vraiment pas clair.

Eh bien, la configuration était très ancienne et de nombreuses mises à niveau du firmware ont été effectuées au cours des 2 dernières années sur ce nœud ... Dans le passé, IRRX et IRTX étaient en version standard ou testaient des versions officielles, mais ce n'est plus le cas, j'ai donc dû commencer par des versions personnalisées en utilisant Vagrant (au fait, merci beaucoup d'avoir préparé ce superbe environnement !). Comme j'ai besoin de beaucoup de plugins et que les plugins IRRX et IRTX actuels sont si gros, j'ai désactivé l'IRTX car IRRX est plus important pour moi, mais la configuration est restée la même lorsque j'ai téléchargé le firmware personnalisé sur le nœud. Ensuite, l'IRTX (appareil 11) est passé à Switch.

Oui, si un plugin est introuvable, il le définira sur le premier.
C'est aussi un bug, que je pourrai peut-être corriger avec ces changements.

La taille des plugins IR est ce qui m'a fait décider de les déplacer vers une version séparée.
Mais comme vous l'avez également découvert, vous ne pouvez pas avoir un 1-build-fits-all, c'est pourquoi j'ai examiné la configuration de Vagrant.

Corrige également un ennui de longue durée en cours de route.
Si une tâche est définie sur un pluginID non inclus dans la version actuelle, elle affichait "Switch" en tant que plugin.
De plus, ce qui se passerait si vous éditiez ensuite la page n'était pas vraiment clair.

Voici à quoi cela ressemblera une fois ce problème résolu :

image

L'ID du plugin sera affiché et le nom. L'état activé sera affiché comme désactivé et le reste sera laissé vide.
En tapant ceci, je me rends compte que le bouton rouge devrait afficher "Ajouter" ou peut-être un autre texte indiquant que vous allez créer une nouvelle entrée lorsque vous appuyez sur le bouton.

Cette page vous a été utile?
0 / 5 - 0 notes