zigbee2mqtt_types_vendor_prolight/
lib.rs1use serde::Deserialize;
2use serde::de::Unexpected;
3use serde::de;
4use serde::Deserializer;
5use zigbee2mqtt_types_base_types::LastSeen;
6#[cfg_attr(feature = "debug", derive(Debug))]
10#[cfg_attr(feature = "clone", derive(Clone))]
11#[derive(Deserialize)]
12pub struct Zigbee5412748727364 {
13 pub brightness: f64,
15 pub linkquality: f64,
17 pub power_on_behavior: Zigbee5412748727364Poweronbehavior,
19 #[serde(deserialize_with = "zigbee5412748727364_state_deserializer")]
22 pub state: bool,
23 pub last_seen: Option<LastSeen>,
25 pub elapsed: Option<u64>,
27}
28fn zigbee5412748727364_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
30where
31 D: Deserializer<'de>,
32{
33 match String::deserialize(deserializer)?.as_ref() {
34 "ON" => Ok(true),
35 "OFF" => Ok(false),
36 other => Err(de::Error::invalid_value(
37 Unexpected::Str(other),
38 &"Value expected was either ON or OFF",
39 )),
40 }
41}
42
43#[cfg_attr(feature = "debug", derive(Debug))]
47#[cfg_attr(feature = "clone", derive(Clone))]
48#[derive(Deserialize)]
49pub struct Zigbee5412748727371 {
50 pub brightness: f64,
52 pub color_temp: f64,
54 pub color_temp_startup: f64,
56 pub linkquality: f64,
58 pub power_on_behavior: Zigbee5412748727371Poweronbehavior,
60 #[serde(deserialize_with = "zigbee5412748727371_state_deserializer")]
63 pub state: bool,
64 pub last_seen: Option<LastSeen>,
66 pub elapsed: Option<u64>,
68}
69fn zigbee5412748727371_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
71where
72 D: Deserializer<'de>,
73{
74 match String::deserialize(deserializer)?.as_ref() {
75 "ON" => Ok(true),
76 "OFF" => Ok(false),
77 other => Err(de::Error::invalid_value(
78 Unexpected::Str(other),
79 &"Value expected was either ON or OFF",
80 )),
81 }
82}
83
84#[cfg_attr(feature = "debug", derive(Debug))]
88#[cfg_attr(feature = "clone", derive(Clone))]
89#[derive(Deserialize)]
90pub struct Zigbee5412748727388 {
91 pub action: Zigbee5412748727388Action,
93 pub battery: f64,
95 pub linkquality: f64,
97 pub last_seen: Option<LastSeen>,
99 pub elapsed: Option<u64>,
101}#[cfg_attr(feature = "debug", derive(Debug))]
105#[cfg_attr(feature = "clone", derive(Clone))]
106#[derive(Deserialize)]
107pub struct Zigbee5412748727395 {
108 pub brightness: f64,
110 pub linkquality: f64,
112 pub power_on_behavior: Zigbee5412748727395Poweronbehavior,
114 #[serde(deserialize_with = "zigbee5412748727395_state_deserializer")]
117 pub state: bool,
118 pub last_seen: Option<LastSeen>,
120 pub elapsed: Option<u64>,
122}
123fn zigbee5412748727395_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
125where
126 D: Deserializer<'de>,
127{
128 match String::deserialize(deserializer)?.as_ref() {
129 "ON" => Ok(true),
130 "OFF" => Ok(false),
131 other => Err(de::Error::invalid_value(
132 Unexpected::Str(other),
133 &"Value expected was either ON or OFF",
134 )),
135 }
136}
137
138#[cfg_attr(feature = "debug", derive(Debug))]
142#[cfg_attr(feature = "clone", derive(Clone))]
143#[derive(Deserialize)]
144pub struct Zigbee5412748727401 {
145 pub brightness: f64,
147 pub color_temp: f64,
149 pub color_temp_startup: f64,
151 pub linkquality: f64,
153 pub power_on_behavior: Zigbee5412748727401Poweronbehavior,
155 #[serde(deserialize_with = "zigbee5412748727401_state_deserializer")]
158 pub state: bool,
159 pub last_seen: Option<LastSeen>,
161 pub elapsed: Option<u64>,
163}
164fn zigbee5412748727401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
166where
167 D: Deserializer<'de>,
168{
169 match String::deserialize(deserializer)?.as_ref() {
170 "ON" => Ok(true),
171 "OFF" => Ok(false),
172 other => Err(de::Error::invalid_value(
173 Unexpected::Str(other),
174 &"Value expected was either ON or OFF",
175 )),
176 }
177}
178
179#[cfg_attr(feature = "debug", derive(Debug))]
183#[cfg_attr(feature = "clone", derive(Clone))]
184#[derive(Deserialize)]
185pub struct Zigbee5412748727432 {
186 pub brightness: f64,
188 pub linkquality: f64,
190 pub power_on_behavior: Zigbee5412748727432Poweronbehavior,
192 #[serde(deserialize_with = "zigbee5412748727432_state_deserializer")]
195 pub state: bool,
196 pub last_seen: Option<LastSeen>,
198 pub elapsed: Option<u64>,
200}
201fn zigbee5412748727432_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
203where
204 D: Deserializer<'de>,
205{
206 match String::deserialize(deserializer)?.as_ref() {
207 "ON" => Ok(true),
208 "OFF" => Ok(false),
209 other => Err(de::Error::invalid_value(
210 Unexpected::Str(other),
211 &"Value expected was either ON or OFF",
212 )),
213 }
214}
215
216
217#[cfg_attr(feature = "debug", derive(Debug))]
218#[cfg_attr(feature = "clone", derive(Clone))]
219#[derive(Deserialize, PartialEq)]
220pub enum Zigbee5412748727364Poweronbehavior {
221 #[serde(rename = "off")]
222 Off,
223 #[serde(rename = "on")]
224 On,
225 #[serde(rename = "previous")]
226 Previous,
227 #[serde(rename = "toggle")]
228 Toggle,
229}
230#[cfg_attr(feature = "debug", derive(Debug))]
231#[cfg_attr(feature = "clone", derive(Clone))]
232#[derive(Deserialize, PartialEq)]
233pub enum Zigbee5412748727371Poweronbehavior {
234 #[serde(rename = "off")]
235 Off,
236 #[serde(rename = "on")]
237 On,
238 #[serde(rename = "previous")]
239 Previous,
240 #[serde(rename = "toggle")]
241 Toggle,
242}
243#[cfg_attr(feature = "debug", derive(Debug))]
244#[cfg_attr(feature = "clone", derive(Clone))]
245#[derive(Deserialize, PartialEq)]
246pub enum Zigbee5412748727388Action {
247 #[serde(rename = "brightness_move_down")]
248 BrightnessMoveDown,
249 #[serde(rename = "brightness_move_to_level")]
250 BrightnessMoveToLevel,
251 #[serde(rename = "brightness_move_up")]
252 BrightnessMoveUp,
253 #[serde(rename = "brightness_stop")]
254 BrightnessStop,
255 #[serde(rename = "color_move")]
256 ColorMove,
257 #[serde(rename = "color_temperature_move")]
258 ColorTemperatureMove,
259 #[serde(rename = "color_temperature_move_down")]
260 ColorTemperatureMoveDown,
261 #[serde(rename = "color_temperature_move_up")]
262 ColorTemperatureMoveUp,
263 #[serde(rename = "off")]
264 Off,
265 #[serde(rename = "on")]
266 On,
267}
268#[cfg_attr(feature = "debug", derive(Debug))]
269#[cfg_attr(feature = "clone", derive(Clone))]
270#[derive(Deserialize, PartialEq)]
271pub enum Zigbee5412748727395Poweronbehavior {
272 #[serde(rename = "off")]
273 Off,
274 #[serde(rename = "on")]
275 On,
276 #[serde(rename = "previous")]
277 Previous,
278 #[serde(rename = "toggle")]
279 Toggle,
280}
281#[cfg_attr(feature = "debug", derive(Debug))]
282#[cfg_attr(feature = "clone", derive(Clone))]
283#[derive(Deserialize, PartialEq)]
284pub enum Zigbee5412748727401Poweronbehavior {
285 #[serde(rename = "off")]
286 Off,
287 #[serde(rename = "on")]
288 On,
289 #[serde(rename = "previous")]
290 Previous,
291 #[serde(rename = "toggle")]
292 Toggle,
293}
294#[cfg_attr(feature = "debug", derive(Debug))]
295#[cfg_attr(feature = "clone", derive(Clone))]
296#[derive(Deserialize, PartialEq)]
297pub enum Zigbee5412748727432Poweronbehavior {
298 #[serde(rename = "off")]
299 Off,
300 #[serde(rename = "on")]
301 On,
302 #[serde(rename = "previous")]
303 Previous,
304 #[serde(rename = "toggle")]
305 Toggle,
306}
307#[cfg(all(feature = "last_seen_epoch", feature = "last_seen_iso_8601"))]
308compile_error!{"Feature last_seen epoch and iso_8601 are mutually exclusive and cannot be enabled together.
309This was done because it is a global setting in zigbee2mqtt and therefor can't see a reason both would be enabled.
310If you have a any reason to have both ways enabled please submit an issue to https://gitlab.com/seam345/zigbee2mqtt-types/-/issues"}