Page 1 of 2
help needed: creating a wakeup light with dzvents
Posted: Friday 17 July 2020 13:49
by snellejellep
hi all,
i had the idea to create a wake up light using the lights in my room but now i am kinda stuck on the execution part.
what my idea is:
- i have dimmable lights in my bedroom and want to use them as a wake up light instead of the noisy annoying beeper
- i created a selector switch with the times i want to choose for my wake up light to be at a 100%
- the idea is that a script will dim the lights from 0 to 100% in around 15 to 20 minutes
a little caveat my domoticz installation restarts at 04:00 in the night, something i have still turned on because in the past domoticz had a habit of crashing somewhere in the night and nothing would work when i woke up, this "fixed" it back then and still to this date, so all the aftermin and such will be killed in the middle of the night...
a screenshot of my selector:
the start of a script i have so far(no idea if it is of any use):
Code: Select all
return
{
on =
{
devices =
{
'Wekker Jelle'
},
timer = { 'at 05:00'
'at 06:00',
'at 06:15',
'at 06:30',
'at 06:45',
'at 07:00',
'at 07:15',
'at 07:30',
'at 07:45',
'at 08:00',
'at 08:15',
'at 08:30',
'at 08:45',
'at 09:00',
},
},
execute = function(dz, device)
local knop = dz.devices("Wekker Jelle")
local lamp = dz.devices("Ledstrip bed Jelle")
if knop.state == 0 then
lamp.cancelQueuedCommands()
elseif knop.state == 10 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 06:00
lamp.dosomething()
knop.dimto(0).after the thing has finished
elseif knop.state == 20 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 06:15
elseif knop.state == 30 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 06:30
elseif knop.state == 40 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 06:45
elseif knop.state == 50 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 07:00
elseif knop.state == 60 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 07:15
elseif knop.state == 70 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 07:30
elseif knop.state == 80 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 07:45
elseif knop.state == 90 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 08:00
elseif knop.state == 100 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 08:15
elseif knop.state == 110 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 08:30
elseif knop.state == 120 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 08:45
elseif knop.state == 130 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 09:00
elseif knop.state == 140 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 09:15
elseif knop.state == 150 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 09:30
elseif knop.state == 160 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 09:45
elseif knop.state == 170 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 10:00
end
end
}
i hope someone has the time to help me with this
Re: help needed: creating a wakeup light with dzvents
Posted: Friday 17 July 2020 14:27
by snellejellep
now i have come up with this which i need to test but i recon there is a much simpler way to do this:
Code: Select all
return
{
on =
{
devices =
{
'Wekker Jelle'
},
timer = { 'at 05:00'
},
},
execute = function(dz, device)
local knop = dz.devices("Wekker Jelle")
local lamp = dz.devices("Ledstrip bed Jelle")
if knop.state == 0 then
lamp.cancelQueuedCommands()
elseif knop.state == 10 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 06:00
lamp.switchOn().dimTo(5).afterMin(40)
lamp.dimTo(10).afterMin(41)
lamp.dimTo(15).afterMin(42)
lamp.dimTo(20).afterMin(43)
lamp.dimTo(25).afterMin(44)
lamp.dimTo(30).afterMin(45)
lamp.dimTo(35).afterMin(46)
lamp.dimTo(40).afterMin(47)
lamp.dimTo(45).afterMin(48)
lamp.dimTo(50).afterMin(49)
lamp.dimTo(55).afterMin(50)
lamp.dimTo(60).afterMin(51)
lamp.dimTo(65).afterMin(52)
lamp.dimTo(70).afterMin(53)
lamp.dimTo(75).afterMin(54)
lamp.dimTo(80).afterMin(55)
lamp.dimTo(85).afterMin(56)
lamp.dimTo(90).afterMin(57)
lamp.dimTo(95).afterMin(58)
lamp.dimTo(100).afterMin(59)
knop.dimto(0).afterMin(60)
elseif knop.state == 20 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 06:15
lamp.switchOn().dimTo(5).afterMin(55)
lamp.dimTo(10).afterMin(56)
lamp.dimTo(15).afterMin(57)
lamp.dimTo(20).afterMin(58)
lamp.dimTo(25).afterMin(59)
lamp.dimTo(30).afterMin(60)
lamp.dimTo(35).afterMin(61)
lamp.dimTo(40).afterMin(62)
lamp.dimTo(45).afterMin(63)
lamp.dimTo(50).afterMin(64)
lamp.dimTo(55).afterMin(65)
lamp.dimTo(60).afterMin(66)
lamp.dimTo(65).afterMin(67)
lamp.dimTo(70).afterMin(68)
lamp.dimTo(75).afterMin(69)
lamp.dimTo(80).afterMin(70)
lamp.dimTo(85).afterMin(71)
lamp.dimTo(90).afterMin(72)
lamp.dimTo(95).afterMin(73)
lamp.dimTo(100).afterMin(74)
knop.dimto(0).afterMin(75)
elseif knop.state == 30 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 06:30
lamp.switchOn().dimTo(5).afterMin(70)
lamp.dimTo(10).afterMin(71)
lamp.dimTo(15).afterMin(72)
lamp.dimTo(20).afterMin(73)
lamp.dimTo(25).afterMin(74)
lamp.dimTo(30).afterMin(75)
lamp.dimTo(35).afterMin(76)
lamp.dimTo(40).afterMin(77)
lamp.dimTo(45).afterMin(78)
lamp.dimTo(50).afterMin(79)
lamp.dimTo(55).afterMin(80)
lamp.dimTo(60).afterMin(81)
lamp.dimTo(65).afterMin(82)
lamp.dimTo(70).afterMin(83)
lamp.dimTo(75).afterMin(84)
lamp.dimTo(80).afterMin(85)
lamp.dimTo(85).afterMin(86)
lamp.dimTo(90).afterMin(87)
lamp.dimTo(95).afterMin(88)
lamp.dimTo(100).afterMin(89)
knop.dimto(0).afterMin(90)
elseif knop.state == 40 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 06:45
lamp.switchOn().dimTo(5).afterMin(85)
lamp.dimTo(10).afterMin(86)
lamp.dimTo(15).afterMin(87)
lamp.dimTo(20).afterMin(88)
lamp.dimTo(25).afterMin(89)
lamp.dimTo(30).afterMin(90)
lamp.dimTo(35).afterMin(91)
lamp.dimTo(40).afterMin(92)
lamp.dimTo(45).afterMin(93)
lamp.dimTo(50).afterMin(94)
lamp.dimTo(55).afterMin(95)
lamp.dimTo(60).afterMin(96)
lamp.dimTo(65).afterMin(97)
lamp.dimTo(70).afterMin(98)
lamp.dimTo(75).afterMin(99)
lamp.dimTo(80).afterMin(100)
lamp.dimTo(85).afterMin(101)
lamp.dimTo(90).afterMin(102)
lamp.dimTo(95).afterMin(103)
lamp.dimTo(100).afterMin(104)
knop.dimto(0).afterMin(105)
elseif knop.state == 50 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 07:00
lamp.switchOn().dimTo(5).afterMin(100)
lamp.dimTo(10).afterMin(101)
lamp.dimTo(15).afterMin(102)
lamp.dimTo(20).afterMin(103)
lamp.dimTo(25).afterMin(104)
lamp.dimTo(30).afterMin(105)
lamp.dimTo(35).afterMin(106)
lamp.dimTo(40).afterMin(107)
lamp.dimTo(45).afterMin(108)
lamp.dimTo(50).afterMin(109)
lamp.dimTo(55).afterMin(110)
lamp.dimTo(60).afterMin(111)
lamp.dimTo(65).afterMin(112)
lamp.dimTo(70).afterMin(113)
lamp.dimTo(75).afterMin(114)
lamp.dimTo(80).afterMin(115)
lamp.dimTo(85).afterMin(116)
lamp.dimTo(90).afterMin(117)
lamp.dimTo(95).afterMin(118)
lamp.dimTo(100).afterMin(119)
knop.dimto(0).afterMin(120)
elseif knop.state == 60 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 07:15
lamp.switchOn().dimTo(5).afterMin(115)
lamp.dimTo(10).afterMin(116)
lamp.dimTo(15).afterMin(117)
lamp.dimTo(20).afterMin(118)
lamp.dimTo(25).afterMin(119)
lamp.dimTo(30).afterMin(120)
lamp.dimTo(35).afterMin(121)
lamp.dimTo(40).afterMin(122)
lamp.dimTo(45).afterMin(123)
lamp.dimTo(50).afterMin(124)
lamp.dimTo(55).afterMin(125)
lamp.dimTo(60).afterMin(126)
lamp.dimTo(65).afterMin(127)
lamp.dimTo(70).afterMin(128)
lamp.dimTo(75).afterMin(129)
lamp.dimTo(80).afterMin(130)
lamp.dimTo(85).afterMin(131)
lamp.dimTo(90).afterMin(132)
lamp.dimTo(95).afterMin(133)
lamp.dimTo(100).afterMin(134)
knop.dimto(0).afterMin(135)
elseif knop.state == 70 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 07:30
lamp.switchOn().dimTo(5).afterMin(130)
lamp.dimTo(10).afterMin(131)
lamp.dimTo(15).afterMin(132)
lamp.dimTo(20).afterMin(133)
lamp.dimTo(25).afterMin(134)
lamp.dimTo(30).afterMin(135)
lamp.dimTo(35).afterMin(136)
lamp.dimTo(40).afterMin(134)
lamp.dimTo(45).afterMin(138)
lamp.dimTo(50).afterMin(139)
lamp.dimTo(55).afterMin(140)
lamp.dimTo(60).afterMin(141)
lamp.dimTo(65).afterMin(142)
lamp.dimTo(70).afterMin(143)
lamp.dimTo(75).afterMin(144)
lamp.dimTo(80).afterMin(145)
lamp.dimTo(85).afterMin(146)
lamp.dimTo(90).afterMin(147)
lamp.dimTo(95).afterMin(148)
lamp.dimTo(100).afterMin(149)
knop.dimto(0).afterMin(150)
elseif knop.state == 80 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 07:45
lamp.switchOn().dimTo(5).afterMin(145)
lamp.dimTo(10).afterMin(146)
lamp.dimTo(15).afterMin(147)
lamp.dimTo(20).afterMin(148)
lamp.dimTo(25).afterMin(149)
lamp.dimTo(30).afterMin(150)
lamp.dimTo(35).afterMin(151)
lamp.dimTo(40).afterMin(152)
lamp.dimTo(45).afterMin(153)
lamp.dimTo(50).afterMin(154)
lamp.dimTo(55).afterMin(155)
lamp.dimTo(60).afterMin(156)
lamp.dimTo(65).afterMin(157)
lamp.dimTo(70).afterMin(158)
lamp.dimTo(75).afterMin(159)
lamp.dimTo(80).afterMin(160)
lamp.dimTo(85).afterMin(161)
lamp.dimTo(90).afterMin(162)
lamp.dimTo(95).afterMin(163)
lamp.dimTo(100).afterMin(164)
knop.dimto(0).afterMin(165)
elseif knop.state == 90 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 08:00
lamp.switchOn().dimTo(5).afterMin(160)
lamp.dimTo(10).afterMin(161)
lamp.dimTo(15).afterMin(162)
lamp.dimTo(20).afterMin(163)
lamp.dimTo(25).afterMin(164)
lamp.dimTo(30).afterMin(165)
lamp.dimTo(35).afterMin(166)
lamp.dimTo(40).afterMin(167)
lamp.dimTo(45).afterMin(168)
lamp.dimTo(50).afterMin(169)
lamp.dimTo(55).afterMin(170)
lamp.dimTo(60).afterMin(171)
lamp.dimTo(65).afterMin(172)
lamp.dimTo(70).afterMin(173)
lamp.dimTo(75).afterMin(174)
lamp.dimTo(80).afterMin(175)
lamp.dimTo(85).afterMin(176)
lamp.dimTo(90).afterMin(177)
lamp.dimTo(95).afterMin(178)
lamp.dimTo(100).afterMin(179)
knop.dimto(0).afterMin(180)
elseif knop.state == 100 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 08:15
lamp.switchOn().dimTo(5).afterMin(175)
lamp.dimTo(10).afterMin(176)
lamp.dimTo(15).afterMin(177)
lamp.dimTo(20).afterMin(178)
lamp.dimTo(25).afterMin(179)
lamp.dimTo(30).afterMin(180)
lamp.dimTo(35).afterMin(181)
lamp.dimTo(40).afterMin(182)
lamp.dimTo(45).afterMin(183)
lamp.dimTo(50).afterMin(184)
lamp.dimTo(55).afterMin(185)
lamp.dimTo(60).afterMin(186)
lamp.dimTo(65).afterMin(187)
lamp.dimTo(70).afterMin(188)
lamp.dimTo(75).afterMin(189)
lamp.dimTo(80).afterMin(190)
lamp.dimTo(85).afterMin(191)
lamp.dimTo(90).afterMin(192)
lamp.dimTo(95).afterMin(193)
lamp.dimTo(100).afterMin(194)
knop.dimto(0).afterMin(195)
elseif knop.state == 110 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 08:30
lamp.switchOn().dimTo(5).afterMin(190)
lamp.dimTo(10).afterMin(191)
lamp.dimTo(15).afterMin(192)
lamp.dimTo(20).afterMin(193)
lamp.dimTo(25).afterMin(194)
lamp.dimTo(30).afterMin(195)
lamp.dimTo(35).afterMin(196)
lamp.dimTo(40).afterMin(197)
lamp.dimTo(45).afterMin(198)
lamp.dimTo(50).afterMin(199)
lamp.dimTo(55).afterMin(200)
lamp.dimTo(60).afterMin(201)
lamp.dimTo(65).afterMin(202)
lamp.dimTo(70).afterMin(203)
lamp.dimTo(75).afterMin(204)
lamp.dimTo(80).afterMin(205)
lamp.dimTo(85).afterMin(206)
lamp.dimTo(90).afterMin(207)
lamp.dimTo(95).afterMin(208)
lamp.dimTo(100).afterMin(209)
knop.dimto(0).afterMin(210)
elseif knop.state == 120 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 08:45
lamp.switchOn().dimTo(5).afterMin(205)
lamp.dimTo(10).afterMin(206)
lamp.dimTo(15).afterMin(207)
lamp.dimTo(20).afterMin(208)
lamp.dimTo(25).afterMin(209)
lamp.dimTo(30).afterMin(210)
lamp.dimTo(35).afterMin(211)
lamp.dimTo(40).afterMin(212)
lamp.dimTo(45).afterMin(213)
lamp.dimTo(50).afterMin(214)
lamp.dimTo(55).afterMin(215)
lamp.dimTo(60).afterMin(216)
lamp.dimTo(65).afterMin(217)
lamp.dimTo(70).afterMin(218)
lamp.dimTo(75).afterMin(219)
lamp.dimTo(80).afterMin(220)
lamp.dimTo(85).afterMin(221)
lamp.dimTo(90).afterMin(222)
lamp.dimTo(95).afterMin(223)
lamp.dimTo(100).afterMin(224)
knop.dimto(0).afterMin(225)
elseif knop.state == 130 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 09:00
lamp.switchOn().dimTo(5).afterMin(220)
lamp.dimTo(10).afterMin(221)
lamp.dimTo(15).afterMin(222)
lamp.dimTo(20).afterMin(223)
lamp.dimTo(25).afterMin(224)
lamp.dimTo(30).afterMin(225)
lamp.dimTo(35).afterMin(226)
lamp.dimTo(40).afterMin(227)
lamp.dimTo(45).afterMin(228)
lamp.dimTo(50).afterMin(229)
lamp.dimTo(55).afterMin(230)
lamp.dimTo(60).afterMin(231)
lamp.dimTo(65).afterMin(232)
lamp.dimTo(70).afterMin(233)
lamp.dimTo(75).afterMin(234)
lamp.dimTo(80).afterMin(235)
lamp.dimTo(85).afterMin(236)
lamp.dimTo(90).afterMin(237)
lamp.dimTo(95).afterMin(238)
lamp.dimTo(100).afterMin(239)
knop.dimto(0).afterMin(240)
elseif knop.state == 140 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 09:15
lamp.switchOn().dimTo(5).afterMin(235)
lamp.dimTo(10).afterMin(236)
lamp.dimTo(15).afterMin(237)
lamp.dimTo(20).afterMin(238)
lamp.dimTo(25).afterMin(239)
lamp.dimTo(30).afterMin(240)
lamp.dimTo(35).afterMin(241)
lamp.dimTo(40).afterMin(242)
lamp.dimTo(45).afterMin(243)
lamp.dimTo(50).afterMin(244)
lamp.dimTo(55).afterMin(245)
lamp.dimTo(60).afterMin(246)
lamp.dimTo(65).afterMin(247)
lamp.dimTo(70).afterMin(248)
lamp.dimTo(75).afterMin(249)
lamp.dimTo(80).afterMin(250)
lamp.dimTo(85).afterMin(251)
lamp.dimTo(90).afterMin(252)
lamp.dimTo(95).afterMin(253)
lamp.dimTo(100).afterMin(254)
knop.dimto(0).afterMin(255)
elseif knop.state == 150 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 09:30
lamp.switchOn().dimTo(5).afterMin(250)
lamp.dimTo(10).afterMin(251)
lamp.dimTo(15).afterMin(252)
lamp.dimTo(20).afterMin(253)
lamp.dimTo(25).afterMin(254)
lamp.dimTo(30).afterMin(255)
lamp.dimTo(35).afterMin(256)
lamp.dimTo(40).afterMin(257)
lamp.dimTo(45).afterMin(258)
lamp.dimTo(50).afterMin(259)
lamp.dimTo(55).afterMin(260)
lamp.dimTo(60).afterMin(261)
lamp.dimTo(65).afterMin(262)
lamp.dimTo(70).afterMin(263)
lamp.dimTo(75).afterMin(264)
lamp.dimTo(80).afterMin(265)
lamp.dimTo(85).afterMin(266)
lamp.dimTo(90).afterMin(267)
lamp.dimTo(95).afterMin(268)
lamp.dimTo(100).afterMin(269)
knop.dimto(0).afterMin(270)
elseif knop.state == 160 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 09:45
lamp.switchOn().dimTo(5).afterMin(265)
lamp.dimTo(10).afterMin(266)
lamp.dimTo(15).afterMin(267)
lamp.dimTo(20).afterMin(268)
lamp.dimTo(25).afterMin(269)
lamp.dimTo(30).afterMin(270)
lamp.dimTo(35).afterMin(271)
lamp.dimTo(40).afterMin(272)
lamp.dimTo(45).afterMin(273)
lamp.dimTo(50).afterMin(274)
lamp.dimTo(55).afterMin(275)
lamp.dimTo(60).afterMin(276)
lamp.dimTo(65).afterMin(277)
lamp.dimTo(70).afterMin(278)
lamp.dimTo(75).afterMin(279)
lamp.dimTo(80).afterMin(280)
lamp.dimTo(85).afterMin(281)
lamp.dimTo(90).afterMin(282)
lamp.dimTo(95).afterMin(283)
lamp.dimTo(100).afterMin(284)
knop.dimto(0).afterMin(285)
elseif knop.state == 170 then -- dim lights during 15 minutes from 0 to 100% and let them be at 100 at 10:00
lamp.switchOn().dimTo(5).afterMin(280)
lamp.dimTo(10).afterMin(281)
lamp.dimTo(15).afterMin(282)
lamp.dimTo(20).afterMin(283)
lamp.dimTo(25).afterMin(284)
lamp.dimTo(30).afterMin(285)
lamp.dimTo(35).afterMin(286)
lamp.dimTo(40).afterMin(287)
lamp.dimTo(45).afterMin(288)
lamp.dimTo(50).afterMin(289)
lamp.dimTo(55).afterMin(290)
lamp.dimTo(60).afterMin(291)
lamp.dimTo(65).afterMin(292)
lamp.dimTo(70).afterMin(293)
lamp.dimTo(75).afterMin(294)
lamp.dimTo(80).afterMin(295)
lamp.dimTo(85).afterMin(296)
lamp.dimTo(90).afterMin(297)
lamp.dimTo(95).afterMin(298)
lamp.dimTo(100).afterMin(299)
knop.dimto(0).afterMin(300)
end
end
}
Re: help needed: creating a wakeup light with dzvents
Posted: Friday 17 July 2020 16:08
by waaren
snellejellep wrote: ↑Friday 17 July 2020 13:49
i had the idea to create a wake up light using the lights in my room but now i am kinda stuck on the execution part.
what my idea is:
- i have dimmable lights in my bedroom and want to use them as a wake up light instead of the noisy annoying beeper
Can you try this one ?
Code: Select all
return
{
on =
{
devices =
{
'Wekker Jelle'
},
timer =
{
'at 05:00',
},
},
logging =
{
level = domoticz.LOG_DEBUG, -- set to domoticz.LOG_ERROR when script is OK
marker = 'Alarm clock',
},
execute = function(dz, item)
local knop = dz.devices("Wekker Jelle")
local lamp = dz.devices("Ledstrip bed Jelle")
local dimMinutes = 15
function getStartSeconds(timeString, period)
local delta = period or (dimMinutes * 60)
local t = dz.time
local nowSeconds = t.dDate
local targetSeconds = os.time( { year = t.year, month = t.month, day = t.day, hour = timeString:sub(1,2), min = timeString:sub(4,5) , sec = 0 })
local delta2End = targetSeconds - nowSeconds
local delta2Start = delta2End - delta
return delta2Start
end
lamp.cancelQueuedCommands()
if knop.levelName == 'Off' then
lamp.dimTo(0).silent()
dz.log('No alarm set',dz.LOG_DEBUG)
end
if item.isTimer then
local startSeconds = getStartSeconds(knop.levelName)
local dimLevel = 1
local step = math.floor(dimMinutes * 60 / 100)
for i = 0, 99 do
lamp.dimTo(i+1).afterSec(startSeconds + i * step)
-- dz.log(" lamp.dimTo(" .. (i+1).. ").afterSec(" .. (startSeconds + i * step) .. ")",dz.LOG_DEBUG )
end
end
end
}
Re: help needed: creating a wakeup light with dzvents
Posted: Friday 17 July 2020 19:27
by snellejellep
waaren wrote: ↑Friday 17 July 2020 16:08
Can you try this one ?
Code: Select all
return
{
on =
{
devices =
{
'Wekker Jelle'
},
timer =
{
'at 05:00',
},
},
logging =
{
level = domoticz.LOG_DEBUG, -- set to domoticz.LOG_ERROR when script is OK
marker = 'Alarm clock',
},
execute = function(dz, item)
local knop = dz.devices("Wekker Jelle")
local lamp = dz.devices("Ledstrip bed Jelle")
local dimMinutes = 15
function getStartSeconds(timeString, period)
local delta = period or (dimMinutes * 60)
local t = dz.time
local nowSeconds = t.dDate
local targetSeconds = os.time( { year = t.year, month = t.month, day = t.day, hour = timeString:sub(1,2), min = timeString:sub(4,5) , sec = 0 })
local delta2End = targetSeconds - nowSeconds
local delta2Start = delta2End - delta
return delta2Start
end
lamp.cancelQueuedCommands()
if knop.levelName == 'Off' then
lamp.dimTo(0).silent()
dz.log('No alarm set',dz.LOG_DEBUG)
end
if item.isTimer then
local startSeconds = getStartSeconds(knop.levelName)
local dimLevel = 1
local step = math.floor(dimMinutes * 60 / 100)
for i = 0, 99 do
lamp.dimTo(i+1).afterSec(startSeconds + i * step)
-- dz.log(" lamp.dimTo(" .. (i+1).. ").afterSec(" .. (startSeconds + i * step) .. ")",dz.LOG_DEBUG )
end
end
end
}
thank you verry much, this is much shorter than my one but waay more complex, a job for me to find out what this all does so i can use it in the future.
i do get this error however:
2020-07-17 19:27:52.992 Error: dzVents: Error: (3.0.2) Alarm clock: An error occurred when calling event handler Wekker Jelle
2020-07-17 19:27:52.992 Error: dzVents: Error: (3.0.2) Alarm clock: ...oticz/scripts/dzVents/generated_scripts/Wekker Jelle.lua:47: attempt to index a nil value (global 'item')
i think there is something missing it cannot refer to?
Re: help needed: creating a wakeup light with dzvents [Solved]
Posted: Friday 17 July 2020 21:17
by waaren
snellejellep wrote: ↑Friday 17 July 2020 19:27
i do get this error however:
2020-07-17 19:27:52.992 Error: dzVents: Error: (3.0.2) Alarm clock: An error occurred when calling event handler Wekker Jelle
2020-07-17 19:27:52.992 Error: dzVents: Error: (3.0.2) Alarm clock: ...oticz/scripts/dzVents/generated_scripts/Wekker Jelle.lua:47: attempt to index a nil value (global 'item')
i think there is something missing it cannot refer to?
change line 21 from
to
Re: help needed: creating a wakeup light with dzvents
Posted: Friday 17 July 2020 21:22
by snellejellep
waaren wrote: ↑Friday 17 July 2020 21:17
change line 21 from
to
i thought something like that but did not dare to change that afraid of breaking more

it now does not give a error code so i will test it out tomorrow morning.
thank you!
Re: help needed: creating a wakeup light with dzvents
Posted: Saturday 18 July 2020 21:54
by snellejellep
it works, thanks a lot!
Re: help needed: creating a wakeup light with dzvents
Posted: Tuesday 29 September 2020 22:47
by EdwinK
I've got an error on line 33: 2020-09-29 22:33:01.862 Error: dzVents: Error: (3.0.12) Alarm clock: An error occurred when calling event handler WakeUp light
2020-09-29 22:33:01.862 Error: dzVents: Error: (3.0.12) Alarm clock: ...oticz/scripts/dzVents/generated_scripts/WakeUp light.lua:33: attempt to index a nil value (local 'timeString')
This is in line 33:
Code: Select all
local targetSeconds = os.time( { year = t.year, month = t.month, day = t.day, hour = timeString:sub(1,2), min = timeString:sub(4,5) , sec = 0 })
Re: help needed: creating a wakeup light with dzvents
Posted: Wednesday 30 September 2020 0:31
by waaren
EdwinK wrote: ↑Tuesday 29 September 2020 22:47
I've got an error on line 33: 2020-09-29 22:33:01.862 Error: dzVents: Error: (3.0.12) Alarm clock: An error occurred when calling event handler WakeUp light
Please share your complete script.
Did you define the alarmclock device as a selector with the the time strings levelnames as shown in the first post?
Re: help needed: creating a wakeup light with dzvents
Posted: Wednesday 30 September 2020 23:04
by EdwinK
- Spoiler: show
Code: Select all
return
{
on =
{
devices =
{
'Wekker'
},
timer =
{
'at 22:33',
},
},
logging =
{
level = domoticz.LOG_DEBUG, -- set to domoticz.LOG_ERROR when script is OK
marker = 'Alarm clock',
},
execute = function(dz, item)
local knop = dz.devices("Wekker")
local lamp = dz.groups("Slaapkamer")
local dimMinutes = 15
function getStartSeconds(timeString, period)
local delta = period or (dimMinutes * 60)
local t = dz.time
local nowSeconds = t.dDate
local targetSeconds = os.time( { year = t.year, month = t.month, day = t.day, hour = timeString:sub(1,2), min = timeString:sub(4,5) , sec = 0 })
local delta2End = targetSeconds - nowSeconds
local delta2Start = delta2End - delta
return delta2Start
end
lamp.cancelQueuedCommands()
if knop.levelName == 'Off' then
lamp.dimTo(0).silent()
dz.log('No alarm set',dz.LOG_DEBUG)
end
if item.isTimer then
local startSeconds = getStartSeconds(knop.levelName)
local dimLevel = 1
local step = math.floor(dimMinutes * 60 / 100)
for i = 0, 99 do
lamp.dimTo(i+1).afterSec(startSeconds + i * step)
-- dz.log(" lamp.dimTo(" .. (i+1).. ").afterSec(" .. (startSeconds + i * step) .. ")",dz.LOG_DEBUG )
end
end
end
}
This is how I have the script. Just changed the device to 'Wekker' and the light(s) to a group called 'Slaapkamer'.
I believe I have it all set as described, but will run over it again (tomorrow)
Re: help needed: creating a wakeup light with dzvents
Posted: Wednesday 30 September 2020 23:38
by waaren
EdwinK wrote: ↑Wednesday 30 September 2020 23:04
This is how I have the script. Just changed the device to 'Wekker' and the light(s) to a group called 'Slaapkamer'.
I believe I have it all set as described, but will run over it again (tomorrow)
This will not work. You cannot use dimTo for a group
Re: help needed: creating a wakeup light with dzvents
Posted: Thursday 01 October 2020 9:05
by EdwinK
Too bad

Re: help needed: creating a wakeup light with dzvents
Posted: Thursday 01 October 2020 9:23
by waaren
EdwinK wrote: ↑Thursday 01 October 2020 9:05Too bad

I could adjust the script to run on multiple lamps or on all lamps in a group. How many dimmable lights are in your group?
Re: help needed: creating a wakeup light with dzvents
Posted: Thursday 01 October 2020 11:57
by EdwinK
waaren wrote: ↑Thursday 01 October 2020 9:23
EdwinK wrote: ↑Thursday 01 October 2020 9:05Too bad

I could adjust the script to run on multiple lamps or on all lamps in a group. How many dimmable lights are in your group?
I just have two lamps for wakeup lamp in the bedroom
Re: help needed: creating a wakeup light with dzvents
Posted: Thursday 01 October 2020 12:48
by waaren
EdwinK wrote: ↑Thursday 01 October 2020 11:57
I just have two lamps for wakeup lamp in the bedroom
Can you try with this one?
Code: Select all
alarmClockAndButton = 'AlarmClock' -- change to name of your controlling selector
return
{
on =
{
devices =
{
alarmClockAndButton,
},
timer =
{
'at 04:13', -- this time must be set to time on the same day at a time before the alarm needs to go off
},
},
logging =
{
level = domoticz.LOG_DEBUG, -- set to domoticz.LOG_ERROR when script is OK
marker = 'Alarm clock',
},
execute = function(dz, item)
local lights =
{ -- name one or more dimmable lights to be controlled at the alarm time
dz.devices('light1'),
dz.devices('light2'),
}
local dimMinutes = 15 -- amount of time from dim 0 to 100
-----------------------------------------
----- No changes required below this line
-----------------------------------------
local alarmClockAndButton = dz.devices(alarmClockAndButton)
function getStartSeconds(timeString, period)
local delta = period or (dimMinutes * 60)
local t = dz.time
local targetSeconds = os.time( { year = t.year, month = t.month, day = t.day, hour = timeString:sub(1,2), min = timeString:sub(4,5) , sec = 0 })
local delta2End = targetSeconds - os.time()
local delta2Start = delta2End - delta
return delta2Start
end
for _, light in ipairs(lights) do
light.cancelQueuedCommands()
end
if alarmClockAndButton.levelName == 'Off' then
for _, light in ipairs(lights) do
light.dimTo(0).silent()
end
dz.log('No alarm set',dz.LOG_DEBUG)
end
if item.isTimer then
local startSeconds = getStartSeconds(alarmClockAndButton.levelName)
local dimLevel = 1
local step = math.floor(dimMinutes * 60 / 100)
for i = 0, 99 do
for _, light in ipairs(lights) do
light.dimTo(i+1).afterSec(startSeconds + i * step)
end
-- dz.log(' lamp.dimTo(' .. (i+1).. ').afterSec(' .. (startSeconds + i * step) .. ')',dz.LOG_DEBUG )
end
end
end
}
Re: help needed: creating a wakeup light with dzvents
Posted: Thursday 01 October 2020 16:39
by EdwinK
Will try

Re: help needed: creating a wakeup light with dzvents
Posted: Thursday 01 October 2020 17:02
by EdwinK
Hmm.. still get an error:
2020-10-01 16:59:00.308 Error: dzVents: Error: (3.0.12) Alarm clock: ...e/pi/domoticz/scripts/dzVents/generated_scripts/test.lua:64: attempt to index a nil value (global 'knop')
Re: help needed: creating a wakeup light with dzvents
Posted: Thursday 01 October 2020 17:13
by waaren
EdwinK wrote: ↑Thursday 01 October 2020 17:02
Hmm.. still get an error:
2020-10-01 16:59:00.308 Error: dzVents: Error: (3.0.12) Alarm clock: ...e/pi/domoticz/scripts/dzVents/generated_scripts/test.lua:64: attempt to index a nil value (global 'knop')
Change knop to alarmClockAndButton
Re: help needed: creating a wakeup light with dzvents
Posted: Thursday 01 October 2020 22:44
by EdwinK
Like this
local startSeconds = getStartSeconds(alarmClockAndButton.levelName)
Re: help needed: creating a wakeup light with dzvents
Posted: Thursday 01 October 2020 23:30
by waaren
EdwinK wrote: ↑Thursday 01 October 2020 22:44
Like this
local startSeconds = getStartSeconds(alarmClockAndButton.levelName)
Yes