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 :evil:

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&param=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&param=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.