Compare commits
No commits in common. "f7b709a2c7e64290f63f43918c5476085f16b71b" and "01dfc6b81e0870837856327e84a13e8523e16b22" have entirely different histories.
f7b709a2c7
...
01dfc6b81e
|
@ -1,4 +1,3 @@
|
||||||
#![allow(non_snake_case)]
|
|
||||||
use automation_cast::Cast;
|
use automation_cast::Cast;
|
||||||
use google_home_macro::traits;
|
use google_home_macro::traits;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
@ -34,18 +33,11 @@ traits! {
|
||||||
query_only_humidity_setting: Option<bool>,
|
query_only_humidity_setting: Option<bool>,
|
||||||
|
|
||||||
fn humidity_ambient_percent(&self) -> Result<isize, ErrorCode>,
|
fn humidity_ambient_percent(&self) -> Result<isize, ErrorCode>,
|
||||||
},
|
|
||||||
"action.devices.traits.TemperatureControl" => trait TemperatureSetting {
|
|
||||||
query_only_temperature_control: Option<bool>,
|
|
||||||
// TODO: Add rename
|
|
||||||
temperatureUnitForUX: TemperatureUnit,
|
|
||||||
|
|
||||||
fn temperature_ambient_celsius(&self) -> f32,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
pub struct SpeedValue {
|
pub struct SpeedValues {
|
||||||
pub speed_synonym: Vec<String>,
|
pub speed_synonym: Vec<String>,
|
||||||
pub lang: String,
|
pub lang: String,
|
||||||
}
|
}
|
||||||
|
@ -53,7 +45,7 @@ pub struct SpeedValue {
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
pub struct Speed {
|
pub struct Speed {
|
||||||
pub speed_name: String,
|
pub speed_name: String,
|
||||||
pub speed_values: Vec<SpeedValue>,
|
pub speed_values: Vec<SpeedValues>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
|
@ -61,11 +53,3 @@ pub struct AvailableSpeeds {
|
||||||
pub speeds: Vec<Speed>,
|
pub speeds: Vec<Speed>,
|
||||||
pub ordered: bool,
|
pub ordered: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
|
||||||
pub enum TemperatureUnit {
|
|
||||||
#[serde(rename = "C")]
|
|
||||||
Celsius,
|
|
||||||
#[serde(rename = "F")]
|
|
||||||
Fahrenheit,
|
|
||||||
}
|
|
||||||
|
|
|
@ -248,7 +248,7 @@ fn get_state_struct(t: &Trait) -> proc_macro2::TokenStream {
|
||||||
|
|
||||||
let name = get_state_struct_ident(t);
|
let name = get_state_struct_ident(t);
|
||||||
quote! {
|
quote! {
|
||||||
#[derive(Debug, serde::Serialize)]
|
#[derive(Debug, Default, serde::Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
struct #name {
|
struct #name {
|
||||||
#(#fields,)*
|
#(#fields,)*
|
||||||
|
|
|
@ -2,10 +2,7 @@ use async_trait::async_trait;
|
||||||
use automation_macro::{LuaDevice, LuaDeviceConfig};
|
use automation_macro::{LuaDevice, LuaDeviceConfig};
|
||||||
use google_home::device::Name;
|
use google_home::device::Name;
|
||||||
use google_home::errors::ErrorCode;
|
use google_home::errors::ErrorCode;
|
||||||
use google_home::traits::{
|
use google_home::traits::{AvailableSpeeds, FanSpeed, HumiditySetting, OnOff, Speed, SpeedValues};
|
||||||
AvailableSpeeds, FanSpeed, HumiditySetting, OnOff, Speed, SpeedValue, TemperatureSetting,
|
|
||||||
TemperatureUnit,
|
|
||||||
};
|
|
||||||
use google_home::types::Type;
|
use google_home::types::Type;
|
||||||
use rumqttc::Publish;
|
use rumqttc::Publish;
|
||||||
use tracing::{debug, error, trace, warn};
|
use tracing::{debug, error, trace, warn};
|
||||||
|
@ -72,7 +69,6 @@ impl LuaDeviceCreate for AirFilter {
|
||||||
last_known_state: AirFilterState {
|
last_known_state: AirFilterState {
|
||||||
state: AirFilterFanState::Off,
|
state: AirFilterFanState::Off,
|
||||||
humidity: 0.0,
|
humidity: 0.0,
|
||||||
temperature: 0.0,
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -161,28 +157,28 @@ impl FanSpeed for AirFilter {
|
||||||
speeds: vec![
|
speeds: vec![
|
||||||
Speed {
|
Speed {
|
||||||
speed_name: "off".into(),
|
speed_name: "off".into(),
|
||||||
speed_values: vec![SpeedValue {
|
speed_values: vec![SpeedValues {
|
||||||
speed_synonym: vec!["Off".into()],
|
speed_synonym: vec!["Off".into()],
|
||||||
lang: "en".into(),
|
lang: "en".into(),
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
Speed {
|
Speed {
|
||||||
speed_name: "low".into(),
|
speed_name: "low".into(),
|
||||||
speed_values: vec![SpeedValue {
|
speed_values: vec![SpeedValues {
|
||||||
speed_synonym: vec!["Low".into()],
|
speed_synonym: vec!["Low".into()],
|
||||||
lang: "en".into(),
|
lang: "en".into(),
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
Speed {
|
Speed {
|
||||||
speed_name: "medium".into(),
|
speed_name: "medium".into(),
|
||||||
speed_values: vec![SpeedValue {
|
speed_values: vec![SpeedValues {
|
||||||
speed_synonym: vec!["Medium".into()],
|
speed_synonym: vec!["Medium".into()],
|
||||||
lang: "en".into(),
|
lang: "en".into(),
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
Speed {
|
Speed {
|
||||||
speed_name: "high".into(),
|
speed_name: "high".into(),
|
||||||
speed_values: vec![SpeedValue {
|
speed_values: vec![SpeedValues {
|
||||||
speed_synonym: vec!["High".into()],
|
speed_synonym: vec!["High".into()],
|
||||||
lang: "en".into(),
|
lang: "en".into(),
|
||||||
}],
|
}],
|
||||||
|
@ -233,19 +229,3 @@ impl HumiditySetting for AirFilter {
|
||||||
Ok(self.last_known_state.humidity.round() as isize)
|
Ok(self.last_known_state.humidity.round() as isize)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TemperatureSetting for AirFilter {
|
|
||||||
fn query_only_temperature_control(&self) -> Option<bool> {
|
|
||||||
Some(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[allow(non_snake_case)]
|
|
||||||
fn temperatureUnitForUX(&self) -> TemperatureUnit {
|
|
||||||
TemperatureUnit::Celsius
|
|
||||||
}
|
|
||||||
|
|
||||||
fn temperature_ambient_celsius(&self) -> f32 {
|
|
||||||
// HACK: Round to one decimal place
|
|
||||||
(10.0 * self.last_known_state.temperature).round() / 10.0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -261,7 +261,6 @@ pub struct SetAirFilterFanState {
|
||||||
pub struct AirFilterState {
|
pub struct AirFilterState {
|
||||||
pub state: AirFilterFanState,
|
pub state: AirFilterFanState,
|
||||||
pub humidity: f32,
|
pub humidity: f32,
|
||||||
pub temperature: f32,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SetAirFilterFanState {
|
impl SetAirFilterFanState {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user