Page 1 sur 2

Script PIR avec déclenchement multiple

Publié : 25 avr. 2019, 12:53
par jeannot
Bonjour ,
j'ai un script PIR qui déclenche un éclairage en H nuit et un Carillon en H Jour.
Le pb est que le PIR se déclenche plusieurs fois de suite . J'ai essayè temps capteur est sur une 1 s et 10 s .
Idem

Code : Tout sélectionner

-- loop through all the changed devices
for deviceName,deviceValue in pairs(devicechanged) do
print ("Device based event fired on '"..deviceName.."', value '"..tostring(deviceValue).."'");

-- Script radar0
   if devicechanged['radar0'] then
        if deviceValue == "On" and (timeofday['Nighttime']) 
        then
            commandArray['Eclairage_Ext'] = "On"
            commandArray['inter_chalet_Virtuel'] = "On"
             print("Device is On")
        end   
       if deviceValue == "On" and (timeofday['Daytime'])
        then
           commandArray['carillon'] = "On"
           print("Ding - dong ")      
        end     
    end
Log :
2019-04-25 12:48:47.731 (RFXTRX433) Lighting 4 (radar0)
2019-04-25 12:48:47.737 (RFXTRX433) Chime (carillon)
2019-04-25 12:48:47.798 (RFXTRX433) Chime (carillon)
2019-04-25 12:48:47.955 (RFXTRX433) Lighting 4 (radar0)
2019-04-25 12:48:47.964 (RFXTRX433) Chime (carillon)
2019-04-25 12:48:47.061 Status: LUA: Device based event fired on 'radar0', value 'On'
2019-04-25 12:48:47.061 Status: LUA: Ding - dong
2019-04-25 12:48:47.062 Status: EventSystem: Script event triggered: mes_scripts
2019-04-25 12:48:47.097 Status: LUA: Device based event fired on 'carillon', value 'On'
2019-04-25 12:48:47.174 Status: LUA: Device based event fired on 'radar0', value 'On'
2019-04-25 12:48:47.174 Status: LUA: Ding - dong
2019-04-25 12:48:47.177 Status: EventSystem: Script event triggered: mes_scripts
2019-04-25 12:48:47.182 Status: LUA: Device based event fired on 'radar0', value 'On'
2019-04-25 12:48:47.182 Status: LUA: Ding - dong
2019-04-25 12:48:47.182 Status: EventSystem: Script event triggered: mes_scripts
2019-04-25 12:48:47.206 Status: LUA: Device based event fired on 'radar0', value 'On'
2019-04-25 12:48:47.206 Status: LUA: Ding - dong
2019-04-25 12:48:47.207 Status: EventSystem: Script event triggered: mes_scripts
2019-04-25 12:48:47.224 Status: LUA: Device based event fired on 'carillon', value 'On'
2019-04-25 12:48:47.302 Status: LUA: Device based event fired on 'radar0', value 'On'
2019-04-25 12:48:47.302 Status: LUA: Ding - dong

Merci pour votre aide

Re: Script PIR avec déclenchement multiple

Publié : 25 avr. 2019, 14:49
par vil1driver
Salut,

Si ton pir ne passe jamais Off ajoute lui un délai d'extinction

Utilise la fonction stateChange à la place de devicechanged (voir modules.lua dans ma signature)

Re: Script PIR avec déclenchement multiple

Publié : 25 avr. 2019, 19:50
par jeannot
Il passe off , je vais charger et tester avec la bibliothèque de fonction .
Je vous tiens au courant .

Re: Script PIR avec déclenchement multiple

Publié : 25 avr. 2019, 21:09
par jeannot
J'ai chargé et copiè modules.lua sur pI/script/lua . J'ai ajouté les 2 lignes :
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
local debug = true
j'ai l'erreur:
2019-04-25 21:03:51.281 Error: EventSystem: in mes_scripts: [string "--dofile('/home/pi/domoticz/scripts/lua/modul..."]:24: attempt to index global 'stateChange' (a function value)
j'ai oubliè quelque chose?

Re: Script PIR avec déclenchement multiple

Publié : 25 avr. 2019, 21:12
par vil1driver
Tu as oublié de poster le script complet ;)

Re: Script PIR avec déclenchement multiple

Publié : 25 avr. 2019, 21:17
par jeannot
mon script :

Code : Tout sélectionner

commandArray = {}

dofile('/home/pi/domoticz/scripts/lua/modules.lua')
local debug = true  -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir


-- loop through all the changed devices

 for deviceName,deviceValue in pairs(devicechanged) do
 print ("Device based event fired on '"..deviceName.."', value '"..tostring(deviceValue).."'");

  
  -- Script radar0

    if  stateChange['radar0'] then    
       
        if deviceValue == "On" and (timeofday['Nighttime']) --and (timeofday['Daytime'])
        then
            commandArray['Eclairage_Ext'] = "On"
            commandArray['inter_chalet_Virtuel'] = "On"
             print("Device is On")
   end
    
        if deviceValue == "On" and (timeofday['Daytime'])
        then
           commandArray['carillon'] = "On"
           print("Ding - dong ")
         
        end     
   end


        
        -- carillon   sur ouverture1 
             
        if devicechanged['ouverture1']
        then
            if deviceValue == "Open" then
                commandArray['carillon'] = "On"
                 print("ouvert")
            end
               
        end
        
        
        
        --- Script chalet_inter_virtuel  
        
        if devicechanged['inter_chalet_Virtuel'] then
             if deviceValue == "On" then
                  commandArray['Eclairage_chalet'] = "Off"
             elseif 
                deviceValue == "Off" then
                commandArray['Eclairage_chalet'] = "On"
             end
        end
            
end            
return commandArray

Re: Script PIR avec déclenchement multiple

Publié : 25 avr. 2019, 21:41
par thier
le message
2019-04-25 21:03:51.281 Error: EventSystem: in mes_scripts: [string "--dofile('/home/pi/domoticz/scripts/lua/modul..."]:24: attempt to index global 'stateChange' (a function value)
veut dire que la fonction ne fonctionne pas. c'est un problème d'écriture
Ce n'est pas if stateChange['radar0'] then mais if stateChange(radar0)

Re: Script PIR avec déclenchement multiple

Publié : 25 avr. 2019, 21:56
par jeannot
ça avance je n'ai plus l'erreur : à function value par contre j'ai :
2019-04-25 21:53:03.763 Error: EventSystem: in mes_scripts: /home/pi/domoticz/scripts/lua/modules.lua:177: attempt to concatenate local 'device' (a nil value)

Re: Script PIR avec déclenchement multiple

Publié : 25 avr. 2019, 23:33
par thier
pareil, regarde ton fichier modules.lua à la ligne 177. Tu ne dois pas respecter la casse de la fonction ou le nom de ton device n'est pas bon.

Re: Script PIR avec déclenchement multiple

Publié : 26 avr. 2019, 03:34
par vil1driver
Vérifie qu'en début du fichier modules.lua tu as bien indiqué l'ip de ton domoticz etc..

La fonction stateChange s'utilise ainsi

Code : Tout sélectionner

if stateChange('radar0') == 'On' then
A la suite de cela, ceci n'est pas utile

Code : Tout sélectionner

deviceValue == "On"