google_smart_home/device/
commands.rs

1use serde::Deserialize;
2use serde::Serialize;
3
4#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
5#[serde(rename_all = "camelCase")]
6pub struct BrightnessAbsolute {
7    /// Brightness percentage.
8    pub brightness: u8,
9}
10
11#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
12#[serde(untagged, rename_all = "camelCase")]
13pub enum BrightnessRelative {
14    /// Brightness percentage to change.
15    Percent { brightness_relative_percent: i8 },
16    /// Ambiguous amount to change the brightness, between -5 and +5.
17    Weight { brightness_relative_weight: i8 },
18}
19
20#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
21#[serde(rename_all = "camelCase")]
22pub struct ColorAbsolute {
23    pub color: Color,
24}
25
26#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
27#[serde(rename_all = "camelCase")]
28pub struct Color {
29    pub name: Option<String>,
30    #[serde(flatten)]
31    pub value: ColorValue,
32}
33
34#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
35#[serde(untagged, rename_all = "camelCase")]
36pub enum ColorValue {
37    Temperature {
38        temperature: u16,
39    },
40    Rgb {
41        #[serde(rename = "spectrumRGB")]
42        spectrum_rgb: u32,
43    },
44    Hsv {
45        #[serde(rename = "spectrumHSV")]
46        spectrum_hsv: Hsv,
47    },
48}
49
50#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
51#[serde(rename_all = "camelCase")]
52pub struct Hsv {
53    pub hue: f64,
54    pub saturation: f64,
55    pub value: f64,
56}
57
58#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
59#[serde(rename_all = "camelCase")]
60pub struct OnOff {
61    pub on: bool,
62}
63
64#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
65#[serde(rename_all = "camelCase")]
66pub struct OpenClose {
67    pub open_percent: u8,
68}