70 lines
1.8 KiB
Lua
70 lines
1.8 KiB
Lua
local battery = require("config.battery")
|
|
local debug = require("config.debug")
|
|
local devices = require("automation:devices")
|
|
local helper = require("config.helper")
|
|
local presence = require("config.presence")
|
|
local utils = require("automation:utils")
|
|
|
|
--- @type Module
|
|
local module = {}
|
|
|
|
function module.setup(mqtt_client)
|
|
local charger = devices.OutletOnOff.new({
|
|
name = "Charger",
|
|
room = "Workbench",
|
|
topic = helper.mqtt_z2m("workbench/charger"),
|
|
client = mqtt_client,
|
|
callback = helper.off_timeout(debug.debug_mode and 5 or 20 * 3600),
|
|
})
|
|
|
|
local outlets = devices.OutletOnOff.new({
|
|
name = "Outlets",
|
|
room = "Workbench",
|
|
topic = helper.mqtt_z2m("workbench/outlet"),
|
|
client = mqtt_client,
|
|
})
|
|
presence.turn_off_when_away(outlets)
|
|
|
|
local light = devices.LightColorTemperature.new({
|
|
name = "Light",
|
|
room = "Workbench",
|
|
topic = helper.mqtt_z2m("workbench/light"),
|
|
client = mqtt_client,
|
|
})
|
|
presence.turn_off_when_away(light)
|
|
|
|
local delay_color_temp = utils.Timeout.new()
|
|
local remote = devices.IkeaRemote.new({
|
|
name = "Remote",
|
|
room = "Workbench",
|
|
client = mqtt_client,
|
|
topic = helper.mqtt_z2m("workbench/remote"),
|
|
callback = function(_, on)
|
|
delay_color_temp:cancel()
|
|
if on then
|
|
light:set_brightness(82)
|
|
-- NOTE: This light does NOT support changing both the brightness and color
|
|
-- temperature at the same time, so we first change the brightness and once
|
|
-- that is complete we change the color temperature, as that is less likely
|
|
-- to have to actually change.
|
|
delay_color_temp:start(0.5, function()
|
|
light:set_color_temperature(3333)
|
|
end)
|
|
else
|
|
light:set_on(false)
|
|
end
|
|
end,
|
|
battery_callback = battery.callback,
|
|
})
|
|
|
|
--- @type Module
|
|
return {
|
|
charger,
|
|
outlets,
|
|
light,
|
|
remote,
|
|
}
|
|
end
|
|
|
|
return module
|