Aller au contenu

Recommended Posts

En LUA, la virgule en trop est supprimée par le compilateur car il n'y a pas d'élément qui suit après la virgule.

 

Et ceci n'a rien avoir avec le bug découvert. Ceux qui ont un RGB peuvent facilement tester.

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai un RGB piloté par GEA le turnOff fonctionne bien chez moi, je jeterais un coup d'oeil ce WE.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Suite à  ma demande d'aide concernant le blocage de GEA, je remercie tous ceux qui m'ont répondu. J'ai repris l'idée d'une base test et d'une base PRO et du coup j'ai fait le ménage dans les value et Id inutiles. Tout fonctionne maintenant. Comme quoi il faut toujours respecter le protocole!! 

Cdt

Partager ce message


Lien à poster
Partager sur d’autres sites

Le problème ne vient pas du turnOff.

 

Pour faire court, l'erreur si situe ici: not a = b est différent de not ( a = b )

Partager ce message


Lien à poster
Partager sur d’autres sites

pour le RGB, essaie de l'eteindre en le rajoutant comme ceci pour vérifier : {"turnOff", id["RGB concerné"]}

Partager ce message


Lien à poster
Partager sur d’autres sites

en effet, c'est toujours plus sûr de préciser ce qu'on arrêter.

Mais si on ne le précise pas, il arrête le device qui était le premier dans les conditions

Partager ce message


Lien à poster
Partager sur d’autres sites

La ligne suivante:

GEA.add(id["ID_LAMPE"], 2*60 ,"Lampe Off après 2mn", { {"turnOff"} })
est équivalente à  la ligne suivante:
GEA.add(id["ID_LAMPE"], 2*60 ,"Lampe Off après 2mn", { {"turnOff"}, id["ID_LAMPE"] })

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo normalement oui, mais on ne sait jamais, je me souviens qu'on avait eu ce bug non ?

@Shyrka, oui tout a fait on est d'accord, mais c'est pour en être sûr, ce que je disais c'est que je crois qu'àun moment on avait cela qui ne fonctionnait pas tout le temps, mais je ne sais plus pourquoi ni quand hihi

Partager ce message


Lien à poster
Partager sur d’autres sites

Il semble que l'on ne comprenne pas l'erreur de programmation: not a = b est différent de not ( a = b )

 

Quelqu'un possédant un RGB pourrait confirmer le problème de temps pour l'extinction avec une ligne comme celle-ci ?

GEA.add(id["ID_RGB"], 2*60 ,"RGB Off après 2mn", { {"turnOff"} })

Quand on allume le RGB, il doit s'éteindre dans 2mn après.

 

Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

en effet, le "bug" qu"on avait observé était qu'il essayait d'éteindre le premier device des conditions.

C'est pourquoi, pour le lever tout risque/douite, je mets systématiquement le device que je veux actionner

Partager ce message


Lien à poster
Partager sur d’autres sites

en effet, vu comme ça, j'interprète

not a = b

comme

not(a) = b

ie, est-ce que (le contraire de a) = b ?

 

 

et dans

not ( a = b )

retourner le contraire de la réponse à  la question a = b ?

Partager ce message


Lien à poster
Partager sur d’autres sites

si Shyrka, nous avons bien compris, sauf que je n'ai pas de RGB, donc je ne peux pas modifier la ligne et tester avec ou sans parenthese, alors attendons @Hansolo ou un autre forumeur pour le savoir.

Partager ce message


Lien à poster
Partager sur d’autres sites

Exact !

 

Donc dans le même principe, cette ligne:

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

est différente de celle-ci:

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

Et voilà  donc où se trouve le bug.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

oui, tu as probablement raison, mais as-tu validé avec ton RGB ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Justement, je ne comprenais pas pourquoi l'arrêt après un temps donné fonctionne sur FGD ou autres, mais pas sur un RGB. De mon point de vue, cela venait d'un bug car ça fonctionnait en firmware 3.x. Le problème est apparu depuis la 4.x.

 

Après recherche, je l'ai trouvé et corrigé; juste un oubli de parenthèse, maintenant, le RGB s'éteint après un temps donné.

 

Maintenant, je le signale sur le forum pour les autres.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour le RGB, après essai avec la correction du bug ça marche...

Partager ce message


Lien à poster
Partager sur d’autres sites

@jmg38

 

Tu confirmes qu'avant la correction du bug, ça ne fonctionnait pas ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, j'avais mis en GEA deux scènes RGB et je n'arrivais pas à  les éteindre avec : GEA.add(id["RGB"], 2x60 ,"",{ {"turnOff"}}) et la correction de ( ) ça marche

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci.

 

J'ai vérifié le code et je n'ai pas trouvé d'autres erreurs avec le not sans parenthèse.

Partager ce message


Lien à poster
Partager sur d’autres sites

merci

Partager ce message


Lien à poster
Partager sur d’autres sites
Bonjour,
Je avoir un capteur Flood (443). Si il ya une alarme, je voudrais obtenir une poussée et puis aussi tourner de l'eau (444, ON / OFF Popp).

 

Comment puis-je écrire cela?

 

 

Hi,

 

I have a FloodSensor (443). If there is an alarm I would like to get an push and then also turn of the water (444, ON/OFF Popp).

 

How can I write that?

GEA.add(DeviceID["FLOOD_ALARM"], -1, "FLOOD ALARM. (#date# #time#)", {{"Push", MobileID["Iphone_6_Plus_Svart"], "FLOOD ALARM"}})

Partager ce message


Lien à poster
Partager sur d’autres sites

@mickeys,

1) this is a very good idea to provide the google translate of your message in french AND the original UK message.

 

this is what you should enter

GEA.add(DeviceID["FLOOD_ALARM"], -1, "FLOOD ALARM. (#date# #time#)", {{"Portable", MobileID["your user"]}, {"turnOff", 444}})

for the push, this is not the option "push", but "portable" you have to use. There is not subject in the push, but his message will be the GEA message. You have to refer the mobileID to who you would like to push:

-- ID des users => for mails
local UserID = {
    Vincent = 5,
    Annabelle = 4,
    }

-- ID des mobiles => for pushes
local MobileID = {
    None = 9999,
    V_Nexus5 = 177,
    A_SGS3m = 999,
    }

do not forget to have your "FLOOD_ALARM" deviceID defined in the header since you requested immédiate action (-1).

But for the fllod, you could "wait" for the next run of GEA, that runs every 30 sec ? Than set in the time 1 instad of -1 and no need to define it in the header

Partager ce message


Lien à poster
Partager sur d’autres sites

 

Bonjour à  tous,

 

Il y a un bug dans GEA: une histoire de parenthèse.

 

La ligne suivante devrait éteindre la lampe ID_LAMPE après deux minutes qu'elle soit allumée.

GEA.add(id["ID_LAMPE"], 2*60 ,"Lampe Off après 2mn",  { {"turnOff"}, })

C'est la cas mais pas pour le module RGB de Fibaro. Il ne s'éteindra pas.

 

Le bug se situe à  cette ligne:

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

Elle doit être remplacer par celle-ci:

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
Vous constatez qu'il manque les parenthèses pour not s'applique la condition: fibaro:getValue(tonumber(id), "color") == "0,0,0,0".

 

 

Je viens de tester avec mon RGB, j'ai ajouté la ligne

GEA.add(id["RGBChb"], 1*30, "", {{"turnOff"}})

Je n'ai pas ajouté les parenthèses préconisées par @Shyrka973, mon RGB s'est bien éteins après 30s.

 

Si il y avait plusieurs conditions, les parenthèses seraient utiles mais dans le cas présent la version sans parenthèses et avec parenthèse sont équivalentes.

Partager ce message


Lien à poster
Partager sur d’autres sites

très intéressant ton retour, mais comment cela se fait que @Shyrka973 a le problème (il n'a qu'une condition) et qu'en rajoutant les () ça passe ?

(perso, ça m'est égal, je n'ai pas de RGBW, mais c'est toujours bon àsavoir)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bizarre.

 

Tu es bien en firmware 4.x ?

Le type du RGB est bien "com.fibaro.FGRGBW441M" ?

 

Voici les lignes de code avec la correction :

if (GEA.find(type, "rgb_driver")) then
  -- verison 3.x
  result = (tonumber(fibaro:getValue(tonumber(id), "value")) > 0 ) or tonumber(fibaro:getValue(tonumber(id), "currentProgramID")) > 0
elseif (GEA.find(type, "com.fibaro.FGRGBW441M")) then
  -- verison 4.x
  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
else
  result = tonumber(fibaro:getValue(tonumber(id), "value")) > 0
end

Jmg38 a eu le problème et avec la correction, ça fonctionne pour lui.

 

Si il y avait plusieurs conditions, les parenthèses seraient utiles mais dans le cas présent la version sans parenthèses et avec parenthèse sont équivalentes.

 

 

Je ne comprends pas.

 

Le not ne s'applique pas au retour de la fonction fibaro:getValue(tonumber(id), "color") mais au résultat de l'expression fibaro:getValue(tonumber(id), "color") == "0,0,0,0") donc les parenthèses sont de rigueur.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×