DS2401

Forum dédié au bus 1-Wire : connectique, intégration
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: DS2401

Message 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 ?
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
jc61
Messages : 2
Inscription : 18 janv. 2015, 21:03

Re: DS2401

Message 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 ??????
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: DS2401

Message par patrice »

Aahhh Windows
Moi non plus alors :evil:
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Laurent
Messages : 10
Inscription : 17 janv. 2015, 18:35
Localisation : GIMONT (32)

Re: DS2401

Message 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
Olinuxino-A20 sous Debian, 1wire, Rfxcom, OWL CM160, WES2.0
talfr
Messages : 1
Inscription : 02 févr. 2015, 17:48

Re: DS2401

Message 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.
1 Raspberry PI + RFXtrx433 USB + CM15Pro + DS9490R sous Domoticz
1 Raspberry PI + Razberry + LinkUSB sous Z-way
1 IPX800 V3 (pilote CES, Alarme (Détecteur filaire PIR, sirène et clavier RFID), Arrosage, Poele à granulets, Alim Volet Roulant)
christopheb
Messages : 13
Inscription : 20 oct. 2015, 14:05

Re: DS2401

Message 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.
Répondre