shelly_core/model/
gen2_responses.rs1use serde::Deserialize;
2
3#[derive(Debug, Deserialize)]
5pub struct Gen2ShellyResponse {
6 #[serde(default)]
7 pub id: String,
8 #[serde(default)]
9 pub mac: String,
10 #[serde(default = "default_unknown")]
11 pub model: String,
12 #[serde(default = "default_gen2", rename = "gen")]
13 pub generation: u64,
14 #[serde(default = "default_unknown")]
15 pub ver: String,
16 #[serde(default)]
17 pub auth_en: bool,
18 pub app: Option<String>,
19 pub name: Option<String>,
20}
21
22#[derive(Debug, Deserialize)]
24pub struct Gen2SwitchStatus {
25 #[serde(default)]
26 pub id: u8,
27 #[serde(default)]
28 pub output: bool,
29 pub source: Option<String>,
30 pub apower: Option<f64>,
31 pub voltage: Option<f64>,
32 pub current: Option<f64>,
33 #[serde(rename = "freq")]
34 pub frequency: Option<f64>,
35 pub temperature: Option<Gen2SwitchTemperature>,
36 pub aenergy: Option<Gen2Energy>,
37 pub timer_started_at: Option<f64>,
38 pub timer_duration: Option<f64>,
39}
40
41#[derive(Debug, Deserialize)]
43pub struct Gen2SwitchTemperature {
44 #[serde(rename = "tC")]
45 pub t_c: Option<f64>,
46}
47
48#[derive(Debug, Deserialize)]
50pub struct Gen2Energy {
51 pub total: Option<f64>,
52}
53
54#[derive(Debug, Deserialize)]
56pub struct Gen2WifiStatus {
57 pub sta_ip: Option<String>,
58 pub status: Option<String>,
59 pub ssid: Option<String>,
60 pub rssi: Option<i64>,
61}
62
63#[derive(Debug, Deserialize)]
65pub struct Gen2SysStatus {
66 pub uptime: Option<u64>,
67 pub time: Option<String>,
68 pub ram_free: Option<u64>,
69}
70
71#[derive(Debug, Deserialize)]
73pub struct Gen2Cloud {
74 pub connected: Option<bool>,
75}
76
77#[derive(Debug, Deserialize)]
79pub struct Gen2Mqtt {
80 pub connected: Option<bool>,
81}
82
83#[derive(Debug, Deserialize)]
85pub struct Gen2InputStatus {
86 #[serde(default)]
87 pub id: u8,
88 #[serde(default)]
89 pub state: bool,
90}
91
92fn default_unknown() -> String {
93 "unknown".to_string()
94}
95
96fn default_gen2() -> u64 {
97 2
98}