google_smart_home/device/
commands.rs1use serde::Deserialize;
2use serde::Serialize;
3
4#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
5#[serde(rename_all = "camelCase")]
6pub struct BrightnessAbsolute {
7 pub brightness: u8,
9}
10
11#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
12#[serde(untagged, rename_all = "camelCase")]
13pub enum BrightnessRelative {
14 Percent { brightness_relative_percent: i8 },
16 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}