zigbee2mqtt_types_vendor_paulmann/
lib.rs

1use serde::Deserialize;
2use serde::de::Unexpected;
3use serde::de;
4use serde::Deserializer;
5use zigbee2mqtt_types_base_types::LastSeen;
6/// paulmann:371000001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/371000001.html)
7///
8/// 
9#[cfg_attr(feature = "debug", derive(Debug))]
10#[cfg_attr(feature = "clone", derive(Clone))]
11#[derive(Deserialize)]
12pub struct Zigbee371000001 {
13    ///Brightness of this light
14    pub brightness: f64,
15    ///Color temperature of this light
16    pub color_temp: f64,
17    ///Color temperature after cold power on of this light
18    pub color_temp_startup: f64,
19    ///Link quality (signal strength)
20    pub linkquality: f64,
21    ///Controls the behavior when the device is powered on after power loss
22    pub power_on_behavior: Zigbee371000001Poweronbehavior,
23    ///Zigbee herdsman description: "On/off state of this light"
24    ///The string values get converted into boolean with: ON = true and OFF = false
25    #[serde(deserialize_with = "zigbee371000001_state_deserializer")]
26    pub state: bool,
27    /// Optional last_seen type, set as a global zigbee2mqtt setting
28    pub last_seen: Option<LastSeen>,
29    /// Optional elapsed type
30    pub elapsed: Option<u64>,
31}
32/// Deserialize bool from String with custom value mapping
33fn zigbee371000001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
34where
35    D: Deserializer<'de>,
36{
37    match String::deserialize(deserializer)?.as_ref() {
38        "ON" => Ok(true),
39        "OFF" => Ok(false),
40        other => Err(de::Error::invalid_value(
41            Unexpected::Str(other),
42            &"Value expected was either ON or OFF",
43        )),
44    }
45}
46
47/// paulmann:371000002 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/371000002.html)
48///
49/// 
50#[cfg_attr(feature = "debug", derive(Debug))]
51#[cfg_attr(feature = "clone", derive(Clone))]
52#[derive(Deserialize)]
53pub struct Zigbee371000002 {
54    ///Brightness of this light
55    pub brightness: f64,
56    ///Color temperature of this light
57    pub color_temp: f64,
58    ///Color temperature after cold power on of this light
59    pub color_temp_startup: f64,
60    ///Link quality (signal strength)
61    pub linkquality: f64,
62    ///Controls the behavior when the device is powered on after power loss
63    pub power_on_behavior: Zigbee371000002Poweronbehavior,
64    ///Zigbee herdsman description: "On/off state of this light"
65    ///The string values get converted into boolean with: ON = true and OFF = false
66    #[serde(deserialize_with = "zigbee371000002_state_deserializer")]
67    pub state: bool,
68    /// Optional last_seen type, set as a global zigbee2mqtt setting
69    pub last_seen: Option<LastSeen>,
70    /// Optional elapsed type
71    pub elapsed: Option<u64>,
72}
73/// Deserialize bool from String with custom value mapping
74fn zigbee371000002_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
75where
76    D: Deserializer<'de>,
77{
78    match String::deserialize(deserializer)?.as_ref() {
79        "ON" => Ok(true),
80        "OFF" => Ok(false),
81        other => Err(de::Error::invalid_value(
82            Unexpected::Str(other),
83            &"Value expected was either ON or OFF",
84        )),
85    }
86}
87
88/// paulmann:371232040 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/371232040.html)
89///
90/// 
91#[cfg_attr(feature = "debug", derive(Debug))]
92#[cfg_attr(feature = "clone", derive(Clone))]
93#[derive(Deserialize)]
94pub struct Zigbee371232040 {
95    ///Brightness of this light
96    pub brightness: f64,
97    ///Color temperature of this light
98    pub color_temp: f64,
99    ///Color temperature after cold power on of this light
100    pub color_temp_startup: f64,
101    ///Link quality (signal strength)
102    pub linkquality: f64,
103    ///Controls the behavior when the device is powered on after power loss
104    pub power_on_behavior: Zigbee371232040Poweronbehavior,
105    ///Zigbee herdsman description: "On/off state of this light"
106    ///The string values get converted into boolean with: ON = true and OFF = false
107    #[serde(deserialize_with = "zigbee371232040_state_deserializer")]
108    pub state: bool,
109    /// Optional last_seen type, set as a global zigbee2mqtt setting
110    pub last_seen: Option<LastSeen>,
111    /// Optional elapsed type
112    pub elapsed: Option<u64>,
113}
114/// Deserialize bool from String with custom value mapping
115fn zigbee371232040_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
116where
117    D: Deserializer<'de>,
118{
119    match String::deserialize(deserializer)?.as_ref() {
120        "ON" => Ok(true),
121        "OFF" => Ok(false),
122        other => Err(de::Error::invalid_value(
123            Unexpected::Str(other),
124            &"Value expected was either ON or OFF",
125        )),
126    }
127}
128
129/// paulmann:4137 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4137.html)
130///
131/// 
132#[cfg_attr(feature = "debug", derive(Debug))]
133#[cfg_attr(feature = "clone", derive(Clone))]
134#[derive(Deserialize)]
135pub struct Zigbee4137 {
136    ///Brightness of this light
137    pub brightness: f64,
138    ///Color temperature of this light
139    pub color_temp: f64,
140    ///Color temperature after cold power on of this light
141    pub color_temp_startup: f64,
142    ///Link quality (signal strength)
143    pub linkquality: f64,
144    ///Controls the behavior when the device is powered on after power loss
145    pub power_on_behavior: Zigbee4137Poweronbehavior,
146    ///Zigbee herdsman description: "On/off state of this light"
147    ///The string values get converted into boolean with: ON = true and OFF = false
148    #[serde(deserialize_with = "zigbee4137_state_deserializer")]
149    pub state: bool,
150    /// Optional last_seen type, set as a global zigbee2mqtt setting
151    pub last_seen: Option<LastSeen>,
152    /// Optional elapsed type
153    pub elapsed: Option<u64>,
154}
155/// Deserialize bool from String with custom value mapping
156fn zigbee4137_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
157where
158    D: Deserializer<'de>,
159{
160    match String::deserialize(deserializer)?.as_ref() {
161        "ON" => Ok(true),
162        "OFF" => Ok(false),
163        other => Err(de::Error::invalid_value(
164            Unexpected::Str(other),
165            &"Value expected was either ON or OFF",
166        )),
167    }
168}
169
170/// paulmann:50043 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/50043.html)
171///
172/// 
173#[cfg_attr(feature = "debug", derive(Debug))]
174#[cfg_attr(feature = "clone", derive(Clone))]
175#[derive(Deserialize)]
176pub struct Zigbee50043 {
177    ///Link quality (signal strength)
178    pub linkquality: f64,
179    ///Controls the behavior when the device is powered on after power loss
180    pub power_on_behavior: Zigbee50043Poweronbehavior,
181    ///Zigbee herdsman description: "On/off state of the switch"
182    ///The string values get converted into boolean with: ON = true and OFF = false
183    #[serde(deserialize_with = "zigbee50043_state_deserializer")]
184    pub state: bool,
185    /// Optional last_seen type, set as a global zigbee2mqtt setting
186    pub last_seen: Option<LastSeen>,
187    /// Optional elapsed type
188    pub elapsed: Option<u64>,
189}
190/// Deserialize bool from String with custom value mapping
191fn zigbee50043_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
192where
193    D: Deserializer<'de>,
194{
195    match String::deserialize(deserializer)?.as_ref() {
196        "ON" => Ok(true),
197        "OFF" => Ok(false),
198        other => Err(de::Error::invalid_value(
199            Unexpected::Str(other),
200            &"Value expected was either ON or OFF",
201        )),
202    }
203}
204
205/// paulmann:50044/50045 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/50044/50045.html)
206///
207/// 
208#[cfg_attr(feature = "debug", derive(Debug))]
209#[cfg_attr(feature = "clone", derive(Clone))]
210#[derive(Deserialize)]
211pub struct Zigbee5004450045 {
212    ///Brightness of this light
213    pub brightness: f64,
214    ///Link quality (signal strength)
215    pub linkquality: f64,
216    ///Controls the behavior when the device is powered on after power loss
217    pub power_on_behavior: Zigbee5004450045Poweronbehavior,
218    ///Zigbee herdsman description: "On/off state of this light"
219    ///The string values get converted into boolean with: ON = true and OFF = false
220    #[serde(deserialize_with = "zigbee5004450045_state_deserializer")]
221    pub state: bool,
222    /// Optional last_seen type, set as a global zigbee2mqtt setting
223    pub last_seen: Option<LastSeen>,
224    /// Optional elapsed type
225    pub elapsed: Option<u64>,
226}
227/// Deserialize bool from String with custom value mapping
228fn zigbee5004450045_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
229where
230    D: Deserializer<'de>,
231{
232    match String::deserialize(deserializer)?.as_ref() {
233        "ON" => Ok(true),
234        "OFF" => Ok(false),
235        other => Err(de::Error::invalid_value(
236            Unexpected::Str(other),
237            &"Value expected was either ON or OFF",
238        )),
239    }
240}
241
242/// paulmann:50049/500.63 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/50049/500.63.html)
243///
244/// 
245#[cfg_attr(feature = "debug", derive(Debug))]
246#[cfg_attr(feature = "clone", derive(Clone))]
247#[derive(Deserialize)]
248pub struct Zigbee50049500F63 {
249    ///Brightness of this light
250    pub brightness: f64,
251    ///Color temperature of this light
252    pub color_temp: f64,
253    ///Color temperature after cold power on of this light
254    pub color_temp_startup: f64,
255    ///Link quality (signal strength)
256    pub linkquality: f64,
257    ///Controls the behavior when the device is powered on after power loss
258    pub power_on_behavior: Zigbee50049500F63Poweronbehavior,
259    ///Zigbee herdsman description: "On/off state of this light"
260    ///The string values get converted into boolean with: ON = true and OFF = false
261    #[serde(deserialize_with = "zigbee50049500f63_state_deserializer")]
262    pub state: bool,
263    /// Optional last_seen type, set as a global zigbee2mqtt setting
264    pub last_seen: Option<LastSeen>,
265    /// Optional elapsed type
266    pub elapsed: Option<u64>,
267}
268/// Deserialize bool from String with custom value mapping
269fn zigbee50049500f63_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
270where
271    D: Deserializer<'de>,
272{
273    match String::deserialize(deserializer)?.as_ref() {
274        "ON" => Ok(true),
275        "OFF" => Ok(false),
276        other => Err(de::Error::invalid_value(
277            Unexpected::Str(other),
278            &"Value expected was either ON or OFF",
279        )),
280    }
281}
282
283/// paulmann:50064 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/50064.html)
284///
285/// 
286#[cfg_attr(feature = "debug", derive(Debug))]
287#[cfg_attr(feature = "clone", derive(Clone))]
288#[derive(Deserialize)]
289pub struct Zigbee50064 {
290    ///Brightness of this light
291    pub brightness: f64,
292    ///Color temperature of this light
293    pub color_temp: f64,
294    ///Color temperature after cold power on of this light
295    pub color_temp_startup: f64,
296    ///Link quality (signal strength)
297    pub linkquality: f64,
298    ///Controls the behavior when the device is powered on after power loss
299    pub power_on_behavior: Zigbee50064Poweronbehavior,
300    ///Zigbee herdsman description: "On/off state of this light"
301    ///The string values get converted into boolean with: ON = true and OFF = false
302    #[serde(deserialize_with = "zigbee50064_state_deserializer")]
303    pub state: bool,
304    /// Optional last_seen type, set as a global zigbee2mqtt setting
305    pub last_seen: Option<LastSeen>,
306    /// Optional elapsed type
307    pub elapsed: Option<u64>,
308}
309/// Deserialize bool from String with custom value mapping
310fn zigbee50064_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
311where
312    D: Deserializer<'de>,
313{
314    match String::deserialize(deserializer)?.as_ref() {
315        "ON" => Ok(true),
316        "OFF" => Ok(false),
317        other => Err(de::Error::invalid_value(
318            Unexpected::Str(other),
319            &"Value expected was either ON or OFF",
320        )),
321    }
322}
323
324/// paulmann:500.44 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/500.44.html)
325///
326/// 
327#[cfg_attr(feature = "debug", derive(Debug))]
328#[cfg_attr(feature = "clone", derive(Clone))]
329#[derive(Deserialize)]
330pub struct Zigbee500F44 {
331    ///Brightness of this light
332    pub brightness: f64,
333    ///Link quality (signal strength)
334    pub linkquality: f64,
335    ///Controls the behavior when the device is powered on after power loss
336    pub power_on_behavior: Zigbee500F44Poweronbehavior,
337    ///Zigbee herdsman description: "On/off state of this light"
338    ///The string values get converted into boolean with: ON = true and OFF = false
339    #[serde(deserialize_with = "zigbee500f44_state_deserializer")]
340    pub state: bool,
341    /// Optional last_seen type, set as a global zigbee2mqtt setting
342    pub last_seen: Option<LastSeen>,
343    /// Optional elapsed type
344    pub elapsed: Option<u64>,
345}
346/// Deserialize bool from String with custom value mapping
347fn zigbee500f44_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
348where
349    D: Deserializer<'de>,
350{
351    match String::deserialize(deserializer)?.as_ref() {
352        "ON" => Ok(true),
353        "OFF" => Ok(false),
354        other => Err(de::Error::invalid_value(
355            Unexpected::Str(other),
356            &"Value expected was either ON or OFF",
357        )),
358    }
359}
360
361/// paulmann:500.45 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/500.45.html)
362///
363/// 
364#[cfg_attr(feature = "debug", derive(Debug))]
365#[cfg_attr(feature = "clone", derive(Clone))]
366#[derive(Deserialize)]
367pub struct Zigbee500F45 {
368    ///Brightness of this light
369    pub brightness: f64,
370    ///Link quality (signal strength)
371    pub linkquality: f64,
372    ///Controls the behavior when the device is powered on after power loss
373    pub power_on_behavior: Zigbee500F45Poweronbehavior,
374    ///Zigbee herdsman description: "On/off state of this light"
375    ///The string values get converted into boolean with: ON = true and OFF = false
376    #[serde(deserialize_with = "zigbee500f45_state_deserializer")]
377    pub state: bool,
378    /// Optional last_seen type, set as a global zigbee2mqtt setting
379    pub last_seen: Option<LastSeen>,
380    /// Optional elapsed type
381    pub elapsed: Option<u64>,
382}
383/// Deserialize bool from String with custom value mapping
384fn zigbee500f45_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
385where
386    D: Deserializer<'de>,
387{
388    match String::deserialize(deserializer)?.as_ref() {
389        "ON" => Ok(true),
390        "OFF" => Ok(false),
391        other => Err(de::Error::invalid_value(
392            Unexpected::Str(other),
393            &"Value expected was either ON or OFF",
394        )),
395    }
396}
397
398/// paulmann:500.47 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/500.47.html)
399///
400/// 
401#[cfg_attr(feature = "debug", derive(Debug))]
402#[cfg_attr(feature = "clone", derive(Clone))]
403#[derive(Deserialize)]
404pub struct Zigbee500F47 {
405    ///Brightness of this light
406    pub brightness: f64,
407    ///Color temperature of this light
408    pub color_temp: f64,
409    ///Color temperature after cold power on of this light
410    pub color_temp_startup: f64,
411    ///Link quality (signal strength)
412    pub linkquality: f64,
413    ///Controls the behavior when the device is powered on after power loss
414    pub power_on_behavior: Zigbee500F47Poweronbehavior,
415    ///Zigbee herdsman description: "On/off state of this light"
416    ///The string values get converted into boolean with: ON = true and OFF = false
417    #[serde(deserialize_with = "zigbee500f47_state_deserializer")]
418    pub state: bool,
419    /// Optional last_seen type, set as a global zigbee2mqtt setting
420    pub last_seen: Option<LastSeen>,
421    /// Optional elapsed type
422    pub elapsed: Option<u64>,
423}
424/// Deserialize bool from String with custom value mapping
425fn zigbee500f47_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
426where
427    D: Deserializer<'de>,
428{
429    match String::deserialize(deserializer)?.as_ref() {
430        "ON" => Ok(true),
431        "OFF" => Ok(false),
432        other => Err(de::Error::invalid_value(
433            Unexpected::Str(other),
434            &"Value expected was either ON or OFF",
435        )),
436    }
437}
438
439/// paulmann:500.48 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/500.48.html)
440///
441/// 
442#[cfg_attr(feature = "debug", derive(Debug))]
443#[cfg_attr(feature = "clone", derive(Clone))]
444#[derive(Deserialize)]
445pub struct Zigbee500F48 {
446    ///Brightness of this light
447    pub brightness: f64,
448    ///Link quality (signal strength)
449    pub linkquality: f64,
450    ///Controls the behavior when the device is powered on after power loss
451    pub power_on_behavior: Zigbee500F48Poweronbehavior,
452    ///Zigbee herdsman description: "On/off state of this light"
453    ///The string values get converted into boolean with: ON = true and OFF = false
454    #[serde(deserialize_with = "zigbee500f48_state_deserializer")]
455    pub state: bool,
456    /// Optional last_seen type, set as a global zigbee2mqtt setting
457    pub last_seen: Option<LastSeen>,
458    /// Optional elapsed type
459    pub elapsed: Option<u64>,
460}
461/// Deserialize bool from String with custom value mapping
462fn zigbee500f48_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
463where
464    D: Deserializer<'de>,
465{
466    match String::deserialize(deserializer)?.as_ref() {
467        "ON" => Ok(true),
468        "OFF" => Ok(false),
469        other => Err(de::Error::invalid_value(
470            Unexpected::Str(other),
471            &"Value expected was either ON or OFF",
472        )),
473    }
474}
475
476/// paulmann:500.67 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/500.67.html)
477///
478/// 
479#[cfg_attr(feature = "debug", derive(Debug))]
480#[cfg_attr(feature = "clone", derive(Clone))]
481#[derive(Deserialize)]
482pub struct Zigbee500F67 {
483    ///Triggered action (e.g. a button click)
484    pub action: Zigbee500F67Action,
485    ///Link quality (signal strength)
486    pub linkquality: f64,
487    /// Optional last_seen type, set as a global zigbee2mqtt setting
488    pub last_seen: Option<LastSeen>,
489    /// Optional elapsed type
490    pub elapsed: Option<u64>,
491}/// paulmann:501.31 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/501.31.html)
492///
493/// 
494#[cfg_attr(feature = "debug", derive(Debug))]
495#[cfg_attr(feature = "clone", derive(Clone))]
496#[derive(Deserialize)]
497pub struct Zigbee501F31 {
498    ///Link quality (signal strength)
499    pub linkquality: f64,
500    ///Controls the behavior when the device is powered on after power loss
501    pub power_on_behavior: Zigbee501F31Poweronbehavior,
502    ///Zigbee herdsman description: "On/off state of the switch"
503    ///The string values get converted into boolean with: ON = true and OFF = false
504    #[serde(deserialize_with = "zigbee501f31_state_deserializer")]
505    pub state: bool,
506    /// Optional last_seen type, set as a global zigbee2mqtt setting
507    pub last_seen: Option<LastSeen>,
508    /// Optional elapsed type
509    pub elapsed: Option<u64>,
510}
511/// Deserialize bool from String with custom value mapping
512fn zigbee501f31_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
513where
514    D: Deserializer<'de>,
515{
516    match String::deserialize(deserializer)?.as_ref() {
517        "ON" => Ok(true),
518        "OFF" => Ok(false),
519        other => Err(de::Error::invalid_value(
520            Unexpected::Str(other),
521            &"Value expected was either ON or OFF",
522        )),
523    }
524}
525
526/// paulmann:501.34 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/501.34.html)
527///
528/// 
529#[cfg_attr(feature = "debug", derive(Debug))]
530#[cfg_attr(feature = "clone", derive(Clone))]
531#[derive(Deserialize)]
532pub struct Zigbee501F34 {
533    ///Triggered action (e.g. a button click)
534    pub action: Zigbee501F34Action,
535    ///Remaining battery in %, can take up to 24 hours before reported.
536    pub battery: f64,
537    ///Link quality (signal strength)
538    pub linkquality: f64,
539    /// Optional last_seen type, set as a global zigbee2mqtt setting
540    pub last_seen: Option<LastSeen>,
541    /// Optional elapsed type
542    pub elapsed: Option<u64>,
543}/// paulmann:929.60 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929.60.html)
544///
545/// 
546#[cfg_attr(feature = "debug", derive(Debug))]
547#[cfg_attr(feature = "clone", derive(Clone))]
548#[derive(Deserialize)]
549pub struct Zigbee929F60 {
550    ///Brightness of this light
551    pub brightness: f64,
552    ///Link quality (signal strength)
553    pub linkquality: f64,
554    ///Controls the behavior when the device is powered on after power loss
555    pub power_on_behavior: Zigbee929F60Poweronbehavior,
556    ///Zigbee herdsman description: "On/off state of this light"
557    ///The string values get converted into boolean with: ON = true and OFF = false
558    #[serde(deserialize_with = "zigbee929f60_state_deserializer")]
559    pub state: bool,
560    /// Optional last_seen type, set as a global zigbee2mqtt setting
561    pub last_seen: Option<LastSeen>,
562    /// Optional elapsed type
563    pub elapsed: Option<u64>,
564}
565/// Deserialize bool from String with custom value mapping
566fn zigbee929f60_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
567where
568    D: Deserializer<'de>,
569{
570    match String::deserialize(deserializer)?.as_ref() {
571        "ON" => Ok(true),
572        "OFF" => Ok(false),
573        other => Err(de::Error::invalid_value(
574            Unexpected::Str(other),
575            &"Value expected was either ON or OFF",
576        )),
577    }
578}
579
580/// paulmann:929.63 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929.63.html)
581///
582/// 
583#[cfg_attr(feature = "debug", derive(Debug))]
584#[cfg_attr(feature = "clone", derive(Clone))]
585#[derive(Deserialize)]
586pub struct Zigbee929F63 {
587    ///Brightness of this light
588    pub brightness: f64,
589    ///Color temperature of this light
590    pub color_temp: f64,
591    ///Color temperature after cold power on of this light
592    pub color_temp_startup: f64,
593    ///Link quality (signal strength)
594    pub linkquality: f64,
595    ///Controls the behavior when the device is powered on after power loss
596    pub power_on_behavior: Zigbee929F63Poweronbehavior,
597    ///Zigbee herdsman description: "On/off state of this light"
598    ///The string values get converted into boolean with: ON = true and OFF = false
599    #[serde(deserialize_with = "zigbee929f63_state_deserializer")]
600    pub state: bool,
601    /// Optional last_seen type, set as a global zigbee2mqtt setting
602    pub last_seen: Option<LastSeen>,
603    /// Optional elapsed type
604    pub elapsed: Option<u64>,
605}
606/// Deserialize bool from String with custom value mapping
607fn zigbee929f63_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
608where
609    D: Deserializer<'de>,
610{
611    match String::deserialize(deserializer)?.as_ref() {
612        "ON" => Ok(true),
613        "OFF" => Ok(false),
614        other => Err(de::Error::invalid_value(
615            Unexpected::Str(other),
616            &"Value expected was either ON or OFF",
617        )),
618    }
619}
620
621/// paulmann:929.66 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929.66.html)
622///
623/// 
624#[cfg_attr(feature = "debug", derive(Debug))]
625#[cfg_attr(feature = "clone", derive(Clone))]
626#[derive(Deserialize)]
627pub struct Zigbee929F66 {
628    ///Brightness of this light
629    pub brightness: f64,
630    ///Color temperature of this light
631    pub color_temp: f64,
632    ///Color temperature after cold power on of this light
633    pub color_temp_startup: f64,
634    ///Link quality (signal strength)
635    pub linkquality: f64,
636    ///Controls the behavior when the device is powered on after power loss
637    pub power_on_behavior: Zigbee929F66Poweronbehavior,
638    ///Zigbee herdsman description: "On/off state of this light"
639    ///The string values get converted into boolean with: ON = true and OFF = false
640    #[serde(deserialize_with = "zigbee929f66_state_deserializer")]
641    pub state: bool,
642    /// Optional last_seen type, set as a global zigbee2mqtt setting
643    pub last_seen: Option<LastSeen>,
644    /// Optional elapsed type
645    pub elapsed: Option<u64>,
646}
647/// Deserialize bool from String with custom value mapping
648fn zigbee929f66_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
649where
650    D: Deserializer<'de>,
651{
652    match String::deserialize(deserializer)?.as_ref() {
653        "ON" => Ok(true),
654        "OFF" => Ok(false),
655        other => Err(de::Error::invalid_value(
656            Unexpected::Str(other),
657            &"Value expected was either ON or OFF",
658        )),
659    }
660}
661
662/// paulmann:93999 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/93999.html)
663///
664/// 
665#[cfg_attr(feature = "debug", derive(Debug))]
666#[cfg_attr(feature = "clone", derive(Clone))]
667#[derive(Deserialize)]
668pub struct Zigbee93999 {
669    ///Brightness of this light
670    pub brightness: f64,
671    ///Link quality (signal strength)
672    pub linkquality: f64,
673    ///Controls the behavior when the device is powered on after power loss
674    pub power_on_behavior: Zigbee93999Poweronbehavior,
675    ///Zigbee herdsman description: "On/off state of this light"
676    ///The string values get converted into boolean with: ON = true and OFF = false
677    #[serde(deserialize_with = "zigbee93999_state_deserializer")]
678    pub state: bool,
679    /// Optional last_seen type, set as a global zigbee2mqtt setting
680    pub last_seen: Option<LastSeen>,
681    /// Optional elapsed type
682    pub elapsed: Option<u64>,
683}
684/// Deserialize bool from String with custom value mapping
685fn zigbee93999_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
686where
687    D: Deserializer<'de>,
688{
689    match String::deserialize(deserializer)?.as_ref() {
690        "ON" => Ok(true),
691        "OFF" => Ok(false),
692        other => Err(de::Error::invalid_value(
693            Unexpected::Str(other),
694            &"Value expected was either ON or OFF",
695        )),
696    }
697}
698
699/// paulmann:94191 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/94191.html)
700///
701/// 
702#[cfg_attr(feature = "debug", derive(Debug))]
703#[cfg_attr(feature = "clone", derive(Clone))]
704#[derive(Deserialize)]
705pub struct Zigbee94191 {
706    ///Brightness of this light
707    pub brightness: f64,
708    ///Color temperature of this light
709    pub color_temp: f64,
710    ///Color temperature after cold power on of this light
711    pub color_temp_startup: f64,
712    ///Link quality (signal strength)
713    pub linkquality: f64,
714    ///Controls the behavior when the device is powered on after power loss
715    pub power_on_behavior: Zigbee94191Poweronbehavior,
716    ///Zigbee herdsman description: "On/off state of this light"
717    ///The string values get converted into boolean with: ON = true and OFF = false
718    #[serde(deserialize_with = "zigbee94191_state_deserializer")]
719    pub state: bool,
720    /// Optional last_seen type, set as a global zigbee2mqtt setting
721    pub last_seen: Option<LastSeen>,
722    /// Optional elapsed type
723    pub elapsed: Option<u64>,
724}
725/// Deserialize bool from String with custom value mapping
726fn zigbee94191_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
727where
728    D: Deserializer<'de>,
729{
730    match String::deserialize(deserializer)?.as_ref() {
731        "ON" => Ok(true),
732        "OFF" => Ok(false),
733        other => Err(de::Error::invalid_value(
734            Unexpected::Str(other),
735            &"Value expected was either ON or OFF",
736        )),
737    }
738}
739
740
741#[cfg_attr(feature = "debug", derive(Debug))]
742#[cfg_attr(feature = "clone", derive(Clone))]
743#[derive(Deserialize, PartialEq)]
744pub enum Zigbee371000001Poweronbehavior {
745    #[serde(rename = "off")]
746    Off,
747    #[serde(rename = "on")]
748    On,
749    #[serde(rename = "previous")]
750    Previous,
751    #[serde(rename = "toggle")]
752    Toggle,
753}
754#[cfg_attr(feature = "debug", derive(Debug))]
755#[cfg_attr(feature = "clone", derive(Clone))]
756#[derive(Deserialize, PartialEq)]
757pub enum Zigbee371000002Poweronbehavior {
758    #[serde(rename = "off")]
759    Off,
760    #[serde(rename = "on")]
761    On,
762    #[serde(rename = "previous")]
763    Previous,
764    #[serde(rename = "toggle")]
765    Toggle,
766}
767#[cfg_attr(feature = "debug", derive(Debug))]
768#[cfg_attr(feature = "clone", derive(Clone))]
769#[derive(Deserialize, PartialEq)]
770pub enum Zigbee371232040Poweronbehavior {
771    #[serde(rename = "off")]
772    Off,
773    #[serde(rename = "on")]
774    On,
775    #[serde(rename = "previous")]
776    Previous,
777    #[serde(rename = "toggle")]
778    Toggle,
779}
780#[cfg_attr(feature = "debug", derive(Debug))]
781#[cfg_attr(feature = "clone", derive(Clone))]
782#[derive(Deserialize, PartialEq)]
783pub enum Zigbee4137Poweronbehavior {
784    #[serde(rename = "off")]
785    Off,
786    #[serde(rename = "on")]
787    On,
788    #[serde(rename = "previous")]
789    Previous,
790    #[serde(rename = "toggle")]
791    Toggle,
792}
793#[cfg_attr(feature = "debug", derive(Debug))]
794#[cfg_attr(feature = "clone", derive(Clone))]
795#[derive(Deserialize, PartialEq)]
796pub enum Zigbee50043Poweronbehavior {
797    #[serde(rename = "off")]
798    Off,
799    #[serde(rename = "on")]
800    On,
801    #[serde(rename = "previous")]
802    Previous,
803    #[serde(rename = "toggle")]
804    Toggle,
805}
806#[cfg_attr(feature = "debug", derive(Debug))]
807#[cfg_attr(feature = "clone", derive(Clone))]
808#[derive(Deserialize, PartialEq)]
809pub enum Zigbee5004450045Poweronbehavior {
810    #[serde(rename = "off")]
811    Off,
812    #[serde(rename = "on")]
813    On,
814    #[serde(rename = "previous")]
815    Previous,
816    #[serde(rename = "toggle")]
817    Toggle,
818}
819#[cfg_attr(feature = "debug", derive(Debug))]
820#[cfg_attr(feature = "clone", derive(Clone))]
821#[derive(Deserialize, PartialEq)]
822pub enum Zigbee50049500F63Poweronbehavior {
823    #[serde(rename = "off")]
824    Off,
825    #[serde(rename = "on")]
826    On,
827    #[serde(rename = "previous")]
828    Previous,
829    #[serde(rename = "toggle")]
830    Toggle,
831}
832#[cfg_attr(feature = "debug", derive(Debug))]
833#[cfg_attr(feature = "clone", derive(Clone))]
834#[derive(Deserialize, PartialEq)]
835pub enum Zigbee50064Poweronbehavior {
836    #[serde(rename = "off")]
837    Off,
838    #[serde(rename = "on")]
839    On,
840    #[serde(rename = "previous")]
841    Previous,
842    #[serde(rename = "toggle")]
843    Toggle,
844}
845#[cfg_attr(feature = "debug", derive(Debug))]
846#[cfg_attr(feature = "clone", derive(Clone))]
847#[derive(Deserialize, PartialEq)]
848pub enum Zigbee500F44Poweronbehavior {
849    #[serde(rename = "off")]
850    Off,
851    #[serde(rename = "on")]
852    On,
853    #[serde(rename = "previous")]
854    Previous,
855    #[serde(rename = "toggle")]
856    Toggle,
857}
858#[cfg_attr(feature = "debug", derive(Debug))]
859#[cfg_attr(feature = "clone", derive(Clone))]
860#[derive(Deserialize, PartialEq)]
861pub enum Zigbee500F45Poweronbehavior {
862    #[serde(rename = "off")]
863    Off,
864    #[serde(rename = "on")]
865    On,
866    #[serde(rename = "previous")]
867    Previous,
868    #[serde(rename = "toggle")]
869    Toggle,
870}
871#[cfg_attr(feature = "debug", derive(Debug))]
872#[cfg_attr(feature = "clone", derive(Clone))]
873#[derive(Deserialize, PartialEq)]
874pub enum Zigbee500F47Poweronbehavior {
875    #[serde(rename = "off")]
876    Off,
877    #[serde(rename = "on")]
878    On,
879    #[serde(rename = "previous")]
880    Previous,
881    #[serde(rename = "toggle")]
882    Toggle,
883}
884#[cfg_attr(feature = "debug", derive(Debug))]
885#[cfg_attr(feature = "clone", derive(Clone))]
886#[derive(Deserialize, PartialEq)]
887pub enum Zigbee500F48Poweronbehavior {
888    #[serde(rename = "off")]
889    Off,
890    #[serde(rename = "on")]
891    On,
892    #[serde(rename = "previous")]
893    Previous,
894    #[serde(rename = "toggle")]
895    Toggle,
896}
897#[cfg_attr(feature = "debug", derive(Debug))]
898#[cfg_attr(feature = "clone", derive(Clone))]
899#[derive(Deserialize, PartialEq)]
900pub enum Zigbee500F67Action {
901    #[serde(rename = "brightness_move_down")]
902    BrightnessMoveDown,
903    #[serde(rename = "brightness_move_up")]
904    BrightnessMoveUp,
905    #[serde(rename = "brightness_step_down")]
906    BrightnessStepDown,
907    #[serde(rename = "brightness_step_up")]
908    BrightnessStepUp,
909    #[serde(rename = "brightness_stop")]
910    BrightnessStop,
911    #[serde(rename = "color_loop_set")]
912    ColorLoopSet,
913    #[serde(rename = "color_move")]
914    ColorMove,
915    #[serde(rename = "color_temperature_move")]
916    ColorTemperatureMove,
917    #[serde(rename = "enhanced_move_to_hue_and_saturation")]
918    EnhancedMoveToHueAndSaturation,
919    #[serde(rename = "off")]
920    Off,
921    #[serde(rename = "on")]
922    On,
923    #[serde(rename = "scene_*")]
924    Scene,
925    #[serde(rename = "toggle")]
926    Toggle,
927}
928#[cfg_attr(feature = "debug", derive(Debug))]
929#[cfg_attr(feature = "clone", derive(Clone))]
930#[derive(Deserialize, PartialEq)]
931pub enum Zigbee501F31Poweronbehavior {
932    #[serde(rename = "off")]
933    Off,
934    #[serde(rename = "on")]
935    On,
936    #[serde(rename = "previous")]
937    Previous,
938    #[serde(rename = "toggle")]
939    Toggle,
940}
941#[cfg_attr(feature = "debug", derive(Debug))]
942#[cfg_attr(feature = "clone", derive(Clone))]
943#[derive(Deserialize, PartialEq)]
944pub enum Zigbee501F34Action {
945    #[serde(rename = "brightness_move_down_1")]
946    BrightnessMoveDown1,
947    #[serde(rename = "brightness_move_down_2")]
948    BrightnessMoveDown2,
949    #[serde(rename = "brightness_move_stop_1")]
950    BrightnessMoveStop1,
951    #[serde(rename = "brightness_move_stop_2")]
952    BrightnessMoveStop2,
953    #[serde(rename = "brightness_move_up_1")]
954    BrightnessMoveUp1,
955    #[serde(rename = "brightness_move_up_2")]
956    BrightnessMoveUp2,
957    #[serde(rename = "off_1")]
958    Off1,
959    #[serde(rename = "off_2")]
960    Off2,
961    #[serde(rename = "on_1")]
962    On1,
963    #[serde(rename = "on_2")]
964    On2,
965}
966#[cfg_attr(feature = "debug", derive(Debug))]
967#[cfg_attr(feature = "clone", derive(Clone))]
968#[derive(Deserialize, PartialEq)]
969pub enum Zigbee929F60Poweronbehavior {
970    #[serde(rename = "off")]
971    Off,
972    #[serde(rename = "on")]
973    On,
974    #[serde(rename = "previous")]
975    Previous,
976    #[serde(rename = "toggle")]
977    Toggle,
978}
979#[cfg_attr(feature = "debug", derive(Debug))]
980#[cfg_attr(feature = "clone", derive(Clone))]
981#[derive(Deserialize, PartialEq)]
982pub enum Zigbee929F63Poweronbehavior {
983    #[serde(rename = "off")]
984    Off,
985    #[serde(rename = "on")]
986    On,
987    #[serde(rename = "previous")]
988    Previous,
989    #[serde(rename = "toggle")]
990    Toggle,
991}
992#[cfg_attr(feature = "debug", derive(Debug))]
993#[cfg_attr(feature = "clone", derive(Clone))]
994#[derive(Deserialize, PartialEq)]
995pub enum Zigbee929F66Poweronbehavior {
996    #[serde(rename = "off")]
997    Off,
998    #[serde(rename = "on")]
999    On,
1000    #[serde(rename = "previous")]
1001    Previous,
1002    #[serde(rename = "toggle")]
1003    Toggle,
1004}
1005#[cfg_attr(feature = "debug", derive(Debug))]
1006#[cfg_attr(feature = "clone", derive(Clone))]
1007#[derive(Deserialize, PartialEq)]
1008pub enum Zigbee93999Poweronbehavior {
1009    #[serde(rename = "off")]
1010    Off,
1011    #[serde(rename = "on")]
1012    On,
1013    #[serde(rename = "previous")]
1014    Previous,
1015    #[serde(rename = "toggle")]
1016    Toggle,
1017}
1018#[cfg_attr(feature = "debug", derive(Debug))]
1019#[cfg_attr(feature = "clone", derive(Clone))]
1020#[derive(Deserialize, PartialEq)]
1021pub enum Zigbee94191Poweronbehavior {
1022    #[serde(rename = "off")]
1023    Off,
1024    #[serde(rename = "on")]
1025    On,
1026    #[serde(rename = "previous")]
1027    Previous,
1028    #[serde(rename = "toggle")]
1029    Toggle,
1030}
1031#[cfg(all(feature = "last_seen_epoch", feature = "last_seen_iso_8601"))]
1032compile_error!{"Feature last_seen epoch and iso_8601 are mutually exclusive and cannot be enabled together.
1033This was done because it is a global setting in zigbee2mqtt and therefor can't see a reason both would be enabled.
1034If you have a any reason to have both ways enabled please submit an issue to https://gitlab.com/seam345/zigbee2mqtt-types/-/issues"}