domotruc / jMQTT

Jeedom plugin to interface as a client with an MQTT broker.
16 stars 8 forks source link

Bug mise à jour 2019-11-03 vers 2019-12-02 #95

Open Marc-- opened 4 years ago

Marc-- commented 4 years ago

Salut,

Je rencontre un problème lors de la mise à jour du plugin dans sa dernière version. Je ne vois pas de post s'ouvrir sur le forum ni d'issue, alors je me lance. Bizarre si je suis seul mais bon...

Mon système est tout frais installé, Debian 10, Jeedom 4.0.32.

$ php -v PHP 7.3.11-1~deb10u1 (cli) (built: Oct 26 2019 14:14:18) ( NTS )

Lors de la mise à jour, blocage a 55%, avec les lignes suivantes :

`PHP Fatal error: Uncaught Error: Call to a member function getName() on bool in /var/www/html/plugins/jMQTT/core/class/jMQTTCmd.class.php:391 Stack trace:

0 /var/www/html/plugins/jMQTT/core/class/jMQTTCmd.class.php(214): jMQTTCmd->getLogName()

1 /var/www/html/core/class/DB.class.php(140): jMQTTCmd->preSave()

2 /var/www/html/core/class/cmd.class.php(970): DB::save(Object(jMQTTCmd))

3 /var/www/html/install/consistency.php(416): cmd->save()

4 /var/www/html/install/update.php(275): require_once('/var/www/html/i')

5 {main}

thrown in /var/www/html/plugins/jMQTT/core/class/jMQTTCmd.class.php on line 391`

Un soucis avec la version de php peut être ? La version actuellement en place tourne impec.

Je suis dispo si tu as besoin d'infos.

domotruc commented 4 years ago

Bonjour Marc, Le problème se produit dans une partie du code qui n'a pas été modifiée depuis de très nombreuses versions. Lors de la mise à jour, Jeedom vérifie toutes les commandes. Là, il semble qu'il tombe sur une commande jMQTT orpheline, dont il n'arrive pas à trouver l'équipement associé en base de données. Tu n'aurais pas fait des modifications récentes dans ta configuration qui pourrait l'expliquer?

Marc-- commented 4 years ago

Salut,

Et bien comme je disais, c'est une installation récente car pour passer de 3 a 4, j'ai choisi de tout recréer. Justement pour éliminer les traces de "bricolage" liées a ma découverte de Jeedom.

Donc dans l'ensemble je ne pense pas avoir fais de modifs importante. Surtout que je n'ai que 3 objets dans mqtt, donc plutôt limité.

Un moyen de lui faire dire de quelle commande il s'agit ?

Le mer. 4 déc. 2019 à 23:12, domotruc notifications@github.com a écrit :

Bonjour Marc, Le problème se produit dans une partie du code qui n'a pas été modifiée depuis de très nombreuses versions. Lors de la mise à jour, Jeedom vérifie toutes les commandes. Là, il semble qu'il tombe sur une commande jMQTT orpheline, dont il n'arrive pas à trouver l'équipement associé en base de données. Tu n'aurais pas fait des modifications récentes dans ta configuration qui pourrait l'expliquer?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/domotruc/jMQTT/issues/95?email_source=notifications&email_token=ACJADY2C5DPFZAEUOCUDYMDQXATLLA5CNFSM4JVIHTHKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEF6VRSI#issuecomment-561862857, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACJADY34FTUMPMJY5HQFTILQXATLLANCNFSM4JVIHTHA .

domotruc commented 4 years ago

Hello, Vas dans la Réglages > Système > Configuration, onglet OS/DB. Dans la section Base de données, cliques sur Lancer en face de Administration.

Copies/colles cette commande puis OK:

SELECT * FROM `cmd` WHERE `eqType`='jMQTT' ORDER BY `eqLogic_id` ASC

Sauvegardes le résultat ou ouvres une autre fenêtre

Puis entres cette commande:

SELECT * FROM `eqLogic` WHERE `eqType_name`='jMQTT' ORDER BY `id` ASC

Vérifies que pour chaque commande de la première table, le _eqLogicid se retrouve bien dans la 2ème table dans la colonne id.

Marc-- commented 4 years ago

Salut !

Ok je comprend un peu. Et donc mon problème c'est la résistance encrassée car j'ai pas utilisé Calgon ! Ou pas, désolé fatigue. Je m'en sors a peu près avec MySQL donc ça va. Mon problème est clairement visible. 2019-12-05 21_55_37-Database - Jeedom

Donc il va falloir tuer les orphelins ? Une commande du genre ?

DELETE FROM `cmd` where `eqLogic_id` = 74;`

Par contre, pourquoi je me retrouve quelques lignes plus bas avec exactement le même topic mais l'ID 75, donc bon ??

domotruc commented 4 years ago

C'est clairement pas normal que tu te retrouves dans cette situation. Tu ne saurais me décrire les manipulations que tu as faites? Sinon pour corriger, tu as bien la bonne commande delete.

Marc-- commented 4 years ago

Alors attention, ce n'est probablement pas la faute du plugin mais la mienne.

Ce qui a pu se passer: j'ai lancé une inclusion. Puis je me suis dit que c'était inutile car j'allais renommer les topics. Donc stop de l'inclusion, puis ajout a la main des équipements avec le topic renseigné : heatpump/couloir/# .

Ou alors: inclusion, suppression des équipements, ajout la main.

C'est chaud je ne me souviens pas bien, j'étais en train de tout remonter et j'avais un peu la pression car Jeedom gère le chauffage... Donc en ce moment assez critique.

Mais je n'ai pas fait de manips de fou, ça doit tourner autour de ça.

Je vais essayer de reproduire demain. En tout cas, l'update est passée sans soucis ! Un grand merci pour ton aide.

Le jeu. 5 déc. 2019 à 22:20, domotruc notifications@github.com a écrit :

C'est clairement pas normal que tu te retrouves dans cette situation. Tu ne saurais me décrire les manipulations que tu as faites? Sinon pour corriger, tu as bien la bonne commande delete.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/domotruc/jMQTT/issues/95?email_source=notifications&email_token=ACJADY2SGRP5VOXS266YSBLQXFWCRA5CNFSM4JVIHTHKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGCF7MQ#issuecomment-562323378, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACJADY2CM6H6KCBEJC5PTPDQXFWCRANCNFSM4JVIHTHA .

domotruc commented 4 years ago

Bonjour Marc, Je ne suis pas aussi confiant que toi, je pense qu'il y a bien un problème dans le plugin. En ne faisant que des manipulations dans l'interface, il n'est pas normal de se retrouver dans cette situation. Par contre, le problème n'est pas simple à reproduire. J'ai essayé à partir de tes informations, sans succès. Si tu y arrives, se serait super.