I doesn't give an error, but it doesn't work like i hoped
It has to read the value of a variable, named 'OudersRolluikStore'. This is an integer
The script starts with reading the value of the blind and write this in de variable.
I have done this, because the remote send 5 commands when i push it 1 time. Otherwise the script runs 5 times, because the blind starts to move and the value is already changed. (i hope you understand what i mean)
The UP part works, but that is basci
Code: Select all
if dz.devices(Afstandsbediening_O).level == 10 then -- UP
if debug then
print ('Openen van rolluik: '..Rolluik_OL..'.')
end
dz.devices(Rolluik_OL).dimTo(50)
dz.devices(Rolluik_OR).dimTo(50)
endWhen i copy the final command to the top (before "VariableOname" is needed) then control works.
So i know the remote works and part of the script works.
PS, don't ask why i called the blinds as shutter
Code: Select all
local Afstandsbediening_O = 'Zigbee_Remote_PapaMama'
local Rolluik_OL = 'Shutter_Ouders_Links'
local Rolluik_OR = 'Shutter_Ouders_Rechts'
local VariableOname = 'OudersRolluikStore'
local SetValueFirstPush_O = 98
local SetCloseValue_O = 99
local debug = true
return {
on = {
devices = {
Afstandsbediening_O,
}
},
execute = function(dz, device)
--[[ OSRAM Smart+ Switch selector values
0 = Off
10 = Up
20 = Up: Hold
30 = Up: Release
40 = Circle: Click
50 = Circle: Hold
60 = Circle: Release
70 = Down
80 = Down: Hold
90 = Down: Release
]]--
-- Instellingen voor Ouders remote rolluik control
if dz.variables(VariableOname).value == 1000 then
local valueO = dz.devices(Rolluik_OL).level
if debug then
print (valueO)
end
dz.variables(VariableOname).set(valueO)
if debug then
dz.variables(VariableOname).set(1000).afterSec(30)
else
dz.variables(VariableOname).set(1000).afterSec(5)
end
end
local SetValueFirstPush_Omin1 = SetValueFirstPush_O - 1
if dz.devices(Afstandsbediening_O).level == 70 then -- Down
if debug then
print ('Sluiten van rolluik: '..Rolluik_OL..'.')
end
if dz.variables(VariableOname).value <= 100 and dz.variables(VariableOname).value >= SetValueFirstPush_O then
if debug then
print ('Waarde ligt tussen de '..SetValueFirstPush_O..' en 100.')
end
dz.devices(Rolluik_OL).dimTo(SetCloseValue_O)
dz.devices(Rolluik_OR).dimTo(100)
elseif dz.variables(VariableOname).value <= SetValueFirstPush_Omin1 and dz.variables(VariableOname).value >= 80 then
if debug then
print ('Waarde ligt tussen de 80 en '..SetValueFirstPush_Omin1..'.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetCloseValue_O).afterSec(15)
elseif dz.variables(VariableOname).value <= 79 and dz.variables(VariableOname).value >= 60 then
if debug then
print ('Waarde ligt tussen de 60 en 79.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetCloseValue_O).afterSec(20)
elseif dz.variables(VariableOname).value <= 59 and dz.variables(VariableOname).value >= 40 then
if debug then
print ('Waarde ligt tussen de 40 en 59.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetCloseValue_O).afterSec(25)
elseif dz.variables(VariableOname).value <= 39 and dz.variables(VariableOname).value >= 1 then
if debug then
print ('Waarde ligt tussen de 1 en 39.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetCloseValue_O).afterSec(30)
elseif dz.variables(VariableOname).value == 0 then
if debug then
print ('Waarde is 0.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetCloseValue_O).afterSec(30)
end
end
if dz.devices(Afstandsbediening_O).level == 10 then -- UP
if debug then
print ('Openen van rolluik: '..Rolluik_OL..'.')
end
dz.devices(Rolluik_OL).dimTo(50)
dz.devices(Rolluik_OR).dimTo(50)
end
if dz.devices(Afstandsbediening_O).level == 0 then -- CIRCLE
if debug then
print ('Selector 0, Met 1 klik volledig openen van rolluik: '..Rolluik_OL..', geen ventilatie stand.')
end
if dz.variables(VariableOname).value <= 101 and dz.variables(VariableOname).value >= SetValueFirstPush_O then
if debug then
print ('Waarde ligt tussen de '..SetValueFirstPush_O..' en 100.')
end
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O)
elseif dz.variables(VariableOname).value <= SetValueFirstPush_Omin1 and dz.variables(VariableOname).value >= 80 then
if debug then
print ('Waarde ligt tussen de 80 en '..SetValueFirstPush_Omin1..'.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(15)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(15)
elseif dz.variables(VariableOname).value <= 79 and dz.variables(VariableOname).value >= 60 then
if debug then
print ('Waarde ligt tussen de 60 en 79.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(20)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(20)
elseif dz.variables(VariableOname).value <= 59 and dz.variables(VariableOname).value >= 40 then
if debug then
print ('Waarde ligt tussen de 40 en 59.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(25)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(25)
elseif dz.variables(VariableOname).value <= 39 and dz.variables(VariableOname).value >= 1 then
if debug then
print ('Waarde ligt tussen de 1 en 39.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(30)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(30)
elseif dz.variables(VariableOname).value == 0 then
if debug then
print ('Waarde is 0.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(30)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(30)
end
end
if dz.devices(Afstandsbediening_O).level == 40 then -- CIRCLE
if debug then
print ('Selector 40, Met 1 klik volledig openen van rolluik: '..Rolluik_OL..', geen ventilatie stand.')
end
if dz.variables(VariableOname).value <= 101 and dz.variables(VariableOname).value >= SetValueFirstPush_O then
if debug then
print ('Waarde ligt tussen de '..SetValueFirstPush_O..' en 100.')
end
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O)
elseif dz.variables(VariableOname).value <= SetValueFirstPush_Omin1 and dz.variables(VariableOname).value >= 80 then
if debug then
print ('Waarde ligt tussen de 80 en '..SetValueFirstPush_Omin1..'.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(15)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(15)
elseif dz.variables(VariableOname).value <= 79 and dz.variables(VariableOname).value >= 60 then
if debug then
print ('Waarde ligt tussen de 60 en 79.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(20)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(20)
elseif dz.variables(VariableOname).value <= 59 and dz.variables(VariableOname).value >= 40 then
if debug then
print ('Waarde ligt tussen de 40 en 59.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(25)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(25)
elseif dz.variables(VariableOname).value <= 39 and dz.variables(VariableOname).value >= 1 then
if debug then
print ('Waarde ligt tussen de 1 en 39.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(30)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(30)
elseif dz.variables(VariableOname).value == 0 then
if debug then
print ('Waarde is 0.')
end
dz.devices(Rolluik_OL).dimTo(100)
dz.devices(Rolluik_OR).dimTo(100)
dz.devices(Rolluik_OL).dimTo(SetValueFirstPush_O).afterSec(30)
dz.devices(Rolluik_OR).dimTo(SetValueFirstPush_O).afterSec(30)
end
end
end
}