Removed hacky code that got accidentally commited
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Dreaded_X 2023-04-10 02:10:23 +02:00
parent 3645b53f7c
commit 8cfb346ca5
Signed by: Dreaded_X
GPG Key ID: FA5F485356B0D2D4

View File

@ -1,5 +1,5 @@
#![feature(async_closure)] #![feature(async_closure)]
use std::{collections::HashMap, process, time::Duration}; use std::{process, time::Duration};
use axum::{ use axum::{
extract::FromRef, http::StatusCode, response::IntoResponse, routing::post, Json, Router, extract::FromRef, http::StatusCode, response::IntoResponse, routing::post, Json, Router,
@ -16,8 +16,7 @@ use automation::{
}; };
use dotenvy::dotenv; use dotenvy::dotenv;
use futures::future::join_all; use futures::future::join_all;
use rumqttc::{matches, AsyncClient, MqttOptions, Transport}; use rumqttc::{AsyncClient, MqttOptions, Transport};
use tokio::task::JoinHandle;
use tracing::{debug, error, info, metadata::LevelFilter}; use tracing::{debug, error, info, metadata::LevelFilter};
use google_home::{GoogleHome, Request}; use google_home::{GoogleHome, Request};
@ -84,11 +83,9 @@ async fn app() -> anyhow::Result<()> {
.await?; .await?;
// Start the ntfy service if it is configured // Start the ntfy service if it is configured
let mut ntfy = None;
if let Some(config) = &config.ntfy { if let Some(config) = &config.ntfy {
ntfy = Some(ntfy::start(presence.clone(), config)); ntfy::start(presence.clone(), config);
} }
let ntfy = ntfy;
// Start the hue bridge if it is configured // Start the hue bridge if it is configured
if let Some(config) = &config.hue_bridge { if let Some(config) = &config.hue_bridge {
@ -105,62 +102,6 @@ async fn app() -> anyhow::Result<()> {
); );
} }
// Super hacky implementation for the washing machine, just for testing
{
let mut handle = None::<JoinHandle<()>>;
let mut mqtt = mqtt.subscribe();
client
.subscribe("zigbee2mqtt/bathroom/washing", rumqttc::QoS::AtLeastOnce)
.await
.unwrap();
tokio::spawn(async move {
if let Some(ntfy) = ntfy {
loop {
let message = mqtt.recv().await.unwrap();
if !matches(&message.topic, "zigbee2mqtt/bathroom/washing") {
continue;
}
let map: HashMap<String, serde_json::Value> =
serde_json::from_slice(&message.payload).unwrap();
debug!("Test: {:?}", map);
let strength = match map.get("strength").map(|value| value.as_i64().unwrap()) {
Some(s) => s,
None => continue,
};
if strength > 15 {
debug!("Strength over 15");
// Update of strength over 15 which means we are still running, cancel any
// running timer
if let Some(handle) = handle.take() {
handle.abort();
}
// Start a new timer, if the timer runs out we have not had an update of
// more then 15 in the last timeout period, assume we are done, notify user
let ntfy = ntfy.clone();
handle = Some(tokio::spawn(async move {
debug!("Starting timeout of 10 min for washing machine...");
tokio::time::sleep(Duration::from_secs(10 * 60)).await;
debug!("Notifying user!");
let notification = ntfy::Notification::new()
.set_title("Laundy is done")
.set_message("Do not forget to hang it!")
.set_priority(ntfy::Priority::High);
ntfy.send(notification).await.ok();
}));
}
}
}
});
}
let devices = devices::start(mqtt.subscribe(), presence.clone(), light_sensor.clone()); let devices = devices::start(mqtt.subscribe(), presence.clone(), light_sensor.clone());
join_all( join_all(
config config