Hello,
I have a dzventz-script with the command "domoticz.devices('xxx').switchOff().afterMin(180)".
I want to know how many minutes have been passed after the device is called for switchOff.
Can anyone help me with a piece of script?
Thanks
Paul
passed time after switchOff().afterMin(180)
Moderator: leecollings
- waaren
- Posts: 6028
- Joined: Tuesday 03 January 2017 14:18
- Target OS: Linux
- Domoticz version: Beta
- Location: Netherlands
- Contact:
Re: passed time after switchOff().afterMin(180)
Where do you want to show this countdown value ? In the log, a variable or in another device ?pgas37 wrote: Saturday 28 December 2019 15:24 I have a dzventz-script with the command "domoticz.devices('xxx').switchOff().afterMin(180)".
I want to know how many minutes have been passed after the device is called for switchOff.
If you can share the script as it is now I might be able to help
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
Re: passed time after switchOff().afterMin(180)
Waaren,
see code below.
The first intention was to show it in the log-file, but may be a 'variable' or in 'another device' opens some new possibilities.
thanks
Paul
see code below.
The first intention was to show it in the log-file, but may be a 'variable' or in 'another device' opens some new possibilities.
thanks
Paul
Code: Select all
return {
active = true, -- set to false to disable this script
on = {
devices = {
110, --ADC1 schakelaar afzuiginstallatie
5560, -- Motion MotionBadk
5549, --Motion-wc-hal
5555, --Motion-wc-etage
5449 --Dummy afzuiginstallatie
}
},
execute = function(domoticz, device)
local Afzuiging = domoticz.devices('Afzuiginstallatie - ADC1')
MotionBadk = domoticz.devices('Motion-badkamer')
MotionWcHal = domoticz.devices('Motion-wc-hal')
MotionWcEtage = domoticz.devices('Motion-wc-etage')
DummyAfzuig = domoticz.devices('Dummy afzuiginstallatie')
--currentTime = domoticz.time.raw -- format 2017-12-31 22:19:15'
currentTime = domoticz.time.rawTime -- format 00:00:00
currentHours = domoticz.time.hour
currentMinutes = domoticz.time.minutes
PRINT_MODE = false --true
if PRINT_MODE == true then
print ('============================================================================================ ')
print('======currentTime==== ' ..currentTime)
print('======current Hours=== ' ..currentHours)
print('======current minutes=== ' ..currentMinutes)
if (MotionWcHal.state) == 'On' then
print ('===========Motion-wc-hal is on =========== ')
else
print ('===========Motion-wc-hal is off =========== ')
end
if (MotionBadk.state) == 'On' then
print ('===========MotionBadk is on =========== ')
else
print ('===========MotionBadk is off =========== ')
end
if (MotionWcEtage.state) == 'On' then
print ('===========Motion-wc-etage is on =========== ')
else
print ('===========Motion-wc-etage is off =========== ')
end
if (Afzuiging.state) == 'Off' then
print ('===========afzuiginstallatie uit =========== ')
else
print ('===========afzuiginstallatie aan =========== ')
end
if (DummyAfzuig.state) == 'Off' then
print ('===========DummyAfzuig is off =========== ')
else
print ('===========DummyAfzuig is on =========== ')
end
end
--if (DummyAfzuig.state) == 'On' then
-- print ('===========DummyAfzuig 2 is on =========== ')
-- return
--end
--print ('===========afzuigscript loopt door =========== ')
if
(MotionWcHal.state == 'On') and (DummyAfzuig.state == 'Off') then
domoticz.devices('Afzuiginstallatie - ADC1').switchOn().checkFirst().repeatAfterSec(10,2)
domoticz.devices('Afzuiginstallatie - ADC1').switchOff().checkFirst().afterMin(15).repeatAfterSec(10,2)
if PRINT_MODE == true then
print ('===========return motion wc-hal===== ')
end
return
end
if (MotionWcEtage.state == 'On') and (DummyAfzuig.state == 'Off') then --and (currentTime >= "13:14:00") and (currentTime < "13:22:00") then
domoticz.devices('Afzuiginstallatie - ADC1').switchOn().checkFirst().repeatAfterSec(10,2)
domoticz.devices('Afzuiginstallatie - ADC1').switchOff().checkFirst().afterMin(15).repeatAfterSec(10,2)
--domoticz.devices('SchakelaarSL2- zolderstelling').switchOn() --.repeatAfterSec(3,2)Afzuiging.switchOn()
if PRINT_MODE == true then
print ('===========return motion wc-etage==== ')
end
return
end
if (MotionBadk.state == 'On') and (DummyAfzuig.state == 'Off') and (currentTime >= "21:45:00") and (currentTime < "23:00:00") then
--domoticz.devices('Dummy afzuiginstallatie').switchOn().repeatAfterSec(10,2)
--domoticz.devices('Dummy afzuiginstallatie').switchOff().afterMin(120)repeatAfterSec(10,2)
if PRINT_MODE == true then
print ('===========return motion badk obv tijdslot===== ')
end
return
end
if (MotionBadk.state == 'On') and (DummyAfzuig.state == 'Off') then
domoticz.devices('Afzuiginstallatie - ADC1').switchOn().repeatAfterSec(10,2)
domoticz.devices('Dummy afzuiginstallatie').switchOn().repeatAfterSec(10,2)
domoticz.devices('Afzuiginstallatie - ADC1').switchOff().afterMin(180).repeatAfterSec(10,2)
domoticz.devices('Dummy afzuiginstallatie').switchOff().afterMin(179)repeatAfterSec(10,2)
if PRINT_MODE == true then
print ('===========return motion badk===== ')
end
return
end
end
}- waaren
- Posts: 6028
- Joined: Tuesday 03 January 2017 14:18
- Target OS: Linux
- Domoticz version: Beta
- Location: Netherlands
- Contact:
Re: passed time after switchOff().afterMin(180)
Script could look like
Code: Select all
return
{
active = true, -- set to false to disable this script
on =
{
devices =
{
110, --ADC1 schakelaar afzuiginstallatie
5560, -- Motion MotionBadk
5549, --Motion-wc-hal
5555, --Motion-wc-etage
5449 --Dummy afzuiginstallatie
},
timer =
{
'every minute'
},
},
logging =
{
level = domoticz.LOG_DEBUG
},
data = { countdown = { initial = {} }},
execute = function(dz, item)
_G.logMarker = _G.moduleLabel
local Afzuiging = dz.devices('Afzuiginstallatie - ADC1')
local MotionBadk = dz.devices('Motion-badkamer')
local MotionWcHal = dz.devices('Motion-wc-hal')
local MotionWcEtage = dz.devices('Motion-wc-etage')
local DummyAfzuig = dz.devices('Dummy afzuiginstallatie')
local Zolder = dz.devices('SchakelaarSL2- zolderstelling')
local countdownVar = dz.variables('countdown') -- define this variable as type string
local function managedSwitchOff(device, delay, repeatDelay, repeatTimes)
delay = delay or 0
device.cancelQueuedCommands() -- remove previous scheduled commands for this device
if delay > 0 then dz.data.countdown[device.name] = delay end
repeatDelay = repeatDelay or 10
repeatTimes = repeatTimes or 2
device.switchOff().afterMin(delay).repeatAfterSec(repeatDelay, repeatTimes)
end
local function managedSwitchOn(device, delay, repeatDelay, repeatTimes)
delay = delay or 0
repeatDelay = repeatDelay or 10
repeatTimes = repeatTimes or 2
device.switchOn().checkFirst().afterMin(delay).repeatAfterSec(repeatDelay, repeatTimes)
end
if item.isTimer then
local countdownString, countdownLogString = ''
for name, countdown in pairs(dz.data.countdown) do
if countdown > 0 then
dz.data.countdown[name] = countdown - 1
countdownLogString = 'Remaining on time for ' .. name .. ': ' .. countdown .. ' minutes.'
dz.log('Remaining on time for ' .. name .. ': ' .. countdown .. ' minutes.', dz.LOG_DEBUG)
countdownString = countdownString .. countdownLogString .. '\n'
end
end
if countdownVar.value ~= countdownString then countdownVar.set(countdownString) end
else
dz.log ('============================================================================================ ',dz.LOG_DEBUG)
dz.log('======currentTime==== ' .. dz.time.raw,dz.LOG_DEBUG)
dz.log('======current Hours=== ' .. dz.time.hour,dz.LOG_DEBUG)
dz.log('======current minutes=== ' ..dz.time,minutes,dz.LOG_DEBUG)
dz.log('===========MotionWcHal is ' .. MotionWcHal.state ..' =========== ',dz.LOG_DEBUG)
dz.log('===========MotionBadk is ' .. MotionBadk.state ..' =========== ',dz.LOG_DEBUG)
dz.log('===========MotionWcEtage is ' .. MotionWcEtage.state ..' =========== ',dz.LOG_DEBUG)
dz.log('===========Afzuiging is ' .. Afzuiging.state ..' =========== ',dz.LOG_DEBUG)
dz.log('===========DummyAfzuig is ' .. DummyAfzuig.state ..' =========== ',dz.LOG_DEBUG)
--dz.log ('===========afzuigscript loopt door =========== ',dz.LOG_DEBUG)
if MotionWcHal.state == 'On' and DummyAfzuig.state == 'Off' then
managedSwitchOn(Afzuiging)
managedSwitchOff(Afzuiging, 15)
dz.log ('===========return motion wc-hal===== ' ,dz.LOG_DEBUG)
elseif MotionWcEtage.state == 'On' and DummyAfzuig.state == 'Off' then --and (currentTime >= "13:14:00") and (currentTime < "13:22:00") then
managedSwitchOn(Afzuiging)
managedSwitchOff(Afzuiging, 15)
-- zolder.switchOn() --.repeatAfterSec(3,2)Afzuiging.switchOn()
dz.log ('===========return motion wc-etage==== ',dz.LOG_DEBUG)
elseif MotionBadk.state == 'On' and DummyAfzuig.state == 'Off' and dz.time.matchesRule('at 22:45-23:00') then
-- managedSwitchOn(DummyAfzuig)
-- managedSwitchOff(DummyAfzuig, 120)
dz.log ('===========return motion badk obv tijdslot===== ',dz.LOG_DEBUG)
elseif MotionBadk.state == 'On' and DummyAfzuig.state == 'Off' then
managedSwitchOn(Afzuiging)
managedSwitchOn(DummyAfzuig)
managedSwitchOff(Afzuiging, 180)
managedSwitchOff(DummyAfzuig, 179)
dz.log ('===========return motion badk===== ',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
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
Re: passed time after switchOff().afterMin(180)
Waaren,
Quite some additions and changes. I never could create this myself!
Thanks, in the next comming days i will try your script and let you know.
Thanks again.
Regards
Paul
Quite some additions and changes. I never could create this myself!
Thanks, in the next comming days i will try your script and let you know.
Thanks again.
Regards
Paul
Re: passed time after switchOff().afterMin(180)
Hi Waaren,
regret to say, but the script does not work:
a motion:
does not switch on the device "afzuiging"
in de debug logfile the result of the lines "the dz.time.raw and hour" .
Also a manual switch(On) of the "DummyAfzuig"-switch does not result in debug-output.
I also replaced the managedSwitch(on) with the orginal command
"domoticz.devices('Afzuiginstallatie - ADC1').switchOn().checkFirst().repeatAfterSec(10,2)", but no Switch(On) of "Afzuiging" anymore.
I cannot find the operation of command managedSwitch(On) and (Off) c.q. the difference with Switch(On) or (Off). I looked for it in Domoticz-wiki.
Hope you can help once more?
regards
Paul
regret to say, but the script does not work:
a motion:
does not switch on the device "afzuiging"
in de debug logfile the result of the lines "the dz.time.raw and hour" .
Also a manual switch(On) of the "DummyAfzuig"-switch does not result in debug-output.
I also replaced the managedSwitch(on) with the orginal command
"domoticz.devices('Afzuiginstallatie - ADC1').switchOn().checkFirst().repeatAfterSec(10,2)", but no Switch(On) of "Afzuiging" anymore.
I cannot find the operation of command managedSwitch(On) and (Off) c.q. the difference with Switch(On) or (Off). I looked for it in Domoticz-wiki.
Hope you can help once more?
regards
Paul
- waaren
- Posts: 6028
- Joined: Tuesday 03 January 2017 14:18
- Target OS: Linux
- Domoticz version: Beta
- Location: Netherlands
- Contact:
Re: passed time after switchOff().afterMin(180)
These are local functions. Constructed for use in this script and not available for other scripts.pgas37 wrote: Tuesday 31 December 2019 13:31 I cannot find the operation of command managedSwitch(On) and (Off) c.q. the difference with Switch(On) or (Off). I looked for it in Domoticz-wiki.
Sure, did you define the domoticz uservariable countdown as string ?Hope you can help once more?
Can you please share the log ? Via DM is OK
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
Who is online
Users browsing this forum: No registered users and 1 guest