Aller au contenu

Hc2 & Hcl 4.082 Beta - 17/05/2016


jojo

Messages recommandés

Erreur 503.

 

Pour ma part, j'avais donc beaucoup d'erreur 503. J'ai vidé tout mes "main loop" en déportant le code dans un scénario ou GEA. Suite à  cela, j'ai encore eu quelques 503 (un à  deux par jour).

 

J'ai adapté un VD qui allait vérifier l'état de mon IPX tout les 5 secondes et qui stockait l'état des compteurs dans des "Variables Globales" qui avait pour effet de "trigger" un scénario qui mettais à  jour 3 autres VD (un par compteur).

 

L'adaptation fut simple, je n'utilise plus de VG et modifie directement le contenu de mes VD depuis le VD IPX.

 

Depuis ce jour (4 jours), je n'ai plus aucune erreur 503 et une réactivité agréable.

 

Ce corrobore la thèse de @Lazer concernant les accès concurrent.

  • Upvote 4
Lien vers le commentaire
Partager sur d’autres sites

J'ai quasi le même comportement que toi pour l'IPX. Elle déclenche 2 scénarios de synchro (un pour les entrées et un pour les sorties) et cette scène modifie directement les VD sans passer par les variables globales. Et pour les allumages/extinctions de lumière, je test l'icone et non une variable, si la bonne icone est bien positionnée (genre lumière allumée) alors j'éteins...etc... Plus de variables à  la con, plus de 503 depuis longtemps :) Et ça marche pilpoil de chatoune  :lol:

Lien vers le commentaire
Partager sur d’autres sites

l'avantage que je voyais au VG était qu'elles stockaient les valeurs de manière plus durables, que dans une variable locale d'un VD ou d'une scène. Si le VD ou la scène était sauvée (suite àmodif ou watchdog ou restart de la box ou ...) la valeur était toujours là.

Vous utilisez alors des labels d'un VD pour remplir cette fonction ?

Lien vers le commentaire
Partager sur d’autres sites

Pour moi la VG ne doit être utilisée qu'en cas d'un besoin absolu comme un déclencheur de scènes multiples et variées. Si c'est juste pour du stockage de valeur, autant le faire en local et l'afficher en label si t'as besoin de le voir ou en debug si c'est juste pour du contrôle. Enfin moi j'ai géré ça comme ça et c'est vrai que j'ai pas tous ces soucis de 503 (pour ainsi dire, j'en ai eu qu'une seule fois sur un VD mal codé mais c'était de ma faute).

Lien vers le commentaire
Partager sur d’autres sites

Pareil que Benjy, je suis assez contre les VGs. D'ailleurs il y a qques temps sur le topic GEA on en discutait quand je voulais remonter tous mes détecteurs RF433 de la Zibase vers la HC2. Plusieurs avaient proposés des VGs, mais j'étais contre : Déjàc'est chiant àmaintenir, cela devient illisible et du coup en plus cela apporte de l'instabilité. Moi je fais tout en label dans les VDs.

Lien vers le commentaire
Partager sur d’autres sites

En effet, les labels des VD sont persistants après un reboot ou sauvegarde du VD, donc c'est un bon moyen de stocker une valeur.

 

EDIT : si c'est persistant, c'est que ça écrit aussi dans la DB, tout comme les VG. Mais la logique de traitement derrière doit être différence, ne serait-ce parce que les Labels ne déclenchent pas de trigger contrairement aux VG.

Lien vers le commentaire
Partager sur d’autres sites

et on recupere les labels comme trigger, mais ca veut dire que ca complique un peu. J'utilise les VG pour du monitoring....

Bon faut que je rejette un oeil à  tout ca alors.

mais j'ai pas de 503, juste à  prendre les bonnes habitudes.

 

Ps : j'avoue que lu'sage des VGs en trigger c'est plutot simple ;-)

Lien vers le commentaire
Partager sur d’autres sites

@pepite il faut utiliser les VG si tu as besoin des triggers.

Mais il ne faut pas utiliser les VG systématiquement lorsque ce n'est pas nécessaire => génère de l'activité supplémentaire, et avec notre HC2 on sait ce que ça donne => 503

Lien vers le commentaire
Partager sur d’autres sites

@PITP2 : oui et non.

Oui parce que Fibaro finira bien par corriger ses erreurs

Non parce que c'est aussi l'occasion pour nous d'être meilleurs et de respecter des bonnes pratiques qui sont valables dans tout environnement informatique. Même si cela ne le fait pas planter, il est inutile de générer une surcharge de travail.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

oui, je partage totalement vos avis sur la question.

C'est d'ailleurs pour cela que j'ai fait un VD/Scène qui me permet de faire un backup / restore de mes VG.

 

Mais dans mon cas je les utilises dans le cardre d'un compteur (j'en ai 10 actuellement) pour compter le temps de fonctionnement de ma chaudière, de mes circulateurs, des pompes d'eau de pluie et piscine, ...

 

Ils fonctionnent comme suit :

  • toutes les secondes, je vérifie si la condition est remplie, et j'incrémente une variable locale
  • à  chaque nouvelle minute, je stocke le nbr de sec que le device a répondu à  la conditiondans EmonCMS et j'incrémente un VG ..._hour du nbr de sec de la minutes qui vient de passer. Je remets le compteur des sec à  zéro
  • à  chaque nouvelle heure, je transferts le nbr de sec (/60, pour l'avoir en min) que le device a fonctionné dans EMONCMS, j'incrémente un VG ..._day du nbr de sec de l'heure précédente. Je remets le compteur des heures à  zéro.
  • je fait la même chose à  chque nouveau jour (=>#heures par jour) et à  chque novueau mois (#jours âr mois).

Le VG est la seule solution que j'ai trouvée maintenant pour ne pas perdre mes données d'heure/jours/mois.

Passer par des labels sera peut-être mieux en effet.

Sauf si vous avez encore d'autres idée ?

Lien vers le commentaire
Partager sur d’autres sites

@Lazer, oui oui j'entends bien il faut un code propre et n'utiliser les VG que dans des cas précis et ne pas les utiliser pour s'en faire un timer toutes les secondes (hein jojo  ;) )

 

N'étant pas expert en BDD il me semble quand même qu'il soit possible d'éviter ce genre de problème en utilisant les commandes et outils adéquates.

Lien vers le commentaire
Partager sur d’autres sites

Oui, tout àfait, mais bon plus complexe àmettre en oeuvre vu le type de BD et le multi process, mais ils y arriveront.

Sinon pour info, même pour un trigger, on peut utiliser la valeur du label, cela fonctionne très bien.

Lien vers le commentaire
Partager sur d’autres sites

@PITP2, j'utiliSAIS les VG pour un timer toutes les seconde, maintenant c'est toutes les minutes (si nécessaire).

M'autorisez-vous àutiliser les labels d'un VG àcette fin ?

Lien vers le commentaire
Partager sur d’autres sites

@Lazer, oui oui, je suis pas dev, alors ca me permet effectivement de prendre les bonnes habitudes ;-) hihi

 

@Nico, oui pour les triggers Label, mais pas en instantané avec GEA ? ou tu as mis du "function" partout;-) désolé pour le HS

Lien vers le commentaire
Partager sur d’autres sites

Quand j'ai appris le langage C dans les années 90, mon prof était hyper àcheval sur l'utilisation de la mémoire. Les grosses variables c'était le mal, il fallait bien les dimensionner (int, char, long int, double....) et surtout utiliser les calloc/malloc/realloc afin de gérer les emplacements disponibles au mieux. C'est vrai qu'aujourd'hui avec les garbage collector et autres joyeusetés des langages modernes ont ne fait plus gaffe àtout ça (plus la place RAM/DD qui coûte que dalle).

Après effectivement, Fibaro devrait gérer cela, mais c'est pas le cas.

Lien vers le commentaire
Partager sur d’autres sites

@jojo, àmon avis tu dois avoir d'autre possibilité que d'écrire dans la bdd chaque minutes.

Personnellement j'utiliserais un autre système que la box pour faire sa, surtout que tu envoie les données ailleurs.

Lien vers le commentaire
Partager sur d’autres sites

Benjy, yes pareil :)

Le langage C est le meilleur langage pour l'apprentissage de la programmation. Il est àla base de tous les autres langage, et il oblige àune vraie rigueur (sinon c'est le core dump assuré)

A l'opposé on a le PHP, le pire langage qui autorise tout et n'importe quoi :P

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Ok, donc j'ai bien compris, utiliser les VG c'est pas bien. Top cette box

Faites attention, bientôt ce sera les variables locales...

Quel foutage de gueule...

Je suis désolé, mais pour dire que c'est une mauvaise pratique d'utiliser les VG.... bah il faut avoir vraiment été Fibarotisé...

Oui j'utilise les vg pour distribuer les valeurs de co2 aux différents vd qui en ont besoin, et mes index eau électricité et gaz aussi. Rien de plus normal.

Passer par un label de VD, ça par contre, c'est top.

Hébé... 😭 :-/

Sent from my Note4

Lien vers le commentaire
Partager sur d’autres sites

Oui Sebcbien, je suis parfaitement d'accord.

 

Mais par contre j'ai l'impression que c'est en train de partir dans tous les sens là  : personne n'a jamais dit qu'il ne fallait pas utiliser les VG et les remplacer par des VD, ou alors c'est qu'il y a eu une grosse incompréhension.

 

Il faut utiliser les ressources disponibles à  bon escient, c'est tout.

 

Les labels ça va pour afficher une info sur le VD, donc consultable depuis l'appli mobile.

Les VG c'est pratique pour déclencher des triggers, transmettre de l'info d'un VD/Scène à  un autre, etc.

 

Ce que je dis, c'est qu'il est inutile de tout stocker dans des VG. Il faut juste s'adapter au cas par cas.

  • Upvote 3
Lien vers le commentaire
Partager sur d’autres sites

C'est clair qu'avec les VGs, ca peut vite devenir le bazar...

 

Mais passer par des labels de VDs pour partager des variables, ca sent quand même le bricolage même si ca semble fonctionner... en terme de maintenance, plutot moyen aussi...reste les objets...

 

il y a vraiment un problème de fond sur la portée et la gestion en général des variables.... tout ca fini par me rappeler la Zibase avec ses solutions tordues pour manipuler les variables (en moins pire quand même)

Lien vers le commentaire
Partager sur d’autres sites

@Shad,

Tu as raison, mais le seul language que "je connaisse "est le LUA de ma HC2.

Alors, je vais rester avec mes VG ou des labels dans des VD pour mes compteurs, en espérant que Fibaro fasse ce qu'il faut pour que ça fonctionne (oui, je sais, je suis naïf)

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...