Aller au contenu
gargamel01000

Problème code LUA ouverture automatique des volets

Recommended Posts

Bonsoir à tous,

je viens vers vous car j'ai un soucis avec un petit code en Lua.

 

L'objectif est d'ouvrir automatiquement un volet une seule fois entre 12h00 et 13h00 lorsqu'un détecteur de mouvement (fibaro) s'active

voici mon code

--[[
%% autostart
%% properties
195 value
--]]

if(fibaro:countScenes() >1) then
    fibaro:abort()
  fibaro:debug('Abort')
end

	-- date du jour
  	local currentDate = os.date("*t")	
	-- heure actuel au format HH:mm
	local heure = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min)
	-- jour de travail 
	local jourdetravail = fibaro:getGlobalValue("JourChome") == "NON"
	local ouverture = fibaro:getGlobalValue("ouverture_midi") =="NON"
  
	if ((heure > "12:00") and (heure < "13h00") and jourdetravail and ouverture) then
		-- ouverture automatique des volets du rdc
		fibaro:call(103, "open")
    	fibaro:setGlobal("ouverture_midi", "OUI")
	end

	-- on attend 1 minute
	fibaro:sleep(60*1000)






195 value correspond a mon motion sensor

 

Mon code a l'air de fonctionner par contre comment puis je remettre ma variable ouverture a NON après 13H00

 

merci pour votre aide

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @gargamel01000,

 

Désolé pour le retard/

Tu déclenches ta scène sur le motion sensor 195, dans ce cas, il faut tester la valeur de ce dernier, sinon la scène se lancera à la detection et aussi quand il n'y aura plus de détection

Passage du value de 0 à 1 puis de 1 à 0

 

Sinon comme ceci mais tester


 

--[[
%% autostart
%% properties
195 value
--]]

if(fibaro:countScenes() >1) then
    fibaro:abort()
  fibaro:debug('Abort')
end

    -- heure du jour
local heure = os.date("%H:%M")    

    -- Motion Sensor à 1
local value = fibaro:getValue(195, "value") > 0

    -- jour de travail
    local jourdetravail = fibaro:getGlobalValue("JourChome") == "NON"
    local ouverture = fibaro:getGlobalValue("ouverture_midi") =="NON"
 
    if ((heure > "12:00") and (heure < "13h00") and jourdetravail and ouverture and value) then
        -- ouverture automatique des volets du rdc
        fibaro:call(103, "open")
        fibaro:setGlobal("ouverture_midi", "OUI")
    elseif heure > "13:00" then
        fibaro:setGlobal("ouverture_midi", "NON")
    else
        local ouverture = fibaro:getGlobalValue("ouverture_midi")
        fibaro:debug("Avant 12h, Après 13h - Valeur Ouverture Midi : " ..ouverture)
    end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

 

Pepite je reviens vers toi, j'ai une erreur au niveau de la ligne 16

local value = fibaro:getValue(195, "value") > 0

[DEBUG] 20:39:53: line 16: attempt to compare number with string

 

une idée ?
 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir, desole oui :-)

local value = tonumber(fibaro:getValue(195, "value")) > 0

A tester bien sur :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci de mettre le sujet en résolu, je n'ai pas trouvé si je pouvais le faire moi même

Partager ce message


Lien à poster
Partager sur d’autres sites

×