Socket lua... tu va me rendre fou !! - 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 : Socket lua... tu va me rendre fou !! (/showthread.php?tid=700) |
Socket lua... tu va me rendre fou !! - Casi - 01/03/2011 Bonsoir !! J'exécute un script lua via une rule linknx, mais celle-ci ne semble pas s'exécuter voici en détail le code pour comprendre : <!-- Règles automatiques --> <rule id="RadioSDB"> <condition type="object" id="audio_sdb" value="on" trigger="true"/> <actionlist type="if-true"> <action type="script"> http = require("socket.http") c = http.request("http://192.168.1.51:8081/ requests/status.xml?command=in_play&input=http://xxx/mfm.php") </action> </actionlist> <actionlist type="on-false"> <action type="script"> http = require("socket.http") c = http.request("http:// 192.168.1.51:8081/requests/status.xml? command=pl_stop") </action> </actionlist> </rule> Dans ce code c'est la partie if-true qui ne fonctionne pas ! Pour info, un écouteur vlc est présent sur le 192.168.1.51 port 8081 Si j'exécute cette requête dans un navigateur, cela marche! Si j'exécute cette requête via lua, cela marche : bash > lua > http = require("socket.http") > c = http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&input=ht...") Par contre via linknx, rien a faire !!!!!!!!!! alors que la condition on-false est bien exécutée !!!!!!!! Je vois aussi dans la trace que les deux conditions sont bien exécutes : 1299018330 INFO Object : New value on for object audio_sdb (type: 1.001) 1299018330 INFO SwitchingObject : SwitchingObject (id=audio_sdb): Compare value_m='1' to value='1' 1299018330 INFO Condition : ObjectCondition (id='audio_sdb') evaluated as '1' 1299018330 INFO Action : Execute LuaScriptAction Write from 1.1.13 to 1/1/5: 00 1299018332 INFO Object : New value off for object audio_sdb (type: 1.001) 1299018332 INFO SwitchingObject : SwitchingObject (id=audio_sdb): Compare value_m='0' to value='1' 1299018332 INFO Condition : ObjectCondition (id='audio_sdb') evaluated as '0' 1299018332 INFO Action : Execute LuaScriptAction Write from 1.1.40 to 1/1/8: 00 Une bonne âme qui connait lua serait le bienvenu !!!! Cordialement, Yannick Socket lua... tu va me rendre fou !! - Arnaud Cognard - 01/03/2011 Hello, Tiens, c'est la journée lua. Pas certains que ca joue, mais il manque pas 1 ";" a chaque fin de ligne ? http = require("socket.http"); c = http.request("http://192.168.1.51:8081/requests/status.xml?command=pl_stop") ; Arnaud -----Message d'origine----- De : domotique-eib@googlegroups.com [mailto:domotique-eib@googlegroups.com] De la part de Casi Envoyé : mardi 1 mars 2011 23:44 À : domotique-EIB Objet : Socket lua... tu va me rendre fou !! Bonsoir !! J'exécute un script lua via une rule linknx, mais celle-ci ne semble pas s'exécuter voici en détail le code pour comprendre : <!-- Règles automatiques --> <rule id="RadioSDB"> <condition type="object" id="audio_sdb" value="on" trigger="true"/> <actionlist type="if-true"> <action type="script"> http = require("socket.http") c = http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&i nput=http://xxx/mfm.php") </action> </actionlist> <actionlist type="on-false"> <action type="script"> http = require("socket.http") c = http.request("http://192.168.1.51:8081/requests/status.xml?command=pl_stop") </action> </actionlist> </rule> Dans ce code c'est la partie if-true qui ne fonctionne pas ! Pour info, un écouteur vlc est présent sur le 192.168.1.51 port 8081 Si j'exécute cette requête dans un navigateur, cela marche! Si j'exécute cette requête via lua, cela marche : bash > lua > http = require("socket.http") > c = http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&i nput=ht...") Par contre via linknx, rien a faire !!!!!!!!!! alors que la condition on-false est bien exécutée !!!!!!!! Je vois aussi dans la trace que les deux conditions sont bien exécutes : 1299018330 INFO Object : New value on for object audio_sdb (type: 1.001) 1299018330 INFO SwitchingObject : SwitchingObject (id=audio_sdb): Compare value_m='1' to value='1' 1299018330 INFO Condition : ObjectCondition (id='audio_sdb') evaluated as '1' 1299018330 INFO Action : Execute LuaScriptAction Write from 1.1.13 to 1/1/5: 00 1299018332 INFO Object : New value off for object audio_sdb (type: 1.001) 1299018332 INFO SwitchingObject : SwitchingObject (id=audio_sdb): Compare value_m='0' to value='1' 1299018332 INFO Condition : ObjectCondition (id='audio_sdb') evaluated as '0' 1299018332 INFO Action : Execute LuaScriptAction Write from 1.1.40 to 1/1/8: 00 Une bonne âme qui connait lua serait le bienvenu !!!! Cordialement, Yannick Socket lua... tu va me rendre fou !! - Casi - 02/03/2011 Faut avouer que lua est super... quand on sait s'en servir Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux.... Socket lua... tu va me rendre fou !! - Casi - 02/03/2011 j'ai fait un petit programme qui écoute ce que linknx envoi via le script lua, voici le résultat : GET /requests/status.xml?command=volumeval=10 HTTP/1.1 host: 192.168.1.21 te: trailers connection: close, TE user-agent: LuaSocket 2.0.2 Maintenant voici ce que renvois le même script mais lancé manuellement par lua dans un terminal : GET /requests/status.xml?command=volume&val=10 HTTP/1.1 host: 192.168.1.21 te: trailers connection: close, TE user-agent: LuaSocket 2.0.2 La différence est de taille !!!!!!!! en effet, linknx tronque le caractère "&" trés important dans une URL. Maintenant si quelqu'un sait comment empêcher ce "tronquage" je prends !!! On 2 mar, 00:19, Casi <yann...@magikdo.com> wrote: > Faut avouer que lua est super... quand on sait s'en servir > > Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux.... Socket lua... tu va me rendre fou !! - Cyrille Demaret - 02/03/2011 Tu pourrais essayer avec un <![CDATA[. Donc par exemple: <action type="script"> <![CDATA[ http = require("socket.http") c = http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&i nput=http://xxx/mfm.php") ]]> </action> Cyrille -----Message d'origine----- De : domotique-eib@googlegroups.com [mailto:domotique-eib@googlegroups.com] De la part de Casi Envoyé : mercredi 2 mars 2011 00:37 À : domotique-EIB Objet : Re: Socket lua... tu va me rendre fou !! j'ai fait un petit programme qui écoute ce que linknx envoi via le script lua, voici le résultat : GET /requests/status.xml?command=volumeval=10 HTTP/1.1 host: 192.168.1.21 te: trailers connection: close, TE user-agent: LuaSocket 2.0.2 Maintenant voici ce que renvois le même script mais lancé manuellement par lua dans un terminal : GET /requests/status.xml?command=volume&val=10 HTTP/1.1 host: 192.168.1.21 te: trailers connection: close, TE user-agent: LuaSocket 2.0.2 La différence est de taille !!!!!!!! en effet, linknx tronque le caractère "&" trés important dans une URL. Maintenant si quelqu'un sait comment empêcher ce "tronquage" je prends !!! On 2 mar, 00:19, Casi <yann...@magikdo.com> wrote: > Faut avouer que lua est super... quand on sait s'en servir > > Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux.... Socket lua... tu va me rendre fou !! - fred - 02/03/2011 http.request("http://192.168.1.51:8081/requests/status.xml? command=in_play" .. string.char(38) .. "val=10" Je suppose que linknx "requires" le module string. Socket lua... tu va me rendre fou !! - fred - 02/03/2011 > il manque pas 1 ";" a chaque fin de ligne ? Non. Cf manuel de référence: "Each statement can be optionally followed by a semicolon". (http://www.lua.org/manual/5.1/manual.html) Socket lua... tu va me rendre fou !! - Homodomoticus@gmail.com - 02/03/2011 Bonjour, Je suis encore totalement novice avec lua. Si c'est du xml, est-ce qu'il ne faut pas "encoder" le "&" en "&" ? Cad : > http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&i > nput=http://xxx/mfm.php") Homodomoticus Le 2 mars 2011 à 01:49, "Cyrille Demaret" <ziki@omail.be> a écrit : > Tu pourrais essayer avec un <![CDATA[. Donc par exemple: > > <action type="script"> > <![CDATA[ > http = require("socket.http") > c = > http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&i > nput=http://xxx/mfm.php") > ]]> > </action> > > Cyrille > > -----Message d'origine----- > De : domotique-eib@googlegroups.com [mailto:domotique-eib@googlegroups.com] > De la part de Casi > Envoyé : mercredi 2 mars 2011 00:37 > À : domotique-EIB > Objet : Re: Socket lua... tu va me rendre fou !! > > j'ai fait un petit programme qui écoute ce que linknx envoi via le script > lua, voici le résultat : > > GET /requests/status.xml?command=volumeval=10 HTTP/1.1 > host: 192.168.1.21 > te: trailers > connection: close, TE > user-agent: LuaSocket 2.0.2 > > Maintenant voici ce que renvois le même script mais lancé manuellement par > lua dans un terminal : > > GET /requests/status.xml?command=volume&val=10 HTTP/1.1 > host: 192.168.1.21 > te: trailers > connection: close, TE > user-agent: LuaSocket 2.0.2 > > > La différence est de taille !!!!!!!! en effet, linknx tronque le caractère > "&" trés important dans une URL. > > Maintenant si quelqu'un sait comment empêcher ce "tronquage" je prends !!! > > On 2 mar, 00:19, Casi <yann...@magikdo.com> wrote: >> Faut avouer que lua est super... quand on sait s'en servir >> >> Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux.... > > Socket lua... tu va me rendre fou !! - Jupin Yannick - 02/03/2011 Bien vu, en effet ça marche très bien en encodant le & Superbe ! Merci Le 2 mars 2011 à 08:11, "Homodomoticus@gmail.com" <homodomoticus@gmail.com> a écrit : > Bonjour, > > Je suis encore totalement novice avec lua. Si c'est du xml, est-ce qu'il ne faut pas "encoder" le "&" en "&" ? > > Cad : > >> http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&i >> nput=http://xxx/mfm.php") > > Homodomoticus > > Le 2 mars 2011 à 01:49, "Cyrille Demaret" <ziki@omail.be> a écrit : > >> Tu pourrais essayer avec un <![CDATA[. Donc par exemple: >> >> <action type="script"> >> <![CDATA[ >> http = require("socket.http") >> c = >> http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&i >> nput=http://xxx/mfm.php") >> ]]> >> </action> >> >> Cyrille >> >> -----Message d'origine----- >> De : domotique-eib@googlegroups.com [mailto:domotique-eib@googlegroups.com] >> De la part de Casi >> Envoyé : mercredi 2 mars 2011 00:37 >> À : domotique-EIB >> Objet : Re: Socket lua... tu va me rendre fou !! >> >> j'ai fait un petit programme qui écoute ce que linknx envoi via le script >> lua, voici le résultat : >> >> GET /requests/status.xml?command=volumeval=10 HTTP/1.1 >> host: 192.168.1.21 >> te: trailers >> connection: close, TE >> user-agent: LuaSocket 2.0.2 >> >> Maintenant voici ce que renvois le même script mais lancé manuellement par >> lua dans un terminal : >> >> GET /requests/status.xml?command=volume&val=10 HTTP/1.1 >> host: 192.168.1.21 >> te: trailers >> connection: close, TE >> user-agent: LuaSocket 2.0.2 >> >> >> La différence est de taille !!!!!!!! en effet, linknx tronque le caractère >> "&" trés important dans une URL. >> >> Maintenant si quelqu'un sait comment empêcher ce "tronquage" je prends !!! >> >> On 2 mar, 00:19, Casi <yann...@magikdo.com> wrote: >>> Faut avouer que lua est super... quand on sait s'en servir >>> >>> Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux.... >> >> |