Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Socket lua... tu va me rendre fou !!
#1
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
#2
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
#3
Faut avouer que lua est super... quand on sait s'en servir Smile

Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux....
#4
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 Smile
>
> Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux....
#5
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 Smile
>
> Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux....
#6
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.
#7
> 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)
#8
Bonjour,

Je suis encore totalement novice avec lua. Si c'est du xml, est-ce qu'il ne faut pas "encoder" le "&" en "&amp;" ?

Cad :

> http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&amp;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 Smile
>>
>> Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux....
>
>
#9
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 "&amp;" ?
>
> Cad :
>
>> http.request("http://192.168.1.51:8081/requests/status.xml?command=in_play&amp;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 Smile
>>>
>>> Même avec un ; a chaque fin de ligne ça ne fonctionne pas mieux....
>>
>>


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)