Moved schedule config from yml to lua

This commit is contained in:
Dreaded_X 2024-04-26 23:16:39 +02:00
parent 3225dbdda9
commit 5069d1b0e7
Signed by: Dreaded_X
GPG Key ID: FA5F485356B0D2D4
6 changed files with 23 additions and 26 deletions

View File

@ -158,7 +158,7 @@ automation.device_manager:create(
})
)
automation.device_manager:create(
local bedroom_air_filter = automation.device_manager:create(
"bedroom_air_filter",
AirFilter.new({
name = "Air Filter",
@ -167,3 +167,17 @@ automation.device_manager:create(
client = automation.mqtt_client,
})
)
-- TODO: Use the wrapped device bedroom_air_filter instead of the string
automation.device_manager:add_schedule({
["0 0 19 * * *"] = {
on = {
"bedroom_air_filter",
},
},
["0 0 20 * * *"] = {
off = {
"bedroom_air_filter",
},
},
})

View File

@ -13,13 +13,3 @@ ntfy:
presence:
topic: "automation/presence/+/#"
# Run the air filter everyday for 19:00 to 20:00
schedule:
0 0 19 * * *:
on:
- "bedroom_air_filter"
0 0 20 * * *:
off:
- "bedroom_air_filter"

View File

@ -14,12 +14,3 @@ ntfy:
presence:
topic: "automation_dev/presence/+/#"
schedule:
# 0/30 * * * * *:
# on:
# - *outlet
#
# 15/30 * * * * *:
# off:
# - *outlet

View File

@ -10,7 +10,6 @@ use tracing::debug;
use crate::auth::OpenIDConfig;
use crate::devices::PresenceConfig;
use crate::error::{ConfigParseError, MissingEnv};
use crate::schedule::Schedule;
#[derive(Debug, Deserialize)]
pub struct Config {
@ -21,7 +20,6 @@ pub struct Config {
pub fullfillment: FullfillmentConfig,
pub ntfy: Option<NtfyConfig>,
pub presence: PresenceConfig,
pub schedule: Schedule,
}
#[derive(Debug, Clone, Deserialize)]

View File

@ -6,7 +6,7 @@ use async_trait::async_trait;
use enum_dispatch::enum_dispatch;
use futures::future::join_all;
use google_home::traits::OnOff;
use mlua::FromLua;
use mlua::{FromLua, LuaSerdeExt};
use rumqttc::{matches, AsyncClient, QoS};
use tokio::sync::{RwLock, RwLockReadGuard};
use tokio_cron_scheduler::{Job, JobScheduler};
@ -261,6 +261,12 @@ impl mlua::UserData for DeviceManager {
Ok(this.add(device).await)
},
)
);
methods.add_async_method("add_schedule", |lua, this, schedule| async {
let schedule = lua.from_value(schedule)?;
this.add_schedule(schedule).await;
Ok(())
})
}
}

View File

@ -63,8 +63,6 @@ async fn app() -> anyhow::Result<()> {
// Setup the device handler
let device_manager = DeviceManager::new(client.clone());
device_manager.add_schedule(config.schedule).await;
let event_channel = device_manager.event_channel();
// Create and add the presence system