Page 1 sur 1

fonction absence

Publié : 19 oct. 2020, 20:43
par dream
Bonjour à tous,

Je me suis remis sur Domoticz et je récupère de vieux scripts qui fonctionnaient à l'époque notamment avec la fonction "absence" suivante (qui maintenant ne fonctionne plus) :
(et la fonction levé de soleil sur un dummy ne fonctionne pas : "après levé soleil : 00:10" pour levé soleil + 10 min : j'ai loupé quelque chose :?: )

Merci à vous pour votre aide !

Code : Tout sélectionner

-- script_device_cuisineMatin.lua

time = os.date("*t")

t1 = os.time()
s = otherdevices_lastupdate['EyeCM']
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 10sec
-- planning matin = on (01h00 - après sunrise)
-- on allume les 3 lumières en rouge faible

for deviceName,deviceValue in pairs(otherdevices) do
    if (deviceName=='DBMatin') then
     if deviceValue == "On" then
       print("heure du matin")

            if (devicechanged['EyeCM'] == 'On' and absence > 10) then

   commandArray['Scene matinC'] = "On"

  end
end
end
end

return commandArray

-- 

Re: fonction absence

Publié : 19 oct. 2020, 21:50
par Keros
Et qu'est ce que te donnes les logs ? Essaye de rajoute des prints pour toutes les valeurs : T1, s, T2, absence ...
Regarde ma signature, j'ai écrit quelques lignes à propos du débogage.

Et puis tu ne peux pas avoir if (devicechanged['EyeCM'] == 'On' puisque avant tu vérifies que if (deviceName=='DBMatin') then

Re: fonction absence

Publié : 20 oct. 2020, 18:13
par dream
Merci pour ta réponse, j'essai de voir avec le debuggage !

Concernant ta remarque :
Et puis tu ne peux pas avoir if (devicechanged['EyeCM'] == 'On' puisque avant tu vérifies que if (deviceName=='DBMatin') then
, le scirpt fonctionne même si je retire "and absence > 10"

Re: fonction absence

Publié : 20 oct. 2020, 18:27
par Keros
Pardon, je n'avais pas remarqué le changement par rapport au script par défaut : for deviceName,deviceValue in pairs(otherdevices) do

Code par défaut :

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).."'");
--    if (deviceName=='myDevice') then
--        if deviceValue == "On" then
--            print("Device is On")
--        elseif deviceValue == "Off" then
--            commandArray['a device name'] = "On"
--            commandArray['another device name'] = "Off AFTER 10"
--            commandArray['Scene:MyScene'] = "Off"
--            commandArray['Group:My Group'] = "Off AFTER 30"
--        end
--    end
end
Attention, faire des modifications d’éléments "standard" risques de te poser des problèmes pour comprendre plus tard.


Pour info, tu peux utiliser la fonction otherdevices_svalues[deviceName].

Ton code pourrait se réduire à :

Code : Tout sélectionner

if (devicechanged['EyeCM'] == 'On' and absence > 10 and otherdevices_svalues['DBMatin']== 'On') then

   commandArray['Scene matinC'] = "On"

 end
Je te laisse rajouter des prints pour vérifier toutes les infos et deboguer si besoin.

Re: fonction absence

Publié : 21 oct. 2020, 19:45
par dream
Merci beaucoup pour ces précisions ! Je vais regarder de plus près et rajouter les print et faire un peu de lecture sur ton poste deboggage