49 lines
958 B
Lua
49 lines
958 B
Lua
local utils = require("automation:utils")
|
|
|
|
local module = {}
|
|
|
|
--- @param topic string
|
|
--- @return string
|
|
function module.mqtt_z2m(topic)
|
|
return "zigbee2mqtt/" .. topic
|
|
end
|
|
|
|
--- @param topic string
|
|
--- @return string
|
|
function module.mqtt_automation(topic)
|
|
return "automation/" .. topic
|
|
end
|
|
|
|
--- @return fun(self: OnOffInterface, state: {state: boolean, power: number})
|
|
function module.auto_off()
|
|
local timeout = utils.Timeout.new()
|
|
|
|
return function(self, state)
|
|
if state.state and state.power < 100 then
|
|
timeout:start(3, function()
|
|
self:set_on(false)
|
|
end)
|
|
else
|
|
timeout:cancel()
|
|
end
|
|
end
|
|
end
|
|
|
|
--- @param duration number
|
|
--- @return fun(self: OnOffInterface, state: {state: boolean})
|
|
function module.off_timeout(duration)
|
|
local timeout = utils.Timeout.new()
|
|
|
|
return function(self, state)
|
|
if state.state then
|
|
timeout:start(duration, function()
|
|
self:set_on(false)
|
|
end)
|
|
else
|
|
timeout:cancel()
|
|
end
|
|
end
|
|
end
|
|
|
|
return module
|