Re: Syntax condition dans rules linknx - Version imprimable +- Forum KNX francophone / English KNX forum (https://www.knx-fr.com) +-- Forum : Français (https://www.knx-fr.com/forumdisplay.php?fid=3) +--- Forum : Archives eib-domotique (https://www.knx-fr.com/forumdisplay.php?fid=8) +--- Sujet : Re: Syntax condition dans rules linknx (/showthread.php?tid=1115) |
Re: Syntax condition dans rules linknx - Anthony PENHARD - 07/04/2011 au final voici une solution qui gère aussi le "off" du BP exemple pour la rule du BP1 : cela traitera la rule à chaque changement d'état de "BP1" <rule id="commut_mode_BP1"> <condition type="object" id="BP1" trigger="true"/> <actionlist> <action type="script"> BP1 = obj("BP1"); M1 = obj("M1"); M2 = obj("M2"); M3 = obj("M3"); M4 = obj("M4"); if BP1 = "on" if M1 = "on" set("S1", "on"); set("S2", "off"); ... end; if M2 = "on" set("S1", "off"); set("S2", "off"); ... end; ... end; if BP1 = "off" if M1 = "on" set("S1", "on"); set("S2", "on"); set("S2_val_ecl", 50); ... end; if M2 = "on" set("S1", "off"); set("S2", "on"); ... end; ... end; </action> </actionlist> </rule> > il faudra aussi peut-être ne pas oublier le flag 's' dans la définition > des objet M et BP cela ne sert à "rien" le falg 's' sur M ou BP car on ne fait que les "lire" par contre sur les sorties S1 à S6 ça peut-être utile pour forcer l'envoi @+ Anthony. Re: Syntax condition dans rules linknx - Stephane Triglia - 26/05/2011 Bonjour, je viens d’essayer le script (heu, oui, le temps me manque en ce moment...) et j'ai une erreur : 1306422864 ERROR Action : LuaScriptAction error: [string "BP1 = obj("BP1"); BP2 = obj("BP2"); M1 = obj("M1"); M2 = obj("M..."]:1: 'then' expected near '=' Voici le script: ############################ <rule id="commutation mode"> <condition type="or"> <condition type="object" id="BP1" value="on" trigger="true"/> <condition type="object" id="BP2" value="on" trigger="true"/> </condition> <actionlist> <action type="script"> BP1 = obj("BP1"); BP2 = obj("BP2"); M1 = obj("M1"); M2 = obj("M2"); if M1 = "on" if BP1 = "on" set("Downlight", "off"); set("Acceuil fenetre", "off"); set("Accueil mur", "off"); end; if BP2 = "on" set("Downlight", "on"); set("Acceuil fenetre", "on"); set("Accueil mur", "on"); end; end; if M2 = "on" if BP1 = "on" set("Downlight", "off"); set("Accueil fenetre", "on"); set("Accueil mur", "on"); end; if BP2 = "on" set("Downlight", "on"); set("Acceuil fenetre", "off"); set("Accueil mur", "off"); set("Accueil mur", "off"); end; end; </action> </actionlist> </rule> ######################### A priori je n'ai pas vu de faute particulière. Je continu de chercher mais si quelqu'un a une idée de suis preneur. Merci d'avance ! Le 7 avril 2011 16:13, Anthony PENHARD <a.penhard@gmail.com> a écrit : > au final voici une solution qui gère aussi le "off" du BP > exemple pour la rule du BP1 : > cela traitera la rule à chaque changement d'état de "BP1" > > <rule id="commut_mode_BP1"> > <condition type="object" id="BP1" trigger="true"/> > <actionlist> > <action type="script"> > BP1 = obj("BP1"); > M1 = obj("M1"); > M2 = obj("M2"); > M3 = obj("M3"); > M4 = obj("M4"); > if BP1 = "on" > if M1 = "on" > set("S1", "on"); > set("S2", "off"); > ... > end; > if M2 = "on" > set("S1", "off"); > set("S2", "off"); > ... > end; > ... > end; > if BP1 = "off" > if M1 = "on" > set("S1", "on"); > set("S2", "on"); > set("S2_val_ecl", 50); > ... > end; > if M2 = "on" > set("S1", "off"); > set("S2", "on"); > ... > end; > ... > end; > </action> > </actionlist> > </rule> > > > > il faudra aussi peut-être ne pas oublier le flag 's' dans la définition > > des objet M et BP > > cela ne sert à "rien" le falg 's' sur M ou BP car on ne fait que les "lire" > par contre sur les sorties S1 à S6 ça peut-être utile pour forcer l'envoi > > @+ > Anthony. > > > > > Re: Syntax condition dans rules linknx - Anthony PENHARD - 26/05/2011 dans ton script tu as : if M1 = "on" mais devrait être : if M1 == "on" je pense valable pour tout tes "if" @+ Anthony Re: Syntax condition dans rules linknx - Stephane Triglia - 26/05/2011 J'avais vu ca sur internet mais l'erreur avais juste changée je me suis dit que ce n'était pas ça 1306425172 ERROR Action : LuaScriptAction error: [string "BP1 = obj("BP1"); BP2 = obj("BP2"); M1 = obj("M1"); M2 = obj("M..."]:1: 'then' expected near 'if' Le 26 mai 2011 17:46, Anthony PENHARD <a.penhard@gmail.com> a écrit : > > dans ton script tu as : > > if M1 = "on" > > mais devrait être : > > if M1 == "on" > > je pense > valable pour tout tes "if" > > @+ > Anthony > > Re: Syntax condition dans rules linknx - jef2000 - 26/05/2011 Comme le message d'erreur le suggère, "'then' expected near 'if' " signifie qu'il attend un "then" après le "if". Ca devrait être un truc du style if M1 == "on" then if BP1 == "on" then .... On 26 mai, 17:52, Stephane Triglia <stephane.trig...@gmail.com> wrote: > J'avais vu ca sur internet mais l'erreur avais juste changée je me suis dit > que ce n'était pas ça > > 1306425172 ERROR Action : LuaScriptAction error: [string "BP1 = obj("BP1"); > BP2 = obj("BP2"); M1 = obj("M1"); M2 = obj("M..."]:1: 'then' expected near > 'if' > > Le 26 mai 2011 17:46, Anthony PENHARD <a.penh...@gmail.com> a écrit : > > > > > > > > > > > dans ton script tu as : > > > if M1 = "on" > > > mais devrait être : > > > if M1 == "on" > > > je pense > > valable pour tout tes "if" > > > @+ > > Anthony Re: Syntax condition dans rules linknx - Stephane Triglia - 27/05/2011 Salut, j'avais bien vu ça mais je n'avais pas pensé a le mettre sur le premier if donc l'erreur restait identique et comme la ligne ne s'affiche pas dans l'erreur ... if M1 = "on" if BP1 = "on" then set("Downlight", "off"); set("Acceuil fenetre", "off"); set("Accueil mur", "off"); end; donc ça ne marché pas ... mais étant donné que ça faisait partie de la même condition (si M1 et si M2) je ne pensé pas qu'il le fallait... En tout cas merci ça fonctionne a merveille ! Par contre j'ai un autre problème qui vient de linknx, dans le cadre de mon utilisation je n'utilise pas le OFF du bouton et a moins de rajouter dans le script "if BP1 = "off"", et de mettre mon BP en commutation ON/OFF je ne vois pas comment ne pas prendre en compte le OFF (ou ca fait un appui de plus "incertain" car pas de retour d'état si le BP a envoyé ON ou OFF en dernier... N'y a t'il pas un moyen pour que linknx reconnaisse l'envoi d'un ON uniquement (le problème est que vu que linknx enregistre l'état il ne prend pas en compte l'envoi d'un on sur un état déjà on). Merci bien ! Stephane 2011/5/26 jef2000 <jef2000@ouaye.net> > Comme le message d'erreur le suggère, "'then' expected near 'if' " > signifie qu'il attend un "then" après le "if". > > Ca devrait être un truc du style > if M1 == "on" then > if BP1 == "on" then > .... > > > > On 26 mai, 17:52, Stephane Triglia <stephane.trig...@gmail.com> wrote: > > J'avais vu ca sur internet mais l'erreur avais juste changée je me suis > dit > > que ce n'était pas ça > > > > 1306425172 ERROR Action : LuaScriptAction error: [string "BP1 = > obj("BP1"); > > BP2 = obj("BP2"); M1 = obj("M1"); M2 = obj("M..."]:1: 'then' expected > near > > 'if' > > > > Le 26 mai 2011 17:46, Anthony PENHARD <a.penh...@gmail.com> a écrit : > > > > > > > > > > > > > > > > > > > > > dans ton script tu as : > > > > > if M1 = "on" > > > > > mais devrait être : > > > > > if M1 == "on" > > > > > je pense > > > valable pour tout tes "if" > > > > > @+ > > > Anthony > Re: Syntax condition dans rules linknx - Stephane Triglia - 27/05/2011 Je viens aussi de remarquer que tant que je n'ai pas mis a OFF un des deux boutons (et donc désactiver une des action) je ne peut pas lancer de seconde action !? Cas pratique: 1306482824 INFO Object : New value on for object M2 (type: 1.001) 1306482826 INFO Object : New value on for object BP1 (type: 1.001) 1306482826 INFO Rule : Evaluate rule commutation mode 1306482826 INFO ObjectValue : SwitchingObjectValue: Compare value_m='1' to value='1' 1306482826 INFO Condition : ObjectCondition (id='BP1') evaluated as '1' 1306482826 INFO Rule : Rule commutation mode evaluated as 1, prev value was 1 1306482828 INFO Object : New value off for object BP2 (type: 1.001) 1306482828 INFO Rule : Evaluate rule commutation mode 1306482828 INFO ObjectValue : SwitchingObjectValue: Compare value_m='1' to value='1' 1306482828 INFO Condition : ObjectCondition (id='BP1') evaluated as '1' 1306482828 INFO Rule : Rule commutation mode evaluated as 1, prev value was 1 Si j'envoi un off de BP1 avant l’enclenchement de BP2 ça fonctionne correctement. Un idée ? Le 27 mai 2011 09:34, Stephane Triglia <stephane.triglia@gmail.com> a écrit : > Salut, > > j'avais bien vu ça mais je n'avais pas pensé a le mettre sur le premier if > donc l'erreur restait identique et comme la ligne ne s'affiche pas dans > l'erreur ... > > if M1 = "on" > if BP1 = "on" then > set("Downlight", "off"); > set("Acceuil fenetre", "off"); > set("Accueil mur", "off"); > end; > > donc ça ne marché pas ... mais étant donné que ça faisait partie de la > même condition (si M1 et si M2) je ne pensé pas qu'il le fallait... > > En tout cas merci ça fonctionne a merveille ! > > Par contre j'ai un autre problème qui vient de linknx, dans le cadre de mon > utilisation je n'utilise pas le OFF du bouton et a moins de rajouter dans le > script "if BP1 = "off"", et de mettre mon BP en commutation ON/OFF je ne > vois pas comment ne pas prendre en compte le OFF (ou ca fait un appui de > plus "incertain" car pas de retour d'état si le BP a envoyé ON ou OFF en > dernier... > > N'y a t'il pas un moyen pour que linknx reconnaisse l'envoi d'un ON > uniquement (le problème est que vu que linknx enregistre l'état il ne prend > pas en compte l'envoi d'un on sur un état déjà on). > > Merci bien ! > > Stephane > 2011/5/26 jef2000 <jef2000@ouaye.net> > >> Comme le message d'erreur le suggère, "'then' expected near 'if' " >> signifie qu'il attend un "then" après le "if". >> >> Ca devrait être un truc du style >> if M1 == "on" then >> if BP1 == "on" then >> .... >> >> >> >> On 26 mai, 17:52, Stephane Triglia <stephane.trig...@gmail.com> wrote: >> > J'avais vu ca sur internet mais l'erreur avais juste changée je me suis >> dit >> > que ce n'était pas ça >> > >> > 1306425172 ERROR Action : LuaScriptAction error: [string "BP1 = >> obj("BP1"); >> > BP2 = obj("BP2"); M1 = obj("M1"); M2 = obj("M..."]:1: 'then' expected >> near >> > 'if' >> > >> > Le 26 mai 2011 17:46, Anthony PENHARD <a.penh...@gmail.com> a écrit : >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > > dans ton script tu as : >> > >> > > if M1 = "on" >> > >> > > mais devrait être : >> > >> > > if M1 == "on" >> > >> > > je pense >> > > valable pour tout tes "if" >> > >> > > @+ >> > > Anthony >> > > |