Intégrer du 1wire dans Knxweb avec LUA

Après avoir pas mal galéré à faire fonctionner tout ça je regroupe ici les informations :

1°) Installation de OWFS pour lire les sondes (sources http://loftawattrelos.free.fr)

Tout d’abord, récupérer la source

wget http://sourceforge.net/projects/owfs/files/owfs/2.8p4/owfs-2.8p4.tar.gz

et ensuite, installer ce dont on a besoin

apt-get install libusb-dev perl-base python-dev php5-dev libfuse-dev swig

tar -xzvfowfs-2.8p4.tar.gz cd owfs-2.8p4

./configure –enable-debian –prefix=/usr/local

make

make install

Brancher la clef usb

Connecter le composant DS18B20

Pour lancer le server

owserver -u -p 4304

lancer le serveur web

owhttpd -u -s localhost:4304 -p 8081

et se connecter via votre browser favoris. On y trouve quelque chose sous la forme 81.351F2F000000, c’est la clef usb. Les autres, ce sont les capteurs.

ou via http://localhost:8081/

2°) Créer le gad qui vas recevoir la valeur

<object type="9.xxx" id="temp_ext" gad="7/0/1" init="persist" log="true" flags="crtu">Temp Exterieur</object>

3°) Ajouter le script Lua de jeff2000

<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.BB9D4D020000/temperature","Temp_Exterieur");
</action>
</actionlist>
</rule>

Haut de page