Messages : 1,463
Sujets : 137
Inscription : May 2011
Réputation :
0
Bonjour,
Y a-t-il moyen, avec linknx, de récupérer une valeur via un script (bash, python, etc...) ? Un peu comme les connexion Tcp des IOports...
Si oui, comment fait-on ça ?
Merci d'avance.
Messages : 192
Sujets : 1
Inscription : May 2011
Salut,
bas oui c'est le pincipe même de linknx mettre a dispo un serveur tcp interrogeable via des requêtes xml
le wiki :
https://sourceforge.net/p/linknx/wiki/In...th_Linknx/
tu veux faire quoi exactement ? un "read" sur un object ?
@+
Anthony
Messages : 1,463
Sujets : 137
Inscription : May 2011
Réputation :
0
Désolé, je me suis mal exprimé... Je veux créer un objet (DP purement logiciel) dont la valeur (il s'agit d'une température) serait récupérée depuis un script.
Est-ce faisable ?
Messages : 192
Sujets : 1
Inscription : May 2011
Salut,
OK si j'ai bien compris tu veux un object qui n'a pas de GA associé sur le bus KNX
Si c'est ça tu créé un object du type que tu veux sans GAD il ne sera que logiciel que dans linknx un peu comme un variable
Que tu peux valoriser comme tu le souhaite avec un script lua par exemple dans une rule
Ce principe est utiliser pour récupérer les température de sonde onewire par exemple
@+
Anthony
Messages : 1,463
Sujets : 137
Inscription : May 2011
Réputation :
0
En fait, si, je veux qu'il ait une GA associée ; quand je disais purement logiciel, c'est pour distinguer d'un vrai appareil KNX, avec de l'électronique et tout. En gros, je veux créer une pseudo sonde de température KNX, qui lit la température via un script (lui-même connecté à une sonde, bien sûre, mais qui pourrait être sur le web), et la balance sur le bus KNX, pour pouvoir être utilisée normalement.
En fait, ce qu'il me manque, c'est l'utilisation du script lua ; tu as un exemple ? Je ne retrouve pas dans la doc...
Merci d'avance.
Messages : 192
Sujets : 1
Inscription : May 2011
Re,
exemple de script :
<rule id="1wire-read">
<condition type="timer" trigger="true">
<every>2m</every>
</condition>
<actionlist>
<action type="script">
function read1wire(id, objname)
out = io.popen("/usr/local/bin/owread -s localhost:4304 "..id);
value = string.match(out:read("*a"), "[0-9.]+");
out:close();
if (value ~= nil) then
set(objname, value);
end
end;
read1wire("28.000000000000/temperature","temperature");
</action>
</actionlist>
</rule>
@+
Anthony.
Messages : 1,463
Sujets : 137
Inscription : May 2011
Réputation :
0
Super, merci ! La clé était qu'il s'agissait de rules, et non d'objets...