21/11/2010, 14:47:49
Salut,
Tu peux le faire avec un script lua. Je viens de regarder et ceci
devrait fonctionner:
<rule id="1wire-read">
<condition type="timer" trigger="true">
<every>1m</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();
set(objname, value);
end;
read1wire("28.FF9B25020000/temperature",
"Temp_FF9B25020000");
</action>
</actionlist>
</rule>
Toutes les minutes, il exécute le script qui lance la commande,
récupère ce que la commande affiche, extrait la valeur (une suite de
caractères composés de points et de chiffres) et l'assigne à l'objet.
Je l'ai écrit sous forme de fonction comme ça tu peux lire plusieurs
objets en un seul script, simplement en ajoutant plusieurs lignes
read1wire("id 1wire", "objet linknx");
A+
Jean-François
On 21 nov, 10:58, Energy01 <a.penh...@gmail.com> wrote:
> merci mais je ne suis pas sur que cela m'aide ...
>
> la commande c'est par exemple :
> /usr/locatl/bin/owread -s localhost:4304 28.FF9B25020000/temperature
>
> qui retourne la température de mon capteur 28.FF9B25020000
> ce que je souhaiterais c'est affecté cette valeur à un objet linknx
> <object type="9.xxx" id="Temp_FF9B25020000" gad="1/2/*3"
>
> >Temp_FF9B25020000</object>
>
> cette action doit marcher
> <action type="shell-cmd" cmd="/usr/locatl/bin/owread -s localhost:4304
> 28.FF9B25020000/temperature" />
> mais comment affecter la valeur de retour à "Temp_FF9B25020000" ?
> si on peut écrire dans un fichier et ensuite récupérer la valeur dans
> linknx je suis intéressé ...
>
> merci
> Anthony.
Tu peux le faire avec un script lua. Je viens de regarder et ceci
devrait fonctionner:
<rule id="1wire-read">
<condition type="timer" trigger="true">
<every>1m</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();
set(objname, value);
end;
read1wire("28.FF9B25020000/temperature",
"Temp_FF9B25020000");
</action>
</actionlist>
</rule>
Toutes les minutes, il exécute le script qui lance la commande,
récupère ce que la commande affiche, extrait la valeur (une suite de
caractères composés de points et de chiffres) et l'assigne à l'objet.
Je l'ai écrit sous forme de fonction comme ça tu peux lire plusieurs
objets en un seul script, simplement en ajoutant plusieurs lignes
read1wire("id 1wire", "objet linknx");
A+
Jean-François
On 21 nov, 10:58, Energy01 <a.penh...@gmail.com> wrote:
> merci mais je ne suis pas sur que cela m'aide ...
>
> la commande c'est par exemple :
> /usr/locatl/bin/owread -s localhost:4304 28.FF9B25020000/temperature
>
> qui retourne la température de mon capteur 28.FF9B25020000
> ce que je souhaiterais c'est affecté cette valeur à un objet linknx
> <object type="9.xxx" id="Temp_FF9B25020000" gad="1/2/*3"
>
> >Temp_FF9B25020000</object>
>
> cette action doit marcher
> <action type="shell-cmd" cmd="/usr/locatl/bin/owread -s localhost:4304
> 28.FF9B25020000/temperature" />
> mais comment affecter la valeur de retour à "Temp_FF9B25020000" ?
> si on peut écrire dans un fichier et ensuite récupérer la valeur dans
> linknx je suis intéressé ...
>
> merci
> Anthony.