help needed: creating a wakeup light with dzvents  [Solved]

Easy to use, 100% Lua-based event scripting framework.

Moderator: leecollings

snellejellep
Posts: 241
Joined: Tuesday 16 May 2017 13:05
Target OS: Raspberry Pi / ODroid
Domoticz version: 2020.2
Location: The Neterlands
Contact:

help needed: creating a wakeup light with dzvents

Post 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:
Image

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
Last edited by snellejellep on Friday 17 July 2020 14:28, edited 1 time in total.
raspberry pi | xiaomi vacuum | yeelight | philips hue | zwave | ubiquiti unifi | harmony | sonoff | zigbee2mqtt | https://www.youtube.com/channel/UC2Zidl ... m1OLuNldfQ
snellejellep
Posts: 241
Joined: Tuesday 16 May 2017 13:05
Target OS: Raspberry Pi / ODroid
Domoticz version: 2020.2
Location: The Neterlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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
}
raspberry pi | xiaomi vacuum | yeelight | philips hue | zwave | ubiquiti unifi | harmony | sonoff | zigbee2mqtt | https://www.youtube.com/channel/UC2Zidl ... m1OLuNldfQ
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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
}
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
snellejellep
Posts: 241
Joined: Tuesday 16 May 2017 13:05
Target OS: Raspberry Pi / ODroid
Domoticz version: 2020.2
Location: The Neterlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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?
raspberry pi | xiaomi vacuum | yeelight | philips hue | zwave | ubiquiti unifi | harmony | sonoff | zigbee2mqtt | https://www.youtube.com/channel/UC2Zidl ... m1OLuNldfQ
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: help needed: creating a wakeup light with dzvents  [Solved]

Post 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

Code: Select all

    execute = function(dz)
to

Code: Select all

    execute = function(dz, item)
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
snellejellep
Posts: 241
Joined: Tuesday 16 May 2017 13:05
Target OS: Raspberry Pi / ODroid
Domoticz version: 2020.2
Location: The Neterlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post by snellejellep »

waaren wrote: Friday 17 July 2020 21:17 change line 21 from

Code: Select all

    execute = function(dz)
to

Code: Select all

    execute = function(dz, item)
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!
raspberry pi | xiaomi vacuum | yeelight | philips hue | zwave | ubiquiti unifi | harmony | sonoff | zigbee2mqtt | https://www.youtube.com/channel/UC2Zidl ... m1OLuNldfQ
snellejellep
Posts: 241
Joined: Tuesday 16 May 2017 13:05
Target OS: Raspberry Pi / ODroid
Domoticz version: 2020.2
Location: The Neterlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post by snellejellep »

it works, thanks a lot!
raspberry pi | xiaomi vacuum | yeelight | philips hue | zwave | ubiquiti unifi | harmony | sonoff | zigbee2mqtt | https://www.youtube.com/channel/UC2Zidl ... m1OLuNldfQ
User avatar
EdwinK
Posts: 1820
Joined: Sunday 22 January 2017 21:46
Target OS: Raspberry Pi / ODroid
Domoticz version: BETA
Location: Rhoon
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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 })
Running latest BETA on a Pi-3 | Toon® Thermostat (rooted) | Hue | Tuya | IKEA tradfri | Dashticz V3 on Lenovo Huawei Tablet | Conbee
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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?
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
User avatar
EdwinK
Posts: 1820
Joined: Sunday 22 January 2017 21:46
Target OS: Raspberry Pi / ODroid
Domoticz version: BETA
Location: Rhoon
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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)
Running latest BETA on a Pi-3 | Toon® Thermostat (rooted) | Hue | Tuya | IKEA tradfri | Dashticz V3 on Lenovo Huawei Tablet | Conbee
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
User avatar
EdwinK
Posts: 1820
Joined: Sunday 22 January 2017 21:46
Target OS: Raspberry Pi / ODroid
Domoticz version: BETA
Location: Rhoon
Contact:

Re: help needed: creating a wakeup light with dzvents

Post by EdwinK »

Too bad :(
Running latest BETA on a Pi-3 | Toon® Thermostat (rooted) | Hue | Tuya | IKEA tradfri | Dashticz V3 on Lenovo Huawei Tablet | Conbee
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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?
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
User avatar
EdwinK
Posts: 1820
Joined: Sunday 22 January 2017 21:46
Target OS: Raspberry Pi / ODroid
Domoticz version: BETA
Location: Rhoon
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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
Running latest BETA on a Pi-3 | Toon® Thermostat (rooted) | Hue | Tuya | IKEA tradfri | Dashticz V3 on Lenovo Huawei Tablet | Conbee
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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
}
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
User avatar
EdwinK
Posts: 1820
Joined: Sunday 22 January 2017 21:46
Target OS: Raspberry Pi / ODroid
Domoticz version: BETA
Location: Rhoon
Contact:

Re: help needed: creating a wakeup light with dzvents

Post by EdwinK »

Will try :)
Running latest BETA on a Pi-3 | Toon® Thermostat (rooted) | Hue | Tuya | IKEA tradfri | Dashticz V3 on Lenovo Huawei Tablet | Conbee
User avatar
EdwinK
Posts: 1820
Joined: Sunday 22 January 2017 21:46
Target OS: Raspberry Pi / ODroid
Domoticz version: BETA
Location: Rhoon
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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')
Running latest BETA on a Pi-3 | Toon® Thermostat (rooted) | Hue | Tuya | IKEA tradfri | Dashticz V3 on Lenovo Huawei Tablet | Conbee
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post 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
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
User avatar
EdwinK
Posts: 1820
Joined: Sunday 22 January 2017 21:46
Target OS: Raspberry Pi / ODroid
Domoticz version: BETA
Location: Rhoon
Contact:

Re: help needed: creating a wakeup light with dzvents

Post by EdwinK »

Like this

local startSeconds = getStartSeconds(alarmClockAndButton.levelName)
Running latest BETA on a Pi-3 | Toon® Thermostat (rooted) | Hue | Tuya | IKEA tradfri | Dashticz V3 on Lenovo Huawei Tablet | Conbee
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: help needed: creating a wakeup light with dzvents

Post by waaren »

EdwinK wrote: Thursday 01 October 2020 22:44 Like this
local startSeconds = getStartSeconds(alarmClockAndButton.levelName)
Yes
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest