Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[linknx] Éxécuter un script
#1
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.
Frédéric

https://pknyx.gbiloba.org (de nouveau en ligne !)
Répondre
#2
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

Répondre
#3
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 ?
Frédéric

https://pknyx.gbiloba.org (de nouveau en ligne !)
Répondre
#4
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
Répondre
#5
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.
Frédéric

https://pknyx.gbiloba.org (de nouveau en ligne !)
Répondre
#6
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.
Répondre
#7
Super, merci ! La clé était qu'il s'agissait de rules, et non d'objets...
Frédéric

https://pknyx.gbiloba.org (de nouveau en ligne !)
Répondre


Atteindre :


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