Page 2 sur 2
Re: DS2401
Publié : 21 janv. 2015, 21:21
par patrice
Bonsoir
Je pense qu'il y a mauvaise compréhension
Les scripts Lua dont il est question sont ils gérés dans Domoticz ou en ligne de commande par l'interpréteur Lua ?
Re: DS2401
Publié : 22 janv. 2015, 08:00
par jc61
bonjour,
Moi je suis sous Windows et je ne vois pas où je peux trouver le "dossier" du ds2401 lorsque celui ci est présent ??????
Re: DS2401
Publié : 22 janv. 2015, 08:51
par patrice
Aahhh Windows
Moi non plus alors

Re: DS2401
Publié : 22 janv. 2015, 22:06
par Laurent
Bonjour,
Merci de votre aide ça fonctionne.
Voici le code :
Code : Tout sélectionner
-- Script pour utiliser les DS2401
--
--IL faut:
--Créer un matériel "DUMMY"
--Créer un "CAPTEUR VIRTEL" d type "INTERRUPTEUR"
--Copier ce fichier sous un nom du type "script_device_{le nom que vous voulez}.lua dans "domoticz/scripts/lua"
--Renseigner la variable ID correspond au numéro id complet du DS2401
--Renseigner la variable DEV correspond au nom que vous avez donné à votre dispositif
--Testez
--
--Pour inverser le sens du on/off il suffit de remplacer [if (value == nil) then] par [if (value ~= nil) then] en ligne 30
--
commandArray = {}
debug=true
id = "01.80D32D170000"
dev = "test"
function read1wire(id)
out = io.popen("/usr/bin/owread "..id.."/id");
value = out:read("*a");
out:close();
return value
end
value=read1wire(id)
if (value == nil) then
print (value.." -----ON")
commandArray[dev]='On'
else
commandArray[dev]='Off'
print (value.." -----OFF")
end
return commandArray
Ce code doit être dans un fichier au nom du type "script_device_????.lua dans le dossier "domoticz/scripts/lua"
Pour répondre à Jihem, je suis sur une debian et mon dossier d'installation est "/opt/domoticz-code/", merci pour l'info du nom de fichier. Je n'avais pas bien lu le fichier modèle qu'il y adans le dossier "domoticz/scripts/lua".
Pour répondre à Patrice, je n'ai pas mis le shebang parce que dans le fichier modèle, il n'y est pas. Et il n'y a pas besoin d'utiliser cron, domoticz lance le script en permanence. Ce qui fait que la remontée du changement d'état est rapide.
Encore merci et à la prochaine
Re: DS2401
Publié : 02 févr. 2015, 17:54
par talfr
Bonsoir,
voici une version moins propre que j'avais écrite il y a un an pour faire de même avec des DS2401.
c'est un script bash qui va scruter le dossier 1wire à la recherche des sondes DS2401 pour mettre à jour domoticz en conséquence vers des périphériques virtuels ou fictifs. on peut évidement adapter pour tout autre chose qui serait mise à jour sur le file system du Raspberry.
Code : Tout sélectionner
#!/bin/bash
function jsonval {
temp=`echo $json | sed 's/\\\\\//\//g' | sed 's/[{}]//g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | sed 's/\"\:\"/\|/g' | sed $
echo ${temp##*|}
}
FOUND=
while true
do
FOUND=""
for DIR in /mnt/1wire/81.*
do
if [ -d "$DIR" ]
then
FOUND="$DIR"
echo $DIR
break
fi
done
if [ -d "$FOUND" ]
then
strCurl=
if [[ $FOUND == */mnt/1wire/81.F79D30000000* ]]
then
json=`curl -s -X GET "http://192.168.X.X:8081/json.htm?type=devices&rid=35"`
prop='Status'
StatusIdx=`jsonval`
if [[ $StatusIdx == "Status : Closed" ]]
then
echo "Execute curl command to post json request=On"
strCurl=`/usr/bin/curl -i -H "Accept: application/json" "http://192.168.X.X:8081/json.htm?type=command¶m=switchlight&idx=35&switchcm$
echo "$strCurl"
FOUND=""
fi
fi
else
json=`curl -s -X GET "http://192.168.X.X:8081/json.htm?type=devices&rid=35"`
prop='Status'
StatusIdx=`jsonval`
if [[ $StatusIdx == "Status : Open" ]]
then
strCurl=`/usr/bin/curl -i -H "Accept: application/json" "http://192.168.X.X:8081/json.htm?type=command¶m=switchlight&idx=35&switchcmd$
echo "$strCurl"
fi
fi
sleep 2
done
exit 0
mettre le script dans rc.local ou équivalent pour qu'il démarre à chaque reboot du PI.
Re: DS2401
Publié : 18 mars 2017, 18:50
par christopheb
Bonsoir,
Je voudrais installer des ds2401 sur mon installation sauf que j'y connait rien en lua et autres script (mon basic d'il y a 25 ans ne m'aide pas). En plus mon anglais est inexistant (pourquoi j'ai pas écouté en cours

).
J'ai 10 ds18b20 branchés sur un contrôleur usb 1-wire ds9490r. Quand j'y connecte un ds2401 je voit bien apparaître un dossier "81.AB1995A5C000" dans mnt/1wire.
J'ai essayé de modifier le script de Laurent en conséquence mais sans succès. Si quelqu'un a une idée.
Merci d'avance.