Page 4 sur 4

Re: Automatisation Hue + Fibaro eye motion

Publié : 16 févr. 2017, 20:08
par dream
ci joint le code :

J'ai une erreur :
2017-02-16 20:07:00.209 Error: EventSystem: in Motion test: [string "time = os.date("*t") ..."]:19: attempt to index global 'devicechanged' (a nil value)
ligne 19 c'est
if (devicechanged['Xiaomi Door Sensor'] == 'Open' and (timeofday['Nighttime'] or otherdevices['Lux entrée'] == 'On') and absence > 600) then

mais je ne vois pas ce qui block, car j'ai bien remplacé le nom des module "case sensitive"

Code : Tout sélectionner

time = os.date("*t")


t1 = os.time()
s = otherdevices_lastupdate['Motion entrée']
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
absence = (os.difftime (t1, t2))

commandArray = {}

-- si la porte s'ouvre la nuit ou s'il fait noir
-- et qu'aucun mouvement n'est détecté dans le salon depuis plus de 10 minutes,
-- on allume la lampe
if (devicechanged['Xiaomi Door Sensor'] == 'Open' and (timeofday['Nighttime'] or otherdevices['Lux entrée'] == 'On') and absence > 600) then

   commandArray['Scene Détente'] = "On"   

elseif  (timeofday['Nighttime'] or otherdevices['Lux Salon'] == 'On') and absence > 600 then

   commandArray['Scene Détente'] = "On"   
   
end

return commandArray

Re: Automatisation Hue + Fibaro eye motion

Publié : 16 févr. 2017, 20:24
par vil1driver
L'erreur devicechanged est expliquée, reprend le sujet depuis le début..

D'ailleurs en cherchant sur le forum ou Google on trouve aussi, le blog de Patrice et l'article sur lua en parle également... Bref on se motive un peu svp

Autrement ce n'est pas comme ça qu'on lance une scène...
Voir wiki domoticz ou l'article de Patrice (toujours sur le blog)

Re: Automatisation Hue + Fibaro eye motion

Publié : 17 févr. 2017, 19:04
par dream
Mais le mot "scène" c'est le nom pour mes Hue ...
C'est sympa de cracher sur les Noob comme moi en rabachant d'aller lire la bible pour un non catholique...

Autant les choses peuvent te paraître évidente et sensée, autant pour moi je dois relire à plusieurs reprise sans vraiment comprendre le fonctionnement :|

D'autre part je ne retrouve pas le LUA créer sous le http://10.0.0.14:80#/event dans le dossier /domoticz/script/lua ?

Re: Automatisation Hue + Fibaro eye motion

Publié : 17 févr. 2017, 20:33
par vil1driver
Les scripts lua créés via l'interface sont stockés dans la base de données...

Re: Automatisation Hue + Fibaro eye motion

Publié : 18 févr. 2017, 12:06
par dream
J'ai reprise et coller le code :
mais j'ai l'erreur suivante :
2017-02-18 13:03:51.134 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_device_porte2.lua: /home/pi/domoticz/scripts/lua/script_device_porte2.lua:6: bad argument #1 to 'sub' (string expected, got nil)

Que veux dire bad argument #1 to 'sub' ?

Merci

Code : Tout sélectionner

-- script_device_porte2.lua

function lastSeen(device)
    t1 = os.time()
    s = otherdevices_lastupdate[device]
    year = string.sub(s, 1, 4)
    month = string.sub(s, 6, 7)
    day = string.sub(s, 9, 10)
    hour = string.sub(s, 12, 13)
    minutes = string.sub(s, 15, 16)
    seconds = string.sub(s, 18, 19)
    t2= os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
    return (os.difftime (t1, t2))
    
end    


commandArray = {}

local porteOverte = devicechanged['Xiaomi Door Sensor'] == 'Open'
local pieceVide = lastSeen('Motion entrée') > '5' and lastSeen('Motion Salon') > '5'
local pieceNoire = otherdevices['Lux Salon'] < '10' and otherdevices['Lux entrée']  < '10'
    
if (porteOuverte and pieceVide and pieceNoire) then
    
    commandArray['scene on'] = "on"

end

return commandArray

Re: Automatisation Hue + Fibaro eye motion

Publié : 21 févr. 2017, 16:18
par deennoo
vil1driver a écrit :Salut,

J'utilise ceci

Code : Tout sélectionner

-- script_device_porte.lua

time = os.date("*t")

t1 = os.time()
s = otherdevices_lastupdate['mv salon']
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
absence = (os.difftime (t1, t2))

commandArray = {}

-- si la porte s'ouvre la nuit ou s'il fait noir
-- et qu'aucun mouvement n'est détecté dans le salon depuis plus de 10 minutes,
-- on allume la lampe
if (devicechanged['la porte'] == 'Open' and (timeofday['Nighttime'] or otherdevices['lumino salon'] == 'On') and absence > 600) then

   commandArray['le salon']='Set Level 13'
   
   
end

return commandArray 
Fonctionne aussi trés bien dans l'autre sens :

--Si pas de mouvement depuis 5 minutes et lumière pas sur Off alors éteint la lumière
--Si le détecteur voit du mouvement et que la lumière est éteinte, alors allume la lumière a 75%

Code : Tout sélectionner

time = os.date("*t")

t1 = os.time()
s = otherdevices_lastupdate['Motion Bureau Loisir']
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
absence = (os.difftime (t1, t2))

commandArray = {}

--Si pas de mouvement depuis 5 minutes et lumière pas sur Off alors éteint la lumière
--Si le détecteur voit du mouvement et que la lumière est éteinte, alors allume la lumière a 75%


   
    if absence > 300 and otherdevices['Plafonnier Loisir']~='Off' then
     
   commandArray['Plafonnier Loisir']='Off'
   
   elseif devicechanged['Motion Bureau Loisir'] == 'On' and otherdevices['Plafonnier Loisir']=='Off' then

   commandArray['Plafonnier Loisir']='Set Level 75'
   
end

return commandArray
Merci pour ce script