Aller au contenu
Lazer

Watchdog Pour Scènes Et Modules Virtuels

Recommended Posts

Merci pepite pour ta réponse

J'ai relu hier l'ensemble des pages du forum et tendais seul la modification du code.

Merci encore pour ton aide et conseil et bonne soirée et bonne fin de week-end.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Inconditionnel de watchdog, celui ci m'a fait une blague ce matin en me redemandant de relancer GEA car "Durée des traitements non trouvés". GEA semble pourtant continuer à tourner... je réenregistre GEA  sans avoir rien toucher d'autre et watchdog se calme... Une idée du problème rencontré?

Merci et cdt

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 26/03/2017 à 20:35, pepite a dit :

Bonsoir @kioneoranga

 

Regarde ce post

 1- tu rajoutes la fonction dans le code. 

 2 tu cherches Load VD-Scene

3- tu mets ce que titof a appelé titof bug 4.10 jusqu'a end titof.

 

Si tu as besoin, je peux te partager toute ma scène Watchdog 

Pepite

Bon le patch mis en place ne fonctionne pas chez moi

Je ne comprends pas

 

Voici le script de mon Watchdog!

Si tu as quelques minutes et une idée qui peut faire fonctionner la fonction de relance des scenes quand watchdog la détecte planté!

Un grand merci par avance

 

WatchDog-v1.1.lua

Partager ce message


Lien à poster
Partager sur d’autres sites

Re,

Pensez vous possible lorsqu'une scene plante, qu'il soit possible de lancer une seconde instance de la scene via API?

en // je laisse  l'instance planté et automatiquement et elle killée par Fibaro plus tard.

Pendant ce temps l'instance qui fonctionne assure le bon fonctionnement utilisateur.

 

En tout cas j'envisage tout car une fois encore ce matin l'instance GEA qui ouvre mes volets à planter et j'ai failli faire la grasse mat :-) 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Bizarre, le contournement de Titof fonctionne chez moi.

 

Tu as 2instances GEA, tu as bien 2 variables differentes ?

As tu essayé de n'en avoir qu'une ? On etait passé a 2 pour supprimer les latences d'une des versions du firmware, mais maintenant c'est OK

 

Tu as quel firmware ? 4.10 ?

Tu,peux avoir plusieurs instances de lancer oui, c'est comme cela que ca fonctionne maintenant pas sur que ce contournement avec GEA soit le bon.

Imaginons 2 scenes GEA en meme temps, tu vas avoir les actions en double..ca sent le plantage non? J'ai jamais testé.

Partager ce message


Lien à poster
Partager sur d’autres sites

le problème n'est pas d'avoir plusieurs instances, mais de pouvoir relancer l'instance au AUTOSTART. Et celle-ci est unique.

Les autres instances, lancées manuellement, sur trigger, sceneactivation, etc, c'est autre chose.

 

En tout cas ça me rassure, je ne suis pas le seul pour qui le contournement évoqué ne fonctionne pas.

Je crois que ça va finir en contournement radical => reboot de la box en cas de scène GEA plantée. Après tout c'est bien ce que je fais manuellement à chaque fois.

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui c est vrai que depuis ton watchdog juste pr l id de gea un petit reboot :-)

Envoyé de mon Nexus 5X en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 15/03/2017 à 00:17, drboss a dit :

Chez moi, après l'utilisation de le patch @Titof_44 et l'exécution de la commande


 httpClient:request("http://127.0.0.1:11111/api/sceneControl?id="..id.."&action=start")

la commande fibaro:debug(fibaro:countScenes(id)) retourne 0, mais la scène fonctionne correctement.

Bien sûr, Watchdog avec "0" redémarre la scène tout le temps

Si la scène arrêté et redemarre par slide bouton fibaro:countScenes(id) returne bien 1

Pourquoi???

Bonjour

Je viens de me pencher sur le fonctionnement et j'ai le meme comportement

Donc Watchdog relance continuellement la scene, je spam moi meme ma messagerie  :-)

Pas cool

Partager ce message


Lien à poster
Partager sur d’autres sites

@Pepite,

Oui j'ai deux instances de GEA avec deux variables distinctes, pas d'erreur de ce coté là.

C'est un choix voulu

En fait cela me permets de séparer les activités et non plus de faire la distinction comme dans le passé avec les actions immédiates

Donc dans mon cas si une instance plante cela ne plante pas tout l'automatisme de la maison.

J'en ai une pour les fonctions générales, mise à jour de certains VD, check des noeuds mort et comme la gestion de l'ensemble des volets de la maison

Ensuite la seconde pour des fonctions plus particulières propre à chaque pieces de la maison.

C'est sur cela complexifie la maintenance et le suivit mais voila cela permet de préserver des fonctions car il est rare que mes deux instances GEA plante en même temps

 

Concernant le firmware, je suis en 4.120, derrière en date qui pour info n'a pas solutionné mon pb de performance du moteur web qui affiche l'interface.

Une fois sur 3 je dois faire des refreshs de l'interface pour quelle s'affiche correctement!

J'avais ouvert un incident à Fiabro qui m'avait tout simplement dit que j'avais trop de module, pour une machine de guerre cette HC2 était vite dépassée d'un point de vue moteur Web

Enfin c'est un autre sujet...

 

 

@Lazer,

Je confirme, le contournement de Titof ne fonctionne pas pour moi

J'ai fait des tests en lançant le workarround de titof et j'ai bien constaté le stop et le start de l'instance, mais la valeur count reste à zéro et donc Watchdog relance continuellement considérant l'instance comme plantée !! Pas cool

Concernant le reboot, je me suis dit la même chose, si GEA plante alors reboot HC2! mais franchement c'est radicale

Concernant "AUTOSTART" faut il retirer cette fonction de l’entête de mes instances GEA?

 

 

Enfin tout ceci ne me fera pas abandonné ma HC2, et puis j'aime trop ce forum  :-)

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

ah oui ok, pourquoi pas, c'est une bonne gestion aussi, il n'y a pas de vérité ;-) 

 

En fait je te posais la question du firmware en regardant ton profil, t'es en 4.110 ;-)

 

Quelque soit ton navigateur ça rame ? 

 

C'est radical, mais ça va fonctionner et le reboot ne prend pas autant de temps que cela ;-) 

Oh que non, à mon avis, il ne faut pas enlever l'autostart pour GEA, si tu oublies en cas de reboot d'aller cliquer pour lancer la scène tu n'aura plus rien ;-)

  

Partager ce message


Lien à poster
Partager sur d’autres sites

Si une scène en AUTOSTART qui réalise une seule action : un fibaro:startscene de GEA !

 

Ou comment faire compliqué quand on peut faire simple :rolleyes:

Partager ce message


Lien à poster
Partager sur d’autres sites

oui c'est sur, mais là..ca simplifie pas le fonctionnement ;-) :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

non, mais cela permet de démarrer GEA sur un StartScene et d'appliquer le patch.... enfin si j'ai bien suivi.

 

Je vais essayer d'implémenter le reboot dans les paramètres, pour une nouvelle version du Watchdog mais je suis toujours en déplacement là, et attendre 2 minutes à chaque chargement de page de la HC2, je suis pas motivé.

Bien sûr, bientôt j'aurais la Fibre, alors je n'aurais plus ce problème, le VPN va mouliner :D:P

 

Partager ce message


Lien à poster
Partager sur d’autres sites
ah oui ok, pourquoi pas, c'est une bonne gestion aussi, il n'y a pas de vérité ;-) 
 
En fait je te posais la question du firmware en regardant ton profil, t'es en 4.110 ;-)
 
Quelque soit ton navigateur ça rame ? 
 
C'est radical, mais ça va fonctionner et le reboot ne prend pas autant de temps que cela ;-) 
Oh que non, à mon avis, il ne faut pas enlever l'autostart pour GEA, si tu oublies en cas de reboot d'aller cliquer pour lancer la scène tu n'aura plus rien ;-)
  


Je vais mettre à jour mon profil,

Concernant le navigateur, je suis maintenant avec Chrome sous tes conseils
Ayant essayé ie et Firefox

Envoyé de mon ONE A2003 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Je n'ai pas testé, mais je crois que Chrome, Safari et Edge, c'est ok. 

Le moteur de Firefox rame un peu ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 13/04/2017 à 08:17, jmg38 a dit :
Bonjour,
Inconditionnel de watchdog, celui ci m'a fait une blague ce matin en me redemandant de relancer GEA car "Durée des traitements non trouvés". GEA semble pourtant continuer à tourner... je réenregistre GEA  sans avoir rien toucher d'autre et watchdog se calme... Une idée du problème rencontré?
Merci et cdt

 


Je suis dans le même cas.
Bizarre.
Alors que GEA fonctionne très bien.

J'ai désactivé le watchdog pour le moment.

 

Modifié par Sakkhho

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens aussi d'être touché par le même problème.

Alerté par vos 2 messages, je me suis dit il faut que j'aille vois... ce qui m'a pris 15 Minutes pour ouvrir 3 malheureuses pages Web, mon upload sature totalement

 

Dans le log de GEA, c'est ceci à la fin :

[DEBUG] 22:53:01: Durée des traitements : 2s nouveau délai : 28s / tourne depuis 115h 50m 7s
[DEBUG] 23:03:00: Durée des traitements : 1s nouveau délai : 29s / tourne depuis 116h 6s
[DEBUG] 23:13:00: Durée des traitements : 1s nouveau délai : 29s / tourne depuis 116h 10m 6s
[DEBUG] 23:18:18: [ Vacances=0 ] !!! ERREUR !!! : vérification (ID: 126) [VirtualDevice,482,19] [If..]

Sur la page Web, je vois pourtant "1 running instance"

 

Le Watchdog a commencé à me spammer à 23:24, donc 10 minutes après le dernier message "Durée des traitements".

Dans le log de Watchdog, j'ai ces 4 messages en boucle :

Scene(22) String "Durée des traitements" not found
Restart Scene(22)
Scene(22) successfully restarted
Notification : Watchdog : Scene "GEA" (22) a été redémarré

 

Dans l'interface Web, j'ai fait un Save de GEA, sans succès (normal, c'est ce que fait le watchdog en vain).

 


Conclusion provisoire :

- Le bug de l'API lors de la sauvegarde d'une scène est toujours présent

- GEA s'est planté tout seul, ce n'est pas un plantage de la scène au sens habituel des plantages.... donc GEA n'affiche plus rien dans le log, mais pourtant il tourne toujours

- le watchdog fait son job, puisqu'il ne trouve pas la chaine "Durée des traitements", il pense que GEA est planté

 

 

Reste à comprendre pourquoi GEA a ce comportement anormal..... et là ça me dépasse, faudrait faire intervenir maitre @Steven :13:ou son nouveau disciple @pepite

Partager ce message


Lien à poster
Partager sur d’autres sites

Ma ligne sur laquelle GEA a planté, je ne comprends pas pourquoi alors qu'elle fonctionne en temps normal :

 

GEA.add({{"Global", "Vacances", "0"}, {"Global", "Absence", "1"}, {"Global", "VD_Roomba_State", "st_base_trickle"}}, 5*60, "", {{"VirtualDevice", id["VD_ROOMBA"], 19}}) -- Clean

Les variables globales utilisées :

{
	name: "Absence",
	value: "0",
	readOnly: false,
	isEnum: true,
	enumValues: [
		"0",
		"1"
	]
},
{
	name: "Vacances",
	value: "0",
	readOnly: false,
	isEnum: true,
	enumValues: [
		"0",
		"1"
	]
},
{
	name: "VD_Roomba_State",
	value: "st_base_trickle",
	readOnly: false,
	isEnum: false
},

 

Ce scenario GEA n'était pas censé se déclencher, le contenu des variables globales en question n'ont pas changé durant les 5 minutes précédentes.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

D'après le log, GEA s'est planté en plein milieu de cette fonction :

  -- ---------------------------------------------------------------------------
  --  Check les tâches à effectuer sinon, log si une erreur survient
  -- --------------------------------------------------------------------------- 
  GEA.checkAllToDo = function(nbElement)
    if (not GEA.pause()) then 
      for i = 1, nbElement do
        GEA.log(GEA.translate[GEA.language]["RUN"], GEA.todo[i], GEA.translate[GEA.language]["CHECKING"], false)

        if (GEA.catchError) then
          if (not pcall(function() GEA.check(GEA.todo[i], i) end)) then
            GEA.log(GEA.translate[GEA.language]["ERROR"], GEA.todo[i], GEA.translate[GEA.language]["CHECKING"], true, red)  -- <== Ici là, dernier endroit où il affiche le message erreur dans la zone de debug de GEA avant plantage
          end
        else
          GEA.check(GEA.todo[i], i) 
        end
      end
    end

    return os.time()   
  end

 

Je ne suis pas capable d'interpréter tout le code sans rentrer en profondeur dans GEA, mais ce que je vois, c'est qu'il fait un pcall pour se protéger d'un éventuel plantage lors de l'appel de la fonction GEA.check).

Si cela échoue, alors il affiche le message d'erreur, mais j'ai comme l'impression qu'il manque une gestion de l'erreur.

Si il ne fait qu'afficher le message sans traiter l'erreur, en toute logique c'est pas trop étonnant que ça ne se passe pas bien par la suite.

 

@Steven qu'en penses-tu, c'est un bug dans GEA ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 10 heures, Lazer a dit :

son nouveau disciple @pepite

Olala ca se moque auj ;-)

 

Bon, je veux bien regarder, mais je ne suis pas sur de traiter correctement les erreurs. A voir ce qu'en pense master
@Steven

Je veux bien qu'il me pilote, je vais voir avec lui. Sinon de mon côté l'affichage de "durée de traitements" est toutes les 5 minutes et non 10.

C'est une des différences entre la version de @tibahut et celle de @Steven. On peut peut-être regarder de ce cote la d'abord. Vous pouvez regarder dans le code :

 

if (first >= 10) then

Vous devez avoir 20 non ?

 

Je ne vois pas pourquoi ta ligne est en erreur ;-(

Modifié par pepite

Partager ce message


Lien à poster
Partager sur d’autres sites

Euh, je n'ai aucune variable "first" dans mon GEA, en version 5.40

 

Mais je pense que chercher du coté du message "durée des traitements" est une fausse piste.

Le bug que je soulève plus haut, c'est que GEA semble mal traiter un cas particulier, ce qui abouti à une situation où la scène GEA tourne toujours (1 instance), mais dans laquelle GEA ne fait plus rien (pas de gestion des scénarios ni d'affichage du fameux message "durée des traitements" ni d'aucun autre message).

 

Et afin que ça soit bien clair pour tous, on parle là uniquement de l'instance unique en Autostart, celle qui tourne en permanence dès le boot de la box, sous forme de boucle infinie.

Les autres instances déclenchées sur Triggers ne sont évidemment pas impactées car elles exécutent leur tâche puis s'arrêtent immédiatement.

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui normal, en fait la variable est "count" dans la versio de @tibahut.

 

Ok, j'avais bien compris, on parle bien de la même chose pour "l'Autostart".

Partager ce message


Lien à poster
Partager sur d’autres sites

ATTENTION : GEA maîtrise les erreurs uniquement si GEA.catchError est à true (par défaut dans ma version) sinon, il arrête de tourner en cas d'erreur.

 

 

GEA se protège lui même au cas ou une ligne GEA.add contiendrait des erreurs. Au lieu de crasher, GEA continu sont traitement comme si rien ne s'était produit.

 

Il n'est pas vraiment possible de traiter ces erreurs car c'est du code "utilisateur" qui est exécuter et seul l'utilisateur sait ce qu'il faut en faire. 

 

L'erreur en tant que telle ne devrait pas planté GEA puisque justement elle est maîtrisée (pas corrigé ni traitée mais maîtrisée). pcall = "protected call".

 

 

Hormis cela, il m'est arrivé d'avoir un GEA planté alors qu'il n'y avais  aucune erreur dans mon code. Et l'inverse c'est déjà aussi produit sans rien planté le jour ou j'ai supprimé un module sans pour autant modifié GEA.

 

Perso, GEA n'a planté que 2x pour moi et sur des version non stable du firmware mais je dis bien "perso" et je veux bien croire que cela arrive sur des versions stable.

 

 

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, pepite a dit :

 

 


if (first >= 10) then

 

 

Bonjour

Moi j'ai (first >= 10) comme toi.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@Steven OK merci, mais le souci c'est que ma ligne qui a généré le dernier message ne contient à priori pas d'erreur due à l'utilisateur (moi), puisqu'elle fonctionne très bien le reste du temps.

Je suis bien d'accord quand il y a des erreurs dans le GEA.add, on le remarque immédiatement lors de la sauvegarde de la scène.

Pourquoi alors, cette ligne (mais ça pourrait être une autre) a généré cette erreur, et ce plantage de GEA ? C'est ce que je ne comprends pas.

 

Et c'est différent du bug que l'on avait avant, dans les firmwares de l'année dernière, où les scènes (et VD) s'arrêtaient de fonctionner dans prévenir, suite à un core dump au niveau de l'OS Linux.

Partager ce message


Lien à poster
Partager sur d’autres sites

×