Aller au contenu

Recommended Posts

@HANSOLO

 

As-tu ces lignes de code dans ton GEA ? Pour les trouver rapidement, il suffit de chercher "FGRGBW441M".

Partager ce message


Lien à poster
Partager sur d’autres sites

Voilà  ce que j'ai qui fonctionne bien chez moi:

result = (tonumber(fibaro:getValue(tonumber(id), "value")) > 0 and not fibaro:getValue(tonumber(id), "color") == "0,0,0,0") or tonumber(fibaro:getValue(tonumber(id), "currentProgramID")) > 0

Pour moi le not inverse le résultat du test fibaro:getValue(tonumber(id), "color") == "0,0,0,0"

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans cette ligne:

not fibaro:getValue(tonumber(id), "color") == "0,0,0,0"

not s'applique uniquement à  fibaro:getValue(tonumber(id), "color") mais pas à  fibaro:getValue(tonumber(id), "color") == "0,0,0,0".

Il manque les parenthèses comme ceci:

not (fibaro:getValue(tonumber(id), "color") == "0,0,0,0")

Faisons un test. Avec ton RGD éteint, crée un scène de test avec ces lignes:

local id = 100 -- l'id de ton RGB
local result = fibaro:getValue(tonumber(id), "color")
fibaro:debug(result)

devrait te donner: "0,0,0,0" puisque ton RGB est éteint.

Ensuite,

local result = fibaro:getValue(tonumber(id), "color") == "0,36,0,0"
fibaro:debug(result)

devait te donner: false car "0,0,0,0" n'est pas égale à  "0,36,0,0"

Donc pour toi:

local result = not fibaro:getValue(tonumber(id), "color") == "0,36,0,0"

devrait te donner l'inverse de false c'est à  dire true et pourtant cette ligne te donnera false car not s'applique uniquement à  fibaro:getValue(tonumber(id), "color"), pas à  fibaro:getValue(tonumber(id), "color") == "0,36,0,0"

Mais si tu écrit:

local result = not (fibaro:getValue(tonumber(id), "color") == "0,36,0,0")

tu auras bien l'inverse de false, c'est à  dire true.

 

C'est un peu le béaba des languages de programmation: l'ordre de priorité des opérateurs.

Voici un lien vers un tutoriel de LUA: 2-j. L'ordre de priorité des opérateurs et on constate que not à  une priorité plus haute que == et donc il est évalué avant le ==.

 

Pour changer l'ordre de priorité, il faut jouer des parenthèses.

 

J'espère que mes explications ont été assez claires.

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Une fois que nous aurons une version définitive de ce bug, je la mettrai sur github

Sent from my Note4

Partager ce message


Lien à poster
Partager sur d’autres sites

J'aurais pu modifier le repos sur github mais je voulais être sure que c'était ok pour tout le monde.

Pour l'instant, ça corrige mon problème et aussi chez jmg38.

Mais ça n'affecte pas HANSOLO (qui est en V4). Mais avant d'arriver à  cette ligne buggée, il faut passer par d'autres conditions dans le code que peut être HANSOLO ne passe pas.

 

Mais cette ligne est forcement buggée.

 

Donc à  ceux qui ont des RGB, n'hésitez pas à  tester.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Gagnez du temps :P

 

Je confirme le problème ... bravo Sjyrka973, bien vu  :60:

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

ca c'est du temps gagné, merci maitre ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui mais sans plus aucune conviction.

Partager ce message


Lien à poster
Partager sur d’autres sites

Allez Steven, un petit coup de moins bien ;-)...

Partager ce message


Lien à poster
Partager sur d’autres sites

Assez refroidi, je suis aussi. J'ai un peu de mal àaller voir ailleurs. J'attends, je suppose, une catastrophe de Fibaro pour me décider.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello Shyrka973,

 

J'ai depuis quelques temps des comportement louche avec les RGB.

En effet, soit ils ne s'allument plus (totalement aléatoire), soit ils ne s'éteignent plus (également aléatoire)...

Alors que tout allait bien.

 

Je suis en 4x

Dans le code de GEA il y a bien : com.fibaro.FGRGBW441M

 

La tronche de mes lignes pour les RGB.

  GEA.add({"Value",id["SURVEILLANCE_VIDEOS"],1}, -1, "", {{"Global","Maison","Absent"}, {"RGB", id["LED_TV"], 255, 0, 0, 100}, {"RGB", id["LED_STRUCTURE"], 255, 0, 0, 100}})
  GEA.add({"Value",id["SURVEILLANCE_VIDEOS"],1}, 1*60, "", {{"turnOff", id["LED_TV"]}, {"turnOff", id["LED_STRUCTURE"]}})

  GEA.add( {"Global","EtatGarage","open"}, -1, "", {{"turnOn", id["LED_TV"]}, {"turnOn", id["LED_STRUCTURE"]}, {"Program", id["LED_STRUCTURE"],7}, {"Program", id["LED_TV"],7}, {"VirtualDevice", id["KAROTZ_NOTIFICATIONS"], "4"}, {"Repeat"}})
   
  GEA.add( {"Global","EtatGarage","close"}, 1*60, "", {{"Inverse"}, {"turnOff", id["LED_TV"]}, {"turnOff", id["LED_STRUCTURE"]}, {"VirtualDevice", id["KAROTZ_NOTIFICATIONS"], "3"}})

J'ai inclus ta modification dans GEA les ( ) et je regarde si cela ce passe mieux ce soir, mais je comprends mieux pourquoi ça ne s'éteignait pas/plus.

Je dis pas/plus car ce n'est pas tout le temps, mais quand meme assez souvent.

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour comprendre l'explication de Shyrka973. Il suffit d'aller sur le site : http://www.lua.org/cgi-bin/demo

 

Et de tapper ces 3 lignes :

print("coucou" == "aaaaa")
print(not "coucou" == "aaaaa")

print(not ("coucou" == "aaaaa"))

Pour la première ligne "coucou" est différent de "aaaa" donc on reçoit "false" ce qui est juste.

 

Pour la deuxième ligne not "coucou" == "aaaa" on s'attends à  avoir l'inverse de "false" soit "true"

mais on obtient "false" ???

Pour quoi ben parce que not "coucou" vaut "false" alors "false" == "aaaa" donne "false".

 

Par contre, si on mets correctement les parenthèses, on est tous bon.

 

Encore "bien vu"  à  Shyrka973

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Assez refroidi, je suis aussi. J'ai un peu de mal à  aller voir ailleurs. J'attends, je suppose, une catastrophe de Fibaro pour me décider.

 

 

Pour moi la catastrophe est déjà  arrivée, j'attends patiemment que leur système (bien que stable maintenant) redevienne performant comme avant.

Qu'on arrête d'être en bêta depuis plus d'un an et qu'on passe au chose sérieuse.

 

1 an de promesse pour la v4

1 an de bêta pour la v4

 

2 ans qu'on se fou de notre gueule. Idem pour les produits.

 

Et pour les détracteurs .. non je ne passerais pas sur jeedom (questions posés à  plusieurs reprises), j'ai tenté sur mon Synology et j'ai craqué après 2mn car en 2015 (année du test), je ne savais pas qu'on était encore capable de faire des interfaces aussi pourrie avec des mots qui veulent rien dire :huh:. Et on est pas loin de Fibaro avec la promesse d'une vrai box depuis plus d'un an (ou deux)  :P

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

oui je suis plutot d'accod, c'est stable MAINTENANT, mais on attend toujours les plugins developpeurs

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à  tous et bonne année 2016 pour commencer,

 

 je viens ici chercher un peu d'aide car je suis perdu.

J'ai installé GEA et YAPS (merci beaucoup Steven, travail impressionnant !).

 

Je suis nouveau dans la domotique, j'ai pas mal galéré avec les modules mais cette étape est passée :)

 

Apres avoir fait l'installation, je me suis mis en tète de mettre en place un simulateur de présence pour les prochaines vacances.

J'ai fait un peu de paramétrage (juste ajouter mes ID de modules:)) sous YAPS pour que cela fonctionne et cela commence a tourner mais a chaque fois que je démarre la scène, il ne s'appuis pas sur l'horaire que je lui impose pour lancer les illuminations mais s'y mets tout de suite.

Je me suis donc mis dans la tête de me server de GEA avec la variable "Simu_presence" pour lancer YAPS.

J'ai bien compris que YAPS était fait pour se lancer seul mais je n'ai vu nulle part de quoi simuler "mon" utilisateur (je m'explique):

je rentre le soir apres 18h, je ferme les volets de la chambre (1) et je vais de pièce en pièce jusqu'à  21h (2), j'ai ensuite la télé en fonction dans un pièce et une lampe si je lis jusqu'à  minuit (là  faut dormir)(3)) ensuite le matin j'ai 2 programmations, les jeux de lumière a partie de 7h jusqu'à  8h (4) puis ouverture des volets (5).

Ne trouvant pas dans YAPS, j'essaye dans GEA de lancer les 5 scènes à  un horaire précis si la variable Simu_presence est à  1.

YAPS ne pose aucun souci le soir, cela semble plutôt très fonctionnel, en revanche, je ne sais pas le scheduler simplement tout comme je n'arrive pas a fermer les volets à  horaire simplement

 

Le code que j'ai trouvé et essayé d'adapter est en pièce jointe.

 

Le message d'erreur que j'ai est [ERROR] 16:57:27: line 249: attempt to index field '?' (a nil value)

 

Merci pour votre aide et merci si vous avez des exemples simples pour fermer les volets à  une heure ou à  la tombée de la nuit (sans avoir de module captant la luminosité).

 

 

 

 

Parametre GEA.txt

Partager ce message


Lien à poster
Partager sur d’autres sites
local thismodule = fibaro:getSelfId(); 
local Simu_presence = fibaro:getGlobal("Simu_presence")

if
	Simu_presence == "1"
then 
	GEA.add( {"Global", ""Simu_presence", "1"}, 30, "", {{"Time", "21:53", "21:55"}, {"Close", id["VOLETS_BUREAU"]}})
end

devient simplement

GEA.add( {"Global", "Simu_presence", "1"}, 30, "", {{"Time", "21:53", "21:55"}, {"Close", id["VOLETS_BUREAU"]}})

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans cette ligne:

not fibaro:getValue(tonumber(id), "color") == "0,0,0,0"

not s'applique uniquement à  fibaro:getValue(tonumber(id), "color") mais pas à  fibaro:getValue(tonumber(id), "color") == "0,0,0,0".

Il manque les parenthèses comme ceci:

not (fibaro:getValue(tonumber(id), "color") == "0,0,0,0")

Faisons un test. Avec ton RGD éteint, crée un scène de test avec ces lignes:

local id = 100 -- l'id de ton RGB
local result = fibaro:getValue(tonumber(id), "color")
fibaro:debug(result)

devrait te donner: "0,0,0,0" puisque ton RGB est éteint.

Ensuite,

local result = fibaro:getValue(tonumber(id), "color") == "0,36,0,0"
fibaro:debug(result)

devait te donner: false car "0,0,0,0" n'est pas égale à  "0,36,0,0"

Donc pour toi:

local result = not fibaro:getValue(tonumber(id), "color") == "0,36,0,0"

devrait te donner l'inverse de false c'est à  dire true et pourtant cette ligne te donnera false car not s'applique uniquement à  fibaro:getValue(tonumber(id), "color"), pas à  fibaro:getValue(tonumber(id), "color") == "0,36,0,0"

Mais si tu écrit:

local result = not (fibaro:getValue(tonumber(id), "color") == "0,36,0,0")

tu auras bien l'inverse de false, c'est à  dire true.

 

C'est un peu le béaba des languages de programmation: l'ordre de priorité des opérateurs.

Voici un lien vers un tutoriel de LUA: 2-j. L'ordre de priorité des opérateurs et on constate que not à  une priorité plus haute que == et donc il est évalué avant le ==.

 

Pour changer l'ordre de priorité, il faut jouer des parenthèses.

 

J'espère que mes explications ont été assez claires.

 En testant dans une scène, je confirme la correction de @Shyrka973 (déjà  confirmée par @Steven)

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci beaucoup Steven, c'est en effet plus simple :)

 

J'ai en revenche toujours mon erreur ligne 241 (attend to index field ? (a nil value), aurais tu une idée ?

Même en commentant tout mon code, j'ai cette erreur ... Sinon je vais essayer de recopier GEA des fois que j'ai copié / merdé le code ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à  tous et bonne année 2016 pour commencer,

 

 je viens ici chercher un peu d'aide car je suis perdu.

J'ai installé GEA et YAPS (merci beaucoup Steven, travail impressionnant !).

 

Je suis nouveau dans la domotique, j'ai pas mal galéré avec les modules mais cette étape est passée :)

 

Apres avoir fait l'installation, je me suis mis en tète de mettre en place un simulateur de présence pour les prochaines vacances.

J'ai fait un peu de paramétrage (juste ajouter mes ID de modules:)) sous YAPS pour que cela fonctionne et cela commence a tourner mais a chaque fois que je démarre la scène, il ne s'appuis pas sur l'horaire que je lui impose pour lancer les illuminations mais s'y mets tout de suite.

Je me suis donc mis dans la tête de me server de GEA avec la variable "Simu_presence" pour lancer YAPS.

J'ai bien compris que YAPS était fait pour se lancer seul mais je n'ai vu nulle part de quoi simuler "mon" utilisateur (je m'explique):

je rentre le soir apres 18h, je ferme les volets de la chambre (1) et je vais de pièce en pièce jusqu'à  21h (2), j'ai ensuite la télé en fonction dans un pièce et une lampe si je lis jusqu'à  minuit (là  faut dormir)(3)) ensuite le matin j'ai 2 programmations, les jeux de lumière a partie de 7h jusqu'à  8h (4) puis ouverture des volets (5).

Ne trouvant pas dans YAPS, j'essaye dans GEA de lancer les 5 scènes à  un horaire précis si la variable Simu_presence est à  1.

YAPS ne pose aucun souci le soir, cela semble plutôt très fonctionnel, en revanche, je ne sais pas le scheduler simplement tout comme je n'arrive pas a fermer les volets à  horaire simplement

 

Le code que j'ai trouvé et essayé d'adapter est en pièce jointe.

 

Le message d'erreur que j'ai est [ERROR] 16:57:27: line 249: attempt to index field '?' (a nil value)

 

Merci pour votre aide et merci si vous avez des exemples simples pour fermer les volets à  une heure ou à  la tombée de la nuit (sans avoir de module captant la luminosité).

 

Salut Jérôme,

si YAPS démarre "tout seul" c'est sans probablement que la VG "overideSimuSunset" est à  1 ...

tu as vérifié ?

Je suppose aussi que yaps tourne dans une scène, et pas dans un VD ?

Pour la simulation le matin, non, désolé, ce n'est pas prévu... pour le moment en tout cas, pas trop de temps :-/

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci beaucoup Steven, c'est en effet plus simple :)

 

J'ai en revenche toujours mon erreur ligne 241 (attend to index field ? (a nil value), aurais tu une idée ?

Même en commentant tout mon code, j'ai cette erreur ... Sinon je vais essayer de recopier GEA des fois que j'ai copié / merdé le code ...

 

 

Comme on a tous une configuration de GEA différente, on a tous des lignes différentes .. Il faudrait que tu postes TA ligne 241 pour qu'on puisse t'aider.

 

Cordialement

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à  tous,

 

De manière générale, Steven a fait une remarque que je viens juste de comprendre sur le fait qu'une même application puisse avoir du code modifié par les une les autres au gré des besoins

 

@Sebcbien : ma VG overidesimusunset est à  0 et je te confirme que YAPS tourne dans une scène pilotée par une VD. D'après toutes les lectures que j'ai pu faire cela semblait bien.

En revanche, j'avais zappé le coté démarrage a Sunset_offset puis arrêt a plus ou moins stop_hour et stop_minute, c'est donc sans doute moi qui ai déconné.

je suis entrain de rectifier pour voir ce soir ce que cela va donner.

Dernier point, j'aimerai trouver comment extraire de ton code sur la partie aléatoire de YAPS qui est excellentissime et voir comment le lancer plusieurs fois par jour via GEA :)

les 2 me semblent complémentaires

 

@Steven : ma remarque générale ... Tu as entièrement raison, je commence a comprendre que tout le monde ajoute sa sauce ce qui fait que cela deviens difficile a maitriser. je pensais être sur une version standard (5.4) en provenance de githubs et non un fork.

L'erreur est en ligne 241 est sur le lowcaps arg en pièce jointe.

GEA tourne comme une horloge, il y a plein de fork et je me rends compte du travail réalisé car c'est colossal. Je regarde comment lancer avec GEA un simulateur aléatoire sur certaines lumières ou scènes.

J'aimerai faire un truc simple mais efficace en même temps, nous avons tous nos habitudes et si un rodeur guette, c'est toujours bien de simuler comme lorsque nous sommes présents

- ouverture des volets à  sunrise (avec un random de 30 minutes)

- lancer une simulation sur les lumières pendant 2 heures (avec un random de 30 minutes)

- fermeture des volets à  Sunset (avec un random de 30 minutes)

- lancer une simulation sur les lumières soit de Sunset à  minuit (+/- 30 minutes) soit de 19h +/- 30 minutes à  minuit (+/- 30 minutes)

 

pour l'heure j'ai les volets à  heure fixe car je n'ai pas trouvé pour Sunset et sunrise, je continue de chercher. Après pour le simulateur, je vais tenter mon propre fork mais le code n'est pas ma plus grande force ..

 

 

 

bloc erreur.txt

Partager ce message


Lien à poster
Partager sur d’autres sites

Concernant le code de GEA, il y a plusieurs choses.

En premier, il y a le code de base, qui contient plus ou moins de bugs.

En second, il y a les forks et améliorations qui contiennent plus ou moins de bugs.

Et en troisième, il y a les lignes ajoutées par chacun pour son utilisation qui contiennent plus ou moins de bugs.

 

Le plus difficile est donc de savoir où se situent les bugs que les gens rencontrent pour pouvoir les patcher.

 

Lorsque GEA plante, tu as le numéro d'une ligne. Le soucis est que ce numéro dépend du nombre d'instructions GEA que tu as ajoutées.

C'est pour cela que personne n'a le même nombre de ligne dans le script GEA, sans compter les versions.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

peux-tu aussi mettre les lignes que tu veux

 

Sinon dans une ligne GEA pour le Sunset et Sunrise, comme ceci :

GEA.add( {"conditions", 30, "", {{"Time", "Sunset-30", "Sunset-15"}, {"Close", id["VOLETS_BUREAU"]}})

GEA.add( {"conditions", 30, "", {{"Time", "Sunrise", "Sunrise+10"}, {"Open", id["VOLETS_BUREAU"]}})

Partager ce message


Lien à poster
Partager sur d’autres sites

×