feat(config)!: Move util out of global automation table into separate module
Move `automation.util` into a separate module called `utils`.
This commit is contained in:
19
config.lua
19
config.lua
@@ -1,10 +1,11 @@
|
|||||||
local automation = require("automation")
|
local utils = require("utils")
|
||||||
|
|
||||||
print(_VERSION)
|
print(_VERSION)
|
||||||
|
|
||||||
local host = automation.util.get_hostname()
|
local host = utils.get_hostname()
|
||||||
print("Running @" .. host)
|
print("Running @" .. host)
|
||||||
|
|
||||||
local debug, value = pcall(automation.util.get_env, "DEBUG")
|
local debug, value = pcall(utils.get_env, "DEBUG")
|
||||||
if debug and value ~= "true" then
|
if debug and value ~= "true" then
|
||||||
debug = false
|
debug = false
|
||||||
end
|
end
|
||||||
@@ -26,12 +27,12 @@ local mqtt_client = automation.new_mqtt_client({
|
|||||||
port = 8883,
|
port = 8883,
|
||||||
client_name = "automation-" .. host,
|
client_name = "automation-" .. host,
|
||||||
username = "mqtt",
|
username = "mqtt",
|
||||||
password = automation.util.get_env("MQTT_PASSWORD"),
|
password = utils.get_env("MQTT_PASSWORD"),
|
||||||
tls = host == "zeus" or host == "hephaestus",
|
tls = host == "zeus" or host == "hephaestus",
|
||||||
})
|
})
|
||||||
|
|
||||||
local ntfy = Ntfy.new({
|
local ntfy = Ntfy.new({
|
||||||
topic = automation.util.get_env("NTFY_TOPIC"),
|
topic = utils.get_env("NTFY_TOPIC"),
|
||||||
})
|
})
|
||||||
automation.device_manager:add(ntfy)
|
automation.device_manager:add(ntfy)
|
||||||
|
|
||||||
@@ -106,7 +107,7 @@ end)
|
|||||||
on_presence:add(function(presence)
|
on_presence:add(function(presence)
|
||||||
mqtt_client:send_message(mqtt_automation("debug") .. "/presence", {
|
mqtt_client:send_message(mqtt_automation("debug") .. "/presence", {
|
||||||
state = presence,
|
state = presence,
|
||||||
updated = automation.util.get_epoch(),
|
updated = utils.get_epoch(),
|
||||||
})
|
})
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -140,12 +141,12 @@ automation.device_manager:add(LightSensor.new({
|
|||||||
on_light:add(function(light)
|
on_light:add(function(light)
|
||||||
mqtt_client:send_message(mqtt_automation("debug") .. "/darkness", {
|
mqtt_client:send_message(mqtt_automation("debug") .. "/darkness", {
|
||||||
state = not light,
|
state = not light,
|
||||||
updated = automation.util.get_epoch(),
|
updated = utils.get_epoch(),
|
||||||
})
|
})
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local hue_ip = "10.0.0.102"
|
local hue_ip = "10.0.0.102"
|
||||||
local hue_token = automation.util.get_env("HUE_TOKEN")
|
local hue_token = utils.get_env("HUE_TOKEN")
|
||||||
|
|
||||||
local hue_bridge = HueBridge.new({
|
local hue_bridge = HueBridge.new({
|
||||||
identifier = "hue_bridge",
|
identifier = "hue_bridge",
|
||||||
@@ -516,7 +517,7 @@ setmetatable(frontdoor_presence, {
|
|||||||
if not presence_system:overall_presence() then
|
if not presence_system:overall_presence() then
|
||||||
mqtt_client:send_message(mqtt_automation("presence/contact/frontdoor"), {
|
mqtt_client:send_message(mqtt_automation("presence/contact/frontdoor"), {
|
||||||
state = true,
|
state = true,
|
||||||
updated = automation.util.get_epoch(),
|
updated = utils.get_epoch(),
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|||||||
12
src/main.rs
12
src/main.rs
@@ -131,28 +131,28 @@ async fn app() -> anyhow::Result<()> {
|
|||||||
|
|
||||||
automation.set("new_mqtt_client", new_mqtt_client)?;
|
automation.set("new_mqtt_client", new_mqtt_client)?;
|
||||||
automation.set("device_manager", device_manager.clone())?;
|
automation.set("device_manager", device_manager.clone())?;
|
||||||
|
lua.globals().set("automation", automation)?;
|
||||||
|
|
||||||
let util = lua.create_table()?;
|
let utils = lua.create_table()?;
|
||||||
let get_env = lua.create_function(|_lua, name: String| {
|
let get_env = lua.create_function(|_lua, name: String| {
|
||||||
std::env::var(name).map_err(mlua::ExternalError::into_lua_err)
|
std::env::var(name).map_err(mlua::ExternalError::into_lua_err)
|
||||||
})?;
|
})?;
|
||||||
util.set("get_env", get_env)?;
|
utils.set("get_env", get_env)?;
|
||||||
let get_hostname = lua.create_function(|_lua, ()| {
|
let get_hostname = lua.create_function(|_lua, ()| {
|
||||||
hostname::get()
|
hostname::get()
|
||||||
.map(|name| name.to_str().unwrap_or("unknown").to_owned())
|
.map(|name| name.to_str().unwrap_or("unknown").to_owned())
|
||||||
.map_err(mlua::ExternalError::into_lua_err)
|
.map_err(mlua::ExternalError::into_lua_err)
|
||||||
})?;
|
})?;
|
||||||
util.set("get_hostname", get_hostname)?;
|
utils.set("get_hostname", get_hostname)?;
|
||||||
let get_epoch = lua.create_function(|_lua, ()| {
|
let get_epoch = lua.create_function(|_lua, ()| {
|
||||||
Ok(SystemTime::now()
|
Ok(SystemTime::now()
|
||||||
.duration_since(UNIX_EPOCH)
|
.duration_since(UNIX_EPOCH)
|
||||||
.expect("Time is after UNIX EPOCH")
|
.expect("Time is after UNIX EPOCH")
|
||||||
.as_millis())
|
.as_millis())
|
||||||
})?;
|
})?;
|
||||||
util.set("get_epoch", get_epoch)?;
|
utils.set("get_epoch", get_epoch)?;
|
||||||
automation.set("util", util)?;
|
|
||||||
|
|
||||||
lua.register_module("automation", automation)?;
|
lua.register_module("utils", utils)?;
|
||||||
|
|
||||||
automation_devices::register_with_lua(&lua)?;
|
automation_devices::register_with_lua(&lua)?;
|
||||||
helpers::register_with_lua(&lua)?;
|
helpers::register_with_lua(&lua)?;
|
||||||
|
|||||||
Reference in New Issue
Block a user