Made hue_bridge and ntfy optional
This commit is contained in:
@@ -15,10 +15,10 @@ pub struct Config {
|
||||
pub mqtt: MqttConfig,
|
||||
#[serde(default)]
|
||||
pub fullfillment: FullfillmentConfig,
|
||||
pub ntfy: NtfyConfig,
|
||||
pub ntfy: Option<NtfyConfig>,
|
||||
pub presence: MqttDeviceConfig,
|
||||
pub light_sensor: LightSensorConfig,
|
||||
pub hue_bridge: HueBridgeConfig,
|
||||
pub hue_bridge: Option<HueBridgeConfig>,
|
||||
#[serde(default)]
|
||||
pub devices: HashMap<String, Device>
|
||||
}
|
||||
|
||||
22
src/main.rs
22
src/main.rs
@@ -76,20 +76,26 @@ async fn main() {
|
||||
// Register devices as presence listener
|
||||
presence.add_listener(Arc::downgrade(&devices));
|
||||
|
||||
let ntfy = Arc::new(RwLock::new(Ntfy::new(config.ntfy)));
|
||||
presence.add_listener(Arc::downgrade(&ntfy));
|
||||
let mut light_sensor = LightSensor::new(config.light_sensor, client.clone());
|
||||
light_sensor.add_listener(Arc::downgrade(&devices));
|
||||
|
||||
let hue_bridge = Arc::new(RwLock::new(HueBridge::new(config.hue_bridge)));
|
||||
presence.add_listener(Arc::downgrade(&hue_bridge));
|
||||
let ntfy;
|
||||
if let Some(ntfy_config) = config.ntfy {
|
||||
ntfy = Arc::new(RwLock::new(Ntfy::new(ntfy_config)));
|
||||
presence.add_listener(Arc::downgrade(&ntfy));
|
||||
}
|
||||
|
||||
let hue_bridge;
|
||||
if let Some(hue_bridge_config) = config.hue_bridge {
|
||||
hue_bridge = Arc::new(RwLock::new(HueBridge::new(hue_bridge_config)));
|
||||
presence.add_listener(Arc::downgrade(&hue_bridge));
|
||||
light_sensor.add_listener(Arc::downgrade(&hue_bridge));
|
||||
}
|
||||
|
||||
// Register presence as mqtt listener
|
||||
let presence = Arc::new(RwLock::new(presence));
|
||||
mqtt.add_listener(Arc::downgrade(&presence));
|
||||
|
||||
let mut light_sensor = LightSensor::new(config.light_sensor, client.clone());
|
||||
light_sensor.add_listener(Arc::downgrade(&devices));
|
||||
light_sensor.add_listener(Arc::downgrade(&hue_bridge));
|
||||
|
||||
let light_sensor = Arc::new(RwLock::new(light_sensor));
|
||||
mqtt.add_listener(Arc::downgrade(&light_sensor));
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use tracing::{warn, error};
|
||||
use tracing::{warn, error, debug};
|
||||
use serde::Serialize;
|
||||
use serde_repr::*;
|
||||
use pollster::FutureExt as _;
|
||||
@@ -116,6 +116,8 @@ impl OnPresence for Ntfy {
|
||||
.add_action(action)
|
||||
.set_priority(Priority::Low);
|
||||
|
||||
debug!("Notifying presence as {presence}");
|
||||
|
||||
// Create the request
|
||||
let res = reqwest::Client::new()
|
||||
.post(self.base_url.clone())
|
||||
|
||||
Reference in New Issue
Block a user