1 wire dans linknx et Raspberry pi - Version imprimable +- Forum KNX francophone / English KNX forum (https://www.knx-fr.com) +-- Forum : Français (https://www.knx-fr.com/forumdisplay.php?fid=3) +--- Forum : Logiciels libres (linknx, knxweb, pKNyX,...) (https://www.knx-fr.com/forumdisplay.php?fid=10) +--- Sujet : 1 wire dans linknx et Raspberry pi (/showthread.php?tid=3963) |
1 wire dans linknx et Raspberry pi - mil3d - 15/10/2015 Bonjour, étant, comme je l'ai déjà dis plusieurs fois, une "quiche" en linux et autre code lua, je n'arrive pas à afficher les informations de mes sondes de température 1 wire dans Linknx / knxweb. Mes sondes 1 wire sont branchées sur un rapsberry pi sur les connecteurs GPIO ce qui évite de devoir acheter un adaptateur USB-1Wire (voir ici par exemple :http://blog.bandinelli.net/index.php?post/2014/11/23/Temp%C3%A9rature-suivie-avec-un-Raspberry-Pi-B%2C-une-sonde-DS18B20-et-Munin Tous les tutos que je trouve pour afficher les sondes 1 wire dans Linknx sont pour ceux qui ont une clé USB 1wire et ne semblent pas fonctionner chez moi. La valeur de t° de la sonde se trouve dans le fichier /sys/bus/w1/devices/28-000003039154/w1_slave et voici ce qui me permet de l'afficher dans la console linux (ID de la sonde 28-000003039154) : Code : cat /sys/bus/w1/devices/28-000003039154/w1_slave | grep "t=" | awk -F "t=" '{print $2/1000}' Code : 20.5 Je souhaite maintenant récupérer cette valeur dans Linknx pour l'afficher dans KNXWeb, j'ai donc créé un objet dans linknx.xml Code : <object type="9.xxx" id="temp_buanderie" init="persist">temp_buanderie</objet> j'ai essayé d'après ce tuto d'adapter un code lua à mettre dans les rules du fichier linknx.xml, mais je pense bien que ça n'a rien à voir avec ce qu'il me faut : Code : <rule id="1wire-read"> Si quelqu'un peut m'aider à adapter cette fonction Merci. RE: 1 wire dans linknx et Raspberry pi - Energy01 - 15/10/2015 Salut, sans avoir testé je dirais un truc dans le genre Code : <action type="script"> @+ Anthony. RE: 1 wire dans linknx et Raspberry pi - mil3d - 16/10/2015 Merci pour ta réponse. je viens d'essayer,... sans résultat. La valeur de temp_buanderie est toujours à 0. Le '{print $2/1000}' est-il opportun dans ce cas-ci? "Print" n'est-il pas utilisé uniquement dans la console Linux pour afficher un résultat et que cette fonction ne renvoie rien d'utile pour Linknx? Merci RE: 1 wire dans linknx et Raspberry pi - Energy01 - 16/10/2015 Salut, de rien alors je n'ai pas testé la commande mais elle est en 3 parties : cat /sys/bus/w1/devices/28-000003039154/w1_slave => lit les données du capteur grep 't=' => récupère la ligne avec la température awk -F 't=' '{print $2/1000}' => récupère la "valeur" de la température et divise par 1000 cela doit être possible de faire la dernière partie en lua en effet plutôt que dans la commande il va falloir convertir la retour en "decimal" avec tonumber(value) Code : <action type="script"> a tester ... sinon qu'est ce que la commande suivante te donne exactement ? $ cat /sys/bus/w1/devices/28-000003039154/w1_slave @+ Anthony. RE: 1 wire dans linknx et Raspberry pi - mil3d - 18/10/2015 J'ai essayé ta dernière proposition, ça ne fonctionnait pas encore. J'ai donc essayé de décomposer le tout et reconstruire petit à petit. Et après quelques heures de recherche, le problème était le $ dans "..$id.." sur la 1ère ligne. Le $ ne peut pas être là. voici donc le code qui fonctionne : Code : function read1wire(id, objname) me renvoi Code : 19.687 Merci encore pour ton aide ! Par contre je n'arrive pas encore à afficher cette valeur dans un objet type="9.xxx", j'ai été obligé de créer un objet "16.000 string". Est-ce le point (".") dans le résultat qui pose problème? pour info, la commande : Code : $ cat /sys/bus/w1/devices/28-000003039154/w1_slave me donne : Code : 3b 01 4b 46 7f ff 05 10 54 : crc=54 YES le seule valeur intéressante est t=19687 RE: 1 wire dans linknx et Raspberry pi - Energy01 - 18/10/2015 ah oui oups le $ ... pour le "text" je pense que c'est une histoire de "." ou "," qui doit poser problème dans la "conversion" en numérique au lieu de texte dans ce bout de code c'est gérer en lua mieux je pense donc convertir en chiffre et ensuite divise par 1000 Code : <action type="script"> @+ Anthony. RE: 1 wire dans linknx et Raspberry pi - mil3d - 18/10/2015 En effet comme ça c'est parfait. Merci. |