zigbee2mqtt_types_vendor_philips/
lib.rs

1use serde::Deserialize;
2use serde::de::Unexpected;
3use serde::de;
4use serde::Deserializer;
5use zigbee2mqtt_types_base_types::LastSeen;
6/// philips:046677476816 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/046677476816.html)
7///
8/// 
9#[cfg_attr(feature = "debug", derive(Debug))]
10#[cfg_attr(feature = "clone", derive(Clone))]
11#[derive(Deserialize)]
12pub struct Zigbee046677476816 {
13    ///Brightness of this light
14    pub brightness: f64,
15    ///Link quality (signal strength)
16    pub linkquality: f64,
17    ///Controls the behavior when the device is powered on after power loss
18    pub power_on_behavior: Zigbee046677476816Poweronbehavior,
19    ///Zigbee herdsman description: "On/off state of this light"
20    ///The string values get converted into boolean with: ON = true and OFF = false
21    #[serde(deserialize_with = "zigbee046677476816_state_deserializer")]
22    pub state: bool,
23    /// Optional last_seen type, set as a global zigbee2mqtt setting
24    pub last_seen: Option<LastSeen>,
25    /// Optional elapsed type
26    pub elapsed: Option<u64>,
27}
28/// Deserialize bool from String with custom value mapping
29fn zigbee046677476816_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/// philips:046677551780 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/046677551780.html)
44///
45/// 
46#[cfg_attr(feature = "debug", derive(Debug))]
47#[cfg_attr(feature = "clone", derive(Clone))]
48#[derive(Deserialize)]
49pub struct Zigbee046677551780 {
50    ///Brightness of this light
51    pub brightness: f64,
52    ///Link quality (signal strength)
53    pub linkquality: f64,
54    ///Controls the behavior when the device is powered on after power loss
55    pub power_on_behavior: Zigbee046677551780Poweronbehavior,
56    ///Zigbee herdsman description: "On/off state of this light"
57    ///The string values get converted into boolean with: ON = true and OFF = false
58    #[serde(deserialize_with = "zigbee046677551780_state_deserializer")]
59    pub state: bool,
60    /// Optional last_seen type, set as a global zigbee2mqtt setting
61    pub last_seen: Option<LastSeen>,
62    /// Optional elapsed type
63    pub elapsed: Option<u64>,
64}
65/// Deserialize bool from String with custom value mapping
66fn zigbee046677551780_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
67where
68    D: Deserializer<'de>,
69{
70    match String::deserialize(deserializer)?.as_ref() {
71        "ON" => Ok(true),
72        "OFF" => Ok(false),
73        other => Err(de::Error::invalid_value(
74            Unexpected::Str(other),
75            &"Value expected was either ON or OFF",
76        )),
77    }
78}
79
80/// philips:046677552343 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/046677552343.html)
81///
82/// 
83#[cfg_attr(feature = "debug", derive(Debug))]
84#[cfg_attr(feature = "clone", derive(Clone))]
85#[derive(Deserialize)]
86pub struct Zigbee046677552343 {
87    ///Link quality (signal strength)
88    pub linkquality: f64,
89    ///Zigbee herdsman description: "On/off state of the switch"
90    ///The string values get converted into boolean with: ON = true and OFF = false
91    #[serde(deserialize_with = "zigbee046677552343_state_deserializer")]
92    pub state: bool,
93    /// Optional last_seen type, set as a global zigbee2mqtt setting
94    pub last_seen: Option<LastSeen>,
95    /// Optional elapsed type
96    pub elapsed: Option<u64>,
97}
98/// Deserialize bool from String with custom value mapping
99fn zigbee046677552343_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
100where
101    D: Deserializer<'de>,
102{
103    match String::deserialize(deserializer)?.as_ref() {
104        "ON" => Ok(true),
105        "OFF" => Ok(false),
106        other => Err(de::Error::invalid_value(
107            Unexpected::Str(other),
108            &"Value expected was either ON or OFF",
109        )),
110    }
111}
112
113/// philips:046677562229 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/046677562229.html)
114///
115/// 
116#[cfg_attr(feature = "debug", derive(Debug))]
117#[cfg_attr(feature = "clone", derive(Clone))]
118#[derive(Deserialize)]
119pub struct Zigbee046677562229 {
120    ///Brightness of this light
121    pub brightness: f64,
122    ///Link quality (signal strength)
123    pub linkquality: f64,
124    ///Controls the behavior when the device is powered on after power loss
125    pub power_on_behavior: Zigbee046677562229Poweronbehavior,
126    ///Zigbee herdsman description: "On/off state of this light"
127    ///The string values get converted into boolean with: ON = true and OFF = false
128    #[serde(deserialize_with = "zigbee046677562229_state_deserializer")]
129    pub state: bool,
130    /// Optional last_seen type, set as a global zigbee2mqtt setting
131    pub last_seen: Option<LastSeen>,
132    /// Optional elapsed type
133    pub elapsed: Option<u64>,
134}
135/// Deserialize bool from String with custom value mapping
136fn zigbee046677562229_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
137where
138    D: Deserializer<'de>,
139{
140    match String::deserialize(deserializer)?.as_ref() {
141        "ON" => Ok(true),
142        "OFF" => Ok(false),
143        other => Err(de::Error::invalid_value(
144            Unexpected::Str(other),
145            &"Value expected was either ON or OFF",
146        )),
147    }
148}
149
150/// philips:046677577957 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/046677577957.html)
151///
152/// 
153#[cfg_attr(feature = "debug", derive(Debug))]
154#[cfg_attr(feature = "clone", derive(Clone))]
155#[derive(Deserialize)]
156pub struct Zigbee046677577957 {
157    ///Brightness of this light
158    pub brightness: f64,
159    ///Color temperature of this light
160    pub color_temp: f64,
161    ///Color temperature after cold power on of this light
162    pub color_temp_startup: f64,
163    ///Link quality (signal strength)
164    pub linkquality: f64,
165    ///Controls the behavior when the device is powered on after power loss
166    pub power_on_behavior: Zigbee046677577957Poweronbehavior,
167    ///Zigbee herdsman description: "On/off state of this light"
168    ///The string values get converted into boolean with: ON = true and OFF = false
169    #[serde(deserialize_with = "zigbee046677577957_state_deserializer")]
170    pub state: bool,
171    /// Optional last_seen type, set as a global zigbee2mqtt setting
172    pub last_seen: Option<LastSeen>,
173    /// Optional elapsed type
174    pub elapsed: Option<u64>,
175}
176/// Deserialize bool from String with custom value mapping
177fn zigbee046677577957_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
178where
179    D: Deserializer<'de>,
180{
181    match String::deserialize(deserializer)?.as_ref() {
182        "ON" => Ok(true),
183        "OFF" => Ok(false),
184        other => Err(de::Error::invalid_value(
185            Unexpected::Str(other),
186            &"Value expected was either ON or OFF",
187        )),
188    }
189}
190
191/// philips:046677578138 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/046677578138.html)
192///
193/// 
194#[cfg_attr(feature = "debug", derive(Debug))]
195#[cfg_attr(feature = "clone", derive(Clone))]
196#[derive(Deserialize)]
197pub struct Zigbee046677578138 {
198    ///Brightness of this light
199    pub brightness: f64,
200    ///Color temperature of this light
201    pub color_temp: f64,
202    ///Color temperature after cold power on of this light
203    pub color_temp_startup: f64,
204    ///Link quality (signal strength)
205    pub linkquality: f64,
206    ///Controls the behavior when the device is powered on after power loss
207    pub power_on_behavior: Zigbee046677578138Poweronbehavior,
208    ///Zigbee herdsman description: "On/off state of this light"
209    ///The string values get converted into boolean with: ON = true and OFF = false
210    #[serde(deserialize_with = "zigbee046677578138_state_deserializer")]
211    pub state: bool,
212    /// Optional last_seen type, set as a global zigbee2mqtt setting
213    pub last_seen: Option<LastSeen>,
214    /// Optional elapsed type
215    pub elapsed: Option<u64>,
216}
217/// Deserialize bool from String with custom value mapping
218fn zigbee046677578138_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
219where
220    D: Deserializer<'de>,
221{
222    match String::deserialize(deserializer)?.as_ref() {
223        "ON" => Ok(true),
224        "OFF" => Ok(false),
225        other => Err(de::Error::invalid_value(
226            Unexpected::Str(other),
227            &"Value expected was either ON or OFF",
228        )),
229    }
230}
231
232/// philips:046677803087 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/046677803087.html)
233///
234/// 
235#[cfg_attr(feature = "debug", derive(Debug))]
236#[cfg_attr(feature = "clone", derive(Clone))]
237#[derive(Deserialize)]
238pub struct Zigbee046677803087 {
239    ///Brightness of this light
240    pub brightness: f64,
241    ///Color temperature of this light
242    pub color_temp: f64,
243    ///Color temperature after cold power on of this light
244    pub color_temp_startup: f64,
245    ///Link quality (signal strength)
246    pub linkquality: f64,
247    ///Controls the behavior when the device is powered on after power loss
248    pub power_on_behavior: Zigbee046677803087Poweronbehavior,
249    ///Zigbee herdsman description: "On/off state of this light"
250    ///The string values get converted into boolean with: ON = true and OFF = false
251    #[serde(deserialize_with = "zigbee046677803087_state_deserializer")]
252    pub state: bool,
253    /// Optional last_seen type, set as a global zigbee2mqtt setting
254    pub last_seen: Option<LastSeen>,
255    /// Optional elapsed type
256    pub elapsed: Option<u64>,
257}
258/// Deserialize bool from String with custom value mapping
259fn zigbee046677803087_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
260where
261    D: Deserializer<'de>,
262{
263    match String::deserialize(deserializer)?.as_ref() {
264        "ON" => Ok(true),
265        "OFF" => Ok(false),
266        other => Err(de::Error::invalid_value(
267            Unexpected::Str(other),
268            &"Value expected was either ON or OFF",
269        )),
270    }
271}
272
273/// philips:1740193P0 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1740193P0.html)
274///
275/// 
276#[cfg_attr(feature = "debug", derive(Debug))]
277#[cfg_attr(feature = "clone", derive(Clone))]
278#[derive(Deserialize)]
279pub struct Zigbee1740193p0 {
280    ///Brightness of this light
281    pub brightness: f64,
282    ///Link quality (signal strength)
283    pub linkquality: f64,
284    ///Controls the behavior when the device is powered on after power loss
285    pub power_on_behavior: Zigbee1740193p0Poweronbehavior,
286    ///Zigbee herdsman description: "On/off state of this light"
287    ///The string values get converted into boolean with: ON = true and OFF = false
288    #[serde(deserialize_with = "zigbee1740193p0_state_deserializer")]
289    pub state: bool,
290    /// Optional last_seen type, set as a global zigbee2mqtt setting
291    pub last_seen: Option<LastSeen>,
292    /// Optional elapsed type
293    pub elapsed: Option<u64>,
294}
295/// Deserialize bool from String with custom value mapping
296fn zigbee1740193p0_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
297where
298    D: Deserializer<'de>,
299{
300    match String::deserialize(deserializer)?.as_ref() {
301        "ON" => Ok(true),
302        "OFF" => Ok(false),
303        other => Err(de::Error::invalid_value(
304            Unexpected::Str(other),
305            &"Value expected was either ON or OFF",
306        )),
307    }
308}
309
310/// philips:1740293P0 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1740293P0.html)
311///
312/// 
313#[cfg_attr(feature = "debug", derive(Debug))]
314#[cfg_attr(feature = "clone", derive(Clone))]
315#[derive(Deserialize)]
316pub struct Zigbee1740293p0 {
317    ///Brightness of this light
318    pub brightness: f64,
319    ///Link quality (signal strength)
320    pub linkquality: f64,
321    ///Controls the behavior when the device is powered on after power loss
322    pub power_on_behavior: Zigbee1740293p0Poweronbehavior,
323    ///Zigbee herdsman description: "On/off state of this light"
324    ///The string values get converted into boolean with: ON = true and OFF = false
325    #[serde(deserialize_with = "zigbee1740293p0_state_deserializer")]
326    pub state: bool,
327    /// Optional last_seen type, set as a global zigbee2mqtt setting
328    pub last_seen: Option<LastSeen>,
329    /// Optional elapsed type
330    pub elapsed: Option<u64>,
331}
332/// Deserialize bool from String with custom value mapping
333fn zigbee1740293p0_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
334where
335    D: Deserializer<'de>,
336{
337    match String::deserialize(deserializer)?.as_ref() {
338        "ON" => Ok(true),
339        "OFF" => Ok(false),
340        other => Err(de::Error::invalid_value(
341            Unexpected::Str(other),
342            &"Value expected was either ON or OFF",
343        )),
344    }
345}
346
347/// philips:1741530P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1741530P7.html)
348///
349/// 
350#[cfg_attr(feature = "debug", derive(Debug))]
351#[cfg_attr(feature = "clone", derive(Clone))]
352#[derive(Deserialize)]
353pub struct Zigbee1741530p7 {
354    ///Brightness of this light
355    pub brightness: f64,
356    ///Color temperature of this light
357    pub color_temp: f64,
358    ///Color temperature after cold power on of this light
359    pub color_temp_startup: f64,
360    ///Link quality (signal strength)
361    pub linkquality: f64,
362    ///Controls the behavior when the device is powered on after power loss
363    pub power_on_behavior: Zigbee1741530p7Poweronbehavior,
364    ///Zigbee herdsman description: "On/off state of this light"
365    ///The string values get converted into boolean with: ON = true and OFF = false
366    #[serde(deserialize_with = "zigbee1741530p7_state_deserializer")]
367    pub state: bool,
368    /// Optional last_seen type, set as a global zigbee2mqtt setting
369    pub last_seen: Option<LastSeen>,
370    /// Optional elapsed type
371    pub elapsed: Option<u64>,
372}
373/// Deserialize bool from String with custom value mapping
374fn zigbee1741530p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
375where
376    D: Deserializer<'de>,
377{
378    match String::deserialize(deserializer)?.as_ref() {
379        "ON" => Ok(true),
380        "OFF" => Ok(false),
381        other => Err(de::Error::invalid_value(
382            Unexpected::Str(other),
383            &"Value expected was either ON or OFF",
384        )),
385    }
386}
387
388/// philips:1741730V7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1741730V7.html)
389///
390/// 
391#[cfg_attr(feature = "debug", derive(Debug))]
392#[cfg_attr(feature = "clone", derive(Clone))]
393#[derive(Deserialize)]
394pub struct Zigbee1741730v7 {
395    ///Brightness of this light
396    pub brightness: f64,
397    ///Color temperature of this light
398    pub color_temp: f64,
399    ///Color temperature after cold power on of this light
400    pub color_temp_startup: f64,
401    ///Link quality (signal strength)
402    pub linkquality: f64,
403    ///Controls the behavior when the device is powered on after power loss
404    pub power_on_behavior: Zigbee1741730v7Poweronbehavior,
405    ///Zigbee herdsman description: "On/off state of this light"
406    ///The string values get converted into boolean with: ON = true and OFF = false
407    #[serde(deserialize_with = "zigbee1741730v7_state_deserializer")]
408    pub state: bool,
409    /// Optional last_seen type, set as a global zigbee2mqtt setting
410    pub last_seen: Option<LastSeen>,
411    /// Optional elapsed type
412    pub elapsed: Option<u64>,
413}
414/// Deserialize bool from String with custom value mapping
415fn zigbee1741730v7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
416where
417    D: Deserializer<'de>,
418{
419    match String::deserialize(deserializer)?.as_ref() {
420        "ON" => Ok(true),
421        "OFF" => Ok(false),
422        other => Err(de::Error::invalid_value(
423            Unexpected::Str(other),
424            &"Value expected was either ON or OFF",
425        )),
426    }
427}
428
429/// philips:1741830P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1741830P7.html)
430///
431/// 
432#[cfg_attr(feature = "debug", derive(Debug))]
433#[cfg_attr(feature = "clone", derive(Clone))]
434#[derive(Deserialize)]
435pub struct Zigbee1741830p7 {
436    ///Brightness of this light
437    pub brightness: f64,
438    ///Color temperature of this light
439    pub color_temp: f64,
440    ///Color temperature after cold power on of this light
441    pub color_temp_startup: f64,
442    ///Link quality (signal strength)
443    pub linkquality: f64,
444    ///Controls the behavior when the device is powered on after power loss
445    pub power_on_behavior: Zigbee1741830p7Poweronbehavior,
446    ///Zigbee herdsman description: "On/off state of this light"
447    ///The string values get converted into boolean with: ON = true and OFF = false
448    #[serde(deserialize_with = "zigbee1741830p7_state_deserializer")]
449    pub state: bool,
450    /// Optional last_seen type, set as a global zigbee2mqtt setting
451    pub last_seen: Option<LastSeen>,
452    /// Optional elapsed type
453    pub elapsed: Option<u64>,
454}
455/// Deserialize bool from String with custom value mapping
456fn zigbee1741830p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
457where
458    D: Deserializer<'de>,
459{
460    match String::deserialize(deserializer)?.as_ref() {
461        "ON" => Ok(true),
462        "OFF" => Ok(false),
463        other => Err(de::Error::invalid_value(
464            Unexpected::Str(other),
465            &"Value expected was either ON or OFF",
466        )),
467    }
468}
469
470/// philips:1741930V7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1741930V7.html)
471///
472/// 
473#[cfg_attr(feature = "debug", derive(Debug))]
474#[cfg_attr(feature = "clone", derive(Clone))]
475#[derive(Deserialize)]
476pub struct Zigbee1741930v7 {
477    ///Brightness of this light
478    pub brightness: f64,
479    ///Color temperature of this light
480    pub color_temp: f64,
481    ///Color temperature after cold power on of this light
482    pub color_temp_startup: f64,
483    ///Link quality (signal strength)
484    pub linkquality: f64,
485    ///Controls the behavior when the device is powered on after power loss
486    pub power_on_behavior: Zigbee1741930v7Poweronbehavior,
487    ///Zigbee herdsman description: "On/off state of this light"
488    ///The string values get converted into boolean with: ON = true and OFF = false
489    #[serde(deserialize_with = "zigbee1741930v7_state_deserializer")]
490    pub state: bool,
491    /// Optional last_seen type, set as a global zigbee2mqtt setting
492    pub last_seen: Option<LastSeen>,
493    /// Optional elapsed type
494    pub elapsed: Option<u64>,
495}
496/// Deserialize bool from String with custom value mapping
497fn zigbee1741930v7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
498where
499    D: Deserializer<'de>,
500{
501    match String::deserialize(deserializer)?.as_ref() {
502        "ON" => Ok(true),
503        "OFF" => Ok(false),
504        other => Err(de::Error::invalid_value(
505            Unexpected::Str(other),
506            &"Value expected was either ON or OFF",
507        )),
508    }
509}
510
511/// philips:1742030P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1742030P7.html)
512///
513/// 
514#[cfg_attr(feature = "debug", derive(Debug))]
515#[cfg_attr(feature = "clone", derive(Clone))]
516#[derive(Deserialize)]
517pub struct Zigbee1742030p7 {
518    ///Brightness of this light
519    pub brightness: f64,
520    ///Color temperature of this light
521    pub color_temp: f64,
522    ///Color temperature after cold power on of this light
523    pub color_temp_startup: f64,
524    ///Link quality (signal strength)
525    pub linkquality: f64,
526    ///Controls the behavior when the device is powered on after power loss
527    pub power_on_behavior: Zigbee1742030p7Poweronbehavior,
528    ///Zigbee herdsman description: "On/off state of this light"
529    ///The string values get converted into boolean with: ON = true and OFF = false
530    #[serde(deserialize_with = "zigbee1742030p7_state_deserializer")]
531    pub state: bool,
532    /// Optional last_seen type, set as a global zigbee2mqtt setting
533    pub last_seen: Option<LastSeen>,
534    /// Optional elapsed type
535    pub elapsed: Option<u64>,
536}
537/// Deserialize bool from String with custom value mapping
538fn zigbee1742030p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
539where
540    D: Deserializer<'de>,
541{
542    match String::deserialize(deserializer)?.as_ref() {
543        "ON" => Ok(true),
544        "OFF" => Ok(false),
545        other => Err(de::Error::invalid_value(
546            Unexpected::Str(other),
547            &"Value expected was either ON or OFF",
548        )),
549    }
550}
551
552/// philips:1742330P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1742330P7.html)
553///
554/// 
555#[cfg_attr(feature = "debug", derive(Debug))]
556#[cfg_attr(feature = "clone", derive(Clone))]
557#[derive(Deserialize)]
558pub struct Zigbee1742330p7 {
559    ///Brightness of this light
560    pub brightness: f64,
561    ///Color temperature of this light
562    pub color_temp: f64,
563    ///Color temperature after cold power on of this light
564    pub color_temp_startup: f64,
565    ///Link quality (signal strength)
566    pub linkquality: f64,
567    ///Controls the behavior when the device is powered on after power loss
568    pub power_on_behavior: Zigbee1742330p7Poweronbehavior,
569    ///Zigbee herdsman description: "On/off state of this light"
570    ///The string values get converted into boolean with: ON = true and OFF = false
571    #[serde(deserialize_with = "zigbee1742330p7_state_deserializer")]
572    pub state: bool,
573    /// Optional last_seen type, set as a global zigbee2mqtt setting
574    pub last_seen: Option<LastSeen>,
575    /// Optional elapsed type
576    pub elapsed: Option<u64>,
577}
578/// Deserialize bool from String with custom value mapping
579fn zigbee1742330p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
580where
581    D: Deserializer<'de>,
582{
583    match String::deserialize(deserializer)?.as_ref() {
584        "ON" => Ok(true),
585        "OFF" => Ok(false),
586        other => Err(de::Error::invalid_value(
587            Unexpected::Str(other),
588            &"Value expected was either ON or OFF",
589        )),
590    }
591}
592
593/// philips:1742830P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1742830P7.html)
594///
595/// 
596#[cfg_attr(feature = "debug", derive(Debug))]
597#[cfg_attr(feature = "clone", derive(Clone))]
598#[derive(Deserialize)]
599pub struct Zigbee1742830p7 {
600    ///Brightness of this light
601    pub brightness: f64,
602    ///Color temperature of this light
603    pub color_temp: f64,
604    ///Color temperature after cold power on of this light
605    pub color_temp_startup: f64,
606    ///Link quality (signal strength)
607    pub linkquality: f64,
608    ///Controls the behavior when the device is powered on after power loss
609    pub power_on_behavior: Zigbee1742830p7Poweronbehavior,
610    ///Zigbee herdsman description: "On/off state of this light"
611    ///The string values get converted into boolean with: ON = true and OFF = false
612    #[serde(deserialize_with = "zigbee1742830p7_state_deserializer")]
613    pub state: bool,
614    /// Optional last_seen type, set as a global zigbee2mqtt setting
615    pub last_seen: Option<LastSeen>,
616    /// Optional elapsed type
617    pub elapsed: Option<u64>,
618}
619/// Deserialize bool from String with custom value mapping
620fn zigbee1742830p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
621where
622    D: Deserializer<'de>,
623{
624    match String::deserialize(deserializer)?.as_ref() {
625        "ON" => Ok(true),
626        "OFF" => Ok(false),
627        other => Err(de::Error::invalid_value(
628            Unexpected::Str(other),
629            &"Value expected was either ON or OFF",
630        )),
631    }
632}
633
634/// philips:1742930P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1742930P7.html)
635///
636/// 
637#[cfg_attr(feature = "debug", derive(Debug))]
638#[cfg_attr(feature = "clone", derive(Clone))]
639#[derive(Deserialize)]
640pub struct Zigbee1742930p7 {
641    ///Brightness of this light
642    pub brightness: f64,
643    ///Color temperature of this light
644    pub color_temp: f64,
645    ///Color temperature after cold power on of this light
646    pub color_temp_startup: f64,
647    ///Link quality (signal strength)
648    pub linkquality: f64,
649    ///Controls the behavior when the device is powered on after power loss
650    pub power_on_behavior: Zigbee1742930p7Poweronbehavior,
651    ///Zigbee herdsman description: "On/off state of this light"
652    ///The string values get converted into boolean with: ON = true and OFF = false
653    #[serde(deserialize_with = "zigbee1742930p7_state_deserializer")]
654    pub state: bool,
655    /// Optional last_seen type, set as a global zigbee2mqtt setting
656    pub last_seen: Option<LastSeen>,
657    /// Optional elapsed type
658    pub elapsed: Option<u64>,
659}
660/// Deserialize bool from String with custom value mapping
661fn zigbee1742930p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
662where
663    D: Deserializer<'de>,
664{
665    match String::deserialize(deserializer)?.as_ref() {
666        "ON" => Ok(true),
667        "OFF" => Ok(false),
668        other => Err(de::Error::invalid_value(
669            Unexpected::Str(other),
670            &"Value expected was either ON or OFF",
671        )),
672    }
673}
674
675/// philips:1743030P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1743030P7.html)
676///
677/// 
678#[cfg_attr(feature = "debug", derive(Debug))]
679#[cfg_attr(feature = "clone", derive(Clone))]
680#[derive(Deserialize)]
681pub struct Zigbee1743030p7 {
682    ///Brightness of this light
683    pub brightness: f64,
684    ///Color temperature of this light
685    pub color_temp: f64,
686    ///Color temperature after cold power on of this light
687    pub color_temp_startup: f64,
688    ///Link quality (signal strength)
689    pub linkquality: f64,
690    ///Controls the behavior when the device is powered on after power loss
691    pub power_on_behavior: Zigbee1743030p7Poweronbehavior,
692    ///Zigbee herdsman description: "On/off state of this light"
693    ///The string values get converted into boolean with: ON = true and OFF = false
694    #[serde(deserialize_with = "zigbee1743030p7_state_deserializer")]
695    pub state: bool,
696    /// Optional last_seen type, set as a global zigbee2mqtt setting
697    pub last_seen: Option<LastSeen>,
698    /// Optional elapsed type
699    pub elapsed: Option<u64>,
700}
701/// Deserialize bool from String with custom value mapping
702fn zigbee1743030p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
703where
704    D: Deserializer<'de>,
705{
706    match String::deserialize(deserializer)?.as_ref() {
707        "ON" => Ok(true),
708        "OFF" => Ok(false),
709        other => Err(de::Error::invalid_value(
710            Unexpected::Str(other),
711            &"Value expected was either ON or OFF",
712        )),
713    }
714}
715
716/// philips:1743130P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1743130P7.html)
717///
718/// 
719#[cfg_attr(feature = "debug", derive(Debug))]
720#[cfg_attr(feature = "clone", derive(Clone))]
721#[derive(Deserialize)]
722pub struct Zigbee1743130p7 {
723    ///Brightness of this light
724    pub brightness: f64,
725    ///Color temperature of this light
726    pub color_temp: f64,
727    ///Color temperature after cold power on of this light
728    pub color_temp_startup: f64,
729    ///Link quality (signal strength)
730    pub linkquality: f64,
731    ///Controls the behavior when the device is powered on after power loss
732    pub power_on_behavior: Zigbee1743130p7Poweronbehavior,
733    ///Zigbee herdsman description: "On/off state of this light"
734    ///The string values get converted into boolean with: ON = true and OFF = false
735    #[serde(deserialize_with = "zigbee1743130p7_state_deserializer")]
736    pub state: bool,
737    /// Optional last_seen type, set as a global zigbee2mqtt setting
738    pub last_seen: Option<LastSeen>,
739    /// Optional elapsed type
740    pub elapsed: Option<u64>,
741}
742/// Deserialize bool from String with custom value mapping
743fn zigbee1743130p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
744where
745    D: Deserializer<'de>,
746{
747    match String::deserialize(deserializer)?.as_ref() {
748        "ON" => Ok(true),
749        "OFF" => Ok(false),
750        other => Err(de::Error::invalid_value(
751            Unexpected::Str(other),
752            &"Value expected was either ON or OFF",
753        )),
754    }
755}
756
757/// philips:1743230P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1743230P7.html)
758///
759/// 
760#[cfg_attr(feature = "debug", derive(Debug))]
761#[cfg_attr(feature = "clone", derive(Clone))]
762#[derive(Deserialize)]
763pub struct Zigbee1743230p7 {
764    ///Brightness of this light
765    pub brightness: f64,
766    ///Color temperature of this light
767    pub color_temp: f64,
768    ///Color temperature after cold power on of this light
769    pub color_temp_startup: f64,
770    ///Link quality (signal strength)
771    pub linkquality: f64,
772    ///Controls the behavior when the device is powered on after power loss
773    pub power_on_behavior: Zigbee1743230p7Poweronbehavior,
774    ///Zigbee herdsman description: "On/off state of this light"
775    ///The string values get converted into boolean with: ON = true and OFF = false
776    #[serde(deserialize_with = "zigbee1743230p7_state_deserializer")]
777    pub state: bool,
778    /// Optional last_seen type, set as a global zigbee2mqtt setting
779    pub last_seen: Option<LastSeen>,
780    /// Optional elapsed type
781    pub elapsed: Option<u64>,
782}
783/// Deserialize bool from String with custom value mapping
784fn zigbee1743230p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
785where
786    D: Deserializer<'de>,
787{
788    match String::deserialize(deserializer)?.as_ref() {
789        "ON" => Ok(true),
790        "OFF" => Ok(false),
791        other => Err(de::Error::invalid_value(
792            Unexpected::Str(other),
793            &"Value expected was either ON or OFF",
794        )),
795    }
796}
797
798/// philips:1743430P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1743430P7.html)
799///
800/// 
801#[cfg_attr(feature = "debug", derive(Debug))]
802#[cfg_attr(feature = "clone", derive(Clone))]
803#[derive(Deserialize)]
804pub struct Zigbee1743430p7 {
805    ///Brightness of this light
806    pub brightness: f64,
807    ///Color temperature of this light
808    pub color_temp: f64,
809    ///Color temperature after cold power on of this light
810    pub color_temp_startup: f64,
811    ///Link quality (signal strength)
812    pub linkquality: f64,
813    ///Controls the behavior when the device is powered on after power loss
814    pub power_on_behavior: Zigbee1743430p7Poweronbehavior,
815    ///Zigbee herdsman description: "On/off state of this light"
816    ///The string values get converted into boolean with: ON = true and OFF = false
817    #[serde(deserialize_with = "zigbee1743430p7_state_deserializer")]
818    pub state: bool,
819    /// Optional last_seen type, set as a global zigbee2mqtt setting
820    pub last_seen: Option<LastSeen>,
821    /// Optional elapsed type
822    pub elapsed: Option<u64>,
823}
824/// Deserialize bool from String with custom value mapping
825fn zigbee1743430p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
826where
827    D: Deserializer<'de>,
828{
829    match String::deserialize(deserializer)?.as_ref() {
830        "ON" => Ok(true),
831        "OFF" => Ok(false),
832        other => Err(de::Error::invalid_value(
833            Unexpected::Str(other),
834            &"Value expected was either ON or OFF",
835        )),
836    }
837}
838
839/// philips:17435/30/P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/17435/30/P7.html)
840///
841/// 
842#[cfg_attr(feature = "debug", derive(Debug))]
843#[cfg_attr(feature = "clone", derive(Clone))]
844#[derive(Deserialize)]
845pub struct Zigbee1743530p7 {
846    ///Brightness of this light
847    pub brightness: f64,
848    ///Color temperature of this light
849    pub color_temp: f64,
850    ///Color temperature after cold power on of this light
851    pub color_temp_startup: f64,
852    ///Link quality (signal strength)
853    pub linkquality: f64,
854    ///Controls the behavior when the device is powered on after power loss
855    pub power_on_behavior: Zigbee1743530p7Poweronbehavior,
856    ///Zigbee herdsman description: "On/off state of this light"
857    ///The string values get converted into boolean with: ON = true and OFF = false
858    #[serde(deserialize_with = "zigbee1743530p7_state_deserializer")]
859    pub state: bool,
860    /// Optional last_seen type, set as a global zigbee2mqtt setting
861    pub last_seen: Option<LastSeen>,
862    /// Optional elapsed type
863    pub elapsed: Option<u64>,
864}
865/// Deserialize bool from String with custom value mapping
866fn zigbee1743530p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
867where
868    D: Deserializer<'de>,
869{
870    match String::deserialize(deserializer)?.as_ref() {
871        "ON" => Ok(true),
872        "OFF" => Ok(false),
873        other => Err(de::Error::invalid_value(
874            Unexpected::Str(other),
875            &"Value expected was either ON or OFF",
876        )),
877    }
878}
879
880/// philips:17436/30/P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/17436/30/P7.html)
881///
882/// 
883#[cfg_attr(feature = "debug", derive(Debug))]
884#[cfg_attr(feature = "clone", derive(Clone))]
885#[derive(Deserialize)]
886pub struct Zigbee1743630p7 {
887    ///Brightness of this light
888    pub brightness: f64,
889    ///Link quality (signal strength)
890    pub linkquality: f64,
891    ///Controls the behavior when the device is powered on after power loss
892    pub power_on_behavior: Zigbee1743630p7Poweronbehavior,
893    ///Zigbee herdsman description: "On/off state of this light"
894    ///The string values get converted into boolean with: ON = true and OFF = false
895    #[serde(deserialize_with = "zigbee1743630p7_state_deserializer")]
896    pub state: bool,
897    /// Optional last_seen type, set as a global zigbee2mqtt setting
898    pub last_seen: Option<LastSeen>,
899    /// Optional elapsed type
900    pub elapsed: Option<u64>,
901}
902/// Deserialize bool from String with custom value mapping
903fn zigbee1743630p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
904where
905    D: Deserializer<'de>,
906{
907    match String::deserialize(deserializer)?.as_ref() {
908        "ON" => Ok(true),
909        "OFF" => Ok(false),
910        other => Err(de::Error::invalid_value(
911            Unexpected::Str(other),
912            &"Value expected was either ON or OFF",
913        )),
914    }
915}
916
917/// philips:1743730P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1743730P7.html)
918///
919/// 
920#[cfg_attr(feature = "debug", derive(Debug))]
921#[cfg_attr(feature = "clone", derive(Clone))]
922#[derive(Deserialize)]
923pub struct Zigbee1743730p7 {
924    ///Brightness of this light
925    pub brightness: f64,
926    ///Color temperature of this light
927    pub color_temp: f64,
928    ///Color temperature after cold power on of this light
929    pub color_temp_startup: f64,
930    ///Link quality (signal strength)
931    pub linkquality: f64,
932    ///Controls the behavior when the device is powered on after power loss
933    pub power_on_behavior: Zigbee1743730p7Poweronbehavior,
934    ///Zigbee herdsman description: "On/off state of this light"
935    ///The string values get converted into boolean with: ON = true and OFF = false
936    #[serde(deserialize_with = "zigbee1743730p7_state_deserializer")]
937    pub state: bool,
938    /// Optional last_seen type, set as a global zigbee2mqtt setting
939    pub last_seen: Option<LastSeen>,
940    /// Optional elapsed type
941    pub elapsed: Option<u64>,
942}
943/// Deserialize bool from String with custom value mapping
944fn zigbee1743730p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
945where
946    D: Deserializer<'de>,
947{
948    match String::deserialize(deserializer)?.as_ref() {
949        "ON" => Ok(true),
950        "OFF" => Ok(false),
951        other => Err(de::Error::invalid_value(
952            Unexpected::Str(other),
953            &"Value expected was either ON or OFF",
954        )),
955    }
956}
957
958/// philips:1743830P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1743830P7.html)
959///
960/// 
961#[cfg_attr(feature = "debug", derive(Debug))]
962#[cfg_attr(feature = "clone", derive(Clone))]
963#[derive(Deserialize)]
964pub struct Zigbee1743830p7 {
965    ///Brightness of this light
966    pub brightness: f64,
967    ///Color temperature of this light
968    pub color_temp: f64,
969    ///Color temperature after cold power on of this light
970    pub color_temp_startup: f64,
971    ///Link quality (signal strength)
972    pub linkquality: f64,
973    ///Controls the behavior when the device is powered on after power loss
974    pub power_on_behavior: Zigbee1743830p7Poweronbehavior,
975    ///Zigbee herdsman description: "On/off state of this light"
976    ///The string values get converted into boolean with: ON = true and OFF = false
977    #[serde(deserialize_with = "zigbee1743830p7_state_deserializer")]
978    pub state: bool,
979    /// Optional last_seen type, set as a global zigbee2mqtt setting
980    pub last_seen: Option<LastSeen>,
981    /// Optional elapsed type
982    pub elapsed: Option<u64>,
983}
984/// Deserialize bool from String with custom value mapping
985fn zigbee1743830p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
986where
987    D: Deserializer<'de>,
988{
989    match String::deserialize(deserializer)?.as_ref() {
990        "ON" => Ok(true),
991        "OFF" => Ok(false),
992        other => Err(de::Error::invalid_value(
993            Unexpected::Str(other),
994            &"Value expected was either ON or OFF",
995        )),
996    }
997}
998
999/// philips:1743830V7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1743830V7.html)
1000///
1001/// 
1002#[cfg_attr(feature = "debug", derive(Debug))]
1003#[cfg_attr(feature = "clone", derive(Clone))]
1004#[derive(Deserialize)]
1005pub struct Zigbee1743830v7 {
1006    ///Brightness of this light
1007    pub brightness: f64,
1008    ///Color temperature of this light
1009    pub color_temp: f64,
1010    ///Color temperature after cold power on of this light
1011    pub color_temp_startup: f64,
1012    ///Link quality (signal strength)
1013    pub linkquality: f64,
1014    ///Controls the behavior when the device is powered on after power loss
1015    pub power_on_behavior: Zigbee1743830v7Poweronbehavior,
1016    ///Zigbee herdsman description: "On/off state of this light"
1017    ///The string values get converted into boolean with: ON = true and OFF = false
1018    #[serde(deserialize_with = "zigbee1743830v7_state_deserializer")]
1019    pub state: bool,
1020    /// Optional last_seen type, set as a global zigbee2mqtt setting
1021    pub last_seen: Option<LastSeen>,
1022    /// Optional elapsed type
1023    pub elapsed: Option<u64>,
1024}
1025/// Deserialize bool from String with custom value mapping
1026fn zigbee1743830v7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1027where
1028    D: Deserializer<'de>,
1029{
1030    match String::deserialize(deserializer)?.as_ref() {
1031        "ON" => Ok(true),
1032        "OFF" => Ok(false),
1033        other => Err(de::Error::invalid_value(
1034            Unexpected::Str(other),
1035            &"Value expected was either ON or OFF",
1036        )),
1037    }
1038}
1039
1040/// philips:1743930P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1743930P7.html)
1041///
1042/// 
1043#[cfg_attr(feature = "debug", derive(Debug))]
1044#[cfg_attr(feature = "clone", derive(Clone))]
1045#[derive(Deserialize)]
1046pub struct Zigbee1743930p7 {
1047    ///Brightness of this light
1048    pub brightness: f64,
1049    ///Color temperature of this light
1050    pub color_temp: f64,
1051    ///Color temperature after cold power on of this light
1052    pub color_temp_startup: f64,
1053    ///Link quality (signal strength)
1054    pub linkquality: f64,
1055    ///Controls the behavior when the device is powered on after power loss
1056    pub power_on_behavior: Zigbee1743930p7Poweronbehavior,
1057    ///Zigbee herdsman description: "On/off state of this light"
1058    ///The string values get converted into boolean with: ON = true and OFF = false
1059    #[serde(deserialize_with = "zigbee1743930p7_state_deserializer")]
1060    pub state: bool,
1061    /// Optional last_seen type, set as a global zigbee2mqtt setting
1062    pub last_seen: Option<LastSeen>,
1063    /// Optional elapsed type
1064    pub elapsed: Option<u64>,
1065}
1066/// Deserialize bool from String with custom value mapping
1067fn zigbee1743930p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1068where
1069    D: Deserializer<'de>,
1070{
1071    match String::deserialize(deserializer)?.as_ref() {
1072        "ON" => Ok(true),
1073        "OFF" => Ok(false),
1074        other => Err(de::Error::invalid_value(
1075            Unexpected::Str(other),
1076            &"Value expected was either ON or OFF",
1077        )),
1078    }
1079}
1080
1081/// philips:1744130P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1744130P7.html)
1082///
1083/// 
1084#[cfg_attr(feature = "debug", derive(Debug))]
1085#[cfg_attr(feature = "clone", derive(Clone))]
1086#[derive(Deserialize)]
1087pub struct Zigbee1744130p7 {
1088    ///Brightness of this light
1089    pub brightness: f64,
1090    ///Color temperature of this light
1091    pub color_temp: f64,
1092    ///Color temperature after cold power on of this light
1093    pub color_temp_startup: f64,
1094    ///Link quality (signal strength)
1095    pub linkquality: f64,
1096    ///Controls the behavior when the device is powered on after power loss
1097    pub power_on_behavior: Zigbee1744130p7Poweronbehavior,
1098    ///Zigbee herdsman description: "On/off state of this light"
1099    ///The string values get converted into boolean with: ON = true and OFF = false
1100    #[serde(deserialize_with = "zigbee1744130p7_state_deserializer")]
1101    pub state: bool,
1102    /// Optional last_seen type, set as a global zigbee2mqtt setting
1103    pub last_seen: Option<LastSeen>,
1104    /// Optional elapsed type
1105    pub elapsed: Option<u64>,
1106}
1107/// Deserialize bool from String with custom value mapping
1108fn zigbee1744130p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1109where
1110    D: Deserializer<'de>,
1111{
1112    match String::deserialize(deserializer)?.as_ref() {
1113        "ON" => Ok(true),
1114        "OFF" => Ok(false),
1115        other => Err(de::Error::invalid_value(
1116            Unexpected::Str(other),
1117            &"Value expected was either ON or OFF",
1118        )),
1119    }
1120}
1121
1122/// philips:1745130P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1745130P7.html)
1123///
1124/// 
1125#[cfg_attr(feature = "debug", derive(Debug))]
1126#[cfg_attr(feature = "clone", derive(Clone))]
1127#[derive(Deserialize)]
1128pub struct Zigbee1745130p7 {
1129    ///Brightness of this light
1130    pub brightness: f64,
1131    ///Color temperature of this light
1132    pub color_temp: f64,
1133    ///Color temperature after cold power on of this light
1134    pub color_temp_startup: f64,
1135    ///Link quality (signal strength)
1136    pub linkquality: f64,
1137    ///Controls the behavior when the device is powered on after power loss
1138    pub power_on_behavior: Zigbee1745130p7Poweronbehavior,
1139    ///Zigbee herdsman description: "On/off state of this light"
1140    ///The string values get converted into boolean with: ON = true and OFF = false
1141    #[serde(deserialize_with = "zigbee1745130p7_state_deserializer")]
1142    pub state: bool,
1143    /// Optional last_seen type, set as a global zigbee2mqtt setting
1144    pub last_seen: Option<LastSeen>,
1145    /// Optional elapsed type
1146    pub elapsed: Option<u64>,
1147}
1148/// Deserialize bool from String with custom value mapping
1149fn zigbee1745130p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1150where
1151    D: Deserializer<'de>,
1152{
1153    match String::deserialize(deserializer)?.as_ref() {
1154        "ON" => Ok(true),
1155        "OFF" => Ok(false),
1156        other => Err(de::Error::invalid_value(
1157            Unexpected::Str(other),
1158            &"Value expected was either ON or OFF",
1159        )),
1160    }
1161}
1162
1163/// philips:1745430P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1745430P7.html)
1164///
1165/// 
1166#[cfg_attr(feature = "debug", derive(Debug))]
1167#[cfg_attr(feature = "clone", derive(Clone))]
1168#[derive(Deserialize)]
1169pub struct Zigbee1745430p7 {
1170    ///Brightness of this light
1171    pub brightness: f64,
1172    ///Color temperature of this light
1173    pub color_temp: f64,
1174    ///Color temperature after cold power on of this light
1175    pub color_temp_startup: f64,
1176    ///Link quality (signal strength)
1177    pub linkquality: f64,
1178    ///Controls the behavior when the device is powered on after power loss
1179    pub power_on_behavior: Zigbee1745430p7Poweronbehavior,
1180    ///Zigbee herdsman description: "On/off state of this light"
1181    ///The string values get converted into boolean with: ON = true and OFF = false
1182    #[serde(deserialize_with = "zigbee1745430p7_state_deserializer")]
1183    pub state: bool,
1184    /// Optional last_seen type, set as a global zigbee2mqtt setting
1185    pub last_seen: Option<LastSeen>,
1186    /// Optional elapsed type
1187    pub elapsed: Option<u64>,
1188}
1189/// Deserialize bool from String with custom value mapping
1190fn zigbee1745430p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1191where
1192    D: Deserializer<'de>,
1193{
1194    match String::deserialize(deserializer)?.as_ref() {
1195        "ON" => Ok(true),
1196        "OFF" => Ok(false),
1197        other => Err(de::Error::invalid_value(
1198            Unexpected::Str(other),
1199            &"Value expected was either ON or OFF",
1200        )),
1201    }
1202}
1203
1204/// philips:1745530P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1745530P7.html)
1205///
1206/// 
1207#[cfg_attr(feature = "debug", derive(Debug))]
1208#[cfg_attr(feature = "clone", derive(Clone))]
1209#[derive(Deserialize)]
1210pub struct Zigbee1745530p7 {
1211    ///Brightness of this light
1212    pub brightness: f64,
1213    ///Color temperature of this light
1214    pub color_temp: f64,
1215    ///Color temperature after cold power on of this light
1216    pub color_temp_startup: f64,
1217    ///Link quality (signal strength)
1218    pub linkquality: f64,
1219    ///Controls the behavior when the device is powered on after power loss
1220    pub power_on_behavior: Zigbee1745530p7Poweronbehavior,
1221    ///Zigbee herdsman description: "On/off state of this light"
1222    ///The string values get converted into boolean with: ON = true and OFF = false
1223    #[serde(deserialize_with = "zigbee1745530p7_state_deserializer")]
1224    pub state: bool,
1225    /// Optional last_seen type, set as a global zigbee2mqtt setting
1226    pub last_seen: Option<LastSeen>,
1227    /// Optional elapsed type
1228    pub elapsed: Option<u64>,
1229}
1230/// Deserialize bool from String with custom value mapping
1231fn zigbee1745530p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1232where
1233    D: Deserializer<'de>,
1234{
1235    match String::deserialize(deserializer)?.as_ref() {
1236        "ON" => Ok(true),
1237        "OFF" => Ok(false),
1238        other => Err(de::Error::invalid_value(
1239            Unexpected::Str(other),
1240            &"Value expected was either ON or OFF",
1241        )),
1242    }
1243}
1244
1245/// philips:1745630P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1745630P7.html)
1246///
1247/// 
1248#[cfg_attr(feature = "debug", derive(Debug))]
1249#[cfg_attr(feature = "clone", derive(Clone))]
1250#[derive(Deserialize)]
1251pub struct Zigbee1745630p7 {
1252    ///Brightness of this light
1253    pub brightness: f64,
1254    ///Color temperature of this light
1255    pub color_temp: f64,
1256    ///Color temperature after cold power on of this light
1257    pub color_temp_startup: f64,
1258    ///Link quality (signal strength)
1259    pub linkquality: f64,
1260    ///Controls the behavior when the device is powered on after power loss
1261    pub power_on_behavior: Zigbee1745630p7Poweronbehavior,
1262    ///Zigbee herdsman description: "On/off state of this light"
1263    ///The string values get converted into boolean with: ON = true and OFF = false
1264    #[serde(deserialize_with = "zigbee1745630p7_state_deserializer")]
1265    pub state: bool,
1266    /// Optional last_seen type, set as a global zigbee2mqtt setting
1267    pub last_seen: Option<LastSeen>,
1268    /// Optional elapsed type
1269    pub elapsed: Option<u64>,
1270}
1271/// Deserialize bool from String with custom value mapping
1272fn zigbee1745630p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1273where
1274    D: Deserializer<'de>,
1275{
1276    match String::deserialize(deserializer)?.as_ref() {
1277        "ON" => Ok(true),
1278        "OFF" => Ok(false),
1279        other => Err(de::Error::invalid_value(
1280            Unexpected::Str(other),
1281            &"Value expected was either ON or OFF",
1282        )),
1283    }
1284}
1285
1286/// philips:1745730V7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1745730V7.html)
1287///
1288/// 
1289#[cfg_attr(feature = "debug", derive(Debug))]
1290#[cfg_attr(feature = "clone", derive(Clone))]
1291#[derive(Deserialize)]
1292pub struct Zigbee1745730v7 {
1293    ///Brightness of this light
1294    pub brightness: f64,
1295    ///Color temperature of this light
1296    pub color_temp: f64,
1297    ///Color temperature after cold power on of this light
1298    pub color_temp_startup: f64,
1299    ///Link quality (signal strength)
1300    pub linkquality: f64,
1301    ///Controls the behavior when the device is powered on after power loss
1302    pub power_on_behavior: Zigbee1745730v7Poweronbehavior,
1303    ///Zigbee herdsman description: "On/off state of this light"
1304    ///The string values get converted into boolean with: ON = true and OFF = false
1305    #[serde(deserialize_with = "zigbee1745730v7_state_deserializer")]
1306    pub state: bool,
1307    /// Optional last_seen type, set as a global zigbee2mqtt setting
1308    pub last_seen: Option<LastSeen>,
1309    /// Optional elapsed type
1310    pub elapsed: Option<u64>,
1311}
1312/// Deserialize bool from String with custom value mapping
1313fn zigbee1745730v7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1314where
1315    D: Deserializer<'de>,
1316{
1317    match String::deserialize(deserializer)?.as_ref() {
1318        "ON" => Ok(true),
1319        "OFF" => Ok(false),
1320        other => Err(de::Error::invalid_value(
1321            Unexpected::Str(other),
1322            &"Value expected was either ON or OFF",
1323        )),
1324    }
1325}
1326
1327/// philips:1745930P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1745930P7.html)
1328///
1329/// 
1330#[cfg_attr(feature = "debug", derive(Debug))]
1331#[cfg_attr(feature = "clone", derive(Clone))]
1332#[derive(Deserialize)]
1333pub struct Zigbee1745930p7 {
1334    ///Brightness of this light
1335    pub brightness: f64,
1336    ///Color temperature of this light
1337    pub color_temp: f64,
1338    ///Color temperature after cold power on of this light
1339    pub color_temp_startup: f64,
1340    ///Link quality (signal strength)
1341    pub linkquality: f64,
1342    ///Controls the behavior when the device is powered on after power loss
1343    pub power_on_behavior: Zigbee1745930p7Poweronbehavior,
1344    ///Zigbee herdsman description: "On/off state of this light"
1345    ///The string values get converted into boolean with: ON = true and OFF = false
1346    #[serde(deserialize_with = "zigbee1745930p7_state_deserializer")]
1347    pub state: bool,
1348    /// Optional last_seen type, set as a global zigbee2mqtt setting
1349    pub last_seen: Option<LastSeen>,
1350    /// Optional elapsed type
1351    pub elapsed: Option<u64>,
1352}
1353/// Deserialize bool from String with custom value mapping
1354fn zigbee1745930p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1355where
1356    D: Deserializer<'de>,
1357{
1358    match String::deserialize(deserializer)?.as_ref() {
1359        "ON" => Ok(true),
1360        "OFF" => Ok(false),
1361        other => Err(de::Error::invalid_value(
1362            Unexpected::Str(other),
1363            &"Value expected was either ON or OFF",
1364        )),
1365    }
1366}
1367
1368/// philips:1746130P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746130P7.html)
1369///
1370/// 
1371#[cfg_attr(feature = "debug", derive(Debug))]
1372#[cfg_attr(feature = "clone", derive(Clone))]
1373#[derive(Deserialize)]
1374pub struct Zigbee1746130p7 {
1375    ///Brightness of this light
1376    pub brightness: f64,
1377    ///Color temperature of this light
1378    pub color_temp: f64,
1379    ///Color temperature after cold power on of this light
1380    pub color_temp_startup: f64,
1381    ///Link quality (signal strength)
1382    pub linkquality: f64,
1383    ///Controls the behavior when the device is powered on after power loss
1384    pub power_on_behavior: Zigbee1746130p7Poweronbehavior,
1385    ///Zigbee herdsman description: "On/off state of this light"
1386    ///The string values get converted into boolean with: ON = true and OFF = false
1387    #[serde(deserialize_with = "zigbee1746130p7_state_deserializer")]
1388    pub state: bool,
1389    /// Optional last_seen type, set as a global zigbee2mqtt setting
1390    pub last_seen: Option<LastSeen>,
1391    /// Optional elapsed type
1392    pub elapsed: Option<u64>,
1393}
1394/// Deserialize bool from String with custom value mapping
1395fn zigbee1746130p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1396where
1397    D: Deserializer<'de>,
1398{
1399    match String::deserialize(deserializer)?.as_ref() {
1400        "ON" => Ok(true),
1401        "OFF" => Ok(false),
1402        other => Err(de::Error::invalid_value(
1403            Unexpected::Str(other),
1404            &"Value expected was either ON or OFF",
1405        )),
1406    }
1407}
1408
1409/// philips:1746230V7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746230V7.html)
1410///
1411/// 
1412#[cfg_attr(feature = "debug", derive(Debug))]
1413#[cfg_attr(feature = "clone", derive(Clone))]
1414#[derive(Deserialize)]
1415pub struct Zigbee1746230v7 {
1416    ///Brightness of this light
1417    pub brightness: f64,
1418    ///Color temperature of this light
1419    pub color_temp: f64,
1420    ///Color temperature after cold power on of this light
1421    pub color_temp_startup: f64,
1422    ///Link quality (signal strength)
1423    pub linkquality: f64,
1424    ///Controls the behavior when the device is powered on after power loss
1425    pub power_on_behavior: Zigbee1746230v7Poweronbehavior,
1426    ///Zigbee herdsman description: "On/off state of this light"
1427    ///The string values get converted into boolean with: ON = true and OFF = false
1428    #[serde(deserialize_with = "zigbee1746230v7_state_deserializer")]
1429    pub state: bool,
1430    /// Optional last_seen type, set as a global zigbee2mqtt setting
1431    pub last_seen: Option<LastSeen>,
1432    /// Optional elapsed type
1433    pub elapsed: Option<u64>,
1434}
1435/// Deserialize bool from String with custom value mapping
1436fn zigbee1746230v7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1437where
1438    D: Deserializer<'de>,
1439{
1440    match String::deserialize(deserializer)?.as_ref() {
1441        "ON" => Ok(true),
1442        "OFF" => Ok(false),
1443        other => Err(de::Error::invalid_value(
1444            Unexpected::Str(other),
1445            &"Value expected was either ON or OFF",
1446        )),
1447    }
1448}
1449
1450/// philips:1746330P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746330P7.html)
1451///
1452/// 
1453#[cfg_attr(feature = "debug", derive(Debug))]
1454#[cfg_attr(feature = "clone", derive(Clone))]
1455#[derive(Deserialize)]
1456pub struct Zigbee1746330p7 {
1457    ///Brightness of this light
1458    pub brightness: f64,
1459    ///Color temperature of this light
1460    pub color_temp: f64,
1461    ///Color temperature after cold power on of this light
1462    pub color_temp_startup: f64,
1463    ///Link quality (signal strength)
1464    pub linkquality: f64,
1465    ///Controls the behavior when the device is powered on after power loss
1466    pub power_on_behavior: Zigbee1746330p7Poweronbehavior,
1467    ///Zigbee herdsman description: "On/off state of this light"
1468    ///The string values get converted into boolean with: ON = true and OFF = false
1469    #[serde(deserialize_with = "zigbee1746330p7_state_deserializer")]
1470    pub state: bool,
1471    /// Optional last_seen type, set as a global zigbee2mqtt setting
1472    pub last_seen: Option<LastSeen>,
1473    /// Optional elapsed type
1474    pub elapsed: Option<u64>,
1475}
1476/// Deserialize bool from String with custom value mapping
1477fn zigbee1746330p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1478where
1479    D: Deserializer<'de>,
1480{
1481    match String::deserialize(deserializer)?.as_ref() {
1482        "ON" => Ok(true),
1483        "OFF" => Ok(false),
1484        other => Err(de::Error::invalid_value(
1485            Unexpected::Str(other),
1486            &"Value expected was either ON or OFF",
1487        )),
1488    }
1489}
1490
1491/// philips:1746430P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746430P7.html)
1492///
1493/// 
1494#[cfg_attr(feature = "debug", derive(Debug))]
1495#[cfg_attr(feature = "clone", derive(Clone))]
1496#[derive(Deserialize)]
1497pub struct Zigbee1746430p7 {
1498    ///Brightness of this light
1499    pub brightness: f64,
1500    ///Color temperature of this light
1501    pub color_temp: f64,
1502    ///Color temperature after cold power on of this light
1503    pub color_temp_startup: f64,
1504    ///Link quality (signal strength)
1505    pub linkquality: f64,
1506    ///Controls the behavior when the device is powered on after power loss
1507    pub power_on_behavior: Zigbee1746430p7Poweronbehavior,
1508    ///Zigbee herdsman description: "On/off state of this light"
1509    ///The string values get converted into boolean with: ON = true and OFF = false
1510    #[serde(deserialize_with = "zigbee1746430p7_state_deserializer")]
1511    pub state: bool,
1512    /// Optional last_seen type, set as a global zigbee2mqtt setting
1513    pub last_seen: Option<LastSeen>,
1514    /// Optional elapsed type
1515    pub elapsed: Option<u64>,
1516}
1517/// Deserialize bool from String with custom value mapping
1518fn zigbee1746430p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1519where
1520    D: Deserializer<'de>,
1521{
1522    match String::deserialize(deserializer)?.as_ref() {
1523        "ON" => Ok(true),
1524        "OFF" => Ok(false),
1525        other => Err(de::Error::invalid_value(
1526            Unexpected::Str(other),
1527            &"Value expected was either ON or OFF",
1528        )),
1529    }
1530}
1531
1532/// philips:1746447P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746447P7.html)
1533///
1534/// 
1535#[cfg_attr(feature = "debug", derive(Debug))]
1536#[cfg_attr(feature = "clone", derive(Clone))]
1537#[derive(Deserialize)]
1538pub struct Zigbee1746447p7 {
1539    ///Brightness of this light
1540    pub brightness: f64,
1541    ///Color temperature of this light
1542    pub color_temp: f64,
1543    ///Color temperature after cold power on of this light
1544    pub color_temp_startup: f64,
1545    ///Link quality (signal strength)
1546    pub linkquality: f64,
1547    ///Controls the behavior when the device is powered on after power loss
1548    pub power_on_behavior: Zigbee1746447p7Poweronbehavior,
1549    ///Zigbee herdsman description: "On/off state of this light"
1550    ///The string values get converted into boolean with: ON = true and OFF = false
1551    #[serde(deserialize_with = "zigbee1746447p7_state_deserializer")]
1552    pub state: bool,
1553    /// Optional last_seen type, set as a global zigbee2mqtt setting
1554    pub last_seen: Option<LastSeen>,
1555    /// Optional elapsed type
1556    pub elapsed: Option<u64>,
1557}
1558/// Deserialize bool from String with custom value mapping
1559fn zigbee1746447p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1560where
1561    D: Deserializer<'de>,
1562{
1563    match String::deserialize(deserializer)?.as_ref() {
1564        "ON" => Ok(true),
1565        "OFF" => Ok(false),
1566        other => Err(de::Error::invalid_value(
1567            Unexpected::Str(other),
1568            &"Value expected was either ON or OFF",
1569        )),
1570    }
1571}
1572
1573/// philips:1746530P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746530P7.html)
1574///
1575/// 
1576#[cfg_attr(feature = "debug", derive(Debug))]
1577#[cfg_attr(feature = "clone", derive(Clone))]
1578#[derive(Deserialize)]
1579pub struct Zigbee1746530p7 {
1580    ///Brightness of this light
1581    pub brightness: f64,
1582    ///Color temperature of this light
1583    pub color_temp: f64,
1584    ///Color temperature after cold power on of this light
1585    pub color_temp_startup: f64,
1586    ///Link quality (signal strength)
1587    pub linkquality: f64,
1588    ///Controls the behavior when the device is powered on after power loss
1589    pub power_on_behavior: Zigbee1746530p7Poweronbehavior,
1590    ///Zigbee herdsman description: "On/off state of this light"
1591    ///The string values get converted into boolean with: ON = true and OFF = false
1592    #[serde(deserialize_with = "zigbee1746530p7_state_deserializer")]
1593    pub state: bool,
1594    /// Optional last_seen type, set as a global zigbee2mqtt setting
1595    pub last_seen: Option<LastSeen>,
1596    /// Optional elapsed type
1597    pub elapsed: Option<u64>,
1598}
1599/// Deserialize bool from String with custom value mapping
1600fn zigbee1746530p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1601where
1602    D: Deserializer<'de>,
1603{
1604    match String::deserialize(deserializer)?.as_ref() {
1605        "ON" => Ok(true),
1606        "OFF" => Ok(false),
1607        other => Err(de::Error::invalid_value(
1608            Unexpected::Str(other),
1609            &"Value expected was either ON or OFF",
1610        )),
1611    }
1612}
1613
1614/// philips:1746547P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746547P7.html)
1615///
1616/// 
1617#[cfg_attr(feature = "debug", derive(Debug))]
1618#[cfg_attr(feature = "clone", derive(Clone))]
1619#[derive(Deserialize)]
1620pub struct Zigbee1746547p7 {
1621    ///Brightness of this light
1622    pub brightness: f64,
1623    ///Color temperature of this light
1624    pub color_temp: f64,
1625    ///Color temperature after cold power on of this light
1626    pub color_temp_startup: f64,
1627    ///Link quality (signal strength)
1628    pub linkquality: f64,
1629    ///Controls the behavior when the device is powered on after power loss
1630    pub power_on_behavior: Zigbee1746547p7Poweronbehavior,
1631    ///Zigbee herdsman description: "On/off state of this light"
1632    ///The string values get converted into boolean with: ON = true and OFF = false
1633    #[serde(deserialize_with = "zigbee1746547p7_state_deserializer")]
1634    pub state: bool,
1635    /// Optional last_seen type, set as a global zigbee2mqtt setting
1636    pub last_seen: Option<LastSeen>,
1637    /// Optional elapsed type
1638    pub elapsed: Option<u64>,
1639}
1640/// Deserialize bool from String with custom value mapping
1641fn zigbee1746547p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1642where
1643    D: Deserializer<'de>,
1644{
1645    match String::deserialize(deserializer)?.as_ref() {
1646        "ON" => Ok(true),
1647        "OFF" => Ok(false),
1648        other => Err(de::Error::invalid_value(
1649            Unexpected::Str(other),
1650            &"Value expected was either ON or OFF",
1651        )),
1652    }
1653}
1654
1655/// philips:1746630P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746630P7.html)
1656///
1657/// 
1658#[cfg_attr(feature = "debug", derive(Debug))]
1659#[cfg_attr(feature = "clone", derive(Clone))]
1660#[derive(Deserialize)]
1661pub struct Zigbee1746630p7 {
1662    ///Brightness of this light
1663    pub brightness: f64,
1664    ///Color temperature of this light
1665    pub color_temp: f64,
1666    ///Color temperature after cold power on of this light
1667    pub color_temp_startup: f64,
1668    ///Link quality (signal strength)
1669    pub linkquality: f64,
1670    ///Controls the behavior when the device is powered on after power loss
1671    pub power_on_behavior: Zigbee1746630p7Poweronbehavior,
1672    ///Zigbee herdsman description: "On/off state of this light"
1673    ///The string values get converted into boolean with: ON = true and OFF = false
1674    #[serde(deserialize_with = "zigbee1746630p7_state_deserializer")]
1675    pub state: bool,
1676    /// Optional last_seen type, set as a global zigbee2mqtt setting
1677    pub last_seen: Option<LastSeen>,
1678    /// Optional elapsed type
1679    pub elapsed: Option<u64>,
1680}
1681/// Deserialize bool from String with custom value mapping
1682fn zigbee1746630p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1683where
1684    D: Deserializer<'de>,
1685{
1686    match String::deserialize(deserializer)?.as_ref() {
1687        "ON" => Ok(true),
1688        "OFF" => Ok(false),
1689        other => Err(de::Error::invalid_value(
1690            Unexpected::Str(other),
1691            &"Value expected was either ON or OFF",
1692        )),
1693    }
1694}
1695
1696/// philips:1746630V7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746630V7.html)
1697///
1698/// 
1699#[cfg_attr(feature = "debug", derive(Debug))]
1700#[cfg_attr(feature = "clone", derive(Clone))]
1701#[derive(Deserialize)]
1702pub struct Zigbee1746630v7 {
1703    ///Brightness of this light
1704    pub brightness: f64,
1705    ///Color temperature of this light
1706    pub color_temp: f64,
1707    ///Color temperature after cold power on of this light
1708    pub color_temp_startup: f64,
1709    ///Link quality (signal strength)
1710    pub linkquality: f64,
1711    ///Controls the behavior when the device is powered on after power loss
1712    pub power_on_behavior: Zigbee1746630v7Poweronbehavior,
1713    ///Zigbee herdsman description: "On/off state of this light"
1714    ///The string values get converted into boolean with: ON = true and OFF = false
1715    #[serde(deserialize_with = "zigbee1746630v7_state_deserializer")]
1716    pub state: bool,
1717    /// Optional last_seen type, set as a global zigbee2mqtt setting
1718    pub last_seen: Option<LastSeen>,
1719    /// Optional elapsed type
1720    pub elapsed: Option<u64>,
1721}
1722/// Deserialize bool from String with custom value mapping
1723fn zigbee1746630v7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1724where
1725    D: Deserializer<'de>,
1726{
1727    match String::deserialize(deserializer)?.as_ref() {
1728        "ON" => Ok(true),
1729        "OFF" => Ok(false),
1730        other => Err(de::Error::invalid_value(
1731            Unexpected::Str(other),
1732            &"Value expected was either ON or OFF",
1733        )),
1734    }
1735}
1736
1737/// philips:1746730V7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/1746730V7.html)
1738///
1739/// 
1740#[cfg_attr(feature = "debug", derive(Debug))]
1741#[cfg_attr(feature = "clone", derive(Clone))]
1742#[derive(Deserialize)]
1743pub struct Zigbee1746730v7 {
1744    ///Brightness of this light
1745    pub brightness: f64,
1746    ///Color temperature of this light
1747    pub color_temp: f64,
1748    ///Color temperature after cold power on of this light
1749    pub color_temp_startup: f64,
1750    ///Link quality (signal strength)
1751    pub linkquality: f64,
1752    ///Controls the behavior when the device is powered on after power loss
1753    pub power_on_behavior: Zigbee1746730v7Poweronbehavior,
1754    ///Zigbee herdsman description: "On/off state of this light"
1755    ///The string values get converted into boolean with: ON = true and OFF = false
1756    #[serde(deserialize_with = "zigbee1746730v7_state_deserializer")]
1757    pub state: bool,
1758    /// Optional last_seen type, set as a global zigbee2mqtt setting
1759    pub last_seen: Option<LastSeen>,
1760    /// Optional elapsed type
1761    pub elapsed: Option<u64>,
1762}
1763/// Deserialize bool from String with custom value mapping
1764fn zigbee1746730v7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1765where
1766    D: Deserializer<'de>,
1767{
1768    match String::deserialize(deserializer)?.as_ref() {
1769        "ON" => Ok(true),
1770        "OFF" => Ok(false),
1771        other => Err(de::Error::invalid_value(
1772            Unexpected::Str(other),
1773            &"Value expected was either ON or OFF",
1774        )),
1775    }
1776}
1777
1778/// philips:3115331PH [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3115331PH.html)
1779///
1780/// 
1781#[cfg_attr(feature = "debug", derive(Debug))]
1782#[cfg_attr(feature = "clone", derive(Clone))]
1783#[derive(Deserialize)]
1784pub struct Zigbee3115331ph {
1785    ///Brightness of this light
1786    pub brightness: f64,
1787    ///Color temperature of this light
1788    pub color_temp: f64,
1789    ///Color temperature after cold power on of this light
1790    pub color_temp_startup: f64,
1791    ///Link quality (signal strength)
1792    pub linkquality: f64,
1793    ///Controls the behavior when the device is powered on after power loss
1794    pub power_on_behavior: Zigbee3115331phPoweronbehavior,
1795    ///Zigbee herdsman description: "On/off state of this light"
1796    ///The string values get converted into boolean with: ON = true and OFF = false
1797    #[serde(deserialize_with = "zigbee3115331ph_state_deserializer")]
1798    pub state: bool,
1799    /// Optional last_seen type, set as a global zigbee2mqtt setting
1800    pub last_seen: Option<LastSeen>,
1801    /// Optional elapsed type
1802    pub elapsed: Option<u64>,
1803}
1804/// Deserialize bool from String with custom value mapping
1805fn zigbee3115331ph_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1806where
1807    D: Deserializer<'de>,
1808{
1809    match String::deserialize(deserializer)?.as_ref() {
1810        "ON" => Ok(true),
1811        "OFF" => Ok(false),
1812        other => Err(de::Error::invalid_value(
1813            Unexpected::Str(other),
1814            &"Value expected was either ON or OFF",
1815        )),
1816    }
1817}
1818
1819/// philips:3216131P5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3216131P5.html)
1820///
1821/// 
1822#[cfg_attr(feature = "debug", derive(Debug))]
1823#[cfg_attr(feature = "clone", derive(Clone))]
1824#[derive(Deserialize)]
1825pub struct Zigbee3216131p5 {
1826    ///Brightness of this light
1827    pub brightness: f64,
1828    ///Color temperature of this light
1829    pub color_temp: f64,
1830    ///Color temperature after cold power on of this light
1831    pub color_temp_startup: f64,
1832    ///Link quality (signal strength)
1833    pub linkquality: f64,
1834    ///Controls the behavior when the device is powered on after power loss
1835    pub power_on_behavior: Zigbee3216131p5Poweronbehavior,
1836    ///Zigbee herdsman description: "On/off state of this light"
1837    ///The string values get converted into boolean with: ON = true and OFF = false
1838    #[serde(deserialize_with = "zigbee3216131p5_state_deserializer")]
1839    pub state: bool,
1840    /// Optional last_seen type, set as a global zigbee2mqtt setting
1841    pub last_seen: Option<LastSeen>,
1842    /// Optional elapsed type
1843    pub elapsed: Option<u64>,
1844}
1845/// Deserialize bool from String with custom value mapping
1846fn zigbee3216131p5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1847where
1848    D: Deserializer<'de>,
1849{
1850    match String::deserialize(deserializer)?.as_ref() {
1851        "ON" => Ok(true),
1852        "OFF" => Ok(false),
1853        other => Err(de::Error::invalid_value(
1854            Unexpected::Str(other),
1855            &"Value expected was either ON or OFF",
1856        )),
1857    }
1858}
1859
1860/// philips:3216131P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3216131P6.html)
1861///
1862/// 
1863#[cfg_attr(feature = "debug", derive(Debug))]
1864#[cfg_attr(feature = "clone", derive(Clone))]
1865#[derive(Deserialize)]
1866pub struct Zigbee3216131p6 {
1867    ///Brightness of this light
1868    pub brightness: f64,
1869    ///Color temperature of this light
1870    pub color_temp: f64,
1871    ///Color temperature after cold power on of this light
1872    pub color_temp_startup: f64,
1873    ///Link quality (signal strength)
1874    pub linkquality: f64,
1875    ///Controls the behavior when the device is powered on after power loss
1876    pub power_on_behavior: Zigbee3216131p6Poweronbehavior,
1877    ///Zigbee herdsman description: "On/off state of this light"
1878    ///The string values get converted into boolean with: ON = true and OFF = false
1879    #[serde(deserialize_with = "zigbee3216131p6_state_deserializer")]
1880    pub state: bool,
1881    /// Optional last_seen type, set as a global zigbee2mqtt setting
1882    pub last_seen: Option<LastSeen>,
1883    /// Optional elapsed type
1884    pub elapsed: Option<u64>,
1885}
1886/// Deserialize bool from String with custom value mapping
1887fn zigbee3216131p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1888where
1889    D: Deserializer<'de>,
1890{
1891    match String::deserialize(deserializer)?.as_ref() {
1892        "ON" => Ok(true),
1893        "OFF" => Ok(false),
1894        other => Err(de::Error::invalid_value(
1895            Unexpected::Str(other),
1896            &"Value expected was either ON or OFF",
1897        )),
1898    }
1899}
1900
1901/// philips:3216231P5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3216231P5.html)
1902///
1903/// 
1904#[cfg_attr(feature = "debug", derive(Debug))]
1905#[cfg_attr(feature = "clone", derive(Clone))]
1906#[derive(Deserialize)]
1907pub struct Zigbee3216231p5 {
1908    ///Brightness of this light
1909    pub brightness: f64,
1910    ///Color temperature of this light
1911    pub color_temp: f64,
1912    ///Color temperature after cold power on of this light
1913    pub color_temp_startup: f64,
1914    ///Link quality (signal strength)
1915    pub linkquality: f64,
1916    ///Controls the behavior when the device is powered on after power loss
1917    pub power_on_behavior: Zigbee3216231p5Poweronbehavior,
1918    ///Zigbee herdsman description: "On/off state of this light"
1919    ///The string values get converted into boolean with: ON = true and OFF = false
1920    #[serde(deserialize_with = "zigbee3216231p5_state_deserializer")]
1921    pub state: bool,
1922    /// Optional last_seen type, set as a global zigbee2mqtt setting
1923    pub last_seen: Option<LastSeen>,
1924    /// Optional elapsed type
1925    pub elapsed: Option<u64>,
1926}
1927/// Deserialize bool from String with custom value mapping
1928fn zigbee3216231p5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1929where
1930    D: Deserializer<'de>,
1931{
1932    match String::deserialize(deserializer)?.as_ref() {
1933        "ON" => Ok(true),
1934        "OFF" => Ok(false),
1935        other => Err(de::Error::invalid_value(
1936            Unexpected::Str(other),
1937            &"Value expected was either ON or OFF",
1938        )),
1939    }
1940}
1941
1942/// philips:3216231P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3216231P6.html)
1943///
1944/// 
1945#[cfg_attr(feature = "debug", derive(Debug))]
1946#[cfg_attr(feature = "clone", derive(Clone))]
1947#[derive(Deserialize)]
1948pub struct Zigbee3216231p6 {
1949    ///Brightness of this light
1950    pub brightness: f64,
1951    ///Color temperature of this light
1952    pub color_temp: f64,
1953    ///Color temperature after cold power on of this light
1954    pub color_temp_startup: f64,
1955    ///Link quality (signal strength)
1956    pub linkquality: f64,
1957    ///Controls the behavior when the device is powered on after power loss
1958    pub power_on_behavior: Zigbee3216231p6Poweronbehavior,
1959    ///Zigbee herdsman description: "On/off state of this light"
1960    ///The string values get converted into boolean with: ON = true and OFF = false
1961    #[serde(deserialize_with = "zigbee3216231p6_state_deserializer")]
1962    pub state: bool,
1963    /// Optional last_seen type, set as a global zigbee2mqtt setting
1964    pub last_seen: Option<LastSeen>,
1965    /// Optional elapsed type
1966    pub elapsed: Option<u64>,
1967}
1968/// Deserialize bool from String with custom value mapping
1969fn zigbee3216231p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
1970where
1971    D: Deserializer<'de>,
1972{
1973    match String::deserialize(deserializer)?.as_ref() {
1974        "ON" => Ok(true),
1975        "OFF" => Ok(false),
1976        other => Err(de::Error::invalid_value(
1977            Unexpected::Str(other),
1978            &"Value expected was either ON or OFF",
1979        )),
1980    }
1981}
1982
1983/// philips:3216331P5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3216331P5.html)
1984///
1985/// 
1986#[cfg_attr(feature = "debug", derive(Debug))]
1987#[cfg_attr(feature = "clone", derive(Clone))]
1988#[derive(Deserialize)]
1989pub struct Zigbee3216331p5 {
1990    ///Brightness of this light
1991    pub brightness: f64,
1992    ///Color temperature of this light
1993    pub color_temp: f64,
1994    ///Color temperature after cold power on of this light
1995    pub color_temp_startup: f64,
1996    ///Link quality (signal strength)
1997    pub linkquality: f64,
1998    ///Controls the behavior when the device is powered on after power loss
1999    pub power_on_behavior: Zigbee3216331p5Poweronbehavior,
2000    ///Zigbee herdsman description: "On/off state of this light"
2001    ///The string values get converted into boolean with: ON = true and OFF = false
2002    #[serde(deserialize_with = "zigbee3216331p5_state_deserializer")]
2003    pub state: bool,
2004    /// Optional last_seen type, set as a global zigbee2mqtt setting
2005    pub last_seen: Option<LastSeen>,
2006    /// Optional elapsed type
2007    pub elapsed: Option<u64>,
2008}
2009/// Deserialize bool from String with custom value mapping
2010fn zigbee3216331p5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2011where
2012    D: Deserializer<'de>,
2013{
2014    match String::deserialize(deserializer)?.as_ref() {
2015        "ON" => Ok(true),
2016        "OFF" => Ok(false),
2017        other => Err(de::Error::invalid_value(
2018            Unexpected::Str(other),
2019            &"Value expected was either ON or OFF",
2020        )),
2021    }
2022}
2023
2024/// philips:3216331P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3216331P6.html)
2025///
2026/// 
2027#[cfg_attr(feature = "debug", derive(Debug))]
2028#[cfg_attr(feature = "clone", derive(Clone))]
2029#[derive(Deserialize)]
2030pub struct Zigbee3216331p6 {
2031    ///Brightness of this light
2032    pub brightness: f64,
2033    ///Color temperature of this light
2034    pub color_temp: f64,
2035    ///Color temperature after cold power on of this light
2036    pub color_temp_startup: f64,
2037    ///Link quality (signal strength)
2038    pub linkquality: f64,
2039    ///Controls the behavior when the device is powered on after power loss
2040    pub power_on_behavior: Zigbee3216331p6Poweronbehavior,
2041    ///Zigbee herdsman description: "On/off state of this light"
2042    ///The string values get converted into boolean with: ON = true and OFF = false
2043    #[serde(deserialize_with = "zigbee3216331p6_state_deserializer")]
2044    pub state: bool,
2045    /// Optional last_seen type, set as a global zigbee2mqtt setting
2046    pub last_seen: Option<LastSeen>,
2047    /// Optional elapsed type
2048    pub elapsed: Option<u64>,
2049}
2050/// Deserialize bool from String with custom value mapping
2051fn zigbee3216331p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2052where
2053    D: Deserializer<'de>,
2054{
2055    match String::deserialize(deserializer)?.as_ref() {
2056        "ON" => Ok(true),
2057        "OFF" => Ok(false),
2058        other => Err(de::Error::invalid_value(
2059            Unexpected::Str(other),
2060            &"Value expected was either ON or OFF",
2061        )),
2062    }
2063}
2064
2065/// philips:3216431P5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3216431P5.html)
2066///
2067/// 
2068#[cfg_attr(feature = "debug", derive(Debug))]
2069#[cfg_attr(feature = "clone", derive(Clone))]
2070#[derive(Deserialize)]
2071pub struct Zigbee3216431p5 {
2072    ///Brightness of this light
2073    pub brightness: f64,
2074    ///Color temperature of this light
2075    pub color_temp: f64,
2076    ///Color temperature after cold power on of this light
2077    pub color_temp_startup: f64,
2078    ///Link quality (signal strength)
2079    pub linkquality: f64,
2080    ///Controls the behavior when the device is powered on after power loss
2081    pub power_on_behavior: Zigbee3216431p5Poweronbehavior,
2082    ///Zigbee herdsman description: "On/off state of this light"
2083    ///The string values get converted into boolean with: ON = true and OFF = false
2084    #[serde(deserialize_with = "zigbee3216431p5_state_deserializer")]
2085    pub state: bool,
2086    /// Optional last_seen type, set as a global zigbee2mqtt setting
2087    pub last_seen: Option<LastSeen>,
2088    /// Optional elapsed type
2089    pub elapsed: Option<u64>,
2090}
2091/// Deserialize bool from String with custom value mapping
2092fn zigbee3216431p5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2093where
2094    D: Deserializer<'de>,
2095{
2096    match String::deserialize(deserializer)?.as_ref() {
2097        "ON" => Ok(true),
2098        "OFF" => Ok(false),
2099        other => Err(de::Error::invalid_value(
2100            Unexpected::Str(other),
2101            &"Value expected was either ON or OFF",
2102        )),
2103    }
2104}
2105
2106/// philips:3216431P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3216431P6.html)
2107///
2108/// 
2109#[cfg_attr(feature = "debug", derive(Debug))]
2110#[cfg_attr(feature = "clone", derive(Clone))]
2111#[derive(Deserialize)]
2112pub struct Zigbee3216431p6 {
2113    ///Brightness of this light
2114    pub brightness: f64,
2115    ///Color temperature of this light
2116    pub color_temp: f64,
2117    ///Color temperature after cold power on of this light
2118    pub color_temp_startup: f64,
2119    ///Link quality (signal strength)
2120    pub linkquality: f64,
2121    ///Controls the behavior when the device is powered on after power loss
2122    pub power_on_behavior: Zigbee3216431p6Poweronbehavior,
2123    ///Zigbee herdsman description: "On/off state of this light"
2124    ///The string values get converted into boolean with: ON = true and OFF = false
2125    #[serde(deserialize_with = "zigbee3216431p6_state_deserializer")]
2126    pub state: bool,
2127    /// Optional last_seen type, set as a global zigbee2mqtt setting
2128    pub last_seen: Option<LastSeen>,
2129    /// Optional elapsed type
2130    pub elapsed: Option<u64>,
2131}
2132/// Deserialize bool from String with custom value mapping
2133fn zigbee3216431p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2134where
2135    D: Deserializer<'de>,
2136{
2137    match String::deserialize(deserializer)?.as_ref() {
2138        "ON" => Ok(true),
2139        "OFF" => Ok(false),
2140        other => Err(de::Error::invalid_value(
2141            Unexpected::Str(other),
2142            &"Value expected was either ON or OFF",
2143        )),
2144    }
2145}
2146
2147/// philips:324131092621 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/324131092621.html)
2148///
2149/// 
2150#[cfg_attr(feature = "debug", derive(Debug))]
2151#[cfg_attr(feature = "clone", derive(Clone))]
2152#[derive(Deserialize)]
2153pub struct Zigbee324131092621 {
2154    ///Triggered action (e.g. a button click)
2155    pub action: Zigbee324131092621Action,
2156    pub action_duration: f64,
2157    ///Remaining battery in %, can take up to 24 hours before reported.
2158    pub battery: f64,
2159    ///Link quality (signal strength)
2160    pub linkquality: f64,
2161    /// Optional last_seen type, set as a global zigbee2mqtt setting
2162    pub last_seen: Option<LastSeen>,
2163    /// Optional elapsed type
2164    pub elapsed: Option<u64>,
2165}/// philips:3261030P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3261030P6.html)
2166///
2167/// 
2168#[cfg_attr(feature = "debug", derive(Debug))]
2169#[cfg_attr(feature = "clone", derive(Clone))]
2170#[derive(Deserialize)]
2171pub struct Zigbee3261030p6 {
2172    ///Brightness of this light
2173    pub brightness: f64,
2174    ///Color temperature of this light
2175    pub color_temp: f64,
2176    ///Color temperature after cold power on of this light
2177    pub color_temp_startup: f64,
2178    ///Link quality (signal strength)
2179    pub linkquality: f64,
2180    ///Controls the behavior when the device is powered on after power loss
2181    pub power_on_behavior: Zigbee3261030p6Poweronbehavior,
2182    ///Zigbee herdsman description: "On/off state of this light"
2183    ///The string values get converted into boolean with: ON = true and OFF = false
2184    #[serde(deserialize_with = "zigbee3261030p6_state_deserializer")]
2185    pub state: bool,
2186    /// Optional last_seen type, set as a global zigbee2mqtt setting
2187    pub last_seen: Option<LastSeen>,
2188    /// Optional elapsed type
2189    pub elapsed: Option<u64>,
2190}
2191/// Deserialize bool from String with custom value mapping
2192fn zigbee3261030p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2193where
2194    D: Deserializer<'de>,
2195{
2196    match String::deserialize(deserializer)?.as_ref() {
2197        "ON" => Ok(true),
2198        "OFF" => Ok(false),
2199        other => Err(de::Error::invalid_value(
2200            Unexpected::Str(other),
2201            &"Value expected was either ON or OFF",
2202        )),
2203    }
2204}
2205
2206/// philips:3261030P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3261030P7.html)
2207///
2208/// 
2209#[cfg_attr(feature = "debug", derive(Debug))]
2210#[cfg_attr(feature = "clone", derive(Clone))]
2211#[derive(Deserialize)]
2212pub struct Zigbee3261030p7 {
2213    ///Brightness of this light
2214    pub brightness: f64,
2215    ///Color temperature of this light
2216    pub color_temp: f64,
2217    ///Color temperature after cold power on of this light
2218    pub color_temp_startup: f64,
2219    ///Link quality (signal strength)
2220    pub linkquality: f64,
2221    ///Controls the behavior when the device is powered on after power loss
2222    pub power_on_behavior: Zigbee3261030p7Poweronbehavior,
2223    ///Zigbee herdsman description: "On/off state of this light"
2224    ///The string values get converted into boolean with: ON = true and OFF = false
2225    #[serde(deserialize_with = "zigbee3261030p7_state_deserializer")]
2226    pub state: bool,
2227    /// Optional last_seen type, set as a global zigbee2mqtt setting
2228    pub last_seen: Option<LastSeen>,
2229    /// Optional elapsed type
2230    pub elapsed: Option<u64>,
2231}
2232/// Deserialize bool from String with custom value mapping
2233fn zigbee3261030p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2234where
2235    D: Deserializer<'de>,
2236{
2237    match String::deserialize(deserializer)?.as_ref() {
2238        "ON" => Ok(true),
2239        "OFF" => Ok(false),
2240        other => Err(de::Error::invalid_value(
2241            Unexpected::Str(other),
2242            &"Value expected was either ON or OFF",
2243        )),
2244    }
2245}
2246
2247/// philips:3261031P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3261031P6.html)
2248///
2249/// 
2250#[cfg_attr(feature = "debug", derive(Debug))]
2251#[cfg_attr(feature = "clone", derive(Clone))]
2252#[derive(Deserialize)]
2253pub struct Zigbee3261031p6 {
2254    ///Brightness of this light
2255    pub brightness: f64,
2256    ///Color temperature of this light
2257    pub color_temp: f64,
2258    ///Color temperature after cold power on of this light
2259    pub color_temp_startup: f64,
2260    ///Link quality (signal strength)
2261    pub linkquality: f64,
2262    ///Controls the behavior when the device is powered on after power loss
2263    pub power_on_behavior: Zigbee3261031p6Poweronbehavior,
2264    ///Zigbee herdsman description: "On/off state of this light"
2265    ///The string values get converted into boolean with: ON = true and OFF = false
2266    #[serde(deserialize_with = "zigbee3261031p6_state_deserializer")]
2267    pub state: bool,
2268    /// Optional last_seen type, set as a global zigbee2mqtt setting
2269    pub last_seen: Option<LastSeen>,
2270    /// Optional elapsed type
2271    pub elapsed: Option<u64>,
2272}
2273/// Deserialize bool from String with custom value mapping
2274fn zigbee3261031p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2275where
2276    D: Deserializer<'de>,
2277{
2278    match String::deserialize(deserializer)?.as_ref() {
2279        "ON" => Ok(true),
2280        "OFF" => Ok(false),
2281        other => Err(de::Error::invalid_value(
2282            Unexpected::Str(other),
2283            &"Value expected was either ON or OFF",
2284        )),
2285    }
2286}
2287
2288/// philips:3261048P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3261048P6.html)
2289///
2290/// 
2291#[cfg_attr(feature = "debug", derive(Debug))]
2292#[cfg_attr(feature = "clone", derive(Clone))]
2293#[derive(Deserialize)]
2294pub struct Zigbee3261048p6 {
2295    ///Brightness of this light
2296    pub brightness: f64,
2297    ///Color temperature of this light
2298    pub color_temp: f64,
2299    ///Color temperature after cold power on of this light
2300    pub color_temp_startup: f64,
2301    ///Link quality (signal strength)
2302    pub linkquality: f64,
2303    ///Controls the behavior when the device is powered on after power loss
2304    pub power_on_behavior: Zigbee3261048p6Poweronbehavior,
2305    ///Zigbee herdsman description: "On/off state of this light"
2306    ///The string values get converted into boolean with: ON = true and OFF = false
2307    #[serde(deserialize_with = "zigbee3261048p6_state_deserializer")]
2308    pub state: bool,
2309    /// Optional last_seen type, set as a global zigbee2mqtt setting
2310    pub last_seen: Option<LastSeen>,
2311    /// Optional elapsed type
2312    pub elapsed: Option<u64>,
2313}
2314/// Deserialize bool from String with custom value mapping
2315fn zigbee3261048p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2316where
2317    D: Deserializer<'de>,
2318{
2319    match String::deserialize(deserializer)?.as_ref() {
2320        "ON" => Ok(true),
2321        "OFF" => Ok(false),
2322        other => Err(de::Error::invalid_value(
2323            Unexpected::Str(other),
2324            &"Value expected was either ON or OFF",
2325        )),
2326    }
2327}
2328
2329/// philips:3261330P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3261330P6.html)
2330///
2331/// 
2332#[cfg_attr(feature = "debug", derive(Debug))]
2333#[cfg_attr(feature = "clone", derive(Clone))]
2334#[derive(Deserialize)]
2335pub struct Zigbee3261330p6 {
2336    ///Brightness of this light
2337    pub brightness: f64,
2338    ///Color temperature of this light
2339    pub color_temp: f64,
2340    ///Color temperature after cold power on of this light
2341    pub color_temp_startup: f64,
2342    ///Link quality (signal strength)
2343    pub linkquality: f64,
2344    ///Controls the behavior when the device is powered on after power loss
2345    pub power_on_behavior: Zigbee3261330p6Poweronbehavior,
2346    ///Zigbee herdsman description: "On/off state of this light"
2347    ///The string values get converted into boolean with: ON = true and OFF = false
2348    #[serde(deserialize_with = "zigbee3261330p6_state_deserializer")]
2349    pub state: bool,
2350    /// Optional last_seen type, set as a global zigbee2mqtt setting
2351    pub last_seen: Option<LastSeen>,
2352    /// Optional elapsed type
2353    pub elapsed: Option<u64>,
2354}
2355/// Deserialize bool from String with custom value mapping
2356fn zigbee3261330p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2357where
2358    D: Deserializer<'de>,
2359{
2360    match String::deserialize(deserializer)?.as_ref() {
2361        "ON" => Ok(true),
2362        "OFF" => Ok(false),
2363        other => Err(de::Error::invalid_value(
2364            Unexpected::Str(other),
2365            &"Value expected was either ON or OFF",
2366        )),
2367    }
2368}
2369
2370/// philips:3261331P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3261331P6.html)
2371///
2372/// 
2373#[cfg_attr(feature = "debug", derive(Debug))]
2374#[cfg_attr(feature = "clone", derive(Clone))]
2375#[derive(Deserialize)]
2376pub struct Zigbee3261331p6 {
2377    ///Brightness of this light
2378    pub brightness: f64,
2379    ///Color temperature of this light
2380    pub color_temp: f64,
2381    ///Color temperature after cold power on of this light
2382    pub color_temp_startup: f64,
2383    ///Link quality (signal strength)
2384    pub linkquality: f64,
2385    ///Controls the behavior when the device is powered on after power loss
2386    pub power_on_behavior: Zigbee3261331p6Poweronbehavior,
2387    ///Zigbee herdsman description: "On/off state of this light"
2388    ///The string values get converted into boolean with: ON = true and OFF = false
2389    #[serde(deserialize_with = "zigbee3261331p6_state_deserializer")]
2390    pub state: bool,
2391    /// Optional last_seen type, set as a global zigbee2mqtt setting
2392    pub last_seen: Option<LastSeen>,
2393    /// Optional elapsed type
2394    pub elapsed: Option<u64>,
2395}
2396/// Deserialize bool from String with custom value mapping
2397fn zigbee3261331p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2398where
2399    D: Deserializer<'de>,
2400{
2401    match String::deserialize(deserializer)?.as_ref() {
2402        "ON" => Ok(true),
2403        "OFF" => Ok(false),
2404        other => Err(de::Error::invalid_value(
2405            Unexpected::Str(other),
2406            &"Value expected was either ON or OFF",
2407        )),
2408    }
2409}
2410
2411/// philips:3261331P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3261331P7.html)
2412///
2413/// 
2414#[cfg_attr(feature = "debug", derive(Debug))]
2415#[cfg_attr(feature = "clone", derive(Clone))]
2416#[derive(Deserialize)]
2417pub struct Zigbee3261331p7 {
2418    ///Brightness of this light
2419    pub brightness: f64,
2420    ///Color temperature of this light
2421    pub color_temp: f64,
2422    ///Color temperature after cold power on of this light
2423    pub color_temp_startup: f64,
2424    ///Link quality (signal strength)
2425    pub linkquality: f64,
2426    ///Controls the behavior when the device is powered on after power loss
2427    pub power_on_behavior: Zigbee3261331p7Poweronbehavior,
2428    ///Zigbee herdsman description: "On/off state of this light"
2429    ///The string values get converted into boolean with: ON = true and OFF = false
2430    #[serde(deserialize_with = "zigbee3261331p7_state_deserializer")]
2431    pub state: bool,
2432    /// Optional last_seen type, set as a global zigbee2mqtt setting
2433    pub last_seen: Option<LastSeen>,
2434    /// Optional elapsed type
2435    pub elapsed: Option<u64>,
2436}
2437/// Deserialize bool from String with custom value mapping
2438fn zigbee3261331p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2439where
2440    D: Deserializer<'de>,
2441{
2442    match String::deserialize(deserializer)?.as_ref() {
2443        "ON" => Ok(true),
2444        "OFF" => Ok(false),
2445        other => Err(de::Error::invalid_value(
2446            Unexpected::Str(other),
2447            &"Value expected was either ON or OFF",
2448        )),
2449    }
2450}
2451
2452/// philips:3261348P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3261348P6.html)
2453///
2454/// 
2455#[cfg_attr(feature = "debug", derive(Debug))]
2456#[cfg_attr(feature = "clone", derive(Clone))]
2457#[derive(Deserialize)]
2458pub struct Zigbee3261348p6 {
2459    ///Brightness of this light
2460    pub brightness: f64,
2461    ///Color temperature of this light
2462    pub color_temp: f64,
2463    ///Color temperature after cold power on of this light
2464    pub color_temp_startup: f64,
2465    ///Link quality (signal strength)
2466    pub linkquality: f64,
2467    ///Controls the behavior when the device is powered on after power loss
2468    pub power_on_behavior: Zigbee3261348p6Poweronbehavior,
2469    ///Zigbee herdsman description: "On/off state of this light"
2470    ///The string values get converted into boolean with: ON = true and OFF = false
2471    #[serde(deserialize_with = "zigbee3261348p6_state_deserializer")]
2472    pub state: bool,
2473    /// Optional last_seen type, set as a global zigbee2mqtt setting
2474    pub last_seen: Option<LastSeen>,
2475    /// Optional elapsed type
2476    pub elapsed: Option<u64>,
2477}
2478/// Deserialize bool from String with custom value mapping
2479fn zigbee3261348p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2480where
2481    D: Deserializer<'de>,
2482{
2483    match String::deserialize(deserializer)?.as_ref() {
2484        "ON" => Ok(true),
2485        "OFF" => Ok(false),
2486        other => Err(de::Error::invalid_value(
2487            Unexpected::Str(other),
2488            &"Value expected was either ON or OFF",
2489        )),
2490    }
2491}
2492
2493/// philips:3306431P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3306431P7.html)
2494///
2495/// 
2496#[cfg_attr(feature = "debug", derive(Debug))]
2497#[cfg_attr(feature = "clone", derive(Clone))]
2498#[derive(Deserialize)]
2499pub struct Zigbee3306431p7 {
2500    ///Brightness of this light
2501    pub brightness: f64,
2502    ///Color temperature of this light
2503    pub color_temp: f64,
2504    ///Color temperature after cold power on of this light
2505    pub color_temp_startup: f64,
2506    ///Link quality (signal strength)
2507    pub linkquality: f64,
2508    ///Controls the behavior when the device is powered on after power loss
2509    pub power_on_behavior: Zigbee3306431p7Poweronbehavior,
2510    ///Zigbee herdsman description: "On/off state of this light"
2511    ///The string values get converted into boolean with: ON = true and OFF = false
2512    #[serde(deserialize_with = "zigbee3306431p7_state_deserializer")]
2513    pub state: bool,
2514    /// Optional last_seen type, set as a global zigbee2mqtt setting
2515    pub last_seen: Option<LastSeen>,
2516    /// Optional elapsed type
2517    pub elapsed: Option<u64>,
2518}
2519/// Deserialize bool from String with custom value mapping
2520fn zigbee3306431p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2521where
2522    D: Deserializer<'de>,
2523{
2524    match String::deserialize(deserializer)?.as_ref() {
2525        "ON" => Ok(true),
2526        "OFF" => Ok(false),
2527        other => Err(de::Error::invalid_value(
2528            Unexpected::Str(other),
2529            &"Value expected was either ON or OFF",
2530        )),
2531    }
2532}
2533
2534/// philips:33850000 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/33850000.html)
2535///
2536/// 
2537#[cfg_attr(feature = "debug", derive(Debug))]
2538#[cfg_attr(feature = "clone", derive(Clone))]
2539#[derive(Deserialize)]
2540pub struct Zigbee33850000 {
2541    ///Brightness of this light
2542    pub brightness: f64,
2543    ///Color temperature of this light
2544    pub color_temp: f64,
2545    ///Color temperature after cold power on of this light
2546    pub color_temp_startup: f64,
2547    ///Link quality (signal strength)
2548    pub linkquality: f64,
2549    ///Controls the behavior when the device is powered on after power loss
2550    pub power_on_behavior: Zigbee33850000Poweronbehavior,
2551    ///Zigbee herdsman description: "On/off state of this light"
2552    ///The string values get converted into boolean with: ON = true and OFF = false
2553    #[serde(deserialize_with = "zigbee33850000_state_deserializer")]
2554    pub state: bool,
2555    /// Optional last_seen type, set as a global zigbee2mqtt setting
2556    pub last_seen: Option<LastSeen>,
2557    /// Optional elapsed type
2558    pub elapsed: Option<u64>,
2559}
2560/// Deserialize bool from String with custom value mapping
2561fn zigbee33850000_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2562where
2563    D: Deserializer<'de>,
2564{
2565    match String::deserialize(deserializer)?.as_ref() {
2566        "ON" => Ok(true),
2567        "OFF" => Ok(false),
2568        other => Err(de::Error::invalid_value(
2569            Unexpected::Str(other),
2570            &"Value expected was either ON or OFF",
2571        )),
2572    }
2573}
2574
2575/// philips:3402831P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3402831P7.html)
2576///
2577/// 
2578#[cfg_attr(feature = "debug", derive(Debug))]
2579#[cfg_attr(feature = "clone", derive(Clone))]
2580#[derive(Deserialize)]
2581pub struct Zigbee3402831p7 {
2582    ///Brightness of this light
2583    pub brightness: f64,
2584    ///Color temperature of this light
2585    pub color_temp: f64,
2586    ///Color temperature after cold power on of this light
2587    pub color_temp_startup: f64,
2588    ///Link quality (signal strength)
2589    pub linkquality: f64,
2590    ///Controls the behavior when the device is powered on after power loss
2591    pub power_on_behavior: Zigbee3402831p7Poweronbehavior,
2592    ///Zigbee herdsman description: "On/off state of this light"
2593    ///The string values get converted into boolean with: ON = true and OFF = false
2594    #[serde(deserialize_with = "zigbee3402831p7_state_deserializer")]
2595    pub state: bool,
2596    /// Optional last_seen type, set as a global zigbee2mqtt setting
2597    pub last_seen: Option<LastSeen>,
2598    /// Optional elapsed type
2599    pub elapsed: Option<u64>,
2600}
2601/// Deserialize bool from String with custom value mapping
2602fn zigbee3402831p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2603where
2604    D: Deserializer<'de>,
2605{
2606    match String::deserialize(deserializer)?.as_ref() {
2607        "ON" => Ok(true),
2608        "OFF" => Ok(false),
2609        other => Err(de::Error::invalid_value(
2610            Unexpected::Str(other),
2611            &"Value expected was either ON or OFF",
2612        )),
2613    }
2614}
2615
2616/// philips:3417511P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3417511P9.html)
2617///
2618/// 
2619#[cfg_attr(feature = "debug", derive(Debug))]
2620#[cfg_attr(feature = "clone", derive(Clone))]
2621#[derive(Deserialize)]
2622pub struct Zigbee3417511p9 {
2623    ///Brightness of this light
2624    pub brightness: f64,
2625    ///Color temperature of this light
2626    pub color_temp: f64,
2627    ///Color temperature after cold power on of this light
2628    pub color_temp_startup: f64,
2629    ///Link quality (signal strength)
2630    pub linkquality: f64,
2631    ///Controls the behavior when the device is powered on after power loss
2632    pub power_on_behavior: Zigbee3417511p9Poweronbehavior,
2633    ///Zigbee herdsman description: "On/off state of this light"
2634    ///The string values get converted into boolean with: ON = true and OFF = false
2635    #[serde(deserialize_with = "zigbee3417511p9_state_deserializer")]
2636    pub state: bool,
2637    /// Optional last_seen type, set as a global zigbee2mqtt setting
2638    pub last_seen: Option<LastSeen>,
2639    /// Optional elapsed type
2640    pub elapsed: Option<u64>,
2641}
2642/// Deserialize bool from String with custom value mapping
2643fn zigbee3417511p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2644where
2645    D: Deserializer<'de>,
2646{
2647    match String::deserialize(deserializer)?.as_ref() {
2648        "ON" => Ok(true),
2649        "OFF" => Ok(false),
2650        other => Err(de::Error::invalid_value(
2651            Unexpected::Str(other),
2652            &"Value expected was either ON or OFF",
2653        )),
2654    }
2655}
2656
2657/// philips:3417711P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3417711P6.html)
2658///
2659/// 
2660#[cfg_attr(feature = "debug", derive(Debug))]
2661#[cfg_attr(feature = "clone", derive(Clone))]
2662#[derive(Deserialize)]
2663pub struct Zigbee3417711p6 {
2664    ///Brightness of this light
2665    pub brightness: f64,
2666    ///Color temperature of this light
2667    pub color_temp: f64,
2668    ///Color temperature after cold power on of this light
2669    pub color_temp_startup: f64,
2670    ///Link quality (signal strength)
2671    pub linkquality: f64,
2672    ///Controls the behavior when the device is powered on after power loss
2673    pub power_on_behavior: Zigbee3417711p6Poweronbehavior,
2674    ///Zigbee herdsman description: "On/off state of this light"
2675    ///The string values get converted into boolean with: ON = true and OFF = false
2676    #[serde(deserialize_with = "zigbee3417711p6_state_deserializer")]
2677    pub state: bool,
2678    /// Optional last_seen type, set as a global zigbee2mqtt setting
2679    pub last_seen: Option<LastSeen>,
2680    /// Optional elapsed type
2681    pub elapsed: Option<u64>,
2682}
2683/// Deserialize bool from String with custom value mapping
2684fn zigbee3417711p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2685where
2686    D: Deserializer<'de>,
2687{
2688    match String::deserialize(deserializer)?.as_ref() {
2689        "ON" => Ok(true),
2690        "OFF" => Ok(false),
2691        other => Err(de::Error::invalid_value(
2692            Unexpected::Str(other),
2693            &"Value expected was either ON or OFF",
2694        )),
2695    }
2696}
2697
2698/// philips:3417831P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3417831P6.html)
2699///
2700/// 
2701#[cfg_attr(feature = "debug", derive(Debug))]
2702#[cfg_attr(feature = "clone", derive(Clone))]
2703#[derive(Deserialize)]
2704pub struct Zigbee3417831p6 {
2705    ///Brightness of this light
2706    pub brightness: f64,
2707    ///Color temperature of this light
2708    pub color_temp: f64,
2709    ///Color temperature after cold power on of this light
2710    pub color_temp_startup: f64,
2711    ///Link quality (signal strength)
2712    pub linkquality: f64,
2713    ///Controls the behavior when the device is powered on after power loss
2714    pub power_on_behavior: Zigbee3417831p6Poweronbehavior,
2715    ///Zigbee herdsman description: "On/off state of this light"
2716    ///The string values get converted into boolean with: ON = true and OFF = false
2717    #[serde(deserialize_with = "zigbee3417831p6_state_deserializer")]
2718    pub state: bool,
2719    /// Optional last_seen type, set as a global zigbee2mqtt setting
2720    pub last_seen: Option<LastSeen>,
2721    /// Optional elapsed type
2722    pub elapsed: Option<u64>,
2723}
2724/// Deserialize bool from String with custom value mapping
2725fn zigbee3417831p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2726where
2727    D: Deserializer<'de>,
2728{
2729    match String::deserialize(deserializer)?.as_ref() {
2730        "ON" => Ok(true),
2731        "OFF" => Ok(false),
2732        other => Err(de::Error::invalid_value(
2733            Unexpected::Str(other),
2734            &"Value expected was either ON or OFF",
2735        )),
2736    }
2737}
2738
2739/// philips:3417931P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3417931P6.html)
2740///
2741/// 
2742#[cfg_attr(feature = "debug", derive(Debug))]
2743#[cfg_attr(feature = "clone", derive(Clone))]
2744#[derive(Deserialize)]
2745pub struct Zigbee3417931p6 {
2746    ///Brightness of this light
2747    pub brightness: f64,
2748    ///Color temperature of this light
2749    pub color_temp: f64,
2750    ///Color temperature after cold power on of this light
2751    pub color_temp_startup: f64,
2752    ///Link quality (signal strength)
2753    pub linkquality: f64,
2754    ///Controls the behavior when the device is powered on after power loss
2755    pub power_on_behavior: Zigbee3417931p6Poweronbehavior,
2756    ///Zigbee herdsman description: "On/off state of this light"
2757    ///The string values get converted into boolean with: ON = true and OFF = false
2758    #[serde(deserialize_with = "zigbee3417931p6_state_deserializer")]
2759    pub state: bool,
2760    /// Optional last_seen type, set as a global zigbee2mqtt setting
2761    pub last_seen: Option<LastSeen>,
2762    /// Optional elapsed type
2763    pub elapsed: Option<u64>,
2764}
2765/// Deserialize bool from String with custom value mapping
2766fn zigbee3417931p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2767where
2768    D: Deserializer<'de>,
2769{
2770    match String::deserialize(deserializer)?.as_ref() {
2771        "ON" => Ok(true),
2772        "OFF" => Ok(false),
2773        other => Err(de::Error::invalid_value(
2774            Unexpected::Str(other),
2775            &"Value expected was either ON or OFF",
2776        )),
2777    }
2778}
2779
2780/// philips:3418031P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3418031P6.html)
2781///
2782/// 
2783#[cfg_attr(feature = "debug", derive(Debug))]
2784#[cfg_attr(feature = "clone", derive(Clone))]
2785#[derive(Deserialize)]
2786pub struct Zigbee3418031p6 {
2787    ///Brightness of this light
2788    pub brightness: f64,
2789    ///Color temperature of this light
2790    pub color_temp: f64,
2791    ///Color temperature after cold power on of this light
2792    pub color_temp_startup: f64,
2793    ///Link quality (signal strength)
2794    pub linkquality: f64,
2795    ///Controls the behavior when the device is powered on after power loss
2796    pub power_on_behavior: Zigbee3418031p6Poweronbehavior,
2797    ///Zigbee herdsman description: "On/off state of this light"
2798    ///The string values get converted into boolean with: ON = true and OFF = false
2799    #[serde(deserialize_with = "zigbee3418031p6_state_deserializer")]
2800    pub state: bool,
2801    /// Optional last_seen type, set as a global zigbee2mqtt setting
2802    pub last_seen: Option<LastSeen>,
2803    /// Optional elapsed type
2804    pub elapsed: Option<u64>,
2805}
2806/// Deserialize bool from String with custom value mapping
2807fn zigbee3418031p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2808where
2809    D: Deserializer<'de>,
2810{
2811    match String::deserialize(deserializer)?.as_ref() {
2812        "ON" => Ok(true),
2813        "OFF" => Ok(false),
2814        other => Err(de::Error::invalid_value(
2815            Unexpected::Str(other),
2816            &"Value expected was either ON or OFF",
2817        )),
2818    }
2819}
2820
2821/// philips:3418131P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3418131P6.html)
2822///
2823/// 
2824#[cfg_attr(feature = "debug", derive(Debug))]
2825#[cfg_attr(feature = "clone", derive(Clone))]
2826#[derive(Deserialize)]
2827pub struct Zigbee3418131p6 {
2828    ///Brightness of this light
2829    pub brightness: f64,
2830    ///Color temperature of this light
2831    pub color_temp: f64,
2832    ///Color temperature after cold power on of this light
2833    pub color_temp_startup: f64,
2834    ///Link quality (signal strength)
2835    pub linkquality: f64,
2836    ///Controls the behavior when the device is powered on after power loss
2837    pub power_on_behavior: Zigbee3418131p6Poweronbehavior,
2838    ///Zigbee herdsman description: "On/off state of this light"
2839    ///The string values get converted into boolean with: ON = true and OFF = false
2840    #[serde(deserialize_with = "zigbee3418131p6_state_deserializer")]
2841    pub state: bool,
2842    /// Optional last_seen type, set as a global zigbee2mqtt setting
2843    pub last_seen: Option<LastSeen>,
2844    /// Optional elapsed type
2845    pub elapsed: Option<u64>,
2846}
2847/// Deserialize bool from String with custom value mapping
2848fn zigbee3418131p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2849where
2850    D: Deserializer<'de>,
2851{
2852    match String::deserialize(deserializer)?.as_ref() {
2853        "ON" => Ok(true),
2854        "OFF" => Ok(false),
2855        other => Err(de::Error::invalid_value(
2856            Unexpected::Str(other),
2857            &"Value expected was either ON or OFF",
2858        )),
2859    }
2860}
2861
2862/// philips:3418331P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3418331P6.html)
2863///
2864/// 
2865#[cfg_attr(feature = "debug", derive(Debug))]
2866#[cfg_attr(feature = "clone", derive(Clone))]
2867#[derive(Deserialize)]
2868pub struct Zigbee3418331p6 {
2869    ///Brightness of this light
2870    pub brightness: f64,
2871    ///Color temperature of this light
2872    pub color_temp: f64,
2873    ///Color temperature after cold power on of this light
2874    pub color_temp_startup: f64,
2875    ///Link quality (signal strength)
2876    pub linkquality: f64,
2877    ///Controls the behavior when the device is powered on after power loss
2878    pub power_on_behavior: Zigbee3418331p6Poweronbehavior,
2879    ///Zigbee herdsman description: "On/off state of this light"
2880    ///The string values get converted into boolean with: ON = true and OFF = false
2881    #[serde(deserialize_with = "zigbee3418331p6_state_deserializer")]
2882    pub state: bool,
2883    /// Optional last_seen type, set as a global zigbee2mqtt setting
2884    pub last_seen: Option<LastSeen>,
2885    /// Optional elapsed type
2886    pub elapsed: Option<u64>,
2887}
2888/// Deserialize bool from String with custom value mapping
2889fn zigbee3418331p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2890where
2891    D: Deserializer<'de>,
2892{
2893    match String::deserialize(deserializer)?.as_ref() {
2894        "ON" => Ok(true),
2895        "OFF" => Ok(false),
2896        other => Err(de::Error::invalid_value(
2897            Unexpected::Str(other),
2898            &"Value expected was either ON or OFF",
2899        )),
2900    }
2901}
2902
2903/// philips:3418411P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3418411P6.html)
2904///
2905/// 
2906#[cfg_attr(feature = "debug", derive(Debug))]
2907#[cfg_attr(feature = "clone", derive(Clone))]
2908#[derive(Deserialize)]
2909pub struct Zigbee3418411p6 {
2910    ///Brightness of this light
2911    pub brightness: f64,
2912    ///Color temperature of this light
2913    pub color_temp: f64,
2914    ///Color temperature after cold power on of this light
2915    pub color_temp_startup: f64,
2916    ///Link quality (signal strength)
2917    pub linkquality: f64,
2918    ///Controls the behavior when the device is powered on after power loss
2919    pub power_on_behavior: Zigbee3418411p6Poweronbehavior,
2920    ///Zigbee herdsman description: "On/off state of this light"
2921    ///The string values get converted into boolean with: ON = true and OFF = false
2922    #[serde(deserialize_with = "zigbee3418411p6_state_deserializer")]
2923    pub state: bool,
2924    /// Optional last_seen type, set as a global zigbee2mqtt setting
2925    pub last_seen: Option<LastSeen>,
2926    /// Optional elapsed type
2927    pub elapsed: Option<u64>,
2928}
2929/// Deserialize bool from String with custom value mapping
2930fn zigbee3418411p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2931where
2932    D: Deserializer<'de>,
2933{
2934    match String::deserialize(deserializer)?.as_ref() {
2935        "ON" => Ok(true),
2936        "OFF" => Ok(false),
2937        other => Err(de::Error::invalid_value(
2938            Unexpected::Str(other),
2939            &"Value expected was either ON or OFF",
2940        )),
2941    }
2942}
2943
2944/// philips:3418631P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3418631P6.html)
2945///
2946/// 
2947#[cfg_attr(feature = "debug", derive(Debug))]
2948#[cfg_attr(feature = "clone", derive(Clone))]
2949#[derive(Deserialize)]
2950pub struct Zigbee3418631p6 {
2951    ///Brightness of this light
2952    pub brightness: f64,
2953    ///Color temperature of this light
2954    pub color_temp: f64,
2955    ///Color temperature after cold power on of this light
2956    pub color_temp_startup: f64,
2957    ///Link quality (signal strength)
2958    pub linkquality: f64,
2959    ///Controls the behavior when the device is powered on after power loss
2960    pub power_on_behavior: Zigbee3418631p6Poweronbehavior,
2961    ///Zigbee herdsman description: "On/off state of this light"
2962    ///The string values get converted into boolean with: ON = true and OFF = false
2963    #[serde(deserialize_with = "zigbee3418631p6_state_deserializer")]
2964    pub state: bool,
2965    /// Optional last_seen type, set as a global zigbee2mqtt setting
2966    pub last_seen: Option<LastSeen>,
2967    /// Optional elapsed type
2968    pub elapsed: Option<u64>,
2969}
2970/// Deserialize bool from String with custom value mapping
2971fn zigbee3418631p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
2972where
2973    D: Deserializer<'de>,
2974{
2975    match String::deserialize(deserializer)?.as_ref() {
2976        "ON" => Ok(true),
2977        "OFF" => Ok(false),
2978        other => Err(de::Error::invalid_value(
2979            Unexpected::Str(other),
2980            &"Value expected was either ON or OFF",
2981        )),
2982    }
2983}
2984
2985/// philips:3418931P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3418931P6.html)
2986///
2987/// 
2988#[cfg_attr(feature = "debug", derive(Debug))]
2989#[cfg_attr(feature = "clone", derive(Clone))]
2990#[derive(Deserialize)]
2991pub struct Zigbee3418931p6 {
2992    ///Brightness of this light
2993    pub brightness: f64,
2994    ///Color temperature of this light
2995    pub color_temp: f64,
2996    ///Color temperature after cold power on of this light
2997    pub color_temp_startup: f64,
2998    ///Link quality (signal strength)
2999    pub linkquality: f64,
3000    ///Controls the behavior when the device is powered on after power loss
3001    pub power_on_behavior: Zigbee3418931p6Poweronbehavior,
3002    ///Zigbee herdsman description: "On/off state of this light"
3003    ///The string values get converted into boolean with: ON = true and OFF = false
3004    #[serde(deserialize_with = "zigbee3418931p6_state_deserializer")]
3005    pub state: bool,
3006    /// Optional last_seen type, set as a global zigbee2mqtt setting
3007    pub last_seen: Option<LastSeen>,
3008    /// Optional elapsed type
3009    pub elapsed: Option<u64>,
3010}
3011/// Deserialize bool from String with custom value mapping
3012fn zigbee3418931p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3013where
3014    D: Deserializer<'de>,
3015{
3016    match String::deserialize(deserializer)?.as_ref() {
3017        "ON" => Ok(true),
3018        "OFF" => Ok(false),
3019        other => Err(de::Error::invalid_value(
3020            Unexpected::Str(other),
3021            &"Value expected was either ON or OFF",
3022        )),
3023    }
3024}
3025
3026/// philips:3435011P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3435011P7.html)
3027///
3028/// 
3029#[cfg_attr(feature = "debug", derive(Debug))]
3030#[cfg_attr(feature = "clone", derive(Clone))]
3031#[derive(Deserialize)]
3032pub struct Zigbee3435011p7 {
3033    ///Brightness of this light
3034    pub brightness: f64,
3035    ///Color temperature of this light
3036    pub color_temp: f64,
3037    ///Color temperature after cold power on of this light
3038    pub color_temp_startup: f64,
3039    ///Link quality (signal strength)
3040    pub linkquality: f64,
3041    ///Controls the behavior when the device is powered on after power loss
3042    pub power_on_behavior: Zigbee3435011p7Poweronbehavior,
3043    ///Zigbee herdsman description: "On/off state of this light"
3044    ///The string values get converted into boolean with: ON = true and OFF = false
3045    #[serde(deserialize_with = "zigbee3435011p7_state_deserializer")]
3046    pub state: bool,
3047    /// Optional last_seen type, set as a global zigbee2mqtt setting
3048    pub last_seen: Option<LastSeen>,
3049    /// Optional elapsed type
3050    pub elapsed: Option<u64>,
3051}
3052/// Deserialize bool from String with custom value mapping
3053fn zigbee3435011p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3054where
3055    D: Deserializer<'de>,
3056{
3057    match String::deserialize(deserializer)?.as_ref() {
3058        "ON" => Ok(true),
3059        "OFF" => Ok(false),
3060        other => Err(de::Error::invalid_value(
3061            Unexpected::Str(other),
3062            &"Value expected was either ON or OFF",
3063        )),
3064    }
3065}
3066
3067/// philips:3435731P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/3435731P7.html)
3068///
3069/// 
3070#[cfg_attr(feature = "debug", derive(Debug))]
3071#[cfg_attr(feature = "clone", derive(Clone))]
3072#[derive(Deserialize)]
3073pub struct Zigbee3435731p7 {
3074    ///Brightness of this light
3075    pub brightness: f64,
3076    ///Color temperature of this light
3077    pub color_temp: f64,
3078    ///Color temperature after cold power on of this light
3079    pub color_temp_startup: f64,
3080    ///Link quality (signal strength)
3081    pub linkquality: f64,
3082    ///Controls the behavior when the device is powered on after power loss
3083    pub power_on_behavior: Zigbee3435731p7Poweronbehavior,
3084    ///Zigbee herdsman description: "On/off state of this light"
3085    ///The string values get converted into boolean with: ON = true and OFF = false
3086    #[serde(deserialize_with = "zigbee3435731p7_state_deserializer")]
3087    pub state: bool,
3088    /// Optional last_seen type, set as a global zigbee2mqtt setting
3089    pub last_seen: Option<LastSeen>,
3090    /// Optional elapsed type
3091    pub elapsed: Option<u64>,
3092}
3093/// Deserialize bool from String with custom value mapping
3094fn zigbee3435731p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3095where
3096    D: Deserializer<'de>,
3097{
3098    match String::deserialize(deserializer)?.as_ref() {
3099        "ON" => Ok(true),
3100        "OFF" => Ok(false),
3101        other => Err(de::Error::invalid_value(
3102            Unexpected::Str(other),
3103            &"Value expected was either ON or OFF",
3104        )),
3105    }
3106}
3107
3108/// philips:4023330P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4023330P6.html)
3109///
3110/// 
3111#[cfg_attr(feature = "debug", derive(Debug))]
3112#[cfg_attr(feature = "clone", derive(Clone))]
3113#[derive(Deserialize)]
3114pub struct Zigbee4023330p6 {
3115    ///Brightness of this light
3116    pub brightness: f64,
3117    ///Color temperature of this light
3118    pub color_temp: f64,
3119    ///Color temperature after cold power on of this light
3120    pub color_temp_startup: f64,
3121    ///Link quality (signal strength)
3122    pub linkquality: f64,
3123    ///Controls the behavior when the device is powered on after power loss
3124    pub power_on_behavior: Zigbee4023330p6Poweronbehavior,
3125    ///Zigbee herdsman description: "On/off state of this light"
3126    ///The string values get converted into boolean with: ON = true and OFF = false
3127    #[serde(deserialize_with = "zigbee4023330p6_state_deserializer")]
3128    pub state: bool,
3129    /// Optional last_seen type, set as a global zigbee2mqtt setting
3130    pub last_seen: Option<LastSeen>,
3131    /// Optional elapsed type
3132    pub elapsed: Option<u64>,
3133}
3134/// Deserialize bool from String with custom value mapping
3135fn zigbee4023330p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3136where
3137    D: Deserializer<'de>,
3138{
3139    match String::deserialize(deserializer)?.as_ref() {
3140        "ON" => Ok(true),
3141        "OFF" => Ok(false),
3142        other => Err(de::Error::invalid_value(
3143            Unexpected::Str(other),
3144            &"Value expected was either ON or OFF",
3145        )),
3146    }
3147}
3148
3149/// philips:4023330P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4023330P7.html)
3150///
3151/// 
3152#[cfg_attr(feature = "debug", derive(Debug))]
3153#[cfg_attr(feature = "clone", derive(Clone))]
3154#[derive(Deserialize)]
3155pub struct Zigbee4023330p7 {
3156    ///Brightness of this light
3157    pub brightness: f64,
3158    ///Color temperature of this light
3159    pub color_temp: f64,
3160    ///Color temperature after cold power on of this light
3161    pub color_temp_startup: f64,
3162    ///Link quality (signal strength)
3163    pub linkquality: f64,
3164    ///Controls the behavior when the device is powered on after power loss
3165    pub power_on_behavior: Zigbee4023330p7Poweronbehavior,
3166    ///Zigbee herdsman description: "On/off state of this light"
3167    ///The string values get converted into boolean with: ON = true and OFF = false
3168    #[serde(deserialize_with = "zigbee4023330p7_state_deserializer")]
3169    pub state: bool,
3170    /// Optional last_seen type, set as a global zigbee2mqtt setting
3171    pub last_seen: Option<LastSeen>,
3172    /// Optional elapsed type
3173    pub elapsed: Option<u64>,
3174}
3175/// Deserialize bool from String with custom value mapping
3176fn zigbee4023330p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3177where
3178    D: Deserializer<'de>,
3179{
3180    match String::deserialize(deserializer)?.as_ref() {
3181        "ON" => Ok(true),
3182        "OFF" => Ok(false),
3183        other => Err(de::Error::invalid_value(
3184            Unexpected::Str(other),
3185            &"Value expected was either ON or OFF",
3186        )),
3187    }
3188}
3189
3190/// philips:4023331P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4023331P6.html)
3191///
3192/// 
3193#[cfg_attr(feature = "debug", derive(Debug))]
3194#[cfg_attr(feature = "clone", derive(Clone))]
3195#[derive(Deserialize)]
3196pub struct Zigbee4023331p6 {
3197    ///Brightness of this light
3198    pub brightness: f64,
3199    ///Color temperature of this light
3200    pub color_temp: f64,
3201    ///Color temperature after cold power on of this light
3202    pub color_temp_startup: f64,
3203    ///Link quality (signal strength)
3204    pub linkquality: f64,
3205    ///Controls the behavior when the device is powered on after power loss
3206    pub power_on_behavior: Zigbee4023331p6Poweronbehavior,
3207    ///Zigbee herdsman description: "On/off state of this light"
3208    ///The string values get converted into boolean with: ON = true and OFF = false
3209    #[serde(deserialize_with = "zigbee4023331p6_state_deserializer")]
3210    pub state: bool,
3211    /// Optional last_seen type, set as a global zigbee2mqtt setting
3212    pub last_seen: Option<LastSeen>,
3213    /// Optional elapsed type
3214    pub elapsed: Option<u64>,
3215}
3216/// Deserialize bool from String with custom value mapping
3217fn zigbee4023331p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3218where
3219    D: Deserializer<'de>,
3220{
3221    match String::deserialize(deserializer)?.as_ref() {
3222        "ON" => Ok(true),
3223        "OFF" => Ok(false),
3224        other => Err(de::Error::invalid_value(
3225            Unexpected::Str(other),
3226            &"Value expected was either ON or OFF",
3227        )),
3228    }
3229}
3230
3231/// philips:4033930P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4033930P6.html)
3232///
3233/// 
3234#[cfg_attr(feature = "debug", derive(Debug))]
3235#[cfg_attr(feature = "clone", derive(Clone))]
3236#[derive(Deserialize)]
3237pub struct Zigbee4033930p6 {
3238    ///Brightness of this light
3239    pub brightness: f64,
3240    ///Color temperature of this light
3241    pub color_temp: f64,
3242    ///Color temperature after cold power on of this light
3243    pub color_temp_startup: f64,
3244    ///Link quality (signal strength)
3245    pub linkquality: f64,
3246    ///Controls the behavior when the device is powered on after power loss
3247    pub power_on_behavior: Zigbee4033930p6Poweronbehavior,
3248    ///Zigbee herdsman description: "On/off state of this light"
3249    ///The string values get converted into boolean with: ON = true and OFF = false
3250    #[serde(deserialize_with = "zigbee4033930p6_state_deserializer")]
3251    pub state: bool,
3252    /// Optional last_seen type, set as a global zigbee2mqtt setting
3253    pub last_seen: Option<LastSeen>,
3254    /// Optional elapsed type
3255    pub elapsed: Option<u64>,
3256}
3257/// Deserialize bool from String with custom value mapping
3258fn zigbee4033930p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3259where
3260    D: Deserializer<'de>,
3261{
3262    match String::deserialize(deserializer)?.as_ref() {
3263        "ON" => Ok(true),
3264        "OFF" => Ok(false),
3265        other => Err(de::Error::invalid_value(
3266            Unexpected::Str(other),
3267            &"Value expected was either ON or OFF",
3268        )),
3269    }
3270}
3271
3272/// philips:4033930P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4033930P7.html)
3273///
3274/// 
3275#[cfg_attr(feature = "debug", derive(Debug))]
3276#[cfg_attr(feature = "clone", derive(Clone))]
3277#[derive(Deserialize)]
3278pub struct Zigbee4033930p7 {
3279    ///Brightness of this light
3280    pub brightness: f64,
3281    ///Color temperature of this light
3282    pub color_temp: f64,
3283    ///Color temperature after cold power on of this light
3284    pub color_temp_startup: f64,
3285    ///Link quality (signal strength)
3286    pub linkquality: f64,
3287    ///Controls the behavior when the device is powered on after power loss
3288    pub power_on_behavior: Zigbee4033930p7Poweronbehavior,
3289    ///Zigbee herdsman description: "On/off state of this light"
3290    ///The string values get converted into boolean with: ON = true and OFF = false
3291    #[serde(deserialize_with = "zigbee4033930p7_state_deserializer")]
3292    pub state: bool,
3293    /// Optional last_seen type, set as a global zigbee2mqtt setting
3294    pub last_seen: Option<LastSeen>,
3295    /// Optional elapsed type
3296    pub elapsed: Option<u64>,
3297}
3298/// Deserialize bool from String with custom value mapping
3299fn zigbee4033930p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3300where
3301    D: Deserializer<'de>,
3302{
3303    match String::deserialize(deserializer)?.as_ref() {
3304        "ON" => Ok(true),
3305        "OFF" => Ok(false),
3306        other => Err(de::Error::invalid_value(
3307            Unexpected::Str(other),
3308            &"Value expected was either ON or OFF",
3309        )),
3310    }
3311}
3312
3313/// philips:4034030P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4034030P6.html)
3314///
3315/// 
3316#[cfg_attr(feature = "debug", derive(Debug))]
3317#[cfg_attr(feature = "clone", derive(Clone))]
3318#[derive(Deserialize)]
3319pub struct Zigbee4034030p6 {
3320    ///Brightness of this light
3321    pub brightness: f64,
3322    ///Color temperature of this light
3323    pub color_temp: f64,
3324    ///Color temperature after cold power on of this light
3325    pub color_temp_startup: f64,
3326    ///Link quality (signal strength)
3327    pub linkquality: f64,
3328    ///Controls the behavior when the device is powered on after power loss
3329    pub power_on_behavior: Zigbee4034030p6Poweronbehavior,
3330    ///Zigbee herdsman description: "On/off state of this light"
3331    ///The string values get converted into boolean with: ON = true and OFF = false
3332    #[serde(deserialize_with = "zigbee4034030p6_state_deserializer")]
3333    pub state: bool,
3334    /// Optional last_seen type, set as a global zigbee2mqtt setting
3335    pub last_seen: Option<LastSeen>,
3336    /// Optional elapsed type
3337    pub elapsed: Option<u64>,
3338}
3339/// Deserialize bool from String with custom value mapping
3340fn zigbee4034030p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3341where
3342    D: Deserializer<'de>,
3343{
3344    match String::deserialize(deserializer)?.as_ref() {
3345        "ON" => Ok(true),
3346        "OFF" => Ok(false),
3347        other => Err(de::Error::invalid_value(
3348            Unexpected::Str(other),
3349            &"Value expected was either ON or OFF",
3350        )),
3351    }
3352}
3353
3354/// philips:4034031P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4034031P6.html)
3355///
3356/// 
3357#[cfg_attr(feature = "debug", derive(Debug))]
3358#[cfg_attr(feature = "clone", derive(Clone))]
3359#[derive(Deserialize)]
3360pub struct Zigbee4034031p6 {
3361    ///Brightness of this light
3362    pub brightness: f64,
3363    ///Color temperature of this light
3364    pub color_temp: f64,
3365    ///Color temperature after cold power on of this light
3366    pub color_temp_startup: f64,
3367    ///Link quality (signal strength)
3368    pub linkquality: f64,
3369    ///Controls the behavior when the device is powered on after power loss
3370    pub power_on_behavior: Zigbee4034031p6Poweronbehavior,
3371    ///Zigbee herdsman description: "On/off state of this light"
3372    ///The string values get converted into boolean with: ON = true and OFF = false
3373    #[serde(deserialize_with = "zigbee4034031p6_state_deserializer")]
3374    pub state: bool,
3375    /// Optional last_seen type, set as a global zigbee2mqtt setting
3376    pub last_seen: Option<LastSeen>,
3377    /// Optional elapsed type
3378    pub elapsed: Option<u64>,
3379}
3380/// Deserialize bool from String with custom value mapping
3381fn zigbee4034031p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3382where
3383    D: Deserializer<'de>,
3384{
3385    match String::deserialize(deserializer)?.as_ref() {
3386        "ON" => Ok(true),
3387        "OFF" => Ok(false),
3388        other => Err(de::Error::invalid_value(
3389            Unexpected::Str(other),
3390            &"Value expected was either ON or OFF",
3391        )),
3392    }
3393}
3394
3395/// philips:4034031P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4034031P7.html)
3396///
3397/// 
3398#[cfg_attr(feature = "debug", derive(Debug))]
3399#[cfg_attr(feature = "clone", derive(Clone))]
3400#[derive(Deserialize)]
3401pub struct Zigbee4034031p7 {
3402    ///Brightness of this light
3403    pub brightness: f64,
3404    ///Color temperature of this light
3405    pub color_temp: f64,
3406    ///Color temperature after cold power on of this light
3407    pub color_temp_startup: f64,
3408    ///Link quality (signal strength)
3409    pub linkquality: f64,
3410    ///Controls the behavior when the device is powered on after power loss
3411    pub power_on_behavior: Zigbee4034031p7Poweronbehavior,
3412    ///Zigbee herdsman description: "On/off state of this light"
3413    ///The string values get converted into boolean with: ON = true and OFF = false
3414    #[serde(deserialize_with = "zigbee4034031p7_state_deserializer")]
3415    pub state: bool,
3416    /// Optional last_seen type, set as a global zigbee2mqtt setting
3417    pub last_seen: Option<LastSeen>,
3418    /// Optional elapsed type
3419    pub elapsed: Option<u64>,
3420}
3421/// Deserialize bool from String with custom value mapping
3422fn zigbee4034031p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3423where
3424    D: Deserializer<'de>,
3425{
3426    match String::deserialize(deserializer)?.as_ref() {
3427        "ON" => Ok(true),
3428        "OFF" => Ok(false),
3429        other => Err(de::Error::invalid_value(
3430            Unexpected::Str(other),
3431            &"Value expected was either ON or OFF",
3432        )),
3433    }
3434}
3435
3436/// philips:4076130P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4076130P6.html)
3437///
3438/// 
3439#[cfg_attr(feature = "debug", derive(Debug))]
3440#[cfg_attr(feature = "clone", derive(Clone))]
3441#[derive(Deserialize)]
3442pub struct Zigbee4076130p6 {
3443    ///Brightness of this light
3444    pub brightness: f64,
3445    ///Color temperature of this light
3446    pub color_temp: f64,
3447    ///Color temperature after cold power on of this light
3448    pub color_temp_startup: f64,
3449    ///Link quality (signal strength)
3450    pub linkquality: f64,
3451    ///Controls the behavior when the device is powered on after power loss
3452    pub power_on_behavior: Zigbee4076130p6Poweronbehavior,
3453    ///Zigbee herdsman description: "On/off state of this light"
3454    ///The string values get converted into boolean with: ON = true and OFF = false
3455    #[serde(deserialize_with = "zigbee4076130p6_state_deserializer")]
3456    pub state: bool,
3457    /// Optional last_seen type, set as a global zigbee2mqtt setting
3458    pub last_seen: Option<LastSeen>,
3459    /// Optional elapsed type
3460    pub elapsed: Option<u64>,
3461}
3462/// Deserialize bool from String with custom value mapping
3463fn zigbee4076130p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3464where
3465    D: Deserializer<'de>,
3466{
3467    match String::deserialize(deserializer)?.as_ref() {
3468        "ON" => Ok(true),
3469        "OFF" => Ok(false),
3470        other => Err(de::Error::invalid_value(
3471            Unexpected::Str(other),
3472            &"Value expected was either ON or OFF",
3473        )),
3474    }
3475}
3476
3477/// philips:4076131P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4076131P6.html)
3478///
3479/// 
3480#[cfg_attr(feature = "debug", derive(Debug))]
3481#[cfg_attr(feature = "clone", derive(Clone))]
3482#[derive(Deserialize)]
3483pub struct Zigbee4076131p6 {
3484    ///Brightness of this light
3485    pub brightness: f64,
3486    ///Color temperature of this light
3487    pub color_temp: f64,
3488    ///Color temperature after cold power on of this light
3489    pub color_temp_startup: f64,
3490    ///Link quality (signal strength)
3491    pub linkquality: f64,
3492    ///Controls the behavior when the device is powered on after power loss
3493    pub power_on_behavior: Zigbee4076131p6Poweronbehavior,
3494    ///Zigbee herdsman description: "On/off state of this light"
3495    ///The string values get converted into boolean with: ON = true and OFF = false
3496    #[serde(deserialize_with = "zigbee4076131p6_state_deserializer")]
3497    pub state: bool,
3498    /// Optional last_seen type, set as a global zigbee2mqtt setting
3499    pub last_seen: Option<LastSeen>,
3500    /// Optional elapsed type
3501    pub elapsed: Option<u64>,
3502}
3503/// Deserialize bool from String with custom value mapping
3504fn zigbee4076131p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3505where
3506    D: Deserializer<'de>,
3507{
3508    match String::deserialize(deserializer)?.as_ref() {
3509        "ON" => Ok(true),
3510        "OFF" => Ok(false),
3511        other => Err(de::Error::invalid_value(
3512            Unexpected::Str(other),
3513            &"Value expected was either ON or OFF",
3514        )),
3515    }
3516}
3517
3518/// philips:4080148P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4080148P7.html)
3519///
3520/// 
3521#[cfg_attr(feature = "debug", derive(Debug))]
3522#[cfg_attr(feature = "clone", derive(Clone))]
3523#[derive(Deserialize)]
3524pub struct Zigbee4080148p7 {
3525    ///Brightness of this light
3526    pub brightness: f64,
3527    ///Color temperature of this light
3528    pub color_temp: f64,
3529    ///Color temperature after cold power on of this light
3530    pub color_temp_startup: f64,
3531    ///Link quality (signal strength)
3532    pub linkquality: f64,
3533    ///Controls the behavior when the device is powered on after power loss
3534    pub power_on_behavior: Zigbee4080148p7Poweronbehavior,
3535    ///Zigbee herdsman description: "On/off state of this light"
3536    ///The string values get converted into boolean with: ON = true and OFF = false
3537    #[serde(deserialize_with = "zigbee4080148p7_state_deserializer")]
3538    pub state: bool,
3539    /// Optional last_seen type, set as a global zigbee2mqtt setting
3540    pub last_seen: Option<LastSeen>,
3541    /// Optional elapsed type
3542    pub elapsed: Option<u64>,
3543}
3544/// Deserialize bool from String with custom value mapping
3545fn zigbee4080148p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3546where
3547    D: Deserializer<'de>,
3548{
3549    match String::deserialize(deserializer)?.as_ref() {
3550        "ON" => Ok(true),
3551        "OFF" => Ok(false),
3552        other => Err(de::Error::invalid_value(
3553            Unexpected::Str(other),
3554            &"Value expected was either ON or OFF",
3555        )),
3556    }
3557}
3558
3559/// philips:4080148P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4080148P9.html)
3560///
3561/// 
3562#[cfg_attr(feature = "debug", derive(Debug))]
3563#[cfg_attr(feature = "clone", derive(Clone))]
3564#[derive(Deserialize)]
3565pub struct Zigbee4080148p9 {
3566    ///Brightness of this light
3567    pub brightness: f64,
3568    ///Color temperature of this light
3569    pub color_temp: f64,
3570    ///Color temperature after cold power on of this light
3571    pub color_temp_startup: f64,
3572    ///Link quality (signal strength)
3573    pub linkquality: f64,
3574    ///Controls the behavior when the device is powered on after power loss
3575    pub power_on_behavior: Zigbee4080148p9Poweronbehavior,
3576    ///Zigbee herdsman description: "On/off state of this light"
3577    ///The string values get converted into boolean with: ON = true and OFF = false
3578    #[serde(deserialize_with = "zigbee4080148p9_state_deserializer")]
3579    pub state: bool,
3580    /// Optional last_seen type, set as a global zigbee2mqtt setting
3581    pub last_seen: Option<LastSeen>,
3582    /// Optional elapsed type
3583    pub elapsed: Option<u64>,
3584}
3585/// Deserialize bool from String with custom value mapping
3586fn zigbee4080148p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3587where
3588    D: Deserializer<'de>,
3589{
3590    match String::deserialize(deserializer)?.as_ref() {
3591        "ON" => Ok(true),
3592        "OFF" => Ok(false),
3593        other => Err(de::Error::invalid_value(
3594            Unexpected::Str(other),
3595            &"Value expected was either ON or OFF",
3596        )),
3597    }
3598}
3599
3600/// philips:4080148U9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4080148U9.html)
3601///
3602/// 
3603#[cfg_attr(feature = "debug", derive(Debug))]
3604#[cfg_attr(feature = "clone", derive(Clone))]
3605#[derive(Deserialize)]
3606pub struct Zigbee4080148u9 {
3607    ///Brightness of this light
3608    pub brightness: f64,
3609    ///Color temperature of this light
3610    pub color_temp: f64,
3611    ///Color temperature after cold power on of this light
3612    pub color_temp_startup: f64,
3613    ///Link quality (signal strength)
3614    pub linkquality: f64,
3615    ///Controls the behavior when the device is powered on after power loss
3616    pub power_on_behavior: Zigbee4080148u9Poweronbehavior,
3617    ///Zigbee herdsman description: "On/off state of this light"
3618    ///The string values get converted into boolean with: ON = true and OFF = false
3619    #[serde(deserialize_with = "zigbee4080148u9_state_deserializer")]
3620    pub state: bool,
3621    /// Optional last_seen type, set as a global zigbee2mqtt setting
3622    pub last_seen: Option<LastSeen>,
3623    /// Optional elapsed type
3624    pub elapsed: Option<u64>,
3625}
3626/// Deserialize bool from String with custom value mapping
3627fn zigbee4080148u9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3628where
3629    D: Deserializer<'de>,
3630{
3631    match String::deserialize(deserializer)?.as_ref() {
3632        "ON" => Ok(true),
3633        "OFF" => Ok(false),
3634        other => Err(de::Error::invalid_value(
3635            Unexpected::Str(other),
3636            &"Value expected was either ON or OFF",
3637        )),
3638    }
3639}
3640
3641/// philips:4080248P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4080248P7.html)
3642///
3643/// 
3644#[cfg_attr(feature = "debug", derive(Debug))]
3645#[cfg_attr(feature = "clone", derive(Clone))]
3646#[derive(Deserialize)]
3647pub struct Zigbee4080248p7 {
3648    ///Brightness of this light
3649    pub brightness: f64,
3650    ///Color temperature of this light
3651    pub color_temp: f64,
3652    ///Color temperature after cold power on of this light
3653    pub color_temp_startup: f64,
3654    ///Link quality (signal strength)
3655    pub linkquality: f64,
3656    ///Controls the behavior when the device is powered on after power loss
3657    pub power_on_behavior: Zigbee4080248p7Poweronbehavior,
3658    ///Zigbee herdsman description: "On/off state of this light"
3659    ///The string values get converted into boolean with: ON = true and OFF = false
3660    #[serde(deserialize_with = "zigbee4080248p7_state_deserializer")]
3661    pub state: bool,
3662    /// Optional last_seen type, set as a global zigbee2mqtt setting
3663    pub last_seen: Option<LastSeen>,
3664    /// Optional elapsed type
3665    pub elapsed: Option<u64>,
3666}
3667/// Deserialize bool from String with custom value mapping
3668fn zigbee4080248p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3669where
3670    D: Deserializer<'de>,
3671{
3672    match String::deserialize(deserializer)?.as_ref() {
3673        "ON" => Ok(true),
3674        "OFF" => Ok(false),
3675        other => Err(de::Error::invalid_value(
3676            Unexpected::Str(other),
3677            &"Value expected was either ON or OFF",
3678        )),
3679    }
3680}
3681
3682/// philips:4080248P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4080248P9.html)
3683///
3684/// 
3685#[cfg_attr(feature = "debug", derive(Debug))]
3686#[cfg_attr(feature = "clone", derive(Clone))]
3687#[derive(Deserialize)]
3688pub struct Zigbee4080248p9 {
3689    ///Brightness of this light
3690    pub brightness: f64,
3691    ///Color temperature of this light
3692    pub color_temp: f64,
3693    ///Color temperature after cold power on of this light
3694    pub color_temp_startup: f64,
3695    ///Link quality (signal strength)
3696    pub linkquality: f64,
3697    ///Controls the behavior when the device is powered on after power loss
3698    pub power_on_behavior: Zigbee4080248p9Poweronbehavior,
3699    ///Zigbee herdsman description: "On/off state of this light"
3700    ///The string values get converted into boolean with: ON = true and OFF = false
3701    #[serde(deserialize_with = "zigbee4080248p9_state_deserializer")]
3702    pub state: bool,
3703    /// Optional last_seen type, set as a global zigbee2mqtt setting
3704    pub last_seen: Option<LastSeen>,
3705    /// Optional elapsed type
3706    pub elapsed: Option<u64>,
3707}
3708/// Deserialize bool from String with custom value mapping
3709fn zigbee4080248p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3710where
3711    D: Deserializer<'de>,
3712{
3713    match String::deserialize(deserializer)?.as_ref() {
3714        "ON" => Ok(true),
3715        "OFF" => Ok(false),
3716        other => Err(de::Error::invalid_value(
3717            Unexpected::Str(other),
3718            &"Value expected was either ON or OFF",
3719        )),
3720    }
3721}
3722
3723/// philips:4080248U9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4080248U9.html)
3724///
3725/// 
3726#[cfg_attr(feature = "debug", derive(Debug))]
3727#[cfg_attr(feature = "clone", derive(Clone))]
3728#[derive(Deserialize)]
3729pub struct Zigbee4080248u9 {
3730    ///Brightness of this light
3731    pub brightness: f64,
3732    ///Color temperature of this light
3733    pub color_temp: f64,
3734    ///Color temperature after cold power on of this light
3735    pub color_temp_startup: f64,
3736    ///Link quality (signal strength)
3737    pub linkquality: f64,
3738    ///Controls the behavior when the device is powered on after power loss
3739    pub power_on_behavior: Zigbee4080248u9Poweronbehavior,
3740    ///Zigbee herdsman description: "On/off state of this light"
3741    ///The string values get converted into boolean with: ON = true and OFF = false
3742    #[serde(deserialize_with = "zigbee4080248u9_state_deserializer")]
3743    pub state: bool,
3744    /// Optional last_seen type, set as a global zigbee2mqtt setting
3745    pub last_seen: Option<LastSeen>,
3746    /// Optional elapsed type
3747    pub elapsed: Option<u64>,
3748}
3749/// Deserialize bool from String with custom value mapping
3750fn zigbee4080248u9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3751where
3752    D: Deserializer<'de>,
3753{
3754    match String::deserialize(deserializer)?.as_ref() {
3755        "ON" => Ok(true),
3756        "OFF" => Ok(false),
3757        other => Err(de::Error::invalid_value(
3758            Unexpected::Str(other),
3759            &"Value expected was either ON or OFF",
3760        )),
3761    }
3762}
3763
3764/// philips:4090130P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090130P7.html)
3765///
3766/// 
3767#[cfg_attr(feature = "debug", derive(Debug))]
3768#[cfg_attr(feature = "clone", derive(Clone))]
3769#[derive(Deserialize)]
3770pub struct Zigbee4090130p7 {
3771    ///Brightness of this light
3772    pub brightness: f64,
3773    ///Color temperature of this light
3774    pub color_temp: f64,
3775    ///Color temperature after cold power on of this light
3776    pub color_temp_startup: f64,
3777    ///Link quality (signal strength)
3778    pub linkquality: f64,
3779    ///Controls the behavior when the device is powered on after power loss
3780    pub power_on_behavior: Zigbee4090130p7Poweronbehavior,
3781    ///Zigbee herdsman description: "On/off state of this light"
3782    ///The string values get converted into boolean with: ON = true and OFF = false
3783    #[serde(deserialize_with = "zigbee4090130p7_state_deserializer")]
3784    pub state: bool,
3785    /// Optional last_seen type, set as a global zigbee2mqtt setting
3786    pub last_seen: Option<LastSeen>,
3787    /// Optional elapsed type
3788    pub elapsed: Option<u64>,
3789}
3790/// Deserialize bool from String with custom value mapping
3791fn zigbee4090130p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3792where
3793    D: Deserializer<'de>,
3794{
3795    match String::deserialize(deserializer)?.as_ref() {
3796        "ON" => Ok(true),
3797        "OFF" => Ok(false),
3798        other => Err(de::Error::invalid_value(
3799            Unexpected::Str(other),
3800            &"Value expected was either ON or OFF",
3801        )),
3802    }
3803}
3804
3805/// philips:4090130P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090130P9.html)
3806///
3807/// 
3808#[cfg_attr(feature = "debug", derive(Debug))]
3809#[cfg_attr(feature = "clone", derive(Clone))]
3810#[derive(Deserialize)]
3811pub struct Zigbee4090130p9 {
3812    ///Brightness of this light
3813    pub brightness: f64,
3814    ///Color temperature of this light
3815    pub color_temp: f64,
3816    ///Color temperature after cold power on of this light
3817    pub color_temp_startup: f64,
3818    ///Link quality (signal strength)
3819    pub linkquality: f64,
3820    ///Controls the behavior when the device is powered on after power loss
3821    pub power_on_behavior: Zigbee4090130p9Poweronbehavior,
3822    ///Zigbee herdsman description: "On/off state of this light"
3823    ///The string values get converted into boolean with: ON = true and OFF = false
3824    #[serde(deserialize_with = "zigbee4090130p9_state_deserializer")]
3825    pub state: bool,
3826    /// Optional last_seen type, set as a global zigbee2mqtt setting
3827    pub last_seen: Option<LastSeen>,
3828    /// Optional elapsed type
3829    pub elapsed: Option<u64>,
3830}
3831/// Deserialize bool from String with custom value mapping
3832fn zigbee4090130p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3833where
3834    D: Deserializer<'de>,
3835{
3836    match String::deserialize(deserializer)?.as_ref() {
3837        "ON" => Ok(true),
3838        "OFF" => Ok(false),
3839        other => Err(de::Error::invalid_value(
3840            Unexpected::Str(other),
3841            &"Value expected was either ON or OFF",
3842        )),
3843    }
3844}
3845
3846/// philips:4090230P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090230P9.html)
3847///
3848/// 
3849#[cfg_attr(feature = "debug", derive(Debug))]
3850#[cfg_attr(feature = "clone", derive(Clone))]
3851#[derive(Deserialize)]
3852pub struct Zigbee4090230p9 {
3853    ///Brightness of this light
3854    pub brightness: f64,
3855    ///Color temperature of this light
3856    pub color_temp: f64,
3857    ///Color temperature after cold power on of this light
3858    pub color_temp_startup: f64,
3859    ///Link quality (signal strength)
3860    pub linkquality: f64,
3861    ///Controls the behavior when the device is powered on after power loss
3862    pub power_on_behavior: Zigbee4090230p9Poweronbehavior,
3863    ///Zigbee herdsman description: "On/off state of this light"
3864    ///The string values get converted into boolean with: ON = true and OFF = false
3865    #[serde(deserialize_with = "zigbee4090230p9_state_deserializer")]
3866    pub state: bool,
3867    /// Optional last_seen type, set as a global zigbee2mqtt setting
3868    pub last_seen: Option<LastSeen>,
3869    /// Optional elapsed type
3870    pub elapsed: Option<u64>,
3871}
3872/// Deserialize bool from String with custom value mapping
3873fn zigbee4090230p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3874where
3875    D: Deserializer<'de>,
3876{
3877    match String::deserialize(deserializer)?.as_ref() {
3878        "ON" => Ok(true),
3879        "OFF" => Ok(false),
3880        other => Err(de::Error::invalid_value(
3881            Unexpected::Str(other),
3882            &"Value expected was either ON or OFF",
3883        )),
3884    }
3885}
3886
3887/// philips:4090231P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090231P9.html)
3888///
3889/// 
3890#[cfg_attr(feature = "debug", derive(Debug))]
3891#[cfg_attr(feature = "clone", derive(Clone))]
3892#[derive(Deserialize)]
3893pub struct Zigbee4090231p9 {
3894    ///Brightness of this light
3895    pub brightness: f64,
3896    ///Color temperature of this light
3897    pub color_temp: f64,
3898    ///Color temperature after cold power on of this light
3899    pub color_temp_startup: f64,
3900    ///Link quality (signal strength)
3901    pub linkquality: f64,
3902    ///Controls the behavior when the device is powered on after power loss
3903    pub power_on_behavior: Zigbee4090231p9Poweronbehavior,
3904    ///Zigbee herdsman description: "On/off state of this light"
3905    ///The string values get converted into boolean with: ON = true and OFF = false
3906    #[serde(deserialize_with = "zigbee4090231p9_state_deserializer")]
3907    pub state: bool,
3908    /// Optional last_seen type, set as a global zigbee2mqtt setting
3909    pub last_seen: Option<LastSeen>,
3910    /// Optional elapsed type
3911    pub elapsed: Option<u64>,
3912}
3913/// Deserialize bool from String with custom value mapping
3914fn zigbee4090231p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3915where
3916    D: Deserializer<'de>,
3917{
3918    match String::deserialize(deserializer)?.as_ref() {
3919        "ON" => Ok(true),
3920        "OFF" => Ok(false),
3921        other => Err(de::Error::invalid_value(
3922            Unexpected::Str(other),
3923            &"Value expected was either ON or OFF",
3924        )),
3925    }
3926}
3927
3928/// philips:4090330P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090330P9.html)
3929///
3930/// 
3931#[cfg_attr(feature = "debug", derive(Debug))]
3932#[cfg_attr(feature = "clone", derive(Clone))]
3933#[derive(Deserialize)]
3934pub struct Zigbee4090330p9 {
3935    ///Brightness of this light
3936    pub brightness: f64,
3937    ///Color temperature of this light
3938    pub color_temp: f64,
3939    ///Color temperature after cold power on of this light
3940    pub color_temp_startup: f64,
3941    ///Link quality (signal strength)
3942    pub linkquality: f64,
3943    ///Controls the behavior when the device is powered on after power loss
3944    pub power_on_behavior: Zigbee4090330p9Poweronbehavior,
3945    ///Zigbee herdsman description: "On/off state of this light"
3946    ///The string values get converted into boolean with: ON = true and OFF = false
3947    #[serde(deserialize_with = "zigbee4090330p9_state_deserializer")]
3948    pub state: bool,
3949    /// Optional last_seen type, set as a global zigbee2mqtt setting
3950    pub last_seen: Option<LastSeen>,
3951    /// Optional elapsed type
3952    pub elapsed: Option<u64>,
3953}
3954/// Deserialize bool from String with custom value mapping
3955fn zigbee4090330p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3956where
3957    D: Deserializer<'de>,
3958{
3959    match String::deserialize(deserializer)?.as_ref() {
3960        "ON" => Ok(true),
3961        "OFF" => Ok(false),
3962        other => Err(de::Error::invalid_value(
3963            Unexpected::Str(other),
3964            &"Value expected was either ON or OFF",
3965        )),
3966    }
3967}
3968
3969/// philips:4090331P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090331P9.html)
3970///
3971/// 
3972#[cfg_attr(feature = "debug", derive(Debug))]
3973#[cfg_attr(feature = "clone", derive(Clone))]
3974#[derive(Deserialize)]
3975pub struct Zigbee4090331p9 {
3976    ///Brightness of this light
3977    pub brightness: f64,
3978    ///Color temperature of this light
3979    pub color_temp: f64,
3980    ///Color temperature after cold power on of this light
3981    pub color_temp_startup: f64,
3982    ///Link quality (signal strength)
3983    pub linkquality: f64,
3984    ///Controls the behavior when the device is powered on after power loss
3985    pub power_on_behavior: Zigbee4090331p9Poweronbehavior,
3986    ///Zigbee herdsman description: "On/off state of this light"
3987    ///The string values get converted into boolean with: ON = true and OFF = false
3988    #[serde(deserialize_with = "zigbee4090331p9_state_deserializer")]
3989    pub state: bool,
3990    /// Optional last_seen type, set as a global zigbee2mqtt setting
3991    pub last_seen: Option<LastSeen>,
3992    /// Optional elapsed type
3993    pub elapsed: Option<u64>,
3994}
3995/// Deserialize bool from String with custom value mapping
3996fn zigbee4090331p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
3997where
3998    D: Deserializer<'de>,
3999{
4000    match String::deserialize(deserializer)?.as_ref() {
4001        "ON" => Ok(true),
4002        "OFF" => Ok(false),
4003        other => Err(de::Error::invalid_value(
4004            Unexpected::Str(other),
4005            &"Value expected was either ON or OFF",
4006        )),
4007    }
4008}
4009
4010/// philips:4090431P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090431P9.html)
4011///
4012/// 
4013#[cfg_attr(feature = "debug", derive(Debug))]
4014#[cfg_attr(feature = "clone", derive(Clone))]
4015#[derive(Deserialize)]
4016pub struct Zigbee4090431p9 {
4017    ///Brightness of this light
4018    pub brightness: f64,
4019    ///Color temperature of this light
4020    pub color_temp: f64,
4021    ///Color temperature after cold power on of this light
4022    pub color_temp_startup: f64,
4023    ///Link quality (signal strength)
4024    pub linkquality: f64,
4025    ///Controls the behavior when the device is powered on after power loss
4026    pub power_on_behavior: Zigbee4090431p9Poweronbehavior,
4027    ///Zigbee herdsman description: "On/off state of this light"
4028    ///The string values get converted into boolean with: ON = true and OFF = false
4029    #[serde(deserialize_with = "zigbee4090431p9_state_deserializer")]
4030    pub state: bool,
4031    /// Optional last_seen type, set as a global zigbee2mqtt setting
4032    pub last_seen: Option<LastSeen>,
4033    /// Optional elapsed type
4034    pub elapsed: Option<u64>,
4035}
4036/// Deserialize bool from String with custom value mapping
4037fn zigbee4090431p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4038where
4039    D: Deserializer<'de>,
4040{
4041    match String::deserialize(deserializer)?.as_ref() {
4042        "ON" => Ok(true),
4043        "OFF" => Ok(false),
4044        other => Err(de::Error::invalid_value(
4045            Unexpected::Str(other),
4046            &"Value expected was either ON or OFF",
4047        )),
4048    }
4049}
4050
4051/// philips:4090531P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090531P7.html)
4052///
4053/// 
4054#[cfg_attr(feature = "debug", derive(Debug))]
4055#[cfg_attr(feature = "clone", derive(Clone))]
4056#[derive(Deserialize)]
4057pub struct Zigbee4090531p7 {
4058    ///Brightness of this light
4059    pub brightness: f64,
4060    ///Color temperature of this light
4061    pub color_temp: f64,
4062    ///Color temperature after cold power on of this light
4063    pub color_temp_startup: f64,
4064    ///Link quality (signal strength)
4065    pub linkquality: f64,
4066    ///Controls the behavior when the device is powered on after power loss
4067    pub power_on_behavior: Zigbee4090531p7Poweronbehavior,
4068    ///Zigbee herdsman description: "On/off state of this light"
4069    ///The string values get converted into boolean with: ON = true and OFF = false
4070    #[serde(deserialize_with = "zigbee4090531p7_state_deserializer")]
4071    pub state: bool,
4072    /// Optional last_seen type, set as a global zigbee2mqtt setting
4073    pub last_seen: Option<LastSeen>,
4074    /// Optional elapsed type
4075    pub elapsed: Option<u64>,
4076}
4077/// Deserialize bool from String with custom value mapping
4078fn zigbee4090531p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4079where
4080    D: Deserializer<'de>,
4081{
4082    match String::deserialize(deserializer)?.as_ref() {
4083        "ON" => Ok(true),
4084        "OFF" => Ok(false),
4085        other => Err(de::Error::invalid_value(
4086            Unexpected::Str(other),
4087            &"Value expected was either ON or OFF",
4088        )),
4089    }
4090}
4091
4092/// philips:4090531P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090531P9.html)
4093///
4094/// 
4095#[cfg_attr(feature = "debug", derive(Debug))]
4096#[cfg_attr(feature = "clone", derive(Clone))]
4097#[derive(Deserialize)]
4098pub struct Zigbee4090531p9 {
4099    ///Brightness of this light
4100    pub brightness: f64,
4101    ///Color temperature of this light
4102    pub color_temp: f64,
4103    ///Color temperature after cold power on of this light
4104    pub color_temp_startup: f64,
4105    ///Link quality (signal strength)
4106    pub linkquality: f64,
4107    ///Controls the behavior when the device is powered on after power loss
4108    pub power_on_behavior: Zigbee4090531p9Poweronbehavior,
4109    ///Zigbee herdsman description: "On/off state of this light"
4110    ///The string values get converted into boolean with: ON = true and OFF = false
4111    #[serde(deserialize_with = "zigbee4090531p9_state_deserializer")]
4112    pub state: bool,
4113    /// Optional last_seen type, set as a global zigbee2mqtt setting
4114    pub last_seen: Option<LastSeen>,
4115    /// Optional elapsed type
4116    pub elapsed: Option<u64>,
4117}
4118/// Deserialize bool from String with custom value mapping
4119fn zigbee4090531p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4120where
4121    D: Deserializer<'de>,
4122{
4123    match String::deserialize(deserializer)?.as_ref() {
4124        "ON" => Ok(true),
4125        "OFF" => Ok(false),
4126        other => Err(de::Error::invalid_value(
4127            Unexpected::Str(other),
4128            &"Value expected was either ON or OFF",
4129        )),
4130    }
4131}
4132
4133/// philips:4090631P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090631P7.html)
4134///
4135/// 
4136#[cfg_attr(feature = "debug", derive(Debug))]
4137#[cfg_attr(feature = "clone", derive(Clone))]
4138#[derive(Deserialize)]
4139pub struct Zigbee4090631p7 {
4140    ///Brightness of this light
4141    pub brightness: f64,
4142    ///Color temperature of this light
4143    pub color_temp: f64,
4144    ///Color temperature after cold power on of this light
4145    pub color_temp_startup: f64,
4146    ///Link quality (signal strength)
4147    pub linkquality: f64,
4148    ///Controls the behavior when the device is powered on after power loss
4149    pub power_on_behavior: Zigbee4090631p7Poweronbehavior,
4150    ///Zigbee herdsman description: "On/off state of this light"
4151    ///The string values get converted into boolean with: ON = true and OFF = false
4152    #[serde(deserialize_with = "zigbee4090631p7_state_deserializer")]
4153    pub state: bool,
4154    /// Optional last_seen type, set as a global zigbee2mqtt setting
4155    pub last_seen: Option<LastSeen>,
4156    /// Optional elapsed type
4157    pub elapsed: Option<u64>,
4158}
4159/// Deserialize bool from String with custom value mapping
4160fn zigbee4090631p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4161where
4162    D: Deserializer<'de>,
4163{
4164    match String::deserialize(deserializer)?.as_ref() {
4165        "ON" => Ok(true),
4166        "OFF" => Ok(false),
4167        other => Err(de::Error::invalid_value(
4168            Unexpected::Str(other),
4169            &"Value expected was either ON or OFF",
4170        )),
4171    }
4172}
4173
4174/// philips:4090631P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4090631P9.html)
4175///
4176/// 
4177#[cfg_attr(feature = "debug", derive(Debug))]
4178#[cfg_attr(feature = "clone", derive(Clone))]
4179#[derive(Deserialize)]
4180pub struct Zigbee4090631p9 {
4181    ///Brightness of this light
4182    pub brightness: f64,
4183    ///Color temperature of this light
4184    pub color_temp: f64,
4185    ///Color temperature after cold power on of this light
4186    pub color_temp_startup: f64,
4187    ///Link quality (signal strength)
4188    pub linkquality: f64,
4189    ///Controls the behavior when the device is powered on after power loss
4190    pub power_on_behavior: Zigbee4090631p9Poweronbehavior,
4191    ///Zigbee herdsman description: "On/off state of this light"
4192    ///The string values get converted into boolean with: ON = true and OFF = false
4193    #[serde(deserialize_with = "zigbee4090631p9_state_deserializer")]
4194    pub state: bool,
4195    /// Optional last_seen type, set as a global zigbee2mqtt setting
4196    pub last_seen: Option<LastSeen>,
4197    /// Optional elapsed type
4198    pub elapsed: Option<u64>,
4199}
4200/// Deserialize bool from String with custom value mapping
4201fn zigbee4090631p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4202where
4203    D: Deserializer<'de>,
4204{
4205    match String::deserialize(deserializer)?.as_ref() {
4206        "ON" => Ok(true),
4207        "OFF" => Ok(false),
4208        other => Err(de::Error::invalid_value(
4209            Unexpected::Str(other),
4210            &"Value expected was either ON or OFF",
4211        )),
4212    }
4213}
4214
4215/// philips:4096730P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4096730P6.html)
4216///
4217/// 
4218#[cfg_attr(feature = "debug", derive(Debug))]
4219#[cfg_attr(feature = "clone", derive(Clone))]
4220#[derive(Deserialize)]
4221pub struct Zigbee4096730p6 {
4222    ///Brightness of this light
4223    pub brightness: f64,
4224    ///Color temperature of this light
4225    pub color_temp: f64,
4226    ///Color temperature after cold power on of this light
4227    pub color_temp_startup: f64,
4228    ///Link quality (signal strength)
4229    pub linkquality: f64,
4230    ///Controls the behavior when the device is powered on after power loss
4231    pub power_on_behavior: Zigbee4096730p6Poweronbehavior,
4232    ///Zigbee herdsman description: "On/off state of this light"
4233    ///The string values get converted into boolean with: ON = true and OFF = false
4234    #[serde(deserialize_with = "zigbee4096730p6_state_deserializer")]
4235    pub state: bool,
4236    /// Optional last_seen type, set as a global zigbee2mqtt setting
4237    pub last_seen: Option<LastSeen>,
4238    /// Optional elapsed type
4239    pub elapsed: Option<u64>,
4240}
4241/// Deserialize bool from String with custom value mapping
4242fn zigbee4096730p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4243where
4244    D: Deserializer<'de>,
4245{
4246    match String::deserialize(deserializer)?.as_ref() {
4247        "ON" => Ok(true),
4248        "OFF" => Ok(false),
4249        other => Err(de::Error::invalid_value(
4250            Unexpected::Str(other),
4251            &"Value expected was either ON or OFF",
4252        )),
4253    }
4254}
4255
4256/// philips:4096730U7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4096730U7.html)
4257///
4258/// 
4259#[cfg_attr(feature = "debug", derive(Debug))]
4260#[cfg_attr(feature = "clone", derive(Clone))]
4261#[derive(Deserialize)]
4262pub struct Zigbee4096730u7 {
4263    ///Brightness of this light
4264    pub brightness: f64,
4265    ///Color temperature of this light
4266    pub color_temp: f64,
4267    ///Color temperature after cold power on of this light
4268    pub color_temp_startup: f64,
4269    ///Link quality (signal strength)
4270    pub linkquality: f64,
4271    ///Controls the behavior when the device is powered on after power loss
4272    pub power_on_behavior: Zigbee4096730u7Poweronbehavior,
4273    ///Zigbee herdsman description: "On/off state of this light"
4274    ///The string values get converted into boolean with: ON = true and OFF = false
4275    #[serde(deserialize_with = "zigbee4096730u7_state_deserializer")]
4276    pub state: bool,
4277    /// Optional last_seen type, set as a global zigbee2mqtt setting
4278    pub last_seen: Option<LastSeen>,
4279    /// Optional elapsed type
4280    pub elapsed: Option<u64>,
4281}
4282/// Deserialize bool from String with custom value mapping
4283fn zigbee4096730u7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4284where
4285    D: Deserializer<'de>,
4286{
4287    match String::deserialize(deserializer)?.as_ref() {
4288        "ON" => Ok(true),
4289        "OFF" => Ok(false),
4290        other => Err(de::Error::invalid_value(
4291            Unexpected::Str(other),
4292            &"Value expected was either ON or OFF",
4293        )),
4294    }
4295}
4296
4297/// philips:4098430P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4098430P7.html)
4298///
4299/// 
4300#[cfg_attr(feature = "debug", derive(Debug))]
4301#[cfg_attr(feature = "clone", derive(Clone))]
4302#[derive(Deserialize)]
4303pub struct Zigbee4098430p7 {
4304    ///Brightness of this light
4305    pub brightness: f64,
4306    ///Color temperature of this light
4307    pub color_temp: f64,
4308    ///Color temperature after cold power on of this light
4309    pub color_temp_startup: f64,
4310    ///Link quality (signal strength)
4311    pub linkquality: f64,
4312    ///Controls the behavior when the device is powered on after power loss
4313    pub power_on_behavior: Zigbee4098430p7Poweronbehavior,
4314    ///Zigbee herdsman description: "On/off state of this light"
4315    ///The string values get converted into boolean with: ON = true and OFF = false
4316    #[serde(deserialize_with = "zigbee4098430p7_state_deserializer")]
4317    pub state: bool,
4318    /// Optional last_seen type, set as a global zigbee2mqtt setting
4319    pub last_seen: Option<LastSeen>,
4320    /// Optional elapsed type
4321    pub elapsed: Option<u64>,
4322}
4323/// Deserialize bool from String with custom value mapping
4324fn zigbee4098430p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4325where
4326    D: Deserializer<'de>,
4327{
4328    match String::deserialize(deserializer)?.as_ref() {
4329        "ON" => Ok(true),
4330        "OFF" => Ok(false),
4331        other => Err(de::Error::invalid_value(
4332            Unexpected::Str(other),
4333            &"Value expected was either ON or OFF",
4334        )),
4335    }
4336}
4337
4338/// philips:4100448U9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4100448U9.html)
4339///
4340/// 
4341#[cfg_attr(feature = "debug", derive(Debug))]
4342#[cfg_attr(feature = "clone", derive(Clone))]
4343#[derive(Deserialize)]
4344pub struct Zigbee4100448u9 {
4345    ///Brightness of this light
4346    pub brightness: f64,
4347    ///Color temperature of this light
4348    pub color_temp: f64,
4349    ///Color temperature after cold power on of this light
4350    pub color_temp_startup: f64,
4351    ///Link quality (signal strength)
4352    pub linkquality: f64,
4353    ///Controls the behavior when the device is powered on after power loss
4354    pub power_on_behavior: Zigbee4100448u9Poweronbehavior,
4355    ///Zigbee herdsman description: "On/off state of this light"
4356    ///The string values get converted into boolean with: ON = true and OFF = false
4357    #[serde(deserialize_with = "zigbee4100448u9_state_deserializer")]
4358    pub state: bool,
4359    /// Optional last_seen type, set as a global zigbee2mqtt setting
4360    pub last_seen: Option<LastSeen>,
4361    /// Optional elapsed type
4362    pub elapsed: Option<u64>,
4363}
4364/// Deserialize bool from String with custom value mapping
4365fn zigbee4100448u9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4366where
4367    D: Deserializer<'de>,
4368{
4369    match String::deserialize(deserializer)?.as_ref() {
4370        "ON" => Ok(true),
4371        "OFF" => Ok(false),
4372        other => Err(de::Error::invalid_value(
4373            Unexpected::Str(other),
4374            &"Value expected was either ON or OFF",
4375        )),
4376    }
4377}
4378
4379/// philips:433714 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/433714.html)
4380///
4381/// 
4382#[cfg_attr(feature = "debug", derive(Debug))]
4383#[cfg_attr(feature = "clone", derive(Clone))]
4384#[derive(Deserialize)]
4385pub struct Zigbee433714 {
4386    ///Brightness of this light
4387    pub brightness: f64,
4388    ///Link quality (signal strength)
4389    pub linkquality: f64,
4390    ///Controls the behavior when the device is powered on after power loss
4391    pub power_on_behavior: Zigbee433714Poweronbehavior,
4392    ///Zigbee herdsman description: "On/off state of this light"
4393    ///The string values get converted into boolean with: ON = true and OFF = false
4394    #[serde(deserialize_with = "zigbee433714_state_deserializer")]
4395    pub state: bool,
4396    /// Optional last_seen type, set as a global zigbee2mqtt setting
4397    pub last_seen: Option<LastSeen>,
4398    /// Optional elapsed type
4399    pub elapsed: Option<u64>,
4400}
4401/// Deserialize bool from String with custom value mapping
4402fn zigbee433714_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4403where
4404    D: Deserializer<'de>,
4405{
4406    match String::deserialize(deserializer)?.as_ref() {
4407        "ON" => Ok(true),
4408        "OFF" => Ok(false),
4409        other => Err(de::Error::invalid_value(
4410            Unexpected::Str(other),
4411            &"Value expected was either ON or OFF",
4412        )),
4413    }
4414}
4415
4416/// philips:4503748C6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4503748C6.html)
4417///
4418/// 
4419#[cfg_attr(feature = "debug", derive(Debug))]
4420#[cfg_attr(feature = "clone", derive(Clone))]
4421#[derive(Deserialize)]
4422pub struct Zigbee4503748c6 {
4423    ///Brightness of this light
4424    pub brightness: f64,
4425    ///Color temperature of this light
4426    pub color_temp: f64,
4427    ///Color temperature after cold power on of this light
4428    pub color_temp_startup: f64,
4429    ///Link quality (signal strength)
4430    pub linkquality: f64,
4431    ///Controls the behavior when the device is powered on after power loss
4432    pub power_on_behavior: Zigbee4503748c6Poweronbehavior,
4433    ///Zigbee herdsman description: "On/off state of this light"
4434    ///The string values get converted into boolean with: ON = true and OFF = false
4435    #[serde(deserialize_with = "zigbee4503748c6_state_deserializer")]
4436    pub state: bool,
4437    /// Optional last_seen type, set as a global zigbee2mqtt setting
4438    pub last_seen: Option<LastSeen>,
4439    /// Optional elapsed type
4440    pub elapsed: Option<u64>,
4441}
4442/// Deserialize bool from String with custom value mapping
4443fn zigbee4503748c6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4444where
4445    D: Deserializer<'de>,
4446{
4447    match String::deserialize(deserializer)?.as_ref() {
4448        "ON" => Ok(true),
4449        "OFF" => Ok(false),
4450        other => Err(de::Error::invalid_value(
4451            Unexpected::Str(other),
4452            &"Value expected was either ON or OFF",
4453        )),
4454    }
4455}
4456
4457/// philips:4503848C5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4503848C5.html)
4458///
4459/// 
4460#[cfg_attr(feature = "debug", derive(Debug))]
4461#[cfg_attr(feature = "clone", derive(Clone))]
4462#[derive(Deserialize)]
4463pub struct Zigbee4503848c5 {
4464    ///Brightness of this light
4465    pub brightness: f64,
4466    ///Color temperature of this light
4467    pub color_temp: f64,
4468    ///Color temperature after cold power on of this light
4469    pub color_temp_startup: f64,
4470    ///Link quality (signal strength)
4471    pub linkquality: f64,
4472    ///Controls the behavior when the device is powered on after power loss
4473    pub power_on_behavior: Zigbee4503848c5Poweronbehavior,
4474    ///Zigbee herdsman description: "On/off state of this light"
4475    ///The string values get converted into boolean with: ON = true and OFF = false
4476    #[serde(deserialize_with = "zigbee4503848c5_state_deserializer")]
4477    pub state: bool,
4478    /// Optional last_seen type, set as a global zigbee2mqtt setting
4479    pub last_seen: Option<LastSeen>,
4480    /// Optional elapsed type
4481    pub elapsed: Option<u64>,
4482}
4483/// Deserialize bool from String with custom value mapping
4484fn zigbee4503848c5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4485where
4486    D: Deserializer<'de>,
4487{
4488    match String::deserialize(deserializer)?.as_ref() {
4489        "ON" => Ok(true),
4490        "OFF" => Ok(false),
4491        other => Err(de::Error::invalid_value(
4492            Unexpected::Str(other),
4493            &"Value expected was either ON or OFF",
4494        )),
4495    }
4496}
4497
4498/// philips:4505748C5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4505748C5.html)
4499///
4500/// 
4501#[cfg_attr(feature = "debug", derive(Debug))]
4502#[cfg_attr(feature = "clone", derive(Clone))]
4503#[derive(Deserialize)]
4504pub struct Zigbee4505748c5 {
4505    ///Brightness of this light
4506    pub brightness: f64,
4507    ///Color temperature of this light
4508    pub color_temp: f64,
4509    ///Color temperature after cold power on of this light
4510    pub color_temp_startup: f64,
4511    ///Link quality (signal strength)
4512    pub linkquality: f64,
4513    ///Controls the behavior when the device is powered on after power loss
4514    pub power_on_behavior: Zigbee4505748c5Poweronbehavior,
4515    ///Zigbee herdsman description: "On/off state of this light"
4516    ///The string values get converted into boolean with: ON = true and OFF = false
4517    #[serde(deserialize_with = "zigbee4505748c5_state_deserializer")]
4518    pub state: bool,
4519    /// Optional last_seen type, set as a global zigbee2mqtt setting
4520    pub last_seen: Option<LastSeen>,
4521    /// Optional elapsed type
4522    pub elapsed: Option<u64>,
4523}
4524/// Deserialize bool from String with custom value mapping
4525fn zigbee4505748c5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4526where
4527    D: Deserializer<'de>,
4528{
4529    match String::deserialize(deserializer)?.as_ref() {
4530        "ON" => Ok(true),
4531        "OFF" => Ok(false),
4532        other => Err(de::Error::invalid_value(
4533            Unexpected::Str(other),
4534            &"Value expected was either ON or OFF",
4535        )),
4536    }
4537}
4538
4539/// philips:4507748C5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/4507748C5.html)
4540///
4541/// 
4542#[cfg_attr(feature = "debug", derive(Debug))]
4543#[cfg_attr(feature = "clone", derive(Clone))]
4544#[derive(Deserialize)]
4545pub struct Zigbee4507748c5 {
4546    ///Brightness of this light
4547    pub brightness: f64,
4548    ///Color temperature of this light
4549    pub color_temp: f64,
4550    ///Color temperature after cold power on of this light
4551    pub color_temp_startup: f64,
4552    ///Link quality (signal strength)
4553    pub linkquality: f64,
4554    ///Controls the behavior when the device is powered on after power loss
4555    pub power_on_behavior: Zigbee4507748c5Poweronbehavior,
4556    ///Zigbee herdsman description: "On/off state of this light"
4557    ///The string values get converted into boolean with: ON = true and OFF = false
4558    #[serde(deserialize_with = "zigbee4507748c5_state_deserializer")]
4559    pub state: bool,
4560    /// Optional last_seen type, set as a global zigbee2mqtt setting
4561    pub last_seen: Option<LastSeen>,
4562    /// Optional elapsed type
4563    pub elapsed: Option<u64>,
4564}
4565/// Deserialize bool from String with custom value mapping
4566fn zigbee4507748c5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4567where
4568    D: Deserializer<'de>,
4569{
4570    match String::deserialize(deserializer)?.as_ref() {
4571        "ON" => Ok(true),
4572        "OFF" => Ok(false),
4573        other => Err(de::Error::invalid_value(
4574            Unexpected::Str(other),
4575            &"Value expected was either ON or OFF",
4576        )),
4577    }
4578}
4579
4580/// philips:464800 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/464800.html)
4581///
4582/// 
4583#[cfg_attr(feature = "debug", derive(Debug))]
4584#[cfg_attr(feature = "clone", derive(Clone))]
4585#[derive(Deserialize)]
4586pub struct Zigbee464800 {
4587    ///Brightness of this light
4588    pub brightness: f64,
4589    ///Color temperature of this light
4590    pub color_temp: f64,
4591    ///Color temperature after cold power on of this light
4592    pub color_temp_startup: f64,
4593    ///Link quality (signal strength)
4594    pub linkquality: f64,
4595    ///Controls the behavior when the device is powered on after power loss
4596    pub power_on_behavior: Zigbee464800Poweronbehavior,
4597    ///Zigbee herdsman description: "On/off state of this light"
4598    ///The string values get converted into boolean with: ON = true and OFF = false
4599    #[serde(deserialize_with = "zigbee464800_state_deserializer")]
4600    pub state: bool,
4601    /// Optional last_seen type, set as a global zigbee2mqtt setting
4602    pub last_seen: Option<LastSeen>,
4603    /// Optional elapsed type
4604    pub elapsed: Option<u64>,
4605}
4606/// Deserialize bool from String with custom value mapping
4607fn zigbee464800_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4608where
4609    D: Deserializer<'de>,
4610{
4611    match String::deserialize(deserializer)?.as_ref() {
4612        "ON" => Ok(true),
4613        "OFF" => Ok(false),
4614        other => Err(de::Error::invalid_value(
4615            Unexpected::Str(other),
4616            &"Value expected was either ON or OFF",
4617        )),
4618    }
4619}
4620
4621/// philips:5041131P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5041131P9.html)
4622///
4623/// 
4624#[cfg_attr(feature = "debug", derive(Debug))]
4625#[cfg_attr(feature = "clone", derive(Clone))]
4626#[derive(Deserialize)]
4627pub struct Zigbee5041131p9 {
4628    ///Brightness of this light
4629    pub brightness: f64,
4630    ///Color temperature of this light
4631    pub color_temp: f64,
4632    ///Color temperature after cold power on of this light
4633    pub color_temp_startup: f64,
4634    ///Link quality (signal strength)
4635    pub linkquality: f64,
4636    ///Controls the behavior when the device is powered on after power loss
4637    pub power_on_behavior: Zigbee5041131p9Poweronbehavior,
4638    ///Zigbee herdsman description: "On/off state of this light"
4639    ///The string values get converted into boolean with: ON = true and OFF = false
4640    #[serde(deserialize_with = "zigbee5041131p9_state_deserializer")]
4641    pub state: bool,
4642    /// Optional last_seen type, set as a global zigbee2mqtt setting
4643    pub last_seen: Option<LastSeen>,
4644    /// Optional elapsed type
4645    pub elapsed: Option<u64>,
4646}
4647/// Deserialize bool from String with custom value mapping
4648fn zigbee5041131p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4649where
4650    D: Deserializer<'de>,
4651{
4652    match String::deserialize(deserializer)?.as_ref() {
4653        "ON" => Ok(true),
4654        "OFF" => Ok(false),
4655        other => Err(de::Error::invalid_value(
4656            Unexpected::Str(other),
4657            &"Value expected was either ON or OFF",
4658        )),
4659    }
4660}
4661
4662/// philips:5042131P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5042131P9.html)
4663///
4664/// 
4665#[cfg_attr(feature = "debug", derive(Debug))]
4666#[cfg_attr(feature = "clone", derive(Clone))]
4667#[derive(Deserialize)]
4668pub struct Zigbee5042131p9 {
4669    ///Brightness of this light
4670    pub brightness: f64,
4671    ///Color temperature of this light
4672    pub color_temp: f64,
4673    ///Color temperature after cold power on of this light
4674    pub color_temp_startup: f64,
4675    ///Link quality (signal strength)
4676    pub linkquality: f64,
4677    ///Controls the behavior when the device is powered on after power loss
4678    pub power_on_behavior: Zigbee5042131p9Poweronbehavior,
4679    ///Zigbee herdsman description: "On/off state of this light"
4680    ///The string values get converted into boolean with: ON = true and OFF = false
4681    #[serde(deserialize_with = "zigbee5042131p9_state_deserializer")]
4682    pub state: bool,
4683    /// Optional last_seen type, set as a global zigbee2mqtt setting
4684    pub last_seen: Option<LastSeen>,
4685    /// Optional elapsed type
4686    pub elapsed: Option<u64>,
4687}
4688/// Deserialize bool from String with custom value mapping
4689fn zigbee5042131p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4690where
4691    D: Deserializer<'de>,
4692{
4693    match String::deserialize(deserializer)?.as_ref() {
4694        "ON" => Ok(true),
4695        "OFF" => Ok(false),
4696        other => Err(de::Error::invalid_value(
4697            Unexpected::Str(other),
4698            &"Value expected was either ON or OFF",
4699        )),
4700    }
4701}
4702
4703/// philips:5045131P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5045131P7.html)
4704///
4705/// 
4706#[cfg_attr(feature = "debug", derive(Debug))]
4707#[cfg_attr(feature = "clone", derive(Clone))]
4708#[derive(Deserialize)]
4709pub struct Zigbee5045131p7 {
4710    ///Brightness of this light
4711    pub brightness: f64,
4712    ///Color temperature of this light
4713    pub color_temp: f64,
4714    ///Color temperature after cold power on of this light
4715    pub color_temp_startup: f64,
4716    ///Link quality (signal strength)
4717    pub linkquality: f64,
4718    ///Controls the behavior when the device is powered on after power loss
4719    pub power_on_behavior: Zigbee5045131p7Poweronbehavior,
4720    ///Zigbee herdsman description: "On/off state of this light"
4721    ///The string values get converted into boolean with: ON = true and OFF = false
4722    #[serde(deserialize_with = "zigbee5045131p7_state_deserializer")]
4723    pub state: bool,
4724    /// Optional last_seen type, set as a global zigbee2mqtt setting
4725    pub last_seen: Option<LastSeen>,
4726    /// Optional elapsed type
4727    pub elapsed: Option<u64>,
4728}
4729/// Deserialize bool from String with custom value mapping
4730fn zigbee5045131p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4731where
4732    D: Deserializer<'de>,
4733{
4734    match String::deserialize(deserializer)?.as_ref() {
4735        "ON" => Ok(true),
4736        "OFF" => Ok(false),
4737        other => Err(de::Error::invalid_value(
4738            Unexpected::Str(other),
4739            &"Value expected was either ON or OFF",
4740        )),
4741    }
4742}
4743
4744/// philips:5045148P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5045148P7.html)
4745///
4746/// 
4747#[cfg_attr(feature = "debug", derive(Debug))]
4748#[cfg_attr(feature = "clone", derive(Clone))]
4749#[derive(Deserialize)]
4750pub struct Zigbee5045148p7 {
4751    ///Brightness of this light
4752    pub brightness: f64,
4753    ///Color temperature of this light
4754    pub color_temp: f64,
4755    ///Color temperature after cold power on of this light
4756    pub color_temp_startup: f64,
4757    ///Link quality (signal strength)
4758    pub linkquality: f64,
4759    ///Controls the behavior when the device is powered on after power loss
4760    pub power_on_behavior: Zigbee5045148p7Poweronbehavior,
4761    ///Zigbee herdsman description: "On/off state of this light"
4762    ///The string values get converted into boolean with: ON = true and OFF = false
4763    #[serde(deserialize_with = "zigbee5045148p7_state_deserializer")]
4764    pub state: bool,
4765    /// Optional last_seen type, set as a global zigbee2mqtt setting
4766    pub last_seen: Option<LastSeen>,
4767    /// Optional elapsed type
4768    pub elapsed: Option<u64>,
4769}
4770/// Deserialize bool from String with custom value mapping
4771fn zigbee5045148p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4772where
4773    D: Deserializer<'de>,
4774{
4775    match String::deserialize(deserializer)?.as_ref() {
4776        "ON" => Ok(true),
4777        "OFF" => Ok(false),
4778        other => Err(de::Error::invalid_value(
4779            Unexpected::Str(other),
4780            &"Value expected was either ON or OFF",
4781        )),
4782    }
4783}
4784
4785/// philips:5047130P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5047130P6.html)
4786///
4787/// 
4788#[cfg_attr(feature = "debug", derive(Debug))]
4789#[cfg_attr(feature = "clone", derive(Clone))]
4790#[derive(Deserialize)]
4791pub struct Zigbee5047130p6 {
4792    ///Brightness of this light
4793    pub brightness: f64,
4794    ///Color temperature of this light
4795    pub color_temp: f64,
4796    ///Color temperature after cold power on of this light
4797    pub color_temp_startup: f64,
4798    ///Link quality (signal strength)
4799    pub linkquality: f64,
4800    ///Controls the behavior when the device is powered on after power loss
4801    pub power_on_behavior: Zigbee5047130p6Poweronbehavior,
4802    ///Zigbee herdsman description: "On/off state of this light"
4803    ///The string values get converted into boolean with: ON = true and OFF = false
4804    #[serde(deserialize_with = "zigbee5047130p6_state_deserializer")]
4805    pub state: bool,
4806    /// Optional last_seen type, set as a global zigbee2mqtt setting
4807    pub last_seen: Option<LastSeen>,
4808    /// Optional elapsed type
4809    pub elapsed: Option<u64>,
4810}
4811/// Deserialize bool from String with custom value mapping
4812fn zigbee5047130p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4813where
4814    D: Deserializer<'de>,
4815{
4816    match String::deserialize(deserializer)?.as_ref() {
4817        "ON" => Ok(true),
4818        "OFF" => Ok(false),
4819        other => Err(de::Error::invalid_value(
4820            Unexpected::Str(other),
4821            &"Value expected was either ON or OFF",
4822        )),
4823    }
4824}
4825
4826/// philips:5047130P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5047130P9.html)
4827///
4828/// 
4829#[cfg_attr(feature = "debug", derive(Debug))]
4830#[cfg_attr(feature = "clone", derive(Clone))]
4831#[derive(Deserialize)]
4832pub struct Zigbee5047130p9 {
4833    ///Brightness of this light
4834    pub brightness: f64,
4835    ///Color temperature of this light
4836    pub color_temp: f64,
4837    ///Color temperature after cold power on of this light
4838    pub color_temp_startup: f64,
4839    ///Link quality (signal strength)
4840    pub linkquality: f64,
4841    ///Controls the behavior when the device is powered on after power loss
4842    pub power_on_behavior: Zigbee5047130p9Poweronbehavior,
4843    ///Zigbee herdsman description: "On/off state of this light"
4844    ///The string values get converted into boolean with: ON = true and OFF = false
4845    #[serde(deserialize_with = "zigbee5047130p9_state_deserializer")]
4846    pub state: bool,
4847    /// Optional last_seen type, set as a global zigbee2mqtt setting
4848    pub last_seen: Option<LastSeen>,
4849    /// Optional elapsed type
4850    pub elapsed: Option<u64>,
4851}
4852/// Deserialize bool from String with custom value mapping
4853fn zigbee5047130p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4854where
4855    D: Deserializer<'de>,
4856{
4857    match String::deserialize(deserializer)?.as_ref() {
4858        "ON" => Ok(true),
4859        "OFF" => Ok(false),
4860        other => Err(de::Error::invalid_value(
4861            Unexpected::Str(other),
4862            &"Value expected was either ON or OFF",
4863        )),
4864    }
4865}
4866
4867/// philips:5047131P8 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5047131P8.html)
4868///
4869/// 
4870#[cfg_attr(feature = "debug", derive(Debug))]
4871#[cfg_attr(feature = "clone", derive(Clone))]
4872#[derive(Deserialize)]
4873pub struct Zigbee5047131p8 {
4874    ///Brightness of this light
4875    pub brightness: f64,
4876    ///Color temperature of this light
4877    pub color_temp: f64,
4878    ///Color temperature after cold power on of this light
4879    pub color_temp_startup: f64,
4880    ///Link quality (signal strength)
4881    pub linkquality: f64,
4882    ///Controls the behavior when the device is powered on after power loss
4883    pub power_on_behavior: Zigbee5047131p8Poweronbehavior,
4884    ///Zigbee herdsman description: "On/off state of this light"
4885    ///The string values get converted into boolean with: ON = true and OFF = false
4886    #[serde(deserialize_with = "zigbee5047131p8_state_deserializer")]
4887    pub state: bool,
4888    /// Optional last_seen type, set as a global zigbee2mqtt setting
4889    pub last_seen: Option<LastSeen>,
4890    /// Optional elapsed type
4891    pub elapsed: Option<u64>,
4892}
4893/// Deserialize bool from String with custom value mapping
4894fn zigbee5047131p8_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4895where
4896    D: Deserializer<'de>,
4897{
4898    match String::deserialize(deserializer)?.as_ref() {
4899        "ON" => Ok(true),
4900        "OFF" => Ok(false),
4901        other => Err(de::Error::invalid_value(
4902            Unexpected::Str(other),
4903            &"Value expected was either ON or OFF",
4904        )),
4905    }
4906}
4907
4908/// philips:5047131P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5047131P9.html)
4909///
4910/// 
4911#[cfg_attr(feature = "debug", derive(Debug))]
4912#[cfg_attr(feature = "clone", derive(Clone))]
4913#[derive(Deserialize)]
4914pub struct Zigbee5047131p9 {
4915    ///Brightness of this light
4916    pub brightness: f64,
4917    ///Color temperature of this light
4918    pub color_temp: f64,
4919    ///Color temperature after cold power on of this light
4920    pub color_temp_startup: f64,
4921    ///Link quality (signal strength)
4922    pub linkquality: f64,
4923    ///Controls the behavior when the device is powered on after power loss
4924    pub power_on_behavior: Zigbee5047131p9Poweronbehavior,
4925    ///Zigbee herdsman description: "On/off state of this light"
4926    ///The string values get converted into boolean with: ON = true and OFF = false
4927    #[serde(deserialize_with = "zigbee5047131p9_state_deserializer")]
4928    pub state: bool,
4929    /// Optional last_seen type, set as a global zigbee2mqtt setting
4930    pub last_seen: Option<LastSeen>,
4931    /// Optional elapsed type
4932    pub elapsed: Option<u64>,
4933}
4934/// Deserialize bool from String with custom value mapping
4935fn zigbee5047131p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4936where
4937    D: Deserializer<'de>,
4938{
4939    match String::deserialize(deserializer)?.as_ref() {
4940        "ON" => Ok(true),
4941        "OFF" => Ok(false),
4942        other => Err(de::Error::invalid_value(
4943            Unexpected::Str(other),
4944            &"Value expected was either ON or OFF",
4945        )),
4946    }
4947}
4948
4949/// philips:5047230P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5047230P6.html)
4950///
4951/// 
4952#[cfg_attr(feature = "debug", derive(Debug))]
4953#[cfg_attr(feature = "clone", derive(Clone))]
4954#[derive(Deserialize)]
4955pub struct Zigbee5047230p6 {
4956    ///Brightness of this light
4957    pub brightness: f64,
4958    ///Color temperature of this light
4959    pub color_temp: f64,
4960    ///Color temperature after cold power on of this light
4961    pub color_temp_startup: f64,
4962    ///Link quality (signal strength)
4963    pub linkquality: f64,
4964    ///Controls the behavior when the device is powered on after power loss
4965    pub power_on_behavior: Zigbee5047230p6Poweronbehavior,
4966    ///Zigbee herdsman description: "On/off state of this light"
4967    ///The string values get converted into boolean with: ON = true and OFF = false
4968    #[serde(deserialize_with = "zigbee5047230p6_state_deserializer")]
4969    pub state: bool,
4970    /// Optional last_seen type, set as a global zigbee2mqtt setting
4971    pub last_seen: Option<LastSeen>,
4972    /// Optional elapsed type
4973    pub elapsed: Option<u64>,
4974}
4975/// Deserialize bool from String with custom value mapping
4976fn zigbee5047230p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
4977where
4978    D: Deserializer<'de>,
4979{
4980    match String::deserialize(deserializer)?.as_ref() {
4981        "ON" => Ok(true),
4982        "OFF" => Ok(false),
4983        other => Err(de::Error::invalid_value(
4984            Unexpected::Str(other),
4985            &"Value expected was either ON or OFF",
4986        )),
4987    }
4988}
4989
4990/// philips:5047231P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5047231P6.html)
4991///
4992/// 
4993#[cfg_attr(feature = "debug", derive(Debug))]
4994#[cfg_attr(feature = "clone", derive(Clone))]
4995#[derive(Deserialize)]
4996pub struct Zigbee5047231p6 {
4997    ///Brightness of this light
4998    pub brightness: f64,
4999    ///Color temperature of this light
5000    pub color_temp: f64,
5001    ///Color temperature after cold power on of this light
5002    pub color_temp_startup: f64,
5003    ///Link quality (signal strength)
5004    pub linkquality: f64,
5005    ///Controls the behavior when the device is powered on after power loss
5006    pub power_on_behavior: Zigbee5047231p6Poweronbehavior,
5007    ///Zigbee herdsman description: "On/off state of this light"
5008    ///The string values get converted into boolean with: ON = true and OFF = false
5009    #[serde(deserialize_with = "zigbee5047231p6_state_deserializer")]
5010    pub state: bool,
5011    /// Optional last_seen type, set as a global zigbee2mqtt setting
5012    pub last_seen: Option<LastSeen>,
5013    /// Optional elapsed type
5014    pub elapsed: Option<u64>,
5015}
5016/// Deserialize bool from String with custom value mapping
5017fn zigbee5047231p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5018where
5019    D: Deserializer<'de>,
5020{
5021    match String::deserialize(deserializer)?.as_ref() {
5022        "ON" => Ok(true),
5023        "OFF" => Ok(false),
5024        other => Err(de::Error::invalid_value(
5025            Unexpected::Str(other),
5026            &"Value expected was either ON or OFF",
5027        )),
5028    }
5029}
5030
5031/// philips:5047331P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5047331P6.html)
5032///
5033/// 
5034#[cfg_attr(feature = "debug", derive(Debug))]
5035#[cfg_attr(feature = "clone", derive(Clone))]
5036#[derive(Deserialize)]
5037pub struct Zigbee5047331p6 {
5038    ///Brightness of this light
5039    pub brightness: f64,
5040    ///Color temperature of this light
5041    pub color_temp: f64,
5042    ///Color temperature after cold power on of this light
5043    pub color_temp_startup: f64,
5044    ///Link quality (signal strength)
5045    pub linkquality: f64,
5046    ///Controls the behavior when the device is powered on after power loss
5047    pub power_on_behavior: Zigbee5047331p6Poweronbehavior,
5048    ///Zigbee herdsman description: "On/off state of this light"
5049    ///The string values get converted into boolean with: ON = true and OFF = false
5050    #[serde(deserialize_with = "zigbee5047331p6_state_deserializer")]
5051    pub state: bool,
5052    /// Optional last_seen type, set as a global zigbee2mqtt setting
5053    pub last_seen: Option<LastSeen>,
5054    /// Optional elapsed type
5055    pub elapsed: Option<u64>,
5056}
5057/// Deserialize bool from String with custom value mapping
5058fn zigbee5047331p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5059where
5060    D: Deserializer<'de>,
5061{
5062    match String::deserialize(deserializer)?.as_ref() {
5063        "ON" => Ok(true),
5064        "OFF" => Ok(false),
5065        other => Err(de::Error::invalid_value(
5066            Unexpected::Str(other),
5067            &"Value expected was either ON or OFF",
5068        )),
5069    }
5070}
5071
5072/// philips:5047430P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5047430P6.html)
5073///
5074/// 
5075#[cfg_attr(feature = "debug", derive(Debug))]
5076#[cfg_attr(feature = "clone", derive(Clone))]
5077#[derive(Deserialize)]
5078pub struct Zigbee5047430p6 {
5079    ///Brightness of this light
5080    pub brightness: f64,
5081    ///Color temperature of this light
5082    pub color_temp: f64,
5083    ///Color temperature after cold power on of this light
5084    pub color_temp_startup: f64,
5085    ///Link quality (signal strength)
5086    pub linkquality: f64,
5087    ///Controls the behavior when the device is powered on after power loss
5088    pub power_on_behavior: Zigbee5047430p6Poweronbehavior,
5089    ///Zigbee herdsman description: "On/off state of this light"
5090    ///The string values get converted into boolean with: ON = true and OFF = false
5091    #[serde(deserialize_with = "zigbee5047430p6_state_deserializer")]
5092    pub state: bool,
5093    /// Optional last_seen type, set as a global zigbee2mqtt setting
5094    pub last_seen: Option<LastSeen>,
5095    /// Optional elapsed type
5096    pub elapsed: Option<u64>,
5097}
5098/// Deserialize bool from String with custom value mapping
5099fn zigbee5047430p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5100where
5101    D: Deserializer<'de>,
5102{
5103    match String::deserialize(deserializer)?.as_ref() {
5104        "ON" => Ok(true),
5105        "OFF" => Ok(false),
5106        other => Err(de::Error::invalid_value(
5107            Unexpected::Str(other),
5108            &"Value expected was either ON or OFF",
5109        )),
5110    }
5111}
5112
5113/// philips:5055131P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5055131P7.html)
5114///
5115/// 
5116#[cfg_attr(feature = "debug", derive(Debug))]
5117#[cfg_attr(feature = "clone", derive(Clone))]
5118#[derive(Deserialize)]
5119pub struct Zigbee5055131p7 {
5120    ///Brightness of this light
5121    pub brightness: f64,
5122    ///Color temperature of this light
5123    pub color_temp: f64,
5124    ///Color temperature after cold power on of this light
5125    pub color_temp_startup: f64,
5126    ///Link quality (signal strength)
5127    pub linkquality: f64,
5128    ///Controls the behavior when the device is powered on after power loss
5129    pub power_on_behavior: Zigbee5055131p7Poweronbehavior,
5130    ///Zigbee herdsman description: "On/off state of this light"
5131    ///The string values get converted into boolean with: ON = true and OFF = false
5132    #[serde(deserialize_with = "zigbee5055131p7_state_deserializer")]
5133    pub state: bool,
5134    /// Optional last_seen type, set as a global zigbee2mqtt setting
5135    pub last_seen: Option<LastSeen>,
5136    /// Optional elapsed type
5137    pub elapsed: Option<u64>,
5138}
5139/// Deserialize bool from String with custom value mapping
5140fn zigbee5055131p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5141where
5142    D: Deserializer<'de>,
5143{
5144    match String::deserialize(deserializer)?.as_ref() {
5145        "ON" => Ok(true),
5146        "OFF" => Ok(false),
5147        other => Err(de::Error::invalid_value(
5148            Unexpected::Str(other),
5149            &"Value expected was either ON or OFF",
5150        )),
5151    }
5152}
5153
5154/// philips:5055148P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5055148P7.html)
5155///
5156/// 
5157#[cfg_attr(feature = "debug", derive(Debug))]
5158#[cfg_attr(feature = "clone", derive(Clone))]
5159#[derive(Deserialize)]
5160pub struct Zigbee5055148p7 {
5161    ///Brightness of this light
5162    pub brightness: f64,
5163    ///Color temperature of this light
5164    pub color_temp: f64,
5165    ///Color temperature after cold power on of this light
5166    pub color_temp_startup: f64,
5167    ///Link quality (signal strength)
5168    pub linkquality: f64,
5169    ///Controls the behavior when the device is powered on after power loss
5170    pub power_on_behavior: Zigbee5055148p7Poweronbehavior,
5171    ///Zigbee herdsman description: "On/off state of this light"
5172    ///The string values get converted into boolean with: ON = true and OFF = false
5173    #[serde(deserialize_with = "zigbee5055148p7_state_deserializer")]
5174    pub state: bool,
5175    /// Optional last_seen type, set as a global zigbee2mqtt setting
5176    pub last_seen: Option<LastSeen>,
5177    /// Optional elapsed type
5178    pub elapsed: Option<u64>,
5179}
5180/// Deserialize bool from String with custom value mapping
5181fn zigbee5055148p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5182where
5183    D: Deserializer<'de>,
5184{
5185    match String::deserialize(deserializer)?.as_ref() {
5186        "ON" => Ok(true),
5187        "OFF" => Ok(false),
5188        other => Err(de::Error::invalid_value(
5189            Unexpected::Str(other),
5190            &"Value expected was either ON or OFF",
5191        )),
5192    }
5193}
5194
5195/// philips:5060730P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5060730P7.html)
5196///
5197/// 
5198#[cfg_attr(feature = "debug", derive(Debug))]
5199#[cfg_attr(feature = "clone", derive(Clone))]
5200#[derive(Deserialize)]
5201pub struct Zigbee5060730p7 {
5202    ///Brightness of this light
5203    pub brightness: f64,
5204    ///Color temperature of this light
5205    pub color_temp: f64,
5206    ///Color temperature after cold power on of this light
5207    pub color_temp_startup: f64,
5208    ///Link quality (signal strength)
5209    pub linkquality: f64,
5210    ///Controls the behavior when the device is powered on after power loss
5211    pub power_on_behavior: Zigbee5060730p7Poweronbehavior,
5212    ///Zigbee herdsman description: "On/off state of this light"
5213    ///The string values get converted into boolean with: ON = true and OFF = false
5214    #[serde(deserialize_with = "zigbee5060730p7_state_deserializer")]
5215    pub state: bool,
5216    /// Optional last_seen type, set as a global zigbee2mqtt setting
5217    pub last_seen: Option<LastSeen>,
5218    /// Optional elapsed type
5219    pub elapsed: Option<u64>,
5220}
5221/// Deserialize bool from String with custom value mapping
5222fn zigbee5060730p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5223where
5224    D: Deserializer<'de>,
5225{
5226    match String::deserialize(deserializer)?.as_ref() {
5227        "ON" => Ok(true),
5228        "OFF" => Ok(false),
5229        other => Err(de::Error::invalid_value(
5230            Unexpected::Str(other),
5231            &"Value expected was either ON or OFF",
5232        )),
5233    }
5234}
5235
5236/// philips:5060731P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5060731P7.html)
5237///
5238/// 
5239#[cfg_attr(feature = "debug", derive(Debug))]
5240#[cfg_attr(feature = "clone", derive(Clone))]
5241#[derive(Deserialize)]
5242pub struct Zigbee5060731p7 {
5243    ///Brightness of this light
5244    pub brightness: f64,
5245    ///Color temperature of this light
5246    pub color_temp: f64,
5247    ///Color temperature after cold power on of this light
5248    pub color_temp_startup: f64,
5249    ///Link quality (signal strength)
5250    pub linkquality: f64,
5251    ///Controls the behavior when the device is powered on after power loss
5252    pub power_on_behavior: Zigbee5060731p7Poweronbehavior,
5253    ///Zigbee herdsman description: "On/off state of this light"
5254    ///The string values get converted into boolean with: ON = true and OFF = false
5255    #[serde(deserialize_with = "zigbee5060731p7_state_deserializer")]
5256    pub state: bool,
5257    /// Optional last_seen type, set as a global zigbee2mqtt setting
5258    pub last_seen: Option<LastSeen>,
5259    /// Optional elapsed type
5260    pub elapsed: Option<u64>,
5261}
5262/// Deserialize bool from String with custom value mapping
5263fn zigbee5060731p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5264where
5265    D: Deserializer<'de>,
5266{
5267    match String::deserialize(deserializer)?.as_ref() {
5268        "ON" => Ok(true),
5269        "OFF" => Ok(false),
5270        other => Err(de::Error::invalid_value(
5271            Unexpected::Str(other),
5272            &"Value expected was either ON or OFF",
5273        )),
5274    }
5275}
5276
5277/// philips:5060830P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5060830P7.html)
5278///
5279/// 
5280#[cfg_attr(feature = "debug", derive(Debug))]
5281#[cfg_attr(feature = "clone", derive(Clone))]
5282#[derive(Deserialize)]
5283pub struct Zigbee5060830p7 {
5284    ///Brightness of this light
5285    pub brightness: f64,
5286    ///Color temperature of this light
5287    pub color_temp: f64,
5288    ///Color temperature after cold power on of this light
5289    pub color_temp_startup: f64,
5290    ///Link quality (signal strength)
5291    pub linkquality: f64,
5292    ///Controls the behavior when the device is powered on after power loss
5293    pub power_on_behavior: Zigbee5060830p7Poweronbehavior,
5294    ///Zigbee herdsman description: "On/off state of this light"
5295    ///The string values get converted into boolean with: ON = true and OFF = false
5296    #[serde(deserialize_with = "zigbee5060830p7_state_deserializer")]
5297    pub state: bool,
5298    /// Optional last_seen type, set as a global zigbee2mqtt setting
5299    pub last_seen: Option<LastSeen>,
5300    /// Optional elapsed type
5301    pub elapsed: Option<u64>,
5302}
5303/// Deserialize bool from String with custom value mapping
5304fn zigbee5060830p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5305where
5306    D: Deserializer<'de>,
5307{
5308    match String::deserialize(deserializer)?.as_ref() {
5309        "ON" => Ok(true),
5310        "OFF" => Ok(false),
5311        other => Err(de::Error::invalid_value(
5312            Unexpected::Str(other),
5313            &"Value expected was either ON or OFF",
5314        )),
5315    }
5316}
5317
5318/// philips:5060831P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5060831P7.html)
5319///
5320/// 
5321#[cfg_attr(feature = "debug", derive(Debug))]
5322#[cfg_attr(feature = "clone", derive(Clone))]
5323#[derive(Deserialize)]
5324pub struct Zigbee5060831p7 {
5325    ///Brightness of this light
5326    pub brightness: f64,
5327    ///Color temperature of this light
5328    pub color_temp: f64,
5329    ///Color temperature after cold power on of this light
5330    pub color_temp_startup: f64,
5331    ///Link quality (signal strength)
5332    pub linkquality: f64,
5333    ///Controls the behavior when the device is powered on after power loss
5334    pub power_on_behavior: Zigbee5060831p7Poweronbehavior,
5335    ///Zigbee herdsman description: "On/off state of this light"
5336    ///The string values get converted into boolean with: ON = true and OFF = false
5337    #[serde(deserialize_with = "zigbee5060831p7_state_deserializer")]
5338    pub state: bool,
5339    /// Optional last_seen type, set as a global zigbee2mqtt setting
5340    pub last_seen: Option<LastSeen>,
5341    /// Optional elapsed type
5342    pub elapsed: Option<u64>,
5343}
5344/// Deserialize bool from String with custom value mapping
5345fn zigbee5060831p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5346where
5347    D: Deserializer<'de>,
5348{
5349    match String::deserialize(deserializer)?.as_ref() {
5350        "ON" => Ok(true),
5351        "OFF" => Ok(false),
5352        other => Err(de::Error::invalid_value(
5353            Unexpected::Str(other),
5354            &"Value expected was either ON or OFF",
5355        )),
5356    }
5357}
5358
5359/// philips:5060930P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5060930P7.html)
5360///
5361/// 
5362#[cfg_attr(feature = "debug", derive(Debug))]
5363#[cfg_attr(feature = "clone", derive(Clone))]
5364#[derive(Deserialize)]
5365pub struct Zigbee5060930p7 {
5366    ///Brightness of this light
5367    pub brightness: f64,
5368    ///Color temperature of this light
5369    pub color_temp: f64,
5370    ///Color temperature after cold power on of this light
5371    pub color_temp_startup: f64,
5372    ///Link quality (signal strength)
5373    pub linkquality: f64,
5374    ///Controls the behavior when the device is powered on after power loss
5375    pub power_on_behavior: Zigbee5060930p7Poweronbehavior,
5376    ///Zigbee herdsman description: "On/off state of this light"
5377    ///The string values get converted into boolean with: ON = true and OFF = false
5378    #[serde(deserialize_with = "zigbee5060930p7_state_deserializer")]
5379    pub state: bool,
5380    /// Optional last_seen type, set as a global zigbee2mqtt setting
5381    pub last_seen: Option<LastSeen>,
5382    /// Optional elapsed type
5383    pub elapsed: Option<u64>,
5384}
5385/// Deserialize bool from String with custom value mapping
5386fn zigbee5060930p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5387where
5388    D: Deserializer<'de>,
5389{
5390    match String::deserialize(deserializer)?.as_ref() {
5391        "ON" => Ok(true),
5392        "OFF" => Ok(false),
5393        other => Err(de::Error::invalid_value(
5394            Unexpected::Str(other),
5395            &"Value expected was either ON or OFF",
5396        )),
5397    }
5398}
5399
5400/// philips:5060931P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5060931P7.html)
5401///
5402/// 
5403#[cfg_attr(feature = "debug", derive(Debug))]
5404#[cfg_attr(feature = "clone", derive(Clone))]
5405#[derive(Deserialize)]
5406pub struct Zigbee5060931p7 {
5407    ///Brightness of this light
5408    pub brightness: f64,
5409    ///Color temperature of this light
5410    pub color_temp: f64,
5411    ///Color temperature after cold power on of this light
5412    pub color_temp_startup: f64,
5413    ///Link quality (signal strength)
5414    pub linkquality: f64,
5415    ///Controls the behavior when the device is powered on after power loss
5416    pub power_on_behavior: Zigbee5060931p7Poweronbehavior,
5417    ///Zigbee herdsman description: "On/off state of this light"
5418    ///The string values get converted into boolean with: ON = true and OFF = false
5419    #[serde(deserialize_with = "zigbee5060931p7_state_deserializer")]
5420    pub state: bool,
5421    /// Optional last_seen type, set as a global zigbee2mqtt setting
5422    pub last_seen: Option<LastSeen>,
5423    /// Optional elapsed type
5424    pub elapsed: Option<u64>,
5425}
5426/// Deserialize bool from String with custom value mapping
5427fn zigbee5060931p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5428where
5429    D: Deserializer<'de>,
5430{
5431    match String::deserialize(deserializer)?.as_ref() {
5432        "ON" => Ok(true),
5433        "OFF" => Ok(false),
5434        other => Err(de::Error::invalid_value(
5435            Unexpected::Str(other),
5436            &"Value expected was either ON or OFF",
5437        )),
5438    }
5439}
5440
5441/// philips:5061030P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5061030P7.html)
5442///
5443/// 
5444#[cfg_attr(feature = "debug", derive(Debug))]
5445#[cfg_attr(feature = "clone", derive(Clone))]
5446#[derive(Deserialize)]
5447pub struct Zigbee5061030p7 {
5448    ///Brightness of this light
5449    pub brightness: f64,
5450    ///Color temperature of this light
5451    pub color_temp: f64,
5452    ///Color temperature after cold power on of this light
5453    pub color_temp_startup: f64,
5454    ///Link quality (signal strength)
5455    pub linkquality: f64,
5456    ///Controls the behavior when the device is powered on after power loss
5457    pub power_on_behavior: Zigbee5061030p7Poweronbehavior,
5458    ///Zigbee herdsman description: "On/off state of this light"
5459    ///The string values get converted into boolean with: ON = true and OFF = false
5460    #[serde(deserialize_with = "zigbee5061030p7_state_deserializer")]
5461    pub state: bool,
5462    /// Optional last_seen type, set as a global zigbee2mqtt setting
5463    pub last_seen: Option<LastSeen>,
5464    /// Optional elapsed type
5465    pub elapsed: Option<u64>,
5466}
5467/// Deserialize bool from String with custom value mapping
5468fn zigbee5061030p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5469where
5470    D: Deserializer<'de>,
5471{
5472    match String::deserialize(deserializer)?.as_ref() {
5473        "ON" => Ok(true),
5474        "OFF" => Ok(false),
5475        other => Err(de::Error::invalid_value(
5476            Unexpected::Str(other),
5477            &"Value expected was either ON or OFF",
5478        )),
5479    }
5480}
5481
5482/// philips:5061031P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5061031P7.html)
5483///
5484/// 
5485#[cfg_attr(feature = "debug", derive(Debug))]
5486#[cfg_attr(feature = "clone", derive(Clone))]
5487#[derive(Deserialize)]
5488pub struct Zigbee5061031p7 {
5489    ///Brightness of this light
5490    pub brightness: f64,
5491    ///Color temperature of this light
5492    pub color_temp: f64,
5493    ///Color temperature after cold power on of this light
5494    pub color_temp_startup: f64,
5495    ///Link quality (signal strength)
5496    pub linkquality: f64,
5497    ///Controls the behavior when the device is powered on after power loss
5498    pub power_on_behavior: Zigbee5061031p7Poweronbehavior,
5499    ///Zigbee herdsman description: "On/off state of this light"
5500    ///The string values get converted into boolean with: ON = true and OFF = false
5501    #[serde(deserialize_with = "zigbee5061031p7_state_deserializer")]
5502    pub state: bool,
5503    /// Optional last_seen type, set as a global zigbee2mqtt setting
5504    pub last_seen: Option<LastSeen>,
5505    /// Optional elapsed type
5506    pub elapsed: Option<u64>,
5507}
5508/// Deserialize bool from String with custom value mapping
5509fn zigbee5061031p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5510where
5511    D: Deserializer<'de>,
5512{
5513    match String::deserialize(deserializer)?.as_ref() {
5514        "ON" => Ok(true),
5515        "OFF" => Ok(false),
5516        other => Err(de::Error::invalid_value(
5517            Unexpected::Str(other),
5518            &"Value expected was either ON or OFF",
5519        )),
5520    }
5521}
5522
5523/// philips:5062131P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5062131P7.html)
5524///
5525/// 
5526#[cfg_attr(feature = "debug", derive(Debug))]
5527#[cfg_attr(feature = "clone", derive(Clone))]
5528#[derive(Deserialize)]
5529pub struct Zigbee5062131p7 {
5530    ///Brightness of this light
5531    pub brightness: f64,
5532    ///Color temperature of this light
5533    pub color_temp: f64,
5534    ///Color temperature after cold power on of this light
5535    pub color_temp_startup: f64,
5536    ///Link quality (signal strength)
5537    pub linkquality: f64,
5538    ///Controls the behavior when the device is powered on after power loss
5539    pub power_on_behavior: Zigbee5062131p7Poweronbehavior,
5540    ///Zigbee herdsman description: "On/off state of this light"
5541    ///The string values get converted into boolean with: ON = true and OFF = false
5542    #[serde(deserialize_with = "zigbee5062131p7_state_deserializer")]
5543    pub state: bool,
5544    /// Optional last_seen type, set as a global zigbee2mqtt setting
5545    pub last_seen: Option<LastSeen>,
5546    /// Optional elapsed type
5547    pub elapsed: Option<u64>,
5548}
5549/// Deserialize bool from String with custom value mapping
5550fn zigbee5062131p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5551where
5552    D: Deserializer<'de>,
5553{
5554    match String::deserialize(deserializer)?.as_ref() {
5555        "ON" => Ok(true),
5556        "OFF" => Ok(false),
5557        other => Err(de::Error::invalid_value(
5558            Unexpected::Str(other),
5559            &"Value expected was either ON or OFF",
5560        )),
5561    }
5562}
5563
5564/// philips:5062148P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5062148P7.html)
5565///
5566/// 
5567#[cfg_attr(feature = "debug", derive(Debug))]
5568#[cfg_attr(feature = "clone", derive(Clone))]
5569#[derive(Deserialize)]
5570pub struct Zigbee5062148p7 {
5571    ///Brightness of this light
5572    pub brightness: f64,
5573    ///Color temperature of this light
5574    pub color_temp: f64,
5575    ///Color temperature after cold power on of this light
5576    pub color_temp_startup: f64,
5577    ///Link quality (signal strength)
5578    pub linkquality: f64,
5579    ///Controls the behavior when the device is powered on after power loss
5580    pub power_on_behavior: Zigbee5062148p7Poweronbehavior,
5581    ///Zigbee herdsman description: "On/off state of this light"
5582    ///The string values get converted into boolean with: ON = true and OFF = false
5583    #[serde(deserialize_with = "zigbee5062148p7_state_deserializer")]
5584    pub state: bool,
5585    /// Optional last_seen type, set as a global zigbee2mqtt setting
5586    pub last_seen: Option<LastSeen>,
5587    /// Optional elapsed type
5588    pub elapsed: Option<u64>,
5589}
5590/// Deserialize bool from String with custom value mapping
5591fn zigbee5062148p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5592where
5593    D: Deserializer<'de>,
5594{
5595    match String::deserialize(deserializer)?.as_ref() {
5596        "ON" => Ok(true),
5597        "OFF" => Ok(false),
5598        other => Err(de::Error::invalid_value(
5599            Unexpected::Str(other),
5600            &"Value expected was either ON or OFF",
5601        )),
5602    }
5603}
5604
5605/// philips:5062231P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5062231P7.html)
5606///
5607/// 
5608#[cfg_attr(feature = "debug", derive(Debug))]
5609#[cfg_attr(feature = "clone", derive(Clone))]
5610#[derive(Deserialize)]
5611pub struct Zigbee5062231p7 {
5612    ///Brightness of this light
5613    pub brightness: f64,
5614    ///Color temperature of this light
5615    pub color_temp: f64,
5616    ///Color temperature after cold power on of this light
5617    pub color_temp_startup: f64,
5618    ///Link quality (signal strength)
5619    pub linkquality: f64,
5620    ///Controls the behavior when the device is powered on after power loss
5621    pub power_on_behavior: Zigbee5062231p7Poweronbehavior,
5622    ///Zigbee herdsman description: "On/off state of this light"
5623    ///The string values get converted into boolean with: ON = true and OFF = false
5624    #[serde(deserialize_with = "zigbee5062231p7_state_deserializer")]
5625    pub state: bool,
5626    /// Optional last_seen type, set as a global zigbee2mqtt setting
5627    pub last_seen: Option<LastSeen>,
5628    /// Optional elapsed type
5629    pub elapsed: Option<u64>,
5630}
5631/// Deserialize bool from String with custom value mapping
5632fn zigbee5062231p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5633where
5634    D: Deserializer<'de>,
5635{
5636    match String::deserialize(deserializer)?.as_ref() {
5637        "ON" => Ok(true),
5638        "OFF" => Ok(false),
5639        other => Err(de::Error::invalid_value(
5640            Unexpected::Str(other),
5641            &"Value expected was either ON or OFF",
5642        )),
5643    }
5644}
5645
5646/// philips:5062248P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5062248P7.html)
5647///
5648/// 
5649#[cfg_attr(feature = "debug", derive(Debug))]
5650#[cfg_attr(feature = "clone", derive(Clone))]
5651#[derive(Deserialize)]
5652pub struct Zigbee5062248p7 {
5653    ///Brightness of this light
5654    pub brightness: f64,
5655    ///Color temperature of this light
5656    pub color_temp: f64,
5657    ///Color temperature after cold power on of this light
5658    pub color_temp_startup: f64,
5659    ///Link quality (signal strength)
5660    pub linkquality: f64,
5661    ///Controls the behavior when the device is powered on after power loss
5662    pub power_on_behavior: Zigbee5062248p7Poweronbehavior,
5663    ///Zigbee herdsman description: "On/off state of this light"
5664    ///The string values get converted into boolean with: ON = true and OFF = false
5665    #[serde(deserialize_with = "zigbee5062248p7_state_deserializer")]
5666    pub state: bool,
5667    /// Optional last_seen type, set as a global zigbee2mqtt setting
5668    pub last_seen: Option<LastSeen>,
5669    /// Optional elapsed type
5670    pub elapsed: Option<u64>,
5671}
5672/// Deserialize bool from String with custom value mapping
5673fn zigbee5062248p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5674where
5675    D: Deserializer<'de>,
5676{
5677    match String::deserialize(deserializer)?.as_ref() {
5678        "ON" => Ok(true),
5679        "OFF" => Ok(false),
5680        other => Err(de::Error::invalid_value(
5681            Unexpected::Str(other),
5682            &"Value expected was either ON or OFF",
5683        )),
5684    }
5685}
5686
5687/// philips:5062331P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5062331P7.html)
5688///
5689/// 
5690#[cfg_attr(feature = "debug", derive(Debug))]
5691#[cfg_attr(feature = "clone", derive(Clone))]
5692#[derive(Deserialize)]
5693pub struct Zigbee5062331p7 {
5694    ///Brightness of this light
5695    pub brightness: f64,
5696    ///Color temperature of this light
5697    pub color_temp: f64,
5698    ///Color temperature after cold power on of this light
5699    pub color_temp_startup: f64,
5700    ///Link quality (signal strength)
5701    pub linkquality: f64,
5702    ///Controls the behavior when the device is powered on after power loss
5703    pub power_on_behavior: Zigbee5062331p7Poweronbehavior,
5704    ///Zigbee herdsman description: "On/off state of this light"
5705    ///The string values get converted into boolean with: ON = true and OFF = false
5706    #[serde(deserialize_with = "zigbee5062331p7_state_deserializer")]
5707    pub state: bool,
5708    /// Optional last_seen type, set as a global zigbee2mqtt setting
5709    pub last_seen: Option<LastSeen>,
5710    /// Optional elapsed type
5711    pub elapsed: Option<u64>,
5712}
5713/// Deserialize bool from String with custom value mapping
5714fn zigbee5062331p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5715where
5716    D: Deserializer<'de>,
5717{
5718    match String::deserialize(deserializer)?.as_ref() {
5719        "ON" => Ok(true),
5720        "OFF" => Ok(false),
5721        other => Err(de::Error::invalid_value(
5722            Unexpected::Str(other),
5723            &"Value expected was either ON or OFF",
5724        )),
5725    }
5726}
5727
5728/// philips:5062348P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5062348P7.html)
5729///
5730/// 
5731#[cfg_attr(feature = "debug", derive(Debug))]
5732#[cfg_attr(feature = "clone", derive(Clone))]
5733#[derive(Deserialize)]
5734pub struct Zigbee5062348p7 {
5735    ///Brightness of this light
5736    pub brightness: f64,
5737    ///Color temperature of this light
5738    pub color_temp: f64,
5739    ///Color temperature after cold power on of this light
5740    pub color_temp_startup: f64,
5741    ///Link quality (signal strength)
5742    pub linkquality: f64,
5743    ///Controls the behavior when the device is powered on after power loss
5744    pub power_on_behavior: Zigbee5062348p7Poweronbehavior,
5745    ///Zigbee herdsman description: "On/off state of this light"
5746    ///The string values get converted into boolean with: ON = true and OFF = false
5747    #[serde(deserialize_with = "zigbee5062348p7_state_deserializer")]
5748    pub state: bool,
5749    /// Optional last_seen type, set as a global zigbee2mqtt setting
5750    pub last_seen: Option<LastSeen>,
5751    /// Optional elapsed type
5752    pub elapsed: Option<u64>,
5753}
5754/// Deserialize bool from String with custom value mapping
5755fn zigbee5062348p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5756where
5757    D: Deserializer<'de>,
5758{
5759    match String::deserialize(deserializer)?.as_ref() {
5760        "ON" => Ok(true),
5761        "OFF" => Ok(false),
5762        other => Err(de::Error::invalid_value(
5763            Unexpected::Str(other),
5764            &"Value expected was either ON or OFF",
5765        )),
5766    }
5767}
5768
5769/// philips:5062431P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5062431P7.html)
5770///
5771/// 
5772#[cfg_attr(feature = "debug", derive(Debug))]
5773#[cfg_attr(feature = "clone", derive(Clone))]
5774#[derive(Deserialize)]
5775pub struct Zigbee5062431p7 {
5776    ///Brightness of this light
5777    pub brightness: f64,
5778    ///Color temperature of this light
5779    pub color_temp: f64,
5780    ///Color temperature after cold power on of this light
5781    pub color_temp_startup: f64,
5782    ///Link quality (signal strength)
5783    pub linkquality: f64,
5784    ///Controls the behavior when the device is powered on after power loss
5785    pub power_on_behavior: Zigbee5062431p7Poweronbehavior,
5786    ///Zigbee herdsman description: "On/off state of this light"
5787    ///The string values get converted into boolean with: ON = true and OFF = false
5788    #[serde(deserialize_with = "zigbee5062431p7_state_deserializer")]
5789    pub state: bool,
5790    /// Optional last_seen type, set as a global zigbee2mqtt setting
5791    pub last_seen: Option<LastSeen>,
5792    /// Optional elapsed type
5793    pub elapsed: Option<u64>,
5794}
5795/// Deserialize bool from String with custom value mapping
5796fn zigbee5062431p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5797where
5798    D: Deserializer<'de>,
5799{
5800    match String::deserialize(deserializer)?.as_ref() {
5801        "ON" => Ok(true),
5802        "OFF" => Ok(false),
5803        other => Err(de::Error::invalid_value(
5804            Unexpected::Str(other),
5805            &"Value expected was either ON or OFF",
5806        )),
5807    }
5808}
5809
5810/// philips:5062448P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5062448P7.html)
5811///
5812/// 
5813#[cfg_attr(feature = "debug", derive(Debug))]
5814#[cfg_attr(feature = "clone", derive(Clone))]
5815#[derive(Deserialize)]
5816pub struct Zigbee5062448p7 {
5817    ///Brightness of this light
5818    pub brightness: f64,
5819    ///Color temperature of this light
5820    pub color_temp: f64,
5821    ///Color temperature after cold power on of this light
5822    pub color_temp_startup: f64,
5823    ///Link quality (signal strength)
5824    pub linkquality: f64,
5825    ///Controls the behavior when the device is powered on after power loss
5826    pub power_on_behavior: Zigbee5062448p7Poweronbehavior,
5827    ///Zigbee herdsman description: "On/off state of this light"
5828    ///The string values get converted into boolean with: ON = true and OFF = false
5829    #[serde(deserialize_with = "zigbee5062448p7_state_deserializer")]
5830    pub state: bool,
5831    /// Optional last_seen type, set as a global zigbee2mqtt setting
5832    pub last_seen: Option<LastSeen>,
5833    /// Optional elapsed type
5834    pub elapsed: Option<u64>,
5835}
5836/// Deserialize bool from String with custom value mapping
5837fn zigbee5062448p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5838where
5839    D: Deserializer<'de>,
5840{
5841    match String::deserialize(deserializer)?.as_ref() {
5842        "ON" => Ok(true),
5843        "OFF" => Ok(false),
5844        other => Err(de::Error::invalid_value(
5845            Unexpected::Str(other),
5846            &"Value expected was either ON or OFF",
5847        )),
5848    }
5849}
5850
5851/// philips:5063130P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5063130P7.html)
5852///
5853/// 
5854#[cfg_attr(feature = "debug", derive(Debug))]
5855#[cfg_attr(feature = "clone", derive(Clone))]
5856#[derive(Deserialize)]
5857pub struct Zigbee5063130p7 {
5858    ///Brightness of this light
5859    pub brightness: f64,
5860    ///Color temperature of this light
5861    pub color_temp: f64,
5862    ///Color temperature after cold power on of this light
5863    pub color_temp_startup: f64,
5864    ///Link quality (signal strength)
5865    pub linkquality: f64,
5866    ///Controls the behavior when the device is powered on after power loss
5867    pub power_on_behavior: Zigbee5063130p7Poweronbehavior,
5868    ///Zigbee herdsman description: "On/off state of this light"
5869    ///The string values get converted into boolean with: ON = true and OFF = false
5870    #[serde(deserialize_with = "zigbee5063130p7_state_deserializer")]
5871    pub state: bool,
5872    /// Optional last_seen type, set as a global zigbee2mqtt setting
5873    pub last_seen: Option<LastSeen>,
5874    /// Optional elapsed type
5875    pub elapsed: Option<u64>,
5876}
5877/// Deserialize bool from String with custom value mapping
5878fn zigbee5063130p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5879where
5880    D: Deserializer<'de>,
5881{
5882    match String::deserialize(deserializer)?.as_ref() {
5883        "ON" => Ok(true),
5884        "OFF" => Ok(false),
5885        other => Err(de::Error::invalid_value(
5886            Unexpected::Str(other),
5887            &"Value expected was either ON or OFF",
5888        )),
5889    }
5890}
5891
5892/// philips:5063131P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5063131P7.html)
5893///
5894/// 
5895#[cfg_attr(feature = "debug", derive(Debug))]
5896#[cfg_attr(feature = "clone", derive(Clone))]
5897#[derive(Deserialize)]
5898pub struct Zigbee5063131p7 {
5899    ///Brightness of this light
5900    pub brightness: f64,
5901    ///Color temperature of this light
5902    pub color_temp: f64,
5903    ///Color temperature after cold power on of this light
5904    pub color_temp_startup: f64,
5905    ///Link quality (signal strength)
5906    pub linkquality: f64,
5907    ///Controls the behavior when the device is powered on after power loss
5908    pub power_on_behavior: Zigbee5063131p7Poweronbehavior,
5909    ///Zigbee herdsman description: "On/off state of this light"
5910    ///The string values get converted into boolean with: ON = true and OFF = false
5911    #[serde(deserialize_with = "zigbee5063131p7_state_deserializer")]
5912    pub state: bool,
5913    /// Optional last_seen type, set as a global zigbee2mqtt setting
5914    pub last_seen: Option<LastSeen>,
5915    /// Optional elapsed type
5916    pub elapsed: Option<u64>,
5917}
5918/// Deserialize bool from String with custom value mapping
5919fn zigbee5063131p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5920where
5921    D: Deserializer<'de>,
5922{
5923    match String::deserialize(deserializer)?.as_ref() {
5924        "ON" => Ok(true),
5925        "OFF" => Ok(false),
5926        other => Err(de::Error::invalid_value(
5927            Unexpected::Str(other),
5928            &"Value expected was either ON or OFF",
5929        )),
5930    }
5931}
5932
5933/// philips:5063230P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5063230P7.html)
5934///
5935/// 
5936#[cfg_attr(feature = "debug", derive(Debug))]
5937#[cfg_attr(feature = "clone", derive(Clone))]
5938#[derive(Deserialize)]
5939pub struct Zigbee5063230p7 {
5940    ///Brightness of this light
5941    pub brightness: f64,
5942    ///Color temperature of this light
5943    pub color_temp: f64,
5944    ///Color temperature after cold power on of this light
5945    pub color_temp_startup: f64,
5946    ///Link quality (signal strength)
5947    pub linkquality: f64,
5948    ///Controls the behavior when the device is powered on after power loss
5949    pub power_on_behavior: Zigbee5063230p7Poweronbehavior,
5950    ///Zigbee herdsman description: "On/off state of this light"
5951    ///The string values get converted into boolean with: ON = true and OFF = false
5952    #[serde(deserialize_with = "zigbee5063230p7_state_deserializer")]
5953    pub state: bool,
5954    /// Optional last_seen type, set as a global zigbee2mqtt setting
5955    pub last_seen: Option<LastSeen>,
5956    /// Optional elapsed type
5957    pub elapsed: Option<u64>,
5958}
5959/// Deserialize bool from String with custom value mapping
5960fn zigbee5063230p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
5961where
5962    D: Deserializer<'de>,
5963{
5964    match String::deserialize(deserializer)?.as_ref() {
5965        "ON" => Ok(true),
5966        "OFF" => Ok(false),
5967        other => Err(de::Error::invalid_value(
5968            Unexpected::Str(other),
5969            &"Value expected was either ON or OFF",
5970        )),
5971    }
5972}
5973
5974/// philips:5063231P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5063231P7.html)
5975///
5976/// 
5977#[cfg_attr(feature = "debug", derive(Debug))]
5978#[cfg_attr(feature = "clone", derive(Clone))]
5979#[derive(Deserialize)]
5980pub struct Zigbee5063231p7 {
5981    ///Brightness of this light
5982    pub brightness: f64,
5983    ///Color temperature of this light
5984    pub color_temp: f64,
5985    ///Color temperature after cold power on of this light
5986    pub color_temp_startup: f64,
5987    ///Link quality (signal strength)
5988    pub linkquality: f64,
5989    ///Controls the behavior when the device is powered on after power loss
5990    pub power_on_behavior: Zigbee5063231p7Poweronbehavior,
5991    ///Zigbee herdsman description: "On/off state of this light"
5992    ///The string values get converted into boolean with: ON = true and OFF = false
5993    #[serde(deserialize_with = "zigbee5063231p7_state_deserializer")]
5994    pub state: bool,
5995    /// Optional last_seen type, set as a global zigbee2mqtt setting
5996    pub last_seen: Option<LastSeen>,
5997    /// Optional elapsed type
5998    pub elapsed: Option<u64>,
5999}
6000/// Deserialize bool from String with custom value mapping
6001fn zigbee5063231p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6002where
6003    D: Deserializer<'de>,
6004{
6005    match String::deserialize(deserializer)?.as_ref() {
6006        "ON" => Ok(true),
6007        "OFF" => Ok(false),
6008        other => Err(de::Error::invalid_value(
6009            Unexpected::Str(other),
6010            &"Value expected was either ON or OFF",
6011        )),
6012    }
6013}
6014
6015/// philips:5063330P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5063330P7.html)
6016///
6017/// 
6018#[cfg_attr(feature = "debug", derive(Debug))]
6019#[cfg_attr(feature = "clone", derive(Clone))]
6020#[derive(Deserialize)]
6021pub struct Zigbee5063330p7 {
6022    ///Brightness of this light
6023    pub brightness: f64,
6024    ///Color temperature of this light
6025    pub color_temp: f64,
6026    ///Color temperature after cold power on of this light
6027    pub color_temp_startup: f64,
6028    ///Link quality (signal strength)
6029    pub linkquality: f64,
6030    ///Controls the behavior when the device is powered on after power loss
6031    pub power_on_behavior: Zigbee5063330p7Poweronbehavior,
6032    ///Zigbee herdsman description: "On/off state of this light"
6033    ///The string values get converted into boolean with: ON = true and OFF = false
6034    #[serde(deserialize_with = "zigbee5063330p7_state_deserializer")]
6035    pub state: bool,
6036    /// Optional last_seen type, set as a global zigbee2mqtt setting
6037    pub last_seen: Option<LastSeen>,
6038    /// Optional elapsed type
6039    pub elapsed: Option<u64>,
6040}
6041/// Deserialize bool from String with custom value mapping
6042fn zigbee5063330p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6043where
6044    D: Deserializer<'de>,
6045{
6046    match String::deserialize(deserializer)?.as_ref() {
6047        "ON" => Ok(true),
6048        "OFF" => Ok(false),
6049        other => Err(de::Error::invalid_value(
6050            Unexpected::Str(other),
6051            &"Value expected was either ON or OFF",
6052        )),
6053    }
6054}
6055
6056/// philips:5063331P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5063331P7.html)
6057///
6058/// 
6059#[cfg_attr(feature = "debug", derive(Debug))]
6060#[cfg_attr(feature = "clone", derive(Clone))]
6061#[derive(Deserialize)]
6062pub struct Zigbee5063331p7 {
6063    ///Brightness of this light
6064    pub brightness: f64,
6065    ///Color temperature of this light
6066    pub color_temp: f64,
6067    ///Color temperature after cold power on of this light
6068    pub color_temp_startup: f64,
6069    ///Link quality (signal strength)
6070    pub linkquality: f64,
6071    ///Controls the behavior when the device is powered on after power loss
6072    pub power_on_behavior: Zigbee5063331p7Poweronbehavior,
6073    ///Zigbee herdsman description: "On/off state of this light"
6074    ///The string values get converted into boolean with: ON = true and OFF = false
6075    #[serde(deserialize_with = "zigbee5063331p7_state_deserializer")]
6076    pub state: bool,
6077    /// Optional last_seen type, set as a global zigbee2mqtt setting
6078    pub last_seen: Option<LastSeen>,
6079    /// Optional elapsed type
6080    pub elapsed: Option<u64>,
6081}
6082/// Deserialize bool from String with custom value mapping
6083fn zigbee5063331p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6084where
6085    D: Deserializer<'de>,
6086{
6087    match String::deserialize(deserializer)?.as_ref() {
6088        "ON" => Ok(true),
6089        "OFF" => Ok(false),
6090        other => Err(de::Error::invalid_value(
6091            Unexpected::Str(other),
6092            &"Value expected was either ON or OFF",
6093        )),
6094    }
6095}
6096
6097/// philips:5063430P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5063430P7.html)
6098///
6099/// 
6100#[cfg_attr(feature = "debug", derive(Debug))]
6101#[cfg_attr(feature = "clone", derive(Clone))]
6102#[derive(Deserialize)]
6103pub struct Zigbee5063430p7 {
6104    ///Brightness of this light
6105    pub brightness: f64,
6106    ///Color temperature of this light
6107    pub color_temp: f64,
6108    ///Color temperature after cold power on of this light
6109    pub color_temp_startup: f64,
6110    ///Link quality (signal strength)
6111    pub linkquality: f64,
6112    ///Controls the behavior when the device is powered on after power loss
6113    pub power_on_behavior: Zigbee5063430p7Poweronbehavior,
6114    ///Zigbee herdsman description: "On/off state of this light"
6115    ///The string values get converted into boolean with: ON = true and OFF = false
6116    #[serde(deserialize_with = "zigbee5063430p7_state_deserializer")]
6117    pub state: bool,
6118    /// Optional last_seen type, set as a global zigbee2mqtt setting
6119    pub last_seen: Option<LastSeen>,
6120    /// Optional elapsed type
6121    pub elapsed: Option<u64>,
6122}
6123/// Deserialize bool from String with custom value mapping
6124fn zigbee5063430p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6125where
6126    D: Deserializer<'de>,
6127{
6128    match String::deserialize(deserializer)?.as_ref() {
6129        "ON" => Ok(true),
6130        "OFF" => Ok(false),
6131        other => Err(de::Error::invalid_value(
6132            Unexpected::Str(other),
6133            &"Value expected was either ON or OFF",
6134        )),
6135    }
6136}
6137
6138/// philips:5063431P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5063431P7.html)
6139///
6140/// 
6141#[cfg_attr(feature = "debug", derive(Debug))]
6142#[cfg_attr(feature = "clone", derive(Clone))]
6143#[derive(Deserialize)]
6144pub struct Zigbee5063431p7 {
6145    ///Brightness of this light
6146    pub brightness: f64,
6147    ///Color temperature of this light
6148    pub color_temp: f64,
6149    ///Color temperature after cold power on of this light
6150    pub color_temp_startup: f64,
6151    ///Link quality (signal strength)
6152    pub linkquality: f64,
6153    ///Controls the behavior when the device is powered on after power loss
6154    pub power_on_behavior: Zigbee5063431p7Poweronbehavior,
6155    ///Zigbee herdsman description: "On/off state of this light"
6156    ///The string values get converted into boolean with: ON = true and OFF = false
6157    #[serde(deserialize_with = "zigbee5063431p7_state_deserializer")]
6158    pub state: bool,
6159    /// Optional last_seen type, set as a global zigbee2mqtt setting
6160    pub last_seen: Option<LastSeen>,
6161    /// Optional elapsed type
6162    pub elapsed: Option<u64>,
6163}
6164/// Deserialize bool from String with custom value mapping
6165fn zigbee5063431p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6166where
6167    D: Deserializer<'de>,
6168{
6169    match String::deserialize(deserializer)?.as_ref() {
6170        "ON" => Ok(true),
6171        "OFF" => Ok(false),
6172        other => Err(de::Error::invalid_value(
6173            Unexpected::Str(other),
6174            &"Value expected was either ON or OFF",
6175        )),
6176    }
6177}
6178
6179/// philips:5110131H5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5110131H5.html)
6180///
6181/// 
6182#[cfg_attr(feature = "debug", derive(Debug))]
6183#[cfg_attr(feature = "clone", derive(Clone))]
6184#[derive(Deserialize)]
6185pub struct Zigbee5110131h5 {
6186    ///Brightness of this light
6187    pub brightness: f64,
6188    ///Color temperature of this light
6189    pub color_temp: f64,
6190    ///Color temperature after cold power on of this light
6191    pub color_temp_startup: f64,
6192    ///Link quality (signal strength)
6193    pub linkquality: f64,
6194    ///Controls the behavior when the device is powered on after power loss
6195    pub power_on_behavior: Zigbee5110131h5Poweronbehavior,
6196    ///Zigbee herdsman description: "On/off state of this light"
6197    ///The string values get converted into boolean with: ON = true and OFF = false
6198    #[serde(deserialize_with = "zigbee5110131h5_state_deserializer")]
6199    pub state: bool,
6200    /// Optional last_seen type, set as a global zigbee2mqtt setting
6201    pub last_seen: Option<LastSeen>,
6202    /// Optional elapsed type
6203    pub elapsed: Option<u64>,
6204}
6205/// Deserialize bool from String with custom value mapping
6206fn zigbee5110131h5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6207where
6208    D: Deserializer<'de>,
6209{
6210    match String::deserialize(deserializer)?.as_ref() {
6211        "ON" => Ok(true),
6212        "OFF" => Ok(false),
6213        other => Err(de::Error::invalid_value(
6214            Unexpected::Str(other),
6215            &"Value expected was either ON or OFF",
6216        )),
6217    }
6218}
6219
6220/// philips:5110731H5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5110731H5.html)
6221///
6222/// 
6223#[cfg_attr(feature = "debug", derive(Debug))]
6224#[cfg_attr(feature = "clone", derive(Clone))]
6225#[derive(Deserialize)]
6226pub struct Zigbee5110731h5 {
6227    ///Brightness of this light
6228    pub brightness: f64,
6229    ///Color temperature of this light
6230    pub color_temp: f64,
6231    ///Color temperature after cold power on of this light
6232    pub color_temp_startup: f64,
6233    ///Link quality (signal strength)
6234    pub linkquality: f64,
6235    ///Controls the behavior when the device is powered on after power loss
6236    pub power_on_behavior: Zigbee5110731h5Poweronbehavior,
6237    ///Zigbee herdsman description: "On/off state of this light"
6238    ///The string values get converted into boolean with: ON = true and OFF = false
6239    #[serde(deserialize_with = "zigbee5110731h5_state_deserializer")]
6240    pub state: bool,
6241    /// Optional last_seen type, set as a global zigbee2mqtt setting
6242    pub last_seen: Option<LastSeen>,
6243    /// Optional elapsed type
6244    pub elapsed: Option<u64>,
6245}
6246/// Deserialize bool from String with custom value mapping
6247fn zigbee5110731h5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6248where
6249    D: Deserializer<'de>,
6250{
6251    match String::deserialize(deserializer)?.as_ref() {
6252        "ON" => Ok(true),
6253        "OFF" => Ok(false),
6254        other => Err(de::Error::invalid_value(
6255            Unexpected::Str(other),
6256            &"Value expected was either ON or OFF",
6257        )),
6258    }
6259}
6260
6261/// philips:5111531H5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5111531H5.html)
6262///
6263/// 
6264#[cfg_attr(feature = "debug", derive(Debug))]
6265#[cfg_attr(feature = "clone", derive(Clone))]
6266#[derive(Deserialize)]
6267pub struct Zigbee5111531h5 {
6268    ///Brightness of this light
6269    pub brightness: f64,
6270    ///Color temperature of this light
6271    pub color_temp: f64,
6272    ///Color temperature after cold power on of this light
6273    pub color_temp_startup: f64,
6274    ///Link quality (signal strength)
6275    pub linkquality: f64,
6276    ///Controls the behavior when the device is powered on after power loss
6277    pub power_on_behavior: Zigbee5111531h5Poweronbehavior,
6278    ///Zigbee herdsman description: "On/off state of this light"
6279    ///The string values get converted into boolean with: ON = true and OFF = false
6280    #[serde(deserialize_with = "zigbee5111531h5_state_deserializer")]
6281    pub state: bool,
6282    /// Optional last_seen type, set as a global zigbee2mqtt setting
6283    pub last_seen: Option<LastSeen>,
6284    /// Optional elapsed type
6285    pub elapsed: Option<u64>,
6286}
6287/// Deserialize bool from String with custom value mapping
6288fn zigbee5111531h5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6289where
6290    D: Deserializer<'de>,
6291{
6292    match String::deserialize(deserializer)?.as_ref() {
6293        "ON" => Ok(true),
6294        "OFF" => Ok(false),
6295        other => Err(de::Error::invalid_value(
6296            Unexpected::Str(other),
6297            &"Value expected was either ON or OFF",
6298        )),
6299    }
6300}
6301
6302/// philips:5309030P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5309030P9.html)
6303///
6304/// 
6305#[cfg_attr(feature = "debug", derive(Debug))]
6306#[cfg_attr(feature = "clone", derive(Clone))]
6307#[derive(Deserialize)]
6308pub struct Zigbee5309030p9 {
6309    ///Brightness of this light
6310    pub brightness: f64,
6311    ///Color temperature of this light
6312    pub color_temp: f64,
6313    ///Color temperature after cold power on of this light
6314    pub color_temp_startup: f64,
6315    ///Link quality (signal strength)
6316    pub linkquality: f64,
6317    ///Controls the behavior when the device is powered on after power loss
6318    pub power_on_behavior: Zigbee5309030p9Poweronbehavior,
6319    ///Zigbee herdsman description: "On/off state of this light"
6320    ///The string values get converted into boolean with: ON = true and OFF = false
6321    #[serde(deserialize_with = "zigbee5309030p9_state_deserializer")]
6322    pub state: bool,
6323    /// Optional last_seen type, set as a global zigbee2mqtt setting
6324    pub last_seen: Option<LastSeen>,
6325    /// Optional elapsed type
6326    pub elapsed: Option<u64>,
6327}
6328/// Deserialize bool from String with custom value mapping
6329fn zigbee5309030p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6330where
6331    D: Deserializer<'de>,
6332{
6333    match String::deserialize(deserializer)?.as_ref() {
6334        "ON" => Ok(true),
6335        "OFF" => Ok(false),
6336        other => Err(de::Error::invalid_value(
6337            Unexpected::Str(other),
6338            &"Value expected was either ON or OFF",
6339        )),
6340    }
6341}
6342
6343/// philips:5309031P8 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5309031P8.html)
6344///
6345/// 
6346#[cfg_attr(feature = "debug", derive(Debug))]
6347#[cfg_attr(feature = "clone", derive(Clone))]
6348#[derive(Deserialize)]
6349pub struct Zigbee5309031p8 {
6350    ///Brightness of this light
6351    pub brightness: f64,
6352    ///Color temperature of this light
6353    pub color_temp: f64,
6354    ///Color temperature after cold power on of this light
6355    pub color_temp_startup: f64,
6356    ///Link quality (signal strength)
6357    pub linkquality: f64,
6358    ///Controls the behavior when the device is powered on after power loss
6359    pub power_on_behavior: Zigbee5309031p8Poweronbehavior,
6360    ///Zigbee herdsman description: "On/off state of this light"
6361    ///The string values get converted into boolean with: ON = true and OFF = false
6362    #[serde(deserialize_with = "zigbee5309031p8_state_deserializer")]
6363    pub state: bool,
6364    /// Optional last_seen type, set as a global zigbee2mqtt setting
6365    pub last_seen: Option<LastSeen>,
6366    /// Optional elapsed type
6367    pub elapsed: Option<u64>,
6368}
6369/// Deserialize bool from String with custom value mapping
6370fn zigbee5309031p8_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6371where
6372    D: Deserializer<'de>,
6373{
6374    match String::deserialize(deserializer)?.as_ref() {
6375        "ON" => Ok(true),
6376        "OFF" => Ok(false),
6377        other => Err(de::Error::invalid_value(
6378            Unexpected::Str(other),
6379            &"Value expected was either ON or OFF",
6380        )),
6381    }
6382}
6383
6384/// philips:5309230P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5309230P6.html)
6385///
6386/// 
6387#[cfg_attr(feature = "debug", derive(Debug))]
6388#[cfg_attr(feature = "clone", derive(Clone))]
6389#[derive(Deserialize)]
6390pub struct Zigbee5309230p6 {
6391    ///Brightness of this light
6392    pub brightness: f64,
6393    ///Color temperature of this light
6394    pub color_temp: f64,
6395    ///Color temperature after cold power on of this light
6396    pub color_temp_startup: f64,
6397    ///Link quality (signal strength)
6398    pub linkquality: f64,
6399    ///Controls the behavior when the device is powered on after power loss
6400    pub power_on_behavior: Zigbee5309230p6Poweronbehavior,
6401    ///Zigbee herdsman description: "On/off state of this light"
6402    ///The string values get converted into boolean with: ON = true and OFF = false
6403    #[serde(deserialize_with = "zigbee5309230p6_state_deserializer")]
6404    pub state: bool,
6405    /// Optional last_seen type, set as a global zigbee2mqtt setting
6406    pub last_seen: Option<LastSeen>,
6407    /// Optional elapsed type
6408    pub elapsed: Option<u64>,
6409}
6410/// Deserialize bool from String with custom value mapping
6411fn zigbee5309230p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6412where
6413    D: Deserializer<'de>,
6414{
6415    match String::deserialize(deserializer)?.as_ref() {
6416        "ON" => Ok(true),
6417        "OFF" => Ok(false),
6418        other => Err(de::Error::invalid_value(
6419            Unexpected::Str(other),
6420            &"Value expected was either ON or OFF",
6421        )),
6422    }
6423}
6424
6425/// philips:5309331P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5309331P6.html)
6426///
6427/// 
6428#[cfg_attr(feature = "debug", derive(Debug))]
6429#[cfg_attr(feature = "clone", derive(Clone))]
6430#[derive(Deserialize)]
6431pub struct Zigbee5309331p6 {
6432    ///Brightness of this light
6433    pub brightness: f64,
6434    ///Color temperature of this light
6435    pub color_temp: f64,
6436    ///Color temperature after cold power on of this light
6437    pub color_temp_startup: f64,
6438    ///Link quality (signal strength)
6439    pub linkquality: f64,
6440    ///Controls the behavior when the device is powered on after power loss
6441    pub power_on_behavior: Zigbee5309331p6Poweronbehavior,
6442    ///Zigbee herdsman description: "On/off state of this light"
6443    ///The string values get converted into boolean with: ON = true and OFF = false
6444    #[serde(deserialize_with = "zigbee5309331p6_state_deserializer")]
6445    pub state: bool,
6446    /// Optional last_seen type, set as a global zigbee2mqtt setting
6447    pub last_seen: Option<LastSeen>,
6448    /// Optional elapsed type
6449    pub elapsed: Option<u64>,
6450}
6451/// Deserialize bool from String with custom value mapping
6452fn zigbee5309331p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6453where
6454    D: Deserializer<'de>,
6455{
6456    match String::deserialize(deserializer)?.as_ref() {
6457        "ON" => Ok(true),
6458        "OFF" => Ok(false),
6459        other => Err(de::Error::invalid_value(
6460            Unexpected::Str(other),
6461            &"Value expected was either ON or OFF",
6462        )),
6463    }
6464}
6465
6466/// philips:548727 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/548727.html)
6467///
6468/// 
6469#[cfg_attr(feature = "debug", derive(Debug))]
6470#[cfg_attr(feature = "clone", derive(Clone))]
6471#[derive(Deserialize)]
6472pub struct Zigbee548727 {
6473    ///Brightness of this light
6474    pub brightness: f64,
6475    ///Color temperature of this light
6476    pub color_temp: f64,
6477    ///Color temperature after cold power on of this light
6478    pub color_temp_startup: f64,
6479    ///Link quality (signal strength)
6480    pub linkquality: f64,
6481    ///Controls the behavior when the device is powered on after power loss
6482    pub power_on_behavior: Zigbee548727Poweronbehavior,
6483    ///Zigbee herdsman description: "On/off state of this light"
6484    ///The string values get converted into boolean with: ON = true and OFF = false
6485    #[serde(deserialize_with = "zigbee548727_state_deserializer")]
6486    pub state: bool,
6487    /// Optional last_seen type, set as a global zigbee2mqtt setting
6488    pub last_seen: Option<LastSeen>,
6489    /// Optional elapsed type
6490    pub elapsed: Option<u64>,
6491}
6492/// Deserialize bool from String with custom value mapping
6493fn zigbee548727_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6494where
6495    D: Deserializer<'de>,
6496{
6497    match String::deserialize(deserializer)?.as_ref() {
6498        "ON" => Ok(true),
6499        "OFF" => Ok(false),
6500        other => Err(de::Error::invalid_value(
6501            Unexpected::Str(other),
6502            &"Value expected was either ON or OFF",
6503        )),
6504    }
6505}
6506
6507/// philips:5633030P6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5633030P6.html)
6508///
6509/// 
6510#[cfg_attr(feature = "debug", derive(Debug))]
6511#[cfg_attr(feature = "clone", derive(Clone))]
6512#[derive(Deserialize)]
6513pub struct Zigbee5633030p6 {
6514    ///Brightness of this light
6515    pub brightness: f64,
6516    ///Color temperature of this light
6517    pub color_temp: f64,
6518    ///Color temperature after cold power on of this light
6519    pub color_temp_startup: f64,
6520    ///Link quality (signal strength)
6521    pub linkquality: f64,
6522    ///Controls the behavior when the device is powered on after power loss
6523    pub power_on_behavior: Zigbee5633030p6Poweronbehavior,
6524    ///Zigbee herdsman description: "On/off state of this light"
6525    ///The string values get converted into boolean with: ON = true and OFF = false
6526    #[serde(deserialize_with = "zigbee5633030p6_state_deserializer")]
6527    pub state: bool,
6528    /// Optional last_seen type, set as a global zigbee2mqtt setting
6529    pub last_seen: Option<LastSeen>,
6530    /// Optional elapsed type
6531    pub elapsed: Option<u64>,
6532}
6533/// Deserialize bool from String with custom value mapping
6534fn zigbee5633030p6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6535where
6536    D: Deserializer<'de>,
6537{
6538    match String::deserialize(deserializer)?.as_ref() {
6539        "ON" => Ok(true),
6540        "OFF" => Ok(false),
6541        other => Err(de::Error::invalid_value(
6542            Unexpected::Str(other),
6543            &"Value expected was either ON or OFF",
6544        )),
6545    }
6546}
6547
6548/// philips:5633031P9 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5633031P9.html)
6549///
6550/// 
6551#[cfg_attr(feature = "debug", derive(Debug))]
6552#[cfg_attr(feature = "clone", derive(Clone))]
6553#[derive(Deserialize)]
6554pub struct Zigbee5633031p9 {
6555    ///Brightness of this light
6556    pub brightness: f64,
6557    ///Color temperature of this light
6558    pub color_temp: f64,
6559    ///Color temperature after cold power on of this light
6560    pub color_temp_startup: f64,
6561    ///Link quality (signal strength)
6562    pub linkquality: f64,
6563    ///Controls the behavior when the device is powered on after power loss
6564    pub power_on_behavior: Zigbee5633031p9Poweronbehavior,
6565    ///Zigbee herdsman description: "On/off state of this light"
6566    ///The string values get converted into boolean with: ON = true and OFF = false
6567    #[serde(deserialize_with = "zigbee5633031p9_state_deserializer")]
6568    pub state: bool,
6569    /// Optional last_seen type, set as a global zigbee2mqtt setting
6570    pub last_seen: Option<LastSeen>,
6571    /// Optional elapsed type
6572    pub elapsed: Option<u64>,
6573}
6574/// Deserialize bool from String with custom value mapping
6575fn zigbee5633031p9_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6576where
6577    D: Deserializer<'de>,
6578{
6579    match String::deserialize(deserializer)?.as_ref() {
6580        "ON" => Ok(true),
6581        "OFF" => Ok(false),
6582        other => Err(de::Error::invalid_value(
6583            Unexpected::Str(other),
6584            &"Value expected was either ON or OFF",
6585        )),
6586    }
6587}
6588
6589/// philips:578526 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/578526.html)
6590///
6591/// 
6592#[cfg_attr(feature = "debug", derive(Debug))]
6593#[cfg_attr(feature = "clone", derive(Clone))]
6594#[derive(Deserialize)]
6595pub struct Zigbee578526 {
6596    ///Brightness of this light
6597    pub brightness: f64,
6598    ///Color temperature of this light
6599    pub color_temp: f64,
6600    ///Color temperature after cold power on of this light
6601    pub color_temp_startup: f64,
6602    ///Link quality (signal strength)
6603    pub linkquality: f64,
6604    ///Controls the behavior when the device is powered on after power loss
6605    pub power_on_behavior: Zigbee578526Poweronbehavior,
6606    ///Zigbee herdsman description: "On/off state of this light"
6607    ///The string values get converted into boolean with: ON = true and OFF = false
6608    #[serde(deserialize_with = "zigbee578526_state_deserializer")]
6609    pub state: bool,
6610    /// Optional last_seen type, set as a global zigbee2mqtt setting
6611    pub last_seen: Option<LastSeen>,
6612    /// Optional elapsed type
6613    pub elapsed: Option<u64>,
6614}
6615/// Deserialize bool from String with custom value mapping
6616fn zigbee578526_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6617where
6618    D: Deserializer<'de>,
6619{
6620    match String::deserialize(deserializer)?.as_ref() {
6621        "ON" => Ok(true),
6622        "OFF" => Ok(false),
6623        other => Err(de::Error::invalid_value(
6624            Unexpected::Str(other),
6625            &"Value expected was either ON or OFF",
6626        )),
6627    }
6628}
6629
6630/// philips:579573 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/579573.html)
6631///
6632/// 
6633#[cfg_attr(feature = "debug", derive(Debug))]
6634#[cfg_attr(feature = "clone", derive(Clone))]
6635#[derive(Deserialize)]
6636pub struct Zigbee579573 {
6637    ///Brightness of this light
6638    pub brightness: f64,
6639    ///Color temperature of this light
6640    pub color_temp: f64,
6641    ///Color temperature after cold power on of this light
6642    pub color_temp_startup: f64,
6643    ///Link quality (signal strength)
6644    pub linkquality: f64,
6645    ///Controls the behavior when the device is powered on after power loss
6646    pub power_on_behavior: Zigbee579573Poweronbehavior,
6647    ///Zigbee herdsman description: "On/off state of this light"
6648    ///The string values get converted into boolean with: ON = true and OFF = false
6649    #[serde(deserialize_with = "zigbee579573_state_deserializer")]
6650    pub state: bool,
6651    /// Optional last_seen type, set as a global zigbee2mqtt setting
6652    pub last_seen: Option<LastSeen>,
6653    /// Optional elapsed type
6654    pub elapsed: Option<u64>,
6655}
6656/// Deserialize bool from String with custom value mapping
6657fn zigbee579573_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6658where
6659    D: Deserializer<'de>,
6660{
6661    match String::deserialize(deserializer)?.as_ref() {
6662        "ON" => Ok(true),
6663        "OFF" => Ok(false),
6664        other => Err(de::Error::invalid_value(
6665            Unexpected::Str(other),
6666            &"Value expected was either ON or OFF",
6667        )),
6668    }
6669}
6670
6671/// philips:5900131C5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5900131C5.html)
6672///
6673/// 
6674#[cfg_attr(feature = "debug", derive(Debug))]
6675#[cfg_attr(feature = "clone", derive(Clone))]
6676#[derive(Deserialize)]
6677pub struct Zigbee5900131c5 {
6678    ///Brightness of this light
6679    pub brightness: f64,
6680    ///Color temperature of this light
6681    pub color_temp: f64,
6682    ///Color temperature after cold power on of this light
6683    pub color_temp_startup: f64,
6684    ///Link quality (signal strength)
6685    pub linkquality: f64,
6686    ///Controls the behavior when the device is powered on after power loss
6687    pub power_on_behavior: Zigbee5900131c5Poweronbehavior,
6688    ///Zigbee herdsman description: "On/off state of this light"
6689    ///The string values get converted into boolean with: ON = true and OFF = false
6690    #[serde(deserialize_with = "zigbee5900131c5_state_deserializer")]
6691    pub state: bool,
6692    /// Optional last_seen type, set as a global zigbee2mqtt setting
6693    pub last_seen: Option<LastSeen>,
6694    /// Optional elapsed type
6695    pub elapsed: Option<u64>,
6696}
6697/// Deserialize bool from String with custom value mapping
6698fn zigbee5900131c5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6699where
6700    D: Deserializer<'de>,
6701{
6702    match String::deserialize(deserializer)?.as_ref() {
6703        "ON" => Ok(true),
6704        "OFF" => Ok(false),
6705        other => Err(de::Error::invalid_value(
6706            Unexpected::Str(other),
6707            &"Value expected was either ON or OFF",
6708        )),
6709    }
6710}
6711
6712/// philips:5995111U5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5995111U5.html)
6713///
6714/// 
6715#[cfg_attr(feature = "debug", derive(Debug))]
6716#[cfg_attr(feature = "clone", derive(Clone))]
6717#[derive(Deserialize)]
6718pub struct Zigbee5995111u5 {
6719    ///Brightness of this light
6720    pub brightness: f64,
6721    ///Color temperature of this light
6722    pub color_temp: f64,
6723    ///Color temperature after cold power on of this light
6724    pub color_temp_startup: f64,
6725    ///Link quality (signal strength)
6726    pub linkquality: f64,
6727    ///Controls the behavior when the device is powered on after power loss
6728    pub power_on_behavior: Zigbee5995111u5Poweronbehavior,
6729    ///Zigbee herdsman description: "On/off state of this light"
6730    ///The string values get converted into boolean with: ON = true and OFF = false
6731    #[serde(deserialize_with = "zigbee5995111u5_state_deserializer")]
6732    pub state: bool,
6733    /// Optional last_seen type, set as a global zigbee2mqtt setting
6734    pub last_seen: Option<LastSeen>,
6735    /// Optional elapsed type
6736    pub elapsed: Option<u64>,
6737}
6738/// Deserialize bool from String with custom value mapping
6739fn zigbee5995111u5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6740where
6741    D: Deserializer<'de>,
6742{
6743    match String::deserialize(deserializer)?.as_ref() {
6744        "ON" => Ok(true),
6745        "OFF" => Ok(false),
6746        other => Err(de::Error::invalid_value(
6747            Unexpected::Str(other),
6748            &"Value expected was either ON or OFF",
6749        )),
6750    }
6751}
6752
6753/// philips:5996311U5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5996311U5.html)
6754///
6755/// 
6756#[cfg_attr(feature = "debug", derive(Debug))]
6757#[cfg_attr(feature = "clone", derive(Clone))]
6758#[derive(Deserialize)]
6759pub struct Zigbee5996311u5 {
6760    ///Brightness of this light
6761    pub brightness: f64,
6762    ///Color temperature of this light
6763    pub color_temp: f64,
6764    ///Color temperature after cold power on of this light
6765    pub color_temp_startup: f64,
6766    ///Link quality (signal strength)
6767    pub linkquality: f64,
6768    ///Controls the behavior when the device is powered on after power loss
6769    pub power_on_behavior: Zigbee5996311u5Poweronbehavior,
6770    ///Zigbee herdsman description: "On/off state of this light"
6771    ///The string values get converted into boolean with: ON = true and OFF = false
6772    #[serde(deserialize_with = "zigbee5996311u5_state_deserializer")]
6773    pub state: bool,
6774    /// Optional last_seen type, set as a global zigbee2mqtt setting
6775    pub last_seen: Option<LastSeen>,
6776    /// Optional elapsed type
6777    pub elapsed: Option<u64>,
6778}
6779/// Deserialize bool from String with custom value mapping
6780fn zigbee5996311u5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6781where
6782    D: Deserializer<'de>,
6783{
6784    match String::deserialize(deserializer)?.as_ref() {
6785        "ON" => Ok(true),
6786        "OFF" => Ok(false),
6787        other => Err(de::Error::invalid_value(
6788            Unexpected::Str(other),
6789            &"Value expected was either ON or OFF",
6790        )),
6791    }
6792}
6793
6794/// philips:5996411U5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5996411U5.html)
6795///
6796/// 
6797#[cfg_attr(feature = "debug", derive(Debug))]
6798#[cfg_attr(feature = "clone", derive(Clone))]
6799#[derive(Deserialize)]
6800pub struct Zigbee5996411u5 {
6801    ///Brightness of this light
6802    pub brightness: f64,
6803    ///Color temperature of this light
6804    pub color_temp: f64,
6805    ///Color temperature after cold power on of this light
6806    pub color_temp_startup: f64,
6807    ///Link quality (signal strength)
6808    pub linkquality: f64,
6809    ///Controls the behavior when the device is powered on after power loss
6810    pub power_on_behavior: Zigbee5996411u5Poweronbehavior,
6811    ///Zigbee herdsman description: "On/off state of this light"
6812    ///The string values get converted into boolean with: ON = true and OFF = false
6813    #[serde(deserialize_with = "zigbee5996411u5_state_deserializer")]
6814    pub state: bool,
6815    /// Optional last_seen type, set as a global zigbee2mqtt setting
6816    pub last_seen: Option<LastSeen>,
6817    /// Optional elapsed type
6818    pub elapsed: Option<u64>,
6819}
6820/// Deserialize bool from String with custom value mapping
6821fn zigbee5996411u5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6822where
6823    D: Deserializer<'de>,
6824{
6825    match String::deserialize(deserializer)?.as_ref() {
6826        "ON" => Ok(true),
6827        "OFF" => Ok(false),
6828        other => Err(de::Error::invalid_value(
6829            Unexpected::Str(other),
6830            &"Value expected was either ON or OFF",
6831        )),
6832    }
6833}
6834
6835/// philips:5996511U5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5996511U5.html)
6836///
6837/// 
6838#[cfg_attr(feature = "debug", derive(Debug))]
6839#[cfg_attr(feature = "clone", derive(Clone))]
6840#[derive(Deserialize)]
6841pub struct Zigbee5996511u5 {
6842    ///Brightness of this light
6843    pub brightness: f64,
6844    ///Color temperature of this light
6845    pub color_temp: f64,
6846    ///Color temperature after cold power on of this light
6847    pub color_temp_startup: f64,
6848    ///Link quality (signal strength)
6849    pub linkquality: f64,
6850    ///Controls the behavior when the device is powered on after power loss
6851    pub power_on_behavior: Zigbee5996511u5Poweronbehavior,
6852    ///Zigbee herdsman description: "On/off state of this light"
6853    ///The string values get converted into boolean with: ON = true and OFF = false
6854    #[serde(deserialize_with = "zigbee5996511u5_state_deserializer")]
6855    pub state: bool,
6856    /// Optional last_seen type, set as a global zigbee2mqtt setting
6857    pub last_seen: Option<LastSeen>,
6858    /// Optional elapsed type
6859    pub elapsed: Option<u64>,
6860}
6861/// Deserialize bool from String with custom value mapping
6862fn zigbee5996511u5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6863where
6864    D: Deserializer<'de>,
6865{
6866    match String::deserialize(deserializer)?.as_ref() {
6867        "ON" => Ok(true),
6868        "OFF" => Ok(false),
6869        other => Err(de::Error::invalid_value(
6870            Unexpected::Str(other),
6871            &"Value expected was either ON or OFF",
6872        )),
6873    }
6874}
6875
6876/// philips:5996611U5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5996611U5.html)
6877///
6878/// 
6879#[cfg_attr(feature = "debug", derive(Debug))]
6880#[cfg_attr(feature = "clone", derive(Clone))]
6881#[derive(Deserialize)]
6882pub struct Zigbee5996611u5 {
6883    ///Brightness of this light
6884    pub brightness: f64,
6885    ///Color temperature of this light
6886    pub color_temp: f64,
6887    ///Color temperature after cold power on of this light
6888    pub color_temp_startup: f64,
6889    ///Link quality (signal strength)
6890    pub linkquality: f64,
6891    ///Controls the behavior when the device is powered on after power loss
6892    pub power_on_behavior: Zigbee5996611u5Poweronbehavior,
6893    ///Zigbee herdsman description: "On/off state of this light"
6894    ///The string values get converted into boolean with: ON = true and OFF = false
6895    #[serde(deserialize_with = "zigbee5996611u5_state_deserializer")]
6896    pub state: bool,
6897    /// Optional last_seen type, set as a global zigbee2mqtt setting
6898    pub last_seen: Option<LastSeen>,
6899    /// Optional elapsed type
6900    pub elapsed: Option<u64>,
6901}
6902/// Deserialize bool from String with custom value mapping
6903fn zigbee5996611u5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6904where
6905    D: Deserializer<'de>,
6906{
6907    match String::deserialize(deserializer)?.as_ref() {
6908        "ON" => Ok(true),
6909        "OFF" => Ok(false),
6910        other => Err(de::Error::invalid_value(
6911            Unexpected::Str(other),
6912            &"Value expected was either ON or OFF",
6913        )),
6914    }
6915}
6916
6917/// philips:6109231C5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/6109231C5.html)
6918///
6919/// 
6920#[cfg_attr(feature = "debug", derive(Debug))]
6921#[cfg_attr(feature = "clone", derive(Clone))]
6922#[derive(Deserialize)]
6923pub struct Zigbee6109231c5 {
6924    ///Brightness of this light
6925    pub brightness: f64,
6926    ///Color temperature of this light
6927    pub color_temp: f64,
6928    ///Color temperature after cold power on of this light
6929    pub color_temp_startup: f64,
6930    ///Link quality (signal strength)
6931    pub linkquality: f64,
6932    ///Controls the behavior when the device is powered on after power loss
6933    pub power_on_behavior: Zigbee6109231c5Poweronbehavior,
6934    ///Zigbee herdsman description: "On/off state of this light"
6935    ///The string values get converted into boolean with: ON = true and OFF = false
6936    #[serde(deserialize_with = "zigbee6109231c5_state_deserializer")]
6937    pub state: bool,
6938    /// Optional last_seen type, set as a global zigbee2mqtt setting
6939    pub last_seen: Option<LastSeen>,
6940    /// Optional elapsed type
6941    pub elapsed: Option<u64>,
6942}
6943/// Deserialize bool from String with custom value mapping
6944fn zigbee6109231c5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6945where
6946    D: Deserializer<'de>,
6947{
6948    match String::deserialize(deserializer)?.as_ref() {
6949        "ON" => Ok(true),
6950        "OFF" => Ok(false),
6951        other => Err(de::Error::invalid_value(
6952            Unexpected::Str(other),
6953            &"Value expected was either ON or OFF",
6954        )),
6955    }
6956}
6957
6958/// philips:6109331C5 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/6109331C5.html)
6959///
6960/// 
6961#[cfg_attr(feature = "debug", derive(Debug))]
6962#[cfg_attr(feature = "clone", derive(Clone))]
6963#[derive(Deserialize)]
6964pub struct Zigbee6109331c5 {
6965    ///Brightness of this light
6966    pub brightness: f64,
6967    ///Color temperature of this light
6968    pub color_temp: f64,
6969    ///Color temperature after cold power on of this light
6970    pub color_temp_startup: f64,
6971    ///Link quality (signal strength)
6972    pub linkquality: f64,
6973    ///Controls the behavior when the device is powered on after power loss
6974    pub power_on_behavior: Zigbee6109331c5Poweronbehavior,
6975    ///Zigbee herdsman description: "On/off state of this light"
6976    ///The string values get converted into boolean with: ON = true and OFF = false
6977    #[serde(deserialize_with = "zigbee6109331c5_state_deserializer")]
6978    pub state: bool,
6979    /// Optional last_seen type, set as a global zigbee2mqtt setting
6980    pub last_seen: Option<LastSeen>,
6981    /// Optional elapsed type
6982    pub elapsed: Option<u64>,
6983}
6984/// Deserialize bool from String with custom value mapping
6985fn zigbee6109331c5_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
6986where
6987    D: Deserializer<'de>,
6988{
6989    match String::deserialize(deserializer)?.as_ref() {
6990        "ON" => Ok(true),
6991        "OFF" => Ok(false),
6992        other => Err(de::Error::invalid_value(
6993            Unexpected::Str(other),
6994            &"Value expected was either ON or OFF",
6995        )),
6996    }
6997}
6998
6999/// philips:7099860PH [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7099860PH.html)
7000///
7001/// 
7002#[cfg_attr(feature = "debug", derive(Debug))]
7003#[cfg_attr(feature = "clone", derive(Clone))]
7004#[derive(Deserialize)]
7005pub struct Zigbee7099860ph {
7006    ///Brightness of this light
7007    pub brightness: f64,
7008    ///Link quality (signal strength)
7009    pub linkquality: f64,
7010    ///Controls the behavior when the device is powered on after power loss
7011    pub power_on_behavior: Zigbee7099860phPoweronbehavior,
7012    ///Zigbee herdsman description: "On/off state of this light"
7013    ///The string values get converted into boolean with: ON = true and OFF = false
7014    #[serde(deserialize_with = "zigbee7099860ph_state_deserializer")]
7015    pub state: bool,
7016    /// Optional last_seen type, set as a global zigbee2mqtt setting
7017    pub last_seen: Option<LastSeen>,
7018    /// Optional elapsed type
7019    pub elapsed: Option<u64>,
7020}
7021/// Deserialize bool from String with custom value mapping
7022fn zigbee7099860ph_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7023where
7024    D: Deserializer<'de>,
7025{
7026    match String::deserialize(deserializer)?.as_ref() {
7027        "ON" => Ok(true),
7028        "OFF" => Ok(false),
7029        other => Err(de::Error::invalid_value(
7030            Unexpected::Str(other),
7031            &"Value expected was either ON or OFF",
7032        )),
7033    }
7034}
7035
7036/// philips:7099930PH [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7099930PH.html)
7037///
7038/// 
7039#[cfg_attr(feature = "debug", derive(Debug))]
7040#[cfg_attr(feature = "clone", derive(Clone))]
7041#[derive(Deserialize)]
7042pub struct Zigbee7099930ph {
7043    ///Brightness of this light
7044    pub brightness: f64,
7045    ///Link quality (signal strength)
7046    pub linkquality: f64,
7047    ///Controls the behavior when the device is powered on after power loss
7048    pub power_on_behavior: Zigbee7099930phPoweronbehavior,
7049    ///Zigbee herdsman description: "On/off state of this light"
7050    ///The string values get converted into boolean with: ON = true and OFF = false
7051    #[serde(deserialize_with = "zigbee7099930ph_state_deserializer")]
7052    pub state: bool,
7053    /// Optional last_seen type, set as a global zigbee2mqtt setting
7054    pub last_seen: Option<LastSeen>,
7055    /// Optional elapsed type
7056    pub elapsed: Option<u64>,
7057}
7058/// Deserialize bool from String with custom value mapping
7059fn zigbee7099930ph_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7060where
7061    D: Deserializer<'de>,
7062{
7063    match String::deserialize(deserializer)?.as_ref() {
7064        "ON" => Ok(true),
7065        "OFF" => Ok(false),
7066        other => Err(de::Error::invalid_value(
7067            Unexpected::Str(other),
7068            &"Value expected was either ON or OFF",
7069        )),
7070    }
7071}
7072
7073/// philips:7121131PU/7120031PH/7120131PH/7120231PU [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7121131PU/7120031PH/7120131PH/7120231PU.html)
7074///
7075/// 
7076#[cfg_attr(feature = "debug", derive(Debug))]
7077#[cfg_attr(feature = "clone", derive(Clone))]
7078#[derive(Deserialize)]
7079pub struct Zigbee7121131pu7120031ph7120131ph7120231pu {
7080    ///Brightness of this light
7081    pub brightness: f64,
7082    ///Color temperature of this light
7083    pub color_temp: f64,
7084    ///Color temperature after cold power on of this light
7085    pub color_temp_startup: f64,
7086    ///Link quality (signal strength)
7087    pub linkquality: f64,
7088    ///Controls the behavior when the device is powered on after power loss
7089    pub power_on_behavior: Zigbee7121131pu7120031ph7120131ph7120231puPoweronbehavior,
7090    ///Zigbee herdsman description: "On/off state of this light"
7091    ///The string values get converted into boolean with: ON = true and OFF = false
7092    #[serde(deserialize_with = "zigbee7121131pu7120031ph7120131ph7120231pu_state_deserializer")]
7093    pub state: bool,
7094    /// Optional last_seen type, set as a global zigbee2mqtt setting
7095    pub last_seen: Option<LastSeen>,
7096    /// Optional elapsed type
7097    pub elapsed: Option<u64>,
7098}
7099/// Deserialize bool from String with custom value mapping
7100fn zigbee7121131pu7120031ph7120131ph7120231pu_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7101where
7102    D: Deserializer<'de>,
7103{
7104    match String::deserialize(deserializer)?.as_ref() {
7105        "ON" => Ok(true),
7106        "OFF" => Ok(false),
7107        other => Err(de::Error::invalid_value(
7108            Unexpected::Str(other),
7109            &"Value expected was either ON or OFF",
7110        )),
7111    }
7112}
7113
7114/// philips:7146060PH [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7146060PH.html)
7115///
7116/// 
7117#[cfg_attr(feature = "debug", derive(Debug))]
7118#[cfg_attr(feature = "clone", derive(Clone))]
7119#[derive(Deserialize)]
7120pub struct Zigbee7146060ph {
7121    ///Brightness of this light
7122    pub brightness: f64,
7123    ///Color temperature of this light
7124    pub color_temp: f64,
7125    ///Color temperature after cold power on of this light
7126    pub color_temp_startup: f64,
7127    ///Link quality (signal strength)
7128    pub linkquality: f64,
7129    ///Controls the behavior when the device is powered on after power loss
7130    pub power_on_behavior: Zigbee7146060phPoweronbehavior,
7131    ///Zigbee herdsman description: "On/off state of this light"
7132    ///The string values get converted into boolean with: ON = true and OFF = false
7133    #[serde(deserialize_with = "zigbee7146060ph_state_deserializer")]
7134    pub state: bool,
7135    /// Optional last_seen type, set as a global zigbee2mqtt setting
7136    pub last_seen: Option<LastSeen>,
7137    /// Optional elapsed type
7138    pub elapsed: Option<u64>,
7139}
7140/// Deserialize bool from String with custom value mapping
7141fn zigbee7146060ph_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7142where
7143    D: Deserializer<'de>,
7144{
7145    match String::deserialize(deserializer)?.as_ref() {
7146        "ON" => Ok(true),
7147        "OFF" => Ok(false),
7148        other => Err(de::Error::invalid_value(
7149            Unexpected::Str(other),
7150            &"Value expected was either ON or OFF",
7151        )),
7152    }
7153}
7154
7155/// philips:7199960PH [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7199960PH.html)
7156///
7157/// 
7158#[cfg_attr(feature = "debug", derive(Debug))]
7159#[cfg_attr(feature = "clone", derive(Clone))]
7160#[derive(Deserialize)]
7161pub struct Zigbee7199960ph {
7162    ///Brightness of this light
7163    pub brightness: f64,
7164    ///Link quality (signal strength)
7165    pub linkquality: f64,
7166    ///Controls the behavior when the device is powered on after power loss
7167    pub power_on_behavior: Zigbee7199960phPoweronbehavior,
7168    ///Zigbee herdsman description: "On/off state of this light"
7169    ///The string values get converted into boolean with: ON = true and OFF = false
7170    #[serde(deserialize_with = "zigbee7199960ph_state_deserializer")]
7171    pub state: bool,
7172    /// Optional last_seen type, set as a global zigbee2mqtt setting
7173    pub last_seen: Option<LastSeen>,
7174    /// Optional elapsed type
7175    pub elapsed: Option<u64>,
7176}
7177/// Deserialize bool from String with custom value mapping
7178fn zigbee7199960ph_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7179where
7180    D: Deserializer<'de>,
7181{
7182    match String::deserialize(deserializer)?.as_ref() {
7183        "ON" => Ok(true),
7184        "OFF" => Ok(false),
7185        other => Err(de::Error::invalid_value(
7186            Unexpected::Str(other),
7187            &"Value expected was either ON or OFF",
7188        )),
7189    }
7190}
7191
7192/// philips:7299355PH [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7299355PH.html)
7193///
7194/// 
7195#[cfg_attr(feature = "debug", derive(Debug))]
7196#[cfg_attr(feature = "clone", derive(Clone))]
7197#[derive(Deserialize)]
7198pub struct Zigbee7299355ph {
7199    ///Brightness of this light
7200    pub brightness: f64,
7201    ///Link quality (signal strength)
7202    pub linkquality: f64,
7203    ///Controls the behavior when the device is powered on after power loss
7204    pub power_on_behavior: Zigbee7299355phPoweronbehavior,
7205    ///Zigbee herdsman description: "On/off state of this light"
7206    ///The string values get converted into boolean with: ON = true and OFF = false
7207    #[serde(deserialize_with = "zigbee7299355ph_state_deserializer")]
7208    pub state: bool,
7209    /// Optional last_seen type, set as a global zigbee2mqtt setting
7210    pub last_seen: Option<LastSeen>,
7211    /// Optional elapsed type
7212    pub elapsed: Option<u64>,
7213}
7214/// Deserialize bool from String with custom value mapping
7215fn zigbee7299355ph_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7216where
7217    D: Deserializer<'de>,
7218{
7219    match String::deserialize(deserializer)?.as_ref() {
7220        "ON" => Ok(true),
7221        "OFF" => Ok(false),
7222        other => Err(de::Error::invalid_value(
7223            Unexpected::Str(other),
7224            &"Value expected was either ON or OFF",
7225        )),
7226    }
7227}
7228
7229/// philips:7299760PH [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7299760PH.html)
7230///
7231/// 
7232#[cfg_attr(feature = "debug", derive(Debug))]
7233#[cfg_attr(feature = "clone", derive(Clone))]
7234#[derive(Deserialize)]
7235pub struct Zigbee7299760ph {
7236    ///Brightness of this light
7237    pub brightness: f64,
7238    ///Link quality (signal strength)
7239    pub linkquality: f64,
7240    ///Controls the behavior when the device is powered on after power loss
7241    pub power_on_behavior: Zigbee7299760phPoweronbehavior,
7242    ///Zigbee herdsman description: "On/off state of this light"
7243    ///The string values get converted into boolean with: ON = true and OFF = false
7244    #[serde(deserialize_with = "zigbee7299760ph_state_deserializer")]
7245    pub state: bool,
7246    /// Optional last_seen type, set as a global zigbee2mqtt setting
7247    pub last_seen: Option<LastSeen>,
7248    /// Optional elapsed type
7249    pub elapsed: Option<u64>,
7250}
7251/// Deserialize bool from String with custom value mapping
7252fn zigbee7299760ph_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7253where
7254    D: Deserializer<'de>,
7255{
7256    match String::deserialize(deserializer)?.as_ref() {
7257        "ON" => Ok(true),
7258        "OFF" => Ok(false),
7259        other => Err(de::Error::invalid_value(
7260            Unexpected::Str(other),
7261            &"Value expected was either ON or OFF",
7262        )),
7263    }
7264}
7265
7266/// philips:7531609 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7531609.html)
7267///
7268/// 
7269#[cfg_attr(feature = "debug", derive(Debug))]
7270#[cfg_attr(feature = "clone", derive(Clone))]
7271#[derive(Deserialize)]
7272pub struct Zigbee7531609 {
7273    ///Brightness of this light
7274    pub brightness: f64,
7275    ///Color temperature of this light
7276    pub color_temp: f64,
7277    ///Color temperature after cold power on of this light
7278    pub color_temp_startup: f64,
7279    ///Link quality (signal strength)
7280    pub linkquality: f64,
7281    ///Controls the behavior when the device is powered on after power loss
7282    pub power_on_behavior: Zigbee7531609Poweronbehavior,
7283    ///Zigbee herdsman description: "On/off state of this light"
7284    ///The string values get converted into boolean with: ON = true and OFF = false
7285    #[serde(deserialize_with = "zigbee7531609_state_deserializer")]
7286    pub state: bool,
7287    /// Optional last_seen type, set as a global zigbee2mqtt setting
7288    pub last_seen: Option<LastSeen>,
7289    /// Optional elapsed type
7290    pub elapsed: Option<u64>,
7291}
7292/// Deserialize bool from String with custom value mapping
7293fn zigbee7531609_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7294where
7295    D: Deserializer<'de>,
7296{
7297    match String::deserialize(deserializer)?.as_ref() {
7298        "ON" => Ok(true),
7299        "OFF" => Ok(false),
7300        other => Err(de::Error::invalid_value(
7301            Unexpected::Str(other),
7302            &"Value expected was either ON or OFF",
7303        )),
7304    }
7305}
7306
7307/// philips:7602031K6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7602031K6.html)
7308///
7309/// 
7310#[cfg_attr(feature = "debug", derive(Debug))]
7311#[cfg_attr(feature = "clone", derive(Clone))]
7312#[derive(Deserialize)]
7313pub struct Zigbee7602031k6 {
7314    ///Brightness of this light
7315    pub brightness: f64,
7316    ///Color temperature of this light
7317    pub color_temp: f64,
7318    ///Color temperature after cold power on of this light
7319    pub color_temp_startup: f64,
7320    ///Link quality (signal strength)
7321    pub linkquality: f64,
7322    ///Controls the behavior when the device is powered on after power loss
7323    pub power_on_behavior: Zigbee7602031k6Poweronbehavior,
7324    ///Zigbee herdsman description: "On/off state of this light"
7325    ///The string values get converted into boolean with: ON = true and OFF = false
7326    #[serde(deserialize_with = "zigbee7602031k6_state_deserializer")]
7327    pub state: bool,
7328    /// Optional last_seen type, set as a global zigbee2mqtt setting
7329    pub last_seen: Option<LastSeen>,
7330    /// Optional elapsed type
7331    pub elapsed: Option<u64>,
7332}
7333/// Deserialize bool from String with custom value mapping
7334fn zigbee7602031k6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7335where
7336    D: Deserializer<'de>,
7337{
7338    match String::deserialize(deserializer)?.as_ref() {
7339        "ON" => Ok(true),
7340        "OFF" => Ok(false),
7341        other => Err(de::Error::invalid_value(
7342            Unexpected::Str(other),
7343            &"Value expected was either ON or OFF",
7344        )),
7345    }
7346}
7347
7348/// philips:7602031N6 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7602031N6.html)
7349///
7350/// 
7351#[cfg_attr(feature = "debug", derive(Debug))]
7352#[cfg_attr(feature = "clone", derive(Clone))]
7353#[derive(Deserialize)]
7354pub struct Zigbee7602031n6 {
7355    ///Brightness of this light
7356    pub brightness: f64,
7357    ///Color temperature of this light
7358    pub color_temp: f64,
7359    ///Color temperature after cold power on of this light
7360    pub color_temp_startup: f64,
7361    ///Link quality (signal strength)
7362    pub linkquality: f64,
7363    ///Controls the behavior when the device is powered on after power loss
7364    pub power_on_behavior: Zigbee7602031n6Poweronbehavior,
7365    ///Zigbee herdsman description: "On/off state of this light"
7366    ///The string values get converted into boolean with: ON = true and OFF = false
7367    #[serde(deserialize_with = "zigbee7602031n6_state_deserializer")]
7368    pub state: bool,
7369    /// Optional last_seen type, set as a global zigbee2mqtt setting
7370    pub last_seen: Option<LastSeen>,
7371    /// Optional elapsed type
7372    pub elapsed: Option<u64>,
7373}
7374/// Deserialize bool from String with custom value mapping
7375fn zigbee7602031n6_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7376where
7377    D: Deserializer<'de>,
7378{
7379    match String::deserialize(deserializer)?.as_ref() {
7380        "ON" => Ok(true),
7381        "OFF" => Ok(false),
7382        other => Err(de::Error::invalid_value(
7383            Unexpected::Str(other),
7384            &"Value expected was either ON or OFF",
7385        )),
7386    }
7387}
7388
7389/// philips:7602031P7 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/7602031P7.html)
7390///
7391/// 
7392#[cfg_attr(feature = "debug", derive(Debug))]
7393#[cfg_attr(feature = "clone", derive(Clone))]
7394#[derive(Deserialize)]
7395pub struct Zigbee7602031p7 {
7396    ///Brightness of this light
7397    pub brightness: f64,
7398    ///Color temperature of this light
7399    pub color_temp: f64,
7400    ///Color temperature after cold power on of this light
7401    pub color_temp_startup: f64,
7402    ///Link quality (signal strength)
7403    pub linkquality: f64,
7404    ///Controls the behavior when the device is powered on after power loss
7405    pub power_on_behavior: Zigbee7602031p7Poweronbehavior,
7406    ///Zigbee herdsman description: "On/off state of this light"
7407    ///The string values get converted into boolean with: ON = true and OFF = false
7408    #[serde(deserialize_with = "zigbee7602031p7_state_deserializer")]
7409    pub state: bool,
7410    /// Optional last_seen type, set as a global zigbee2mqtt setting
7411    pub last_seen: Option<LastSeen>,
7412    /// Optional elapsed type
7413    pub elapsed: Option<u64>,
7414}
7415/// Deserialize bool from String with custom value mapping
7416fn zigbee7602031p7_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7417where
7418    D: Deserializer<'de>,
7419{
7420    match String::deserialize(deserializer)?.as_ref() {
7421        "ON" => Ok(true),
7422        "OFF" => Ok(false),
7423        other => Err(de::Error::invalid_value(
7424            Unexpected::Str(other),
7425            &"Value expected was either ON or OFF",
7426        )),
7427    }
7428}
7429
7430/// philips:800094 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/800094.html)
7431///
7432/// 
7433#[cfg_attr(feature = "debug", derive(Debug))]
7434#[cfg_attr(feature = "clone", derive(Clone))]
7435#[derive(Deserialize)]
7436pub struct Zigbee800094 {
7437    ///Brightness of this light
7438    pub brightness: f64,
7439    ///Color temperature of this light
7440    pub color_temp: f64,
7441    ///Color temperature after cold power on of this light
7442    pub color_temp_startup: f64,
7443    ///Link quality (signal strength)
7444    pub linkquality: f64,
7445    ///Controls the behavior when the device is powered on after power loss
7446    pub power_on_behavior: Zigbee800094Poweronbehavior,
7447    ///Zigbee herdsman description: "On/off state of this light"
7448    ///The string values get converted into boolean with: ON = true and OFF = false
7449    #[serde(deserialize_with = "zigbee800094_state_deserializer")]
7450    pub state: bool,
7451    /// Optional last_seen type, set as a global zigbee2mqtt setting
7452    pub last_seen: Option<LastSeen>,
7453    /// Optional elapsed type
7454    pub elapsed: Option<u64>,
7455}
7456/// Deserialize bool from String with custom value mapping
7457fn zigbee800094_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7458where
7459    D: Deserializer<'de>,
7460{
7461    match String::deserialize(deserializer)?.as_ref() {
7462        "ON" => Ok(true),
7463        "OFF" => Ok(false),
7464        other => Err(de::Error::invalid_value(
7465            Unexpected::Str(other),
7466            &"Value expected was either ON or OFF",
7467        )),
7468    }
7469}
7470
7471/// philips:801480 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/801480.html)
7472///
7473/// 
7474#[cfg_attr(feature = "debug", derive(Debug))]
7475#[cfg_attr(feature = "clone", derive(Clone))]
7476#[derive(Deserialize)]
7477pub struct Zigbee801480 {
7478    ///Brightness of this light
7479    pub brightness: f64,
7480    ///Color temperature of this light
7481    pub color_temp: f64,
7482    ///Color temperature after cold power on of this light
7483    pub color_temp_startup: f64,
7484    ///Link quality (signal strength)
7485    pub linkquality: f64,
7486    ///Controls the behavior when the device is powered on after power loss
7487    pub power_on_behavior: Zigbee801480Poweronbehavior,
7488    ///Zigbee herdsman description: "On/off state of this light"
7489    ///The string values get converted into boolean with: ON = true and OFF = false
7490    #[serde(deserialize_with = "zigbee801480_state_deserializer")]
7491    pub state: bool,
7492    /// Optional last_seen type, set as a global zigbee2mqtt setting
7493    pub last_seen: Option<LastSeen>,
7494    /// Optional elapsed type
7495    pub elapsed: Option<u64>,
7496}
7497/// Deserialize bool from String with custom value mapping
7498fn zigbee801480_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7499where
7500    D: Deserializer<'de>,
7501{
7502    match String::deserialize(deserializer)?.as_ref() {
7503        "ON" => Ok(true),
7504        "OFF" => Ok(false),
7505        other => Err(de::Error::invalid_value(
7506            Unexpected::Str(other),
7507            &"Value expected was either ON or OFF",
7508        )),
7509    }
7510}
7511
7512/// philips:8718696153055 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696153055.html)
7513///
7514/// 
7515#[cfg_attr(feature = "debug", derive(Debug))]
7516#[cfg_attr(feature = "clone", derive(Clone))]
7517#[derive(Deserialize)]
7518pub struct Zigbee8718696153055 {
7519    ///Brightness of this light
7520    pub brightness: f64,
7521    ///Link quality (signal strength)
7522    pub linkquality: f64,
7523    ///Controls the behavior when the device is powered on after power loss
7524    pub power_on_behavior: Zigbee8718696153055Poweronbehavior,
7525    ///Zigbee herdsman description: "On/off state of this light"
7526    ///The string values get converted into boolean with: ON = true and OFF = false
7527    #[serde(deserialize_with = "zigbee8718696153055_state_deserializer")]
7528    pub state: bool,
7529    /// Optional last_seen type, set as a global zigbee2mqtt setting
7530    pub last_seen: Option<LastSeen>,
7531    /// Optional elapsed type
7532    pub elapsed: Option<u64>,
7533}
7534/// Deserialize bool from String with custom value mapping
7535fn zigbee8718696153055_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7536where
7537    D: Deserializer<'de>,
7538{
7539    match String::deserialize(deserializer)?.as_ref() {
7540        "ON" => Ok(true),
7541        "OFF" => Ok(false),
7542        other => Err(de::Error::invalid_value(
7543            Unexpected::Str(other),
7544            &"Value expected was either ON or OFF",
7545        )),
7546    }
7547}
7548
7549/// philips:8718696153062 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696153062.html)
7550///
7551/// 
7552#[cfg_attr(feature = "debug", derive(Debug))]
7553#[cfg_attr(feature = "clone", derive(Clone))]
7554#[derive(Deserialize)]
7555pub struct Zigbee8718696153062 {
7556    ///Brightness of this light
7557    pub brightness: f64,
7558    ///Link quality (signal strength)
7559    pub linkquality: f64,
7560    ///Controls the behavior when the device is powered on after power loss
7561    pub power_on_behavior: Zigbee8718696153062Poweronbehavior,
7562    ///Zigbee herdsman description: "On/off state of this light"
7563    ///The string values get converted into boolean with: ON = true and OFF = false
7564    #[serde(deserialize_with = "zigbee8718696153062_state_deserializer")]
7565    pub state: bool,
7566    /// Optional last_seen type, set as a global zigbee2mqtt setting
7567    pub last_seen: Option<LastSeen>,
7568    /// Optional elapsed type
7569    pub elapsed: Option<u64>,
7570}
7571/// Deserialize bool from String with custom value mapping
7572fn zigbee8718696153062_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7573where
7574    D: Deserializer<'de>,
7575{
7576    match String::deserialize(deserializer)?.as_ref() {
7577        "ON" => Ok(true),
7578        "OFF" => Ok(false),
7579        other => Err(de::Error::invalid_value(
7580            Unexpected::Str(other),
7581            &"Value expected was either ON or OFF",
7582        )),
7583    }
7584}
7585
7586/// philips:8718696166079 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696166079.html)
7587///
7588/// 
7589#[cfg_attr(feature = "debug", derive(Debug))]
7590#[cfg_attr(feature = "clone", derive(Clone))]
7591#[derive(Deserialize)]
7592pub struct Zigbee8718696166079 {
7593    ///Brightness of this light
7594    pub brightness: f64,
7595    ///Link quality (signal strength)
7596    pub linkquality: f64,
7597    ///Controls the behavior when the device is powered on after power loss
7598    pub power_on_behavior: Zigbee8718696166079Poweronbehavior,
7599    ///Zigbee herdsman description: "On/off state of this light"
7600    ///The string values get converted into boolean with: ON = true and OFF = false
7601    #[serde(deserialize_with = "zigbee8718696166079_state_deserializer")]
7602    pub state: bool,
7603    /// Optional last_seen type, set as a global zigbee2mqtt setting
7604    pub last_seen: Option<LastSeen>,
7605    /// Optional elapsed type
7606    pub elapsed: Option<u64>,
7607}
7608/// Deserialize bool from String with custom value mapping
7609fn zigbee8718696166079_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7610where
7611    D: Deserializer<'de>,
7612{
7613    match String::deserialize(deserializer)?.as_ref() {
7614        "ON" => Ok(true),
7615        "OFF" => Ok(false),
7616        other => Err(de::Error::invalid_value(
7617            Unexpected::Str(other),
7618            &"Value expected was either ON or OFF",
7619        )),
7620    }
7621}
7622
7623/// philips:8718696167991 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696167991.html)
7624///
7625/// 
7626#[cfg_attr(feature = "debug", derive(Debug))]
7627#[cfg_attr(feature = "clone", derive(Clone))]
7628#[derive(Deserialize)]
7629pub struct Zigbee8718696167991 {
7630    ///Brightness of this light
7631    pub brightness: f64,
7632    ///Color temperature of this light
7633    pub color_temp: f64,
7634    ///Color temperature after cold power on of this light
7635    pub color_temp_startup: f64,
7636    ///Link quality (signal strength)
7637    pub linkquality: f64,
7638    ///Controls the behavior when the device is powered on after power loss
7639    pub power_on_behavior: Zigbee8718696167991Poweronbehavior,
7640    ///Zigbee herdsman description: "On/off state of this light"
7641    ///The string values get converted into boolean with: ON = true and OFF = false
7642    #[serde(deserialize_with = "zigbee8718696167991_state_deserializer")]
7643    pub state: bool,
7644    /// Optional last_seen type, set as a global zigbee2mqtt setting
7645    pub last_seen: Option<LastSeen>,
7646    /// Optional elapsed type
7647    pub elapsed: Option<u64>,
7648}
7649/// Deserialize bool from String with custom value mapping
7650fn zigbee8718696167991_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7651where
7652    D: Deserializer<'de>,
7653{
7654    match String::deserialize(deserializer)?.as_ref() {
7655        "ON" => Ok(true),
7656        "OFF" => Ok(false),
7657        other => Err(de::Error::invalid_value(
7658            Unexpected::Str(other),
7659            &"Value expected was either ON or OFF",
7660        )),
7661    }
7662}
7663
7664/// philips:8718696170557 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696170557.html)
7665///
7666/// 
7667#[cfg_attr(feature = "debug", derive(Debug))]
7668#[cfg_attr(feature = "clone", derive(Clone))]
7669#[derive(Deserialize)]
7670pub struct Zigbee8718696170557 {
7671    ///Brightness of this light
7672    pub brightness: f64,
7673    ///Color temperature of this light
7674    pub color_temp: f64,
7675    ///Color temperature after cold power on of this light
7676    pub color_temp_startup: f64,
7677    ///Link quality (signal strength)
7678    pub linkquality: f64,
7679    ///Controls the behavior when the device is powered on after power loss
7680    pub power_on_behavior: Zigbee8718696170557Poweronbehavior,
7681    ///Zigbee herdsman description: "On/off state of this light"
7682    ///The string values get converted into boolean with: ON = true and OFF = false
7683    #[serde(deserialize_with = "zigbee8718696170557_state_deserializer")]
7684    pub state: bool,
7685    /// Optional last_seen type, set as a global zigbee2mqtt setting
7686    pub last_seen: Option<LastSeen>,
7687    /// Optional elapsed type
7688    pub elapsed: Option<u64>,
7689}
7690/// Deserialize bool from String with custom value mapping
7691fn zigbee8718696170557_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7692where
7693    D: Deserializer<'de>,
7694{
7695    match String::deserialize(deserializer)?.as_ref() {
7696        "ON" => Ok(true),
7697        "OFF" => Ok(false),
7698        other => Err(de::Error::invalid_value(
7699            Unexpected::Str(other),
7700            &"Value expected was either ON or OFF",
7701        )),
7702    }
7703}
7704
7705/// philips:8718696170625 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696170625.html)
7706///
7707/// 
7708#[cfg_attr(feature = "debug", derive(Debug))]
7709#[cfg_attr(feature = "clone", derive(Clone))]
7710#[derive(Deserialize)]
7711pub struct Zigbee8718696170625 {
7712    ///Brightness of this light
7713    pub brightness: f64,
7714    ///Link quality (signal strength)
7715    pub linkquality: f64,
7716    ///Controls the behavior when the device is powered on after power loss
7717    pub power_on_behavior: Zigbee8718696170625Poweronbehavior,
7718    ///Zigbee herdsman description: "On/off state of this light"
7719    ///The string values get converted into boolean with: ON = true and OFF = false
7720    #[serde(deserialize_with = "zigbee8718696170625_state_deserializer")]
7721    pub state: bool,
7722    /// Optional last_seen type, set as a global zigbee2mqtt setting
7723    pub last_seen: Option<LastSeen>,
7724    /// Optional elapsed type
7725    pub elapsed: Option<u64>,
7726}
7727/// Deserialize bool from String with custom value mapping
7728fn zigbee8718696170625_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7729where
7730    D: Deserializer<'de>,
7731{
7732    match String::deserialize(deserializer)?.as_ref() {
7733        "ON" => Ok(true),
7734        "OFF" => Ok(false),
7735        other => Err(de::Error::invalid_value(
7736            Unexpected::Str(other),
7737            &"Value expected was either ON or OFF",
7738        )),
7739    }
7740}
7741
7742/// philips:8718696170656 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696170656.html)
7743///
7744/// 
7745#[cfg_attr(feature = "debug", derive(Debug))]
7746#[cfg_attr(feature = "clone", derive(Clone))]
7747#[derive(Deserialize)]
7748pub struct Zigbee8718696170656 {
7749    ///Brightness of this light
7750    pub brightness: f64,
7751    ///Link quality (signal strength)
7752    pub linkquality: f64,
7753    ///Controls the behavior when the device is powered on after power loss
7754    pub power_on_behavior: Zigbee8718696170656Poweronbehavior,
7755    ///Zigbee herdsman description: "On/off state of this light"
7756    ///The string values get converted into boolean with: ON = true and OFF = false
7757    #[serde(deserialize_with = "zigbee8718696170656_state_deserializer")]
7758    pub state: bool,
7759    /// Optional last_seen type, set as a global zigbee2mqtt setting
7760    pub last_seen: Option<LastSeen>,
7761    /// Optional elapsed type
7762    pub elapsed: Option<u64>,
7763}
7764/// Deserialize bool from String with custom value mapping
7765fn zigbee8718696170656_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7766where
7767    D: Deserializer<'de>,
7768{
7769    match String::deserialize(deserializer)?.as_ref() {
7770        "ON" => Ok(true),
7771        "OFF" => Ok(false),
7772        other => Err(de::Error::invalid_value(
7773            Unexpected::Str(other),
7774            &"Value expected was either ON or OFF",
7775        )),
7776    }
7777}
7778
7779/// philips:8718696174548 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696174548.html)
7780///
7781/// 
7782#[cfg_attr(feature = "debug", derive(Debug))]
7783#[cfg_attr(feature = "clone", derive(Clone))]
7784#[derive(Deserialize)]
7785pub struct Zigbee8718696174548 {
7786    ///Brightness of this light
7787    pub brightness: f64,
7788    ///Color temperature of this light
7789    pub color_temp: f64,
7790    ///Color temperature after cold power on of this light
7791    pub color_temp_startup: f64,
7792    ///Link quality (signal strength)
7793    pub linkquality: f64,
7794    ///Controls the behavior when the device is powered on after power loss
7795    pub power_on_behavior: Zigbee8718696174548Poweronbehavior,
7796    ///Zigbee herdsman description: "On/off state of this light"
7797    ///The string values get converted into boolean with: ON = true and OFF = false
7798    #[serde(deserialize_with = "zigbee8718696174548_state_deserializer")]
7799    pub state: bool,
7800    /// Optional last_seen type, set as a global zigbee2mqtt setting
7801    pub last_seen: Option<LastSeen>,
7802    /// Optional elapsed type
7803    pub elapsed: Option<u64>,
7804}
7805/// Deserialize bool from String with custom value mapping
7806fn zigbee8718696174548_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7807where
7808    D: Deserializer<'de>,
7809{
7810    match String::deserialize(deserializer)?.as_ref() {
7811        "ON" => Ok(true),
7812        "OFF" => Ok(false),
7813        other => Err(de::Error::invalid_value(
7814            Unexpected::Str(other),
7815            &"Value expected was either ON or OFF",
7816        )),
7817    }
7818}
7819
7820/// philips:8718696175798 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696175798.html)
7821///
7822/// 
7823#[cfg_attr(feature = "debug", derive(Debug))]
7824#[cfg_attr(feature = "clone", derive(Clone))]
7825#[derive(Deserialize)]
7826pub struct Zigbee8718696175798 {
7827    ///Brightness of this light
7828    pub brightness: f64,
7829    ///Color temperature of this light
7830    pub color_temp: f64,
7831    ///Color temperature after cold power on of this light
7832    pub color_temp_startup: f64,
7833    ///Link quality (signal strength)
7834    pub linkquality: f64,
7835    ///Controls the behavior when the device is powered on after power loss
7836    pub power_on_behavior: Zigbee8718696175798Poweronbehavior,
7837    ///Zigbee herdsman description: "On/off state of this light"
7838    ///The string values get converted into boolean with: ON = true and OFF = false
7839    #[serde(deserialize_with = "zigbee8718696175798_state_deserializer")]
7840    pub state: bool,
7841    /// Optional last_seen type, set as a global zigbee2mqtt setting
7842    pub last_seen: Option<LastSeen>,
7843    /// Optional elapsed type
7844    pub elapsed: Option<u64>,
7845}
7846/// Deserialize bool from String with custom value mapping
7847fn zigbee8718696175798_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7848where
7849    D: Deserializer<'de>,
7850{
7851    match String::deserialize(deserializer)?.as_ref() {
7852        "ON" => Ok(true),
7853        "OFF" => Ok(false),
7854        other => Err(de::Error::invalid_value(
7855            Unexpected::Str(other),
7856            &"Value expected was either ON or OFF",
7857        )),
7858    }
7859}
7860
7861/// philips:8718696449691 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696449691.html)
7862///
7863/// 
7864#[cfg_attr(feature = "debug", derive(Debug))]
7865#[cfg_attr(feature = "clone", derive(Clone))]
7866#[derive(Deserialize)]
7867pub struct Zigbee8718696449691 {
7868    ///Brightness of this light
7869    pub brightness: f64,
7870    ///Link quality (signal strength)
7871    pub linkquality: f64,
7872    ///Controls the behavior when the device is powered on after power loss
7873    pub power_on_behavior: Zigbee8718696449691Poweronbehavior,
7874    ///Zigbee herdsman description: "On/off state of this light"
7875    ///The string values get converted into boolean with: ON = true and OFF = false
7876    #[serde(deserialize_with = "zigbee8718696449691_state_deserializer")]
7877    pub state: bool,
7878    /// Optional last_seen type, set as a global zigbee2mqtt setting
7879    pub last_seen: Option<LastSeen>,
7880    /// Optional elapsed type
7881    pub elapsed: Option<u64>,
7882}
7883/// Deserialize bool from String with custom value mapping
7884fn zigbee8718696449691_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7885where
7886    D: Deserializer<'de>,
7887{
7888    match String::deserialize(deserializer)?.as_ref() {
7889        "ON" => Ok(true),
7890        "OFF" => Ok(false),
7891        other => Err(de::Error::invalid_value(
7892            Unexpected::Str(other),
7893            &"Value expected was either ON or OFF",
7894        )),
7895    }
7896}
7897
7898/// philips:8718696485880 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696485880.html)
7899///
7900/// 
7901#[cfg_attr(feature = "debug", derive(Debug))]
7902#[cfg_attr(feature = "clone", derive(Clone))]
7903#[derive(Deserialize)]
7904pub struct Zigbee8718696485880 {
7905    ///Brightness of this light
7906    pub brightness: f64,
7907    ///Color temperature of this light
7908    pub color_temp: f64,
7909    ///Color temperature after cold power on of this light
7910    pub color_temp_startup: f64,
7911    ///Link quality (signal strength)
7912    pub linkquality: f64,
7913    ///Controls the behavior when the device is powered on after power loss
7914    pub power_on_behavior: Zigbee8718696485880Poweronbehavior,
7915    ///Zigbee herdsman description: "On/off state of this light"
7916    ///The string values get converted into boolean with: ON = true and OFF = false
7917    #[serde(deserialize_with = "zigbee8718696485880_state_deserializer")]
7918    pub state: bool,
7919    /// Optional last_seen type, set as a global zigbee2mqtt setting
7920    pub last_seen: Option<LastSeen>,
7921    /// Optional elapsed type
7922    pub elapsed: Option<u64>,
7923}
7924/// Deserialize bool from String with custom value mapping
7925fn zigbee8718696485880_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7926where
7927    D: Deserializer<'de>,
7928{
7929    match String::deserialize(deserializer)?.as_ref() {
7930        "ON" => Ok(true),
7931        "OFF" => Ok(false),
7932        other => Err(de::Error::invalid_value(
7933            Unexpected::Str(other),
7934            &"Value expected was either ON or OFF",
7935        )),
7936    }
7937}
7938
7939/// philips:8718696548738 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696548738.html)
7940///
7941/// 
7942#[cfg_attr(feature = "debug", derive(Debug))]
7943#[cfg_attr(feature = "clone", derive(Clone))]
7944#[derive(Deserialize)]
7945pub struct Zigbee8718696548738 {
7946    ///Brightness of this light
7947    pub brightness: f64,
7948    ///Color temperature of this light
7949    pub color_temp: f64,
7950    ///Color temperature after cold power on of this light
7951    pub color_temp_startup: f64,
7952    ///Link quality (signal strength)
7953    pub linkquality: f64,
7954    ///Controls the behavior when the device is powered on after power loss
7955    pub power_on_behavior: Zigbee8718696548738Poweronbehavior,
7956    ///Zigbee herdsman description: "On/off state of this light"
7957    ///The string values get converted into boolean with: ON = true and OFF = false
7958    #[serde(deserialize_with = "zigbee8718696548738_state_deserializer")]
7959    pub state: bool,
7960    /// Optional last_seen type, set as a global zigbee2mqtt setting
7961    pub last_seen: Option<LastSeen>,
7962    /// Optional elapsed type
7963    pub elapsed: Option<u64>,
7964}
7965/// Deserialize bool from String with custom value mapping
7966fn zigbee8718696548738_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
7967where
7968    D: Deserializer<'de>,
7969{
7970    match String::deserialize(deserializer)?.as_ref() {
7971        "ON" => Ok(true),
7972        "OFF" => Ok(false),
7973        other => Err(de::Error::invalid_value(
7974            Unexpected::Str(other),
7975            &"Value expected was either ON or OFF",
7976        )),
7977    }
7978}
7979
7980/// philips:8718696598283 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696598283.html)
7981///
7982/// 
7983#[cfg_attr(feature = "debug", derive(Debug))]
7984#[cfg_attr(feature = "clone", derive(Clone))]
7985#[derive(Deserialize)]
7986pub struct Zigbee8718696598283 {
7987    ///Brightness of this light
7988    pub brightness: f64,
7989    ///Color temperature of this light
7990    pub color_temp: f64,
7991    ///Color temperature after cold power on of this light
7992    pub color_temp_startup: f64,
7993    ///Link quality (signal strength)
7994    pub linkquality: f64,
7995    ///Controls the behavior when the device is powered on after power loss
7996    pub power_on_behavior: Zigbee8718696598283Poweronbehavior,
7997    ///Zigbee herdsman description: "On/off state of this light"
7998    ///The string values get converted into boolean with: ON = true and OFF = false
7999    #[serde(deserialize_with = "zigbee8718696598283_state_deserializer")]
8000    pub state: bool,
8001    /// Optional last_seen type, set as a global zigbee2mqtt setting
8002    pub last_seen: Option<LastSeen>,
8003    /// Optional elapsed type
8004    pub elapsed: Option<u64>,
8005}
8006/// Deserialize bool from String with custom value mapping
8007fn zigbee8718696598283_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8008where
8009    D: Deserializer<'de>,
8010{
8011    match String::deserialize(deserializer)?.as_ref() {
8012        "ON" => Ok(true),
8013        "OFF" => Ok(false),
8014        other => Err(de::Error::invalid_value(
8015            Unexpected::Str(other),
8016            &"Value expected was either ON or OFF",
8017        )),
8018    }
8019}
8020
8021/// philips:8718696695203 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718696695203.html)
8022///
8023/// 
8024#[cfg_attr(feature = "debug", derive(Debug))]
8025#[cfg_attr(feature = "clone", derive(Clone))]
8026#[derive(Deserialize)]
8027pub struct Zigbee8718696695203 {
8028    ///Brightness of this light
8029    pub brightness: f64,
8030    ///Color temperature of this light
8031    pub color_temp: f64,
8032    ///Color temperature after cold power on of this light
8033    pub color_temp_startup: f64,
8034    ///Link quality (signal strength)
8035    pub linkquality: f64,
8036    ///Controls the behavior when the device is powered on after power loss
8037    pub power_on_behavior: Zigbee8718696695203Poweronbehavior,
8038    ///Zigbee herdsman description: "On/off state of this light"
8039    ///The string values get converted into boolean with: ON = true and OFF = false
8040    #[serde(deserialize_with = "zigbee8718696695203_state_deserializer")]
8041    pub state: bool,
8042    /// Optional last_seen type, set as a global zigbee2mqtt setting
8043    pub last_seen: Option<LastSeen>,
8044    /// Optional elapsed type
8045    pub elapsed: Option<u64>,
8046}
8047/// Deserialize bool from String with custom value mapping
8048fn zigbee8718696695203_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8049where
8050    D: Deserializer<'de>,
8051{
8052    match String::deserialize(deserializer)?.as_ref() {
8053        "ON" => Ok(true),
8054        "OFF" => Ok(false),
8055        other => Err(de::Error::invalid_value(
8056            Unexpected::Str(other),
8057            &"Value expected was either ON or OFF",
8058        )),
8059    }
8060}
8061
8062/// philips:8718699673147 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718699673147.html)
8063///
8064/// 
8065#[cfg_attr(feature = "debug", derive(Debug))]
8066#[cfg_attr(feature = "clone", derive(Clone))]
8067#[derive(Deserialize)]
8068pub struct Zigbee8718699673147 {
8069    ///Brightness of this light
8070    pub brightness: f64,
8071    ///Link quality (signal strength)
8072    pub linkquality: f64,
8073    ///Controls the behavior when the device is powered on after power loss
8074    pub power_on_behavior: Zigbee8718699673147Poweronbehavior,
8075    ///Zigbee herdsman description: "On/off state of this light"
8076    ///The string values get converted into boolean with: ON = true and OFF = false
8077    #[serde(deserialize_with = "zigbee8718699673147_state_deserializer")]
8078    pub state: bool,
8079    /// Optional last_seen type, set as a global zigbee2mqtt setting
8080    pub last_seen: Option<LastSeen>,
8081    /// Optional elapsed type
8082    pub elapsed: Option<u64>,
8083}
8084/// Deserialize bool from String with custom value mapping
8085fn zigbee8718699673147_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8086where
8087    D: Deserializer<'de>,
8088{
8089    match String::deserialize(deserializer)?.as_ref() {
8090        "ON" => Ok(true),
8091        "OFF" => Ok(false),
8092        other => Err(de::Error::invalid_value(
8093            Unexpected::Str(other),
8094            &"Value expected was either ON or OFF",
8095        )),
8096    }
8097}
8098
8099/// philips:8718699688820 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718699688820.html)
8100///
8101/// 
8102#[cfg_attr(feature = "debug", derive(Debug))]
8103#[cfg_attr(feature = "clone", derive(Clone))]
8104#[derive(Deserialize)]
8105pub struct Zigbee8718699688820 {
8106    ///Brightness of this light
8107    pub brightness: f64,
8108    ///Link quality (signal strength)
8109    pub linkquality: f64,
8110    ///Controls the behavior when the device is powered on after power loss
8111    pub power_on_behavior: Zigbee8718699688820Poweronbehavior,
8112    ///Zigbee herdsman description: "On/off state of this light"
8113    ///The string values get converted into boolean with: ON = true and OFF = false
8114    #[serde(deserialize_with = "zigbee8718699688820_state_deserializer")]
8115    pub state: bool,
8116    /// Optional last_seen type, set as a global zigbee2mqtt setting
8117    pub last_seen: Option<LastSeen>,
8118    /// Optional elapsed type
8119    pub elapsed: Option<u64>,
8120}
8121/// Deserialize bool from String with custom value mapping
8122fn zigbee8718699688820_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8123where
8124    D: Deserializer<'de>,
8125{
8126    match String::deserialize(deserializer)?.as_ref() {
8127        "ON" => Ok(true),
8128        "OFF" => Ok(false),
8129        other => Err(de::Error::invalid_value(
8130            Unexpected::Str(other),
8131            &"Value expected was either ON or OFF",
8132        )),
8133    }
8134}
8135
8136/// philips:8718699688882 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718699688882.html)
8137///
8138/// 
8139#[cfg_attr(feature = "debug", derive(Debug))]
8140#[cfg_attr(feature = "clone", derive(Clone))]
8141#[derive(Deserialize)]
8142pub struct Zigbee8718699688882 {
8143    ///Brightness of this light
8144    pub brightness: f64,
8145    ///Link quality (signal strength)
8146    pub linkquality: f64,
8147    ///Controls the behavior when the device is powered on after power loss
8148    pub power_on_behavior: Zigbee8718699688882Poweronbehavior,
8149    ///Zigbee herdsman description: "On/off state of this light"
8150    ///The string values get converted into boolean with: ON = true and OFF = false
8151    #[serde(deserialize_with = "zigbee8718699688882_state_deserializer")]
8152    pub state: bool,
8153    /// Optional last_seen type, set as a global zigbee2mqtt setting
8154    pub last_seen: Option<LastSeen>,
8155    /// Optional elapsed type
8156    pub elapsed: Option<u64>,
8157}
8158/// Deserialize bool from String with custom value mapping
8159fn zigbee8718699688882_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8160where
8161    D: Deserializer<'de>,
8162{
8163    match String::deserialize(deserializer)?.as_ref() {
8164        "ON" => Ok(true),
8165        "OFF" => Ok(false),
8166        other => Err(de::Error::invalid_value(
8167            Unexpected::Str(other),
8168            &"Value expected was either ON or OFF",
8169        )),
8170    }
8171}
8172
8173/// philips:8718699689308 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718699689308.html)
8174///
8175/// 
8176#[cfg_attr(feature = "debug", derive(Debug))]
8177#[cfg_attr(feature = "clone", derive(Clone))]
8178#[derive(Deserialize)]
8179pub struct Zigbee8718699689308 {
8180    ///Link quality (signal strength)
8181    pub linkquality: f64,
8182    ///Zigbee herdsman description: "On/off state of the switch"
8183    ///The string values get converted into boolean with: ON = true and OFF = false
8184    #[serde(deserialize_with = "zigbee8718699689308_state_deserializer")]
8185    pub state: bool,
8186    /// Optional last_seen type, set as a global zigbee2mqtt setting
8187    pub last_seen: Option<LastSeen>,
8188    /// Optional elapsed type
8189    pub elapsed: Option<u64>,
8190}
8191/// Deserialize bool from String with custom value mapping
8192fn zigbee8718699689308_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8193where
8194    D: Deserializer<'de>,
8195{
8196    match String::deserialize(deserializer)?.as_ref() {
8197        "ON" => Ok(true),
8198        "OFF" => Ok(false),
8199        other => Err(de::Error::invalid_value(
8200            Unexpected::Str(other),
8201            &"Value expected was either ON or OFF",
8202        )),
8203    }
8204}
8205
8206/// philips:8718699693985 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718699693985.html)
8207///
8208/// 
8209#[cfg_attr(feature = "debug", derive(Debug))]
8210#[cfg_attr(feature = "clone", derive(Clone))]
8211#[derive(Deserialize)]
8212pub struct Zigbee8718699693985 {
8213    ///Triggered action (e.g. a button click)
8214    pub action: Zigbee8718699693985Action,
8215    ///Remaining battery in %, can take up to 24 hours before reported.
8216    pub battery: f64,
8217    ///Link quality (signal strength)
8218    pub linkquality: f64,
8219    /// Optional last_seen type, set as a global zigbee2mqtt setting
8220    pub last_seen: Option<LastSeen>,
8221    /// Optional elapsed type
8222    pub elapsed: Option<u64>,
8223}/// philips:8718699703424 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8718699703424.html)
8224///
8225/// 
8226#[cfg_attr(feature = "debug", derive(Debug))]
8227#[cfg_attr(feature = "clone", derive(Clone))]
8228#[derive(Deserialize)]
8229pub struct Zigbee8718699703424 {
8230    ///Brightness of this light
8231    pub brightness: f64,
8232    ///Color temperature of this light
8233    pub color_temp: f64,
8234    ///Color temperature after cold power on of this light
8235    pub color_temp_startup: f64,
8236    ///Link quality (signal strength)
8237    pub linkquality: f64,
8238    ///Controls the behavior when the device is powered on after power loss
8239    pub power_on_behavior: Zigbee8718699703424Poweronbehavior,
8240    ///Zigbee herdsman description: "On/off state of this light"
8241    ///The string values get converted into boolean with: ON = true and OFF = false
8242    #[serde(deserialize_with = "zigbee8718699703424_state_deserializer")]
8243    pub state: bool,
8244    /// Optional last_seen type, set as a global zigbee2mqtt setting
8245    pub last_seen: Option<LastSeen>,
8246    /// Optional elapsed type
8247    pub elapsed: Option<u64>,
8248}
8249/// Deserialize bool from String with custom value mapping
8250fn zigbee8718699703424_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8251where
8252    D: Deserializer<'de>,
8253{
8254    match String::deserialize(deserializer)?.as_ref() {
8255        "ON" => Ok(true),
8256        "OFF" => Ok(false),
8257        other => Err(de::Error::invalid_value(
8258            Unexpected::Str(other),
8259            &"Value expected was either ON or OFF",
8260        )),
8261    }
8262}
8263
8264/// philips:8719514279131 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514279131.html)
8265///
8266/// 
8267#[cfg_attr(feature = "debug", derive(Debug))]
8268#[cfg_attr(feature = "clone", derive(Clone))]
8269#[derive(Deserialize)]
8270pub struct Zigbee8719514279131 {
8271    ///Brightness of this light
8272    pub brightness: f64,
8273    ///Link quality (signal strength)
8274    pub linkquality: f64,
8275    ///Controls the behavior when the device is powered on after power loss
8276    pub power_on_behavior: Zigbee8719514279131Poweronbehavior,
8277    ///Zigbee herdsman description: "On/off state of this light"
8278    ///The string values get converted into boolean with: ON = true and OFF = false
8279    #[serde(deserialize_with = "zigbee8719514279131_state_deserializer")]
8280    pub state: bool,
8281    /// Optional last_seen type, set as a global zigbee2mqtt setting
8282    pub last_seen: Option<LastSeen>,
8283    /// Optional elapsed type
8284    pub elapsed: Option<u64>,
8285}
8286/// Deserialize bool from String with custom value mapping
8287fn zigbee8719514279131_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8288where
8289    D: Deserializer<'de>,
8290{
8291    match String::deserialize(deserializer)?.as_ref() {
8292        "ON" => Ok(true),
8293        "OFF" => Ok(false),
8294        other => Err(de::Error::invalid_value(
8295            Unexpected::Str(other),
8296            &"Value expected was either ON or OFF",
8297        )),
8298    }
8299}
8300
8301/// philips:8719514279155 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514279155.html)
8302///
8303/// 
8304#[cfg_attr(feature = "debug", derive(Debug))]
8305#[cfg_attr(feature = "clone", derive(Clone))]
8306#[derive(Deserialize)]
8307pub struct Zigbee8719514279155 {
8308    ///Brightness of this light
8309    pub brightness: f64,
8310    ///Link quality (signal strength)
8311    pub linkquality: f64,
8312    ///Controls the behavior when the device is powered on after power loss
8313    pub power_on_behavior: Zigbee8719514279155Poweronbehavior,
8314    ///Zigbee herdsman description: "On/off state of this light"
8315    ///The string values get converted into boolean with: ON = true and OFF = false
8316    #[serde(deserialize_with = "zigbee8719514279155_state_deserializer")]
8317    pub state: bool,
8318    /// Optional last_seen type, set as a global zigbee2mqtt setting
8319    pub last_seen: Option<LastSeen>,
8320    /// Optional elapsed type
8321    pub elapsed: Option<u64>,
8322}
8323/// Deserialize bool from String with custom value mapping
8324fn zigbee8719514279155_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8325where
8326    D: Deserializer<'de>,
8327{
8328    match String::deserialize(deserializer)?.as_ref() {
8329        "ON" => Ok(true),
8330        "OFF" => Ok(false),
8331        other => Err(de::Error::invalid_value(
8332            Unexpected::Str(other),
8333            &"Value expected was either ON or OFF",
8334        )),
8335    }
8336}
8337
8338/// philips:8719514279193 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514279193.html)
8339///
8340/// 
8341#[cfg_attr(feature = "debug", derive(Debug))]
8342#[cfg_attr(feature = "clone", derive(Clone))]
8343#[derive(Deserialize)]
8344pub struct Zigbee8719514279193 {
8345    ///Brightness of this light
8346    pub brightness: f64,
8347    ///Link quality (signal strength)
8348    pub linkquality: f64,
8349    ///Controls the behavior when the device is powered on after power loss
8350    pub power_on_behavior: Zigbee8719514279193Poweronbehavior,
8351    ///Zigbee herdsman description: "On/off state of this light"
8352    ///The string values get converted into boolean with: ON = true and OFF = false
8353    #[serde(deserialize_with = "zigbee8719514279193_state_deserializer")]
8354    pub state: bool,
8355    /// Optional last_seen type, set as a global zigbee2mqtt setting
8356    pub last_seen: Option<LastSeen>,
8357    /// Optional elapsed type
8358    pub elapsed: Option<u64>,
8359}
8360/// Deserialize bool from String with custom value mapping
8361fn zigbee8719514279193_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8362where
8363    D: Deserializer<'de>,
8364{
8365    match String::deserialize(deserializer)?.as_ref() {
8366        "ON" => Ok(true),
8367        "OFF" => Ok(false),
8368        other => Err(de::Error::invalid_value(
8369            Unexpected::Str(other),
8370            &"Value expected was either ON or OFF",
8371        )),
8372    }
8373}
8374
8375/// philips:8719514301443 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514301443.html)
8376///
8377/// 
8378#[cfg_attr(feature = "debug", derive(Debug))]
8379#[cfg_attr(feature = "clone", derive(Clone))]
8380#[derive(Deserialize)]
8381pub struct Zigbee8719514301443 {
8382    ///Brightness of this light
8383    pub brightness: f64,
8384    ///Color temperature of this light
8385    pub color_temp: f64,
8386    ///Color temperature after cold power on of this light
8387    pub color_temp_startup: f64,
8388    ///Link quality (signal strength)
8389    pub linkquality: f64,
8390    ///Controls the behavior when the device is powered on after power loss
8391    pub power_on_behavior: Zigbee8719514301443Poweronbehavior,
8392    ///Zigbee herdsman description: "On/off state of this light"
8393    ///The string values get converted into boolean with: ON = true and OFF = false
8394    #[serde(deserialize_with = "zigbee8719514301443_state_deserializer")]
8395    pub state: bool,
8396    /// Optional last_seen type, set as a global zigbee2mqtt setting
8397    pub last_seen: Option<LastSeen>,
8398    /// Optional elapsed type
8399    pub elapsed: Option<u64>,
8400}
8401/// Deserialize bool from String with custom value mapping
8402fn zigbee8719514301443_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8403where
8404    D: Deserializer<'de>,
8405{
8406    match String::deserialize(deserializer)?.as_ref() {
8407        "ON" => Ok(true),
8408        "OFF" => Ok(false),
8409        other => Err(de::Error::invalid_value(
8410            Unexpected::Str(other),
8411            &"Value expected was either ON or OFF",
8412        )),
8413    }
8414}
8415
8416/// philips:8719514301481 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514301481.html)
8417///
8418/// 
8419#[cfg_attr(feature = "debug", derive(Debug))]
8420#[cfg_attr(feature = "clone", derive(Clone))]
8421#[derive(Deserialize)]
8422pub struct Zigbee8719514301481 {
8423    ///Brightness of this light
8424    pub brightness: f64,
8425    ///Color temperature of this light
8426    pub color_temp: f64,
8427    ///Color temperature after cold power on of this light
8428    pub color_temp_startup: f64,
8429    ///Link quality (signal strength)
8430    pub linkquality: f64,
8431    ///Controls the behavior when the device is powered on after power loss
8432    pub power_on_behavior: Zigbee8719514301481Poweronbehavior,
8433    ///Zigbee herdsman description: "On/off state of this light"
8434    ///The string values get converted into boolean with: ON = true and OFF = false
8435    #[serde(deserialize_with = "zigbee8719514301481_state_deserializer")]
8436    pub state: bool,
8437    /// Optional last_seen type, set as a global zigbee2mqtt setting
8438    pub last_seen: Option<LastSeen>,
8439    /// Optional elapsed type
8440    pub elapsed: Option<u64>,
8441}
8442/// Deserialize bool from String with custom value mapping
8443fn zigbee8719514301481_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8444where
8445    D: Deserializer<'de>,
8446{
8447    match String::deserialize(deserializer)?.as_ref() {
8448        "ON" => Ok(true),
8449        "OFF" => Ok(false),
8450        other => Err(de::Error::invalid_value(
8451            Unexpected::Str(other),
8452            &"Value expected was either ON or OFF",
8453        )),
8454    }
8455}
8456
8457/// philips:8719514301528 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514301528.html)
8458///
8459/// 
8460#[cfg_attr(feature = "debug", derive(Debug))]
8461#[cfg_attr(feature = "clone", derive(Clone))]
8462#[derive(Deserialize)]
8463pub struct Zigbee8719514301528 {
8464    ///Brightness of this light
8465    pub brightness: f64,
8466    ///Color temperature of this light
8467    pub color_temp: f64,
8468    ///Color temperature after cold power on of this light
8469    pub color_temp_startup: f64,
8470    ///Link quality (signal strength)
8471    pub linkquality: f64,
8472    ///Controls the behavior when the device is powered on after power loss
8473    pub power_on_behavior: Zigbee8719514301528Poweronbehavior,
8474    ///Zigbee herdsman description: "On/off state of this light"
8475    ///The string values get converted into boolean with: ON = true and OFF = false
8476    #[serde(deserialize_with = "zigbee8719514301528_state_deserializer")]
8477    pub state: bool,
8478    /// Optional last_seen type, set as a global zigbee2mqtt setting
8479    pub last_seen: Option<LastSeen>,
8480    /// Optional elapsed type
8481    pub elapsed: Option<u64>,
8482}
8483/// Deserialize bool from String with custom value mapping
8484fn zigbee8719514301528_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8485where
8486    D: Deserializer<'de>,
8487{
8488    match String::deserialize(deserializer)?.as_ref() {
8489        "ON" => Ok(true),
8490        "OFF" => Ok(false),
8491        other => Err(de::Error::invalid_value(
8492            Unexpected::Str(other),
8493            &"Value expected was either ON or OFF",
8494        )),
8495    }
8496}
8497
8498/// philips:8719514301542 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514301542.html)
8499///
8500/// 
8501#[cfg_attr(feature = "debug", derive(Debug))]
8502#[cfg_attr(feature = "clone", derive(Clone))]
8503#[derive(Deserialize)]
8504pub struct Zigbee8719514301542 {
8505    ///Brightness of this light
8506    pub brightness: f64,
8507    ///Color temperature of this light
8508    pub color_temp: f64,
8509    ///Color temperature after cold power on of this light
8510    pub color_temp_startup: f64,
8511    ///Link quality (signal strength)
8512    pub linkquality: f64,
8513    ///Controls the behavior when the device is powered on after power loss
8514    pub power_on_behavior: Zigbee8719514301542Poweronbehavior,
8515    ///Zigbee herdsman description: "On/off state of this light"
8516    ///The string values get converted into boolean with: ON = true and OFF = false
8517    #[serde(deserialize_with = "zigbee8719514301542_state_deserializer")]
8518    pub state: bool,
8519    /// Optional last_seen type, set as a global zigbee2mqtt setting
8520    pub last_seen: Option<LastSeen>,
8521    /// Optional elapsed type
8522    pub elapsed: Option<u64>,
8523}
8524/// Deserialize bool from String with custom value mapping
8525fn zigbee8719514301542_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8526where
8527    D: Deserializer<'de>,
8528{
8529    match String::deserialize(deserializer)?.as_ref() {
8530        "ON" => Ok(true),
8531        "OFF" => Ok(false),
8532        other => Err(de::Error::invalid_value(
8533            Unexpected::Str(other),
8534            &"Value expected was either ON or OFF",
8535        )),
8536    }
8537}
8538
8539/// philips:8719514302235 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514302235.html)
8540///
8541/// 
8542#[cfg_attr(feature = "debug", derive(Debug))]
8543#[cfg_attr(feature = "clone", derive(Clone))]
8544#[derive(Deserialize)]
8545pub struct Zigbee8719514302235 {
8546    ///Brightness of this light
8547    pub brightness: f64,
8548    ///Link quality (signal strength)
8549    pub linkquality: f64,
8550    ///Controls the behavior when the device is powered on after power loss
8551    pub power_on_behavior: Zigbee8719514302235Poweronbehavior,
8552    ///Zigbee herdsman description: "On/off state of this light"
8553    ///The string values get converted into boolean with: ON = true and OFF = false
8554    #[serde(deserialize_with = "zigbee8719514302235_state_deserializer")]
8555    pub state: bool,
8556    /// Optional last_seen type, set as a global zigbee2mqtt setting
8557    pub last_seen: Option<LastSeen>,
8558    /// Optional elapsed type
8559    pub elapsed: Option<u64>,
8560}
8561/// Deserialize bool from String with custom value mapping
8562fn zigbee8719514302235_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8563where
8564    D: Deserializer<'de>,
8565{
8566    match String::deserialize(deserializer)?.as_ref() {
8567        "ON" => Ok(true),
8568        "OFF" => Ok(false),
8569        other => Err(de::Error::invalid_value(
8570            Unexpected::Str(other),
8571            &"Value expected was either ON or OFF",
8572        )),
8573    }
8574}
8575
8576/// philips:8719514328242 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514328242.html)
8577///
8578/// 
8579#[cfg_attr(feature = "debug", derive(Debug))]
8580#[cfg_attr(feature = "clone", derive(Clone))]
8581#[derive(Deserialize)]
8582pub struct Zigbee8719514328242 {
8583    ///Brightness of this light
8584    pub brightness: f64,
8585    ///Color temperature of this light
8586    pub color_temp: f64,
8587    ///Color temperature after cold power on of this light
8588    pub color_temp_startup: f64,
8589    ///Link quality (signal strength)
8590    pub linkquality: f64,
8591    ///Controls the behavior when the device is powered on after power loss
8592    pub power_on_behavior: Zigbee8719514328242Poweronbehavior,
8593    ///Zigbee herdsman description: "On/off state of this light"
8594    ///The string values get converted into boolean with: ON = true and OFF = false
8595    #[serde(deserialize_with = "zigbee8719514328242_state_deserializer")]
8596    pub state: bool,
8597    /// Optional last_seen type, set as a global zigbee2mqtt setting
8598    pub last_seen: Option<LastSeen>,
8599    /// Optional elapsed type
8600    pub elapsed: Option<u64>,
8601}
8602/// Deserialize bool from String with custom value mapping
8603fn zigbee8719514328242_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8604where
8605    D: Deserializer<'de>,
8606{
8607    match String::deserialize(deserializer)?.as_ref() {
8608        "ON" => Ok(true),
8609        "OFF" => Ok(false),
8610        other => Err(de::Error::invalid_value(
8611            Unexpected::Str(other),
8612            &"Value expected was either ON or OFF",
8613        )),
8614    }
8615}
8616
8617/// philips:8719514338142 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514338142.html)
8618///
8619/// 
8620#[cfg_attr(feature = "debug", derive(Debug))]
8621#[cfg_attr(feature = "clone", derive(Clone))]
8622#[derive(Deserialize)]
8623pub struct Zigbee8719514338142 {
8624    ///Brightness of this light
8625    pub brightness: f64,
8626    ///Color temperature of this light
8627    pub color_temp: f64,
8628    ///Color temperature after cold power on of this light
8629    pub color_temp_startup: f64,
8630    ///Link quality (signal strength)
8631    pub linkquality: f64,
8632    ///Controls the behavior when the device is powered on after power loss
8633    pub power_on_behavior: Zigbee8719514338142Poweronbehavior,
8634    ///Zigbee herdsman description: "On/off state of this light"
8635    ///The string values get converted into boolean with: ON = true and OFF = false
8636    #[serde(deserialize_with = "zigbee8719514338142_state_deserializer")]
8637    pub state: bool,
8638    /// Optional last_seen type, set as a global zigbee2mqtt setting
8639    pub last_seen: Option<LastSeen>,
8640    /// Optional elapsed type
8641    pub elapsed: Option<u64>,
8642}
8643/// Deserialize bool from String with custom value mapping
8644fn zigbee8719514338142_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8645where
8646    D: Deserializer<'de>,
8647{
8648    match String::deserialize(deserializer)?.as_ref() {
8649        "ON" => Ok(true),
8650        "OFF" => Ok(false),
8651        other => Err(de::Error::invalid_value(
8652            Unexpected::Str(other),
8653            &"Value expected was either ON or OFF",
8654        )),
8655    }
8656}
8657
8658/// philips:8719514338524 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514338524.html)
8659///
8660/// 
8661#[cfg_attr(feature = "debug", derive(Debug))]
8662#[cfg_attr(feature = "clone", derive(Clone))]
8663#[derive(Deserialize)]
8664pub struct Zigbee8719514338524 {
8665    ///Brightness of this light
8666    pub brightness: f64,
8667    ///Color temperature of this light
8668    pub color_temp: f64,
8669    ///Color temperature after cold power on of this light
8670    pub color_temp_startup: f64,
8671    ///Link quality (signal strength)
8672    pub linkquality: f64,
8673    ///Controls the behavior when the device is powered on after power loss
8674    pub power_on_behavior: Zigbee8719514338524Poweronbehavior,
8675    ///Zigbee herdsman description: "On/off state of this light"
8676    ///The string values get converted into boolean with: ON = true and OFF = false
8677    #[serde(deserialize_with = "zigbee8719514338524_state_deserializer")]
8678    pub state: bool,
8679    /// Optional last_seen type, set as a global zigbee2mqtt setting
8680    pub last_seen: Option<LastSeen>,
8681    /// Optional elapsed type
8682    pub elapsed: Option<u64>,
8683}
8684/// Deserialize bool from String with custom value mapping
8685fn zigbee8719514338524_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8686where
8687    D: Deserializer<'de>,
8688{
8689    match String::deserialize(deserializer)?.as_ref() {
8690        "ON" => Ok(true),
8691        "OFF" => Ok(false),
8692        other => Err(de::Error::invalid_value(
8693            Unexpected::Str(other),
8694            &"Value expected was either ON or OFF",
8695        )),
8696    }
8697}
8698
8699/// philips:871951433908 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/871951433908.html)
8700///
8701/// 
8702#[cfg_attr(feature = "debug", derive(Debug))]
8703#[cfg_attr(feature = "clone", derive(Clone))]
8704#[derive(Deserialize)]
8705pub struct Zigbee871951433908 {
8706    ///Brightness of this light
8707    pub brightness: f64,
8708    ///Color temperature of this light
8709    pub color_temp: f64,
8710    ///Color temperature after cold power on of this light
8711    pub color_temp_startup: f64,
8712    ///Link quality (signal strength)
8713    pub linkquality: f64,
8714    ///Controls the behavior when the device is powered on after power loss
8715    pub power_on_behavior: Zigbee871951433908Poweronbehavior,
8716    ///Zigbee herdsman description: "On/off state of this light"
8717    ///The string values get converted into boolean with: ON = true and OFF = false
8718    #[serde(deserialize_with = "zigbee871951433908_state_deserializer")]
8719    pub state: bool,
8720    /// Optional last_seen type, set as a global zigbee2mqtt setting
8721    pub last_seen: Option<LastSeen>,
8722    /// Optional elapsed type
8723    pub elapsed: Option<u64>,
8724}
8725/// Deserialize bool from String with custom value mapping
8726fn zigbee871951433908_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8727where
8728    D: Deserializer<'de>,
8729{
8730    match String::deserialize(deserializer)?.as_ref() {
8731        "ON" => Ok(true),
8732        "OFF" => Ok(false),
8733        other => Err(de::Error::invalid_value(
8734            Unexpected::Str(other),
8735            &"Value expected was either ON or OFF",
8736        )),
8737    }
8738}
8739
8740/// philips:8719514339125 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514339125.html)
8741///
8742/// 
8743#[cfg_attr(feature = "debug", derive(Debug))]
8744#[cfg_attr(feature = "clone", derive(Clone))]
8745#[derive(Deserialize)]
8746pub struct Zigbee8719514339125 {
8747    ///Brightness of this light
8748    pub brightness: f64,
8749    ///Color temperature of this light
8750    pub color_temp: f64,
8751    ///Color temperature after cold power on of this light
8752    pub color_temp_startup: f64,
8753    ///Link quality (signal strength)
8754    pub linkquality: f64,
8755    ///Controls the behavior when the device is powered on after power loss
8756    pub power_on_behavior: Zigbee8719514339125Poweronbehavior,
8757    ///Zigbee herdsman description: "On/off state of this light"
8758    ///The string values get converted into boolean with: ON = true and OFF = false
8759    #[serde(deserialize_with = "zigbee8719514339125_state_deserializer")]
8760    pub state: bool,
8761    /// Optional last_seen type, set as a global zigbee2mqtt setting
8762    pub last_seen: Option<LastSeen>,
8763    /// Optional elapsed type
8764    pub elapsed: Option<u64>,
8765}
8766/// Deserialize bool from String with custom value mapping
8767fn zigbee8719514339125_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8768where
8769    D: Deserializer<'de>,
8770{
8771    match String::deserialize(deserializer)?.as_ref() {
8772        "ON" => Ok(true),
8773        "OFF" => Ok(false),
8774        other => Err(de::Error::invalid_value(
8775            Unexpected::Str(other),
8776            &"Value expected was either ON or OFF",
8777        )),
8778    }
8779}
8780
8781/// philips:8719514339163 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514339163.html)
8782///
8783/// 
8784#[cfg_attr(feature = "debug", derive(Debug))]
8785#[cfg_attr(feature = "clone", derive(Clone))]
8786#[derive(Deserialize)]
8787pub struct Zigbee8719514339163 {
8788    ///Brightness of this light
8789    pub brightness: f64,
8790    ///Color temperature of this light
8791    pub color_temp: f64,
8792    ///Color temperature after cold power on of this light
8793    pub color_temp_startup: f64,
8794    ///Link quality (signal strength)
8795    pub linkquality: f64,
8796    ///Controls the behavior when the device is powered on after power loss
8797    pub power_on_behavior: Zigbee8719514339163Poweronbehavior,
8798    ///Zigbee herdsman description: "On/off state of this light"
8799    ///The string values get converted into boolean with: ON = true and OFF = false
8800    #[serde(deserialize_with = "zigbee8719514339163_state_deserializer")]
8801    pub state: bool,
8802    /// Optional last_seen type, set as a global zigbee2mqtt setting
8803    pub last_seen: Option<LastSeen>,
8804    /// Optional elapsed type
8805    pub elapsed: Option<u64>,
8806}
8807/// Deserialize bool from String with custom value mapping
8808fn zigbee8719514339163_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8809where
8810    D: Deserializer<'de>,
8811{
8812    match String::deserialize(deserializer)?.as_ref() {
8813        "ON" => Ok(true),
8814        "OFF" => Ok(false),
8815        other => Err(de::Error::invalid_value(
8816            Unexpected::Str(other),
8817            &"Value expected was either ON or OFF",
8818        )),
8819    }
8820}
8821
8822/// philips:8719514342361 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514342361.html)
8823///
8824/// 
8825#[cfg_attr(feature = "debug", derive(Debug))]
8826#[cfg_attr(feature = "clone", derive(Clone))]
8827#[derive(Deserialize)]
8828pub struct Zigbee8719514342361 {
8829    ///Link quality (signal strength)
8830    pub linkquality: f64,
8831    ///Zigbee herdsman description: "On/off state of the switch"
8832    ///The string values get converted into boolean with: ON = true and OFF = false
8833    #[serde(deserialize_with = "zigbee8719514342361_state_deserializer")]
8834    pub state: bool,
8835    /// Optional last_seen type, set as a global zigbee2mqtt setting
8836    pub last_seen: Option<LastSeen>,
8837    /// Optional elapsed type
8838    pub elapsed: Option<u64>,
8839}
8840/// Deserialize bool from String with custom value mapping
8841fn zigbee8719514342361_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8842where
8843    D: Deserializer<'de>,
8844{
8845    match String::deserialize(deserializer)?.as_ref() {
8846        "ON" => Ok(true),
8847        "OFF" => Ok(false),
8848        other => Err(de::Error::invalid_value(
8849            Unexpected::Str(other),
8850            &"Value expected was either ON or OFF",
8851        )),
8852    }
8853}
8854
8855/// philips:8719514344723 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514344723.html)
8856///
8857/// 
8858#[cfg_attr(feature = "debug", derive(Debug))]
8859#[cfg_attr(feature = "clone", derive(Clone))]
8860#[derive(Deserialize)]
8861pub struct Zigbee8719514344723 {
8862    ///Brightness of this light
8863    pub brightness: f64,
8864    ///Color temperature of this light
8865    pub color_temp: f64,
8866    ///Color temperature after cold power on of this light
8867    pub color_temp_startup: f64,
8868    ///Link quality (signal strength)
8869    pub linkquality: f64,
8870    ///Controls the behavior when the device is powered on after power loss
8871    pub power_on_behavior: Zigbee8719514344723Poweronbehavior,
8872    ///Zigbee herdsman description: "On/off state of this light"
8873    ///The string values get converted into boolean with: ON = true and OFF = false
8874    #[serde(deserialize_with = "zigbee8719514344723_state_deserializer")]
8875    pub state: bool,
8876    /// Optional last_seen type, set as a global zigbee2mqtt setting
8877    pub last_seen: Option<LastSeen>,
8878    /// Optional elapsed type
8879    pub elapsed: Option<u64>,
8880}
8881/// Deserialize bool from String with custom value mapping
8882fn zigbee8719514344723_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8883where
8884    D: Deserializer<'de>,
8885{
8886    match String::deserialize(deserializer)?.as_ref() {
8887        "ON" => Ok(true),
8888        "OFF" => Ok(false),
8889        other => Err(de::Error::invalid_value(
8890            Unexpected::Str(other),
8891            &"Value expected was either ON or OFF",
8892        )),
8893    }
8894}
8895
8896/// philips:8719514382350 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514382350.html)
8897///
8898/// 
8899#[cfg_attr(feature = "debug", derive(Debug))]
8900#[cfg_attr(feature = "clone", derive(Clone))]
8901#[derive(Deserialize)]
8902pub struct Zigbee8719514382350 {
8903    ///Brightness of this light
8904    pub brightness: f64,
8905    ///Color temperature of this light
8906    pub color_temp: f64,
8907    ///Color temperature after cold power on of this light
8908    pub color_temp_startup: f64,
8909    ///Link quality (signal strength)
8910    pub linkquality: f64,
8911    ///Controls the behavior when the device is powered on after power loss
8912    pub power_on_behavior: Zigbee8719514382350Poweronbehavior,
8913    ///Zigbee herdsman description: "On/off state of this light"
8914    ///The string values get converted into boolean with: ON = true and OFF = false
8915    #[serde(deserialize_with = "zigbee8719514382350_state_deserializer")]
8916    pub state: bool,
8917    /// Optional last_seen type, set as a global zigbee2mqtt setting
8918    pub last_seen: Option<LastSeen>,
8919    /// Optional elapsed type
8920    pub elapsed: Option<u64>,
8921}
8922/// Deserialize bool from String with custom value mapping
8923fn zigbee8719514382350_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8924where
8925    D: Deserializer<'de>,
8926{
8927    match String::deserialize(deserializer)?.as_ref() {
8928        "ON" => Ok(true),
8929        "OFF" => Ok(false),
8930        other => Err(de::Error::invalid_value(
8931            Unexpected::Str(other),
8932            &"Value expected was either ON or OFF",
8933        )),
8934    }
8935}
8936
8937/// philips:8719514392830 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514392830.html)
8938///
8939/// 
8940#[cfg_attr(feature = "debug", derive(Debug))]
8941#[cfg_attr(feature = "clone", derive(Clone))]
8942#[derive(Deserialize)]
8943pub struct Zigbee8719514392830 {
8944    ///Brightness of this light
8945    pub brightness: f64,
8946    ///Color temperature of this light
8947    pub color_temp: f64,
8948    ///Color temperature after cold power on of this light
8949    pub color_temp_startup: f64,
8950    ///Link quality (signal strength)
8951    pub linkquality: f64,
8952    ///Controls the behavior when the device is powered on after power loss
8953    pub power_on_behavior: Zigbee8719514392830Poweronbehavior,
8954    ///Zigbee herdsman description: "On/off state of this light"
8955    ///The string values get converted into boolean with: ON = true and OFF = false
8956    #[serde(deserialize_with = "zigbee8719514392830_state_deserializer")]
8957    pub state: bool,
8958    /// Optional last_seen type, set as a global zigbee2mqtt setting
8959    pub last_seen: Option<LastSeen>,
8960    /// Optional elapsed type
8961    pub elapsed: Option<u64>,
8962}
8963/// Deserialize bool from String with custom value mapping
8964fn zigbee8719514392830_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
8965where
8966    D: Deserializer<'de>,
8967{
8968    match String::deserialize(deserializer)?.as_ref() {
8969        "ON" => Ok(true),
8970        "OFF" => Ok(false),
8971        other => Err(de::Error::invalid_value(
8972            Unexpected::Str(other),
8973            &"Value expected was either ON or OFF",
8974        )),
8975    }
8976}
8977
8978/// philips:8719514440937/8719514440999 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/8719514440937/8719514440999.html)
8979///
8980/// 
8981#[cfg_attr(feature = "debug", derive(Debug))]
8982#[cfg_attr(feature = "clone", derive(Clone))]
8983#[derive(Deserialize)]
8984pub struct Zigbee87195144409378719514440999 {
8985    ///Triggered action (e.g. a button click)
8986    pub action: Zigbee87195144409378719514440999Action,
8987    ///Remaining battery in %, can take up to 24 hours before reported.
8988    pub battery: f64,
8989    ///Link quality (signal strength)
8990    pub linkquality: f64,
8991    /// Optional last_seen type, set as a global zigbee2mqtt setting
8992    pub last_seen: Option<LastSeen>,
8993    /// Optional elapsed type
8994    pub elapsed: Option<u64>,
8995}/// philips:915005106701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005106701.html)
8996///
8997/// 
8998#[cfg_attr(feature = "debug", derive(Debug))]
8999#[cfg_attr(feature = "clone", derive(Clone))]
9000#[derive(Deserialize)]
9001pub struct Zigbee915005106701 {
9002    ///Brightness of this light
9003    pub brightness: f64,
9004    ///Color temperature of this light
9005    pub color_temp: f64,
9006    ///Color temperature after cold power on of this light
9007    pub color_temp_startup: f64,
9008    ///Link quality (signal strength)
9009    pub linkquality: f64,
9010    ///Controls the behavior when the device is powered on after power loss
9011    pub power_on_behavior: Zigbee915005106701Poweronbehavior,
9012    ///Zigbee herdsman description: "On/off state of this light"
9013    ///The string values get converted into boolean with: ON = true and OFF = false
9014    #[serde(deserialize_with = "zigbee915005106701_state_deserializer")]
9015    pub state: bool,
9016    /// Optional last_seen type, set as a global zigbee2mqtt setting
9017    pub last_seen: Option<LastSeen>,
9018    /// Optional elapsed type
9019    pub elapsed: Option<u64>,
9020}
9021/// Deserialize bool from String with custom value mapping
9022fn zigbee915005106701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9023where
9024    D: Deserializer<'de>,
9025{
9026    match String::deserialize(deserializer)?.as_ref() {
9027        "ON" => Ok(true),
9028        "OFF" => Ok(false),
9029        other => Err(de::Error::invalid_value(
9030            Unexpected::Str(other),
9031            &"Value expected was either ON or OFF",
9032        )),
9033    }
9034}
9035
9036/// philips:915005587401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005587401.html)
9037///
9038/// 
9039#[cfg_attr(feature = "debug", derive(Debug))]
9040#[cfg_attr(feature = "clone", derive(Clone))]
9041#[derive(Deserialize)]
9042pub struct Zigbee915005587401 {
9043    ///Brightness of this light
9044    pub brightness: f64,
9045    ///Color temperature of this light
9046    pub color_temp: f64,
9047    ///Color temperature after cold power on of this light
9048    pub color_temp_startup: f64,
9049    ///Link quality (signal strength)
9050    pub linkquality: f64,
9051    ///Controls the behavior when the device is powered on after power loss
9052    pub power_on_behavior: Zigbee915005587401Poweronbehavior,
9053    ///Zigbee herdsman description: "On/off state of this light"
9054    ///The string values get converted into boolean with: ON = true and OFF = false
9055    #[serde(deserialize_with = "zigbee915005587401_state_deserializer")]
9056    pub state: bool,
9057    /// Optional last_seen type, set as a global zigbee2mqtt setting
9058    pub last_seen: Option<LastSeen>,
9059    /// Optional elapsed type
9060    pub elapsed: Option<u64>,
9061}
9062/// Deserialize bool from String with custom value mapping
9063fn zigbee915005587401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9064where
9065    D: Deserializer<'de>,
9066{
9067    match String::deserialize(deserializer)?.as_ref() {
9068        "ON" => Ok(true),
9069        "OFF" => Ok(false),
9070        other => Err(de::Error::invalid_value(
9071            Unexpected::Str(other),
9072            &"Value expected was either ON or OFF",
9073        )),
9074    }
9075}
9076
9077/// philips:915005733701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005733701.html)
9078///
9079/// 
9080#[cfg_attr(feature = "debug", derive(Debug))]
9081#[cfg_attr(feature = "clone", derive(Clone))]
9082#[derive(Deserialize)]
9083pub struct Zigbee915005733701 {
9084    ///Brightness of this light
9085    pub brightness: f64,
9086    ///Color temperature of this light
9087    pub color_temp: f64,
9088    ///Color temperature after cold power on of this light
9089    pub color_temp_startup: f64,
9090    ///Link quality (signal strength)
9091    pub linkquality: f64,
9092    ///Controls the behavior when the device is powered on after power loss
9093    pub power_on_behavior: Zigbee915005733701Poweronbehavior,
9094    ///Zigbee herdsman description: "On/off state of this light"
9095    ///The string values get converted into boolean with: ON = true and OFF = false
9096    #[serde(deserialize_with = "zigbee915005733701_state_deserializer")]
9097    pub state: bool,
9098    /// Optional last_seen type, set as a global zigbee2mqtt setting
9099    pub last_seen: Option<LastSeen>,
9100    /// Optional elapsed type
9101    pub elapsed: Option<u64>,
9102}
9103/// Deserialize bool from String with custom value mapping
9104fn zigbee915005733701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9105where
9106    D: Deserializer<'de>,
9107{
9108    match String::deserialize(deserializer)?.as_ref() {
9109        "ON" => Ok(true),
9110        "OFF" => Ok(false),
9111        other => Err(de::Error::invalid_value(
9112            Unexpected::Str(other),
9113            &"Value expected was either ON or OFF",
9114        )),
9115    }
9116}
9117
9118/// philips:915005916901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005916901.html)
9119///
9120/// 
9121#[cfg_attr(feature = "debug", derive(Debug))]
9122#[cfg_attr(feature = "clone", derive(Clone))]
9123#[derive(Deserialize)]
9124pub struct Zigbee915005916901 {
9125    ///Brightness of this light
9126    pub brightness: f64,
9127    ///Color temperature of this light
9128    pub color_temp: f64,
9129    ///Color temperature after cold power on of this light
9130    pub color_temp_startup: f64,
9131    ///Link quality (signal strength)
9132    pub linkquality: f64,
9133    ///Controls the behavior when the device is powered on after power loss
9134    pub power_on_behavior: Zigbee915005916901Poweronbehavior,
9135    ///Zigbee herdsman description: "On/off state of this light"
9136    ///The string values get converted into boolean with: ON = true and OFF = false
9137    #[serde(deserialize_with = "zigbee915005916901_state_deserializer")]
9138    pub state: bool,
9139    /// Optional last_seen type, set as a global zigbee2mqtt setting
9140    pub last_seen: Option<LastSeen>,
9141    /// Optional elapsed type
9142    pub elapsed: Option<u64>,
9143}
9144/// Deserialize bool from String with custom value mapping
9145fn zigbee915005916901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9146where
9147    D: Deserializer<'de>,
9148{
9149    match String::deserialize(deserializer)?.as_ref() {
9150        "ON" => Ok(true),
9151        "OFF" => Ok(false),
9152        other => Err(de::Error::invalid_value(
9153            Unexpected::Str(other),
9154            &"Value expected was either ON or OFF",
9155        )),
9156    }
9157}
9158
9159/// philips:915005986901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005986901.html)
9160///
9161/// 
9162#[cfg_attr(feature = "debug", derive(Debug))]
9163#[cfg_attr(feature = "clone", derive(Clone))]
9164#[derive(Deserialize)]
9165pub struct Zigbee915005986901 {
9166    ///Brightness of this light
9167    pub brightness: f64,
9168    ///Color temperature of this light
9169    pub color_temp: f64,
9170    ///Color temperature after cold power on of this light
9171    pub color_temp_startup: f64,
9172    ///Link quality (signal strength)
9173    pub linkquality: f64,
9174    ///Controls the behavior when the device is powered on after power loss
9175    pub power_on_behavior: Zigbee915005986901Poweronbehavior,
9176    ///Zigbee herdsman description: "On/off state of this light"
9177    ///The string values get converted into boolean with: ON = true and OFF = false
9178    #[serde(deserialize_with = "zigbee915005986901_state_deserializer")]
9179    pub state: bool,
9180    /// Optional last_seen type, set as a global zigbee2mqtt setting
9181    pub last_seen: Option<LastSeen>,
9182    /// Optional elapsed type
9183    pub elapsed: Option<u64>,
9184}
9185/// Deserialize bool from String with custom value mapping
9186fn zigbee915005986901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9187where
9188    D: Deserializer<'de>,
9189{
9190    match String::deserialize(deserializer)?.as_ref() {
9191        "ON" => Ok(true),
9192        "OFF" => Ok(false),
9193        other => Err(de::Error::invalid_value(
9194            Unexpected::Str(other),
9195            &"Value expected was either ON or OFF",
9196        )),
9197    }
9198}
9199
9200/// philips:915005987001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005987001.html)
9201///
9202/// 
9203#[cfg_attr(feature = "debug", derive(Debug))]
9204#[cfg_attr(feature = "clone", derive(Clone))]
9205#[derive(Deserialize)]
9206pub struct Zigbee915005987001 {
9207    ///Brightness of this light
9208    pub brightness: f64,
9209    ///Color temperature of this light
9210    pub color_temp: f64,
9211    ///Color temperature after cold power on of this light
9212    pub color_temp_startup: f64,
9213    ///Link quality (signal strength)
9214    pub linkquality: f64,
9215    ///Controls the behavior when the device is powered on after power loss
9216    pub power_on_behavior: Zigbee915005987001Poweronbehavior,
9217    ///Zigbee herdsman description: "On/off state of this light"
9218    ///The string values get converted into boolean with: ON = true and OFF = false
9219    #[serde(deserialize_with = "zigbee915005987001_state_deserializer")]
9220    pub state: bool,
9221    /// Optional last_seen type, set as a global zigbee2mqtt setting
9222    pub last_seen: Option<LastSeen>,
9223    /// Optional elapsed type
9224    pub elapsed: Option<u64>,
9225}
9226/// Deserialize bool from String with custom value mapping
9227fn zigbee915005987001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9228where
9229    D: Deserializer<'de>,
9230{
9231    match String::deserialize(deserializer)?.as_ref() {
9232        "ON" => Ok(true),
9233        "OFF" => Ok(false),
9234        other => Err(de::Error::invalid_value(
9235            Unexpected::Str(other),
9236            &"Value expected was either ON or OFF",
9237        )),
9238    }
9239}
9240
9241/// philips:915005987101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005987101.html)
9242///
9243/// 
9244#[cfg_attr(feature = "debug", derive(Debug))]
9245#[cfg_attr(feature = "clone", derive(Clone))]
9246#[derive(Deserialize)]
9247pub struct Zigbee915005987101 {
9248    ///Brightness of this light
9249    pub brightness: f64,
9250    ///Color temperature of this light
9251    pub color_temp: f64,
9252    ///Color temperature after cold power on of this light
9253    pub color_temp_startup: f64,
9254    ///Link quality (signal strength)
9255    pub linkquality: f64,
9256    ///Controls the behavior when the device is powered on after power loss
9257    pub power_on_behavior: Zigbee915005987101Poweronbehavior,
9258    ///Zigbee herdsman description: "On/off state of this light"
9259    ///The string values get converted into boolean with: ON = true and OFF = false
9260    #[serde(deserialize_with = "zigbee915005987101_state_deserializer")]
9261    pub state: bool,
9262    /// Optional last_seen type, set as a global zigbee2mqtt setting
9263    pub last_seen: Option<LastSeen>,
9264    /// Optional elapsed type
9265    pub elapsed: Option<u64>,
9266}
9267/// Deserialize bool from String with custom value mapping
9268fn zigbee915005987101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9269where
9270    D: Deserializer<'de>,
9271{
9272    match String::deserialize(deserializer)?.as_ref() {
9273        "ON" => Ok(true),
9274        "OFF" => Ok(false),
9275        other => Err(de::Error::invalid_value(
9276            Unexpected::Str(other),
9277            &"Value expected was either ON or OFF",
9278        )),
9279    }
9280}
9281
9282/// philips:915005987301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005987301.html)
9283///
9284/// 
9285#[cfg_attr(feature = "debug", derive(Debug))]
9286#[cfg_attr(feature = "clone", derive(Clone))]
9287#[derive(Deserialize)]
9288pub struct Zigbee915005987301 {
9289    ///Brightness of this light
9290    pub brightness: f64,
9291    ///Color temperature of this light
9292    pub color_temp: f64,
9293    ///Color temperature after cold power on of this light
9294    pub color_temp_startup: f64,
9295    ///Link quality (signal strength)
9296    pub linkquality: f64,
9297    ///Controls the behavior when the device is powered on after power loss
9298    pub power_on_behavior: Zigbee915005987301Poweronbehavior,
9299    ///Zigbee herdsman description: "On/off state of this light"
9300    ///The string values get converted into boolean with: ON = true and OFF = false
9301    #[serde(deserialize_with = "zigbee915005987301_state_deserializer")]
9302    pub state: bool,
9303    /// Optional last_seen type, set as a global zigbee2mqtt setting
9304    pub last_seen: Option<LastSeen>,
9305    /// Optional elapsed type
9306    pub elapsed: Option<u64>,
9307}
9308/// Deserialize bool from String with custom value mapping
9309fn zigbee915005987301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9310where
9311    D: Deserializer<'de>,
9312{
9313    match String::deserialize(deserializer)?.as_ref() {
9314        "ON" => Ok(true),
9315        "OFF" => Ok(false),
9316        other => Err(de::Error::invalid_value(
9317            Unexpected::Str(other),
9318            &"Value expected was either ON or OFF",
9319        )),
9320    }
9321}
9322
9323/// philips:915005987401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005987401.html)
9324///
9325/// 
9326#[cfg_attr(feature = "debug", derive(Debug))]
9327#[cfg_attr(feature = "clone", derive(Clone))]
9328#[derive(Deserialize)]
9329pub struct Zigbee915005987401 {
9330    ///Brightness of this light
9331    pub brightness: f64,
9332    ///Color temperature of this light
9333    pub color_temp: f64,
9334    ///Color temperature after cold power on of this light
9335    pub color_temp_startup: f64,
9336    ///Link quality (signal strength)
9337    pub linkquality: f64,
9338    ///Controls the behavior when the device is powered on after power loss
9339    pub power_on_behavior: Zigbee915005987401Poweronbehavior,
9340    ///Zigbee herdsman description: "On/off state of this light"
9341    ///The string values get converted into boolean with: ON = true and OFF = false
9342    #[serde(deserialize_with = "zigbee915005987401_state_deserializer")]
9343    pub state: bool,
9344    /// Optional last_seen type, set as a global zigbee2mqtt setting
9345    pub last_seen: Option<LastSeen>,
9346    /// Optional elapsed type
9347    pub elapsed: Option<u64>,
9348}
9349/// Deserialize bool from String with custom value mapping
9350fn zigbee915005987401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9351where
9352    D: Deserializer<'de>,
9353{
9354    match String::deserialize(deserializer)?.as_ref() {
9355        "ON" => Ok(true),
9356        "OFF" => Ok(false),
9357        other => Err(de::Error::invalid_value(
9358            Unexpected::Str(other),
9359            &"Value expected was either ON or OFF",
9360        )),
9361    }
9362}
9363
9364/// philips:915005987501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005987501.html)
9365///
9366/// 
9367#[cfg_attr(feature = "debug", derive(Debug))]
9368#[cfg_attr(feature = "clone", derive(Clone))]
9369#[derive(Deserialize)]
9370pub struct Zigbee915005987501 {
9371    ///Brightness of this light
9372    pub brightness: f64,
9373    ///Color temperature of this light
9374    pub color_temp: f64,
9375    ///Color temperature after cold power on of this light
9376    pub color_temp_startup: f64,
9377    ///Link quality (signal strength)
9378    pub linkquality: f64,
9379    ///Controls the behavior when the device is powered on after power loss
9380    pub power_on_behavior: Zigbee915005987501Poweronbehavior,
9381    ///Zigbee herdsman description: "On/off state of this light"
9382    ///The string values get converted into boolean with: ON = true and OFF = false
9383    #[serde(deserialize_with = "zigbee915005987501_state_deserializer")]
9384    pub state: bool,
9385    /// Optional last_seen type, set as a global zigbee2mqtt setting
9386    pub last_seen: Option<LastSeen>,
9387    /// Optional elapsed type
9388    pub elapsed: Option<u64>,
9389}
9390/// Deserialize bool from String with custom value mapping
9391fn zigbee915005987501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9392where
9393    D: Deserializer<'de>,
9394{
9395    match String::deserialize(deserializer)?.as_ref() {
9396        "ON" => Ok(true),
9397        "OFF" => Ok(false),
9398        other => Err(de::Error::invalid_value(
9399            Unexpected::Str(other),
9400            &"Value expected was either ON or OFF",
9401        )),
9402    }
9403}
9404
9405/// philips:915005987601 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005987601.html)
9406///
9407/// 
9408#[cfg_attr(feature = "debug", derive(Debug))]
9409#[cfg_attr(feature = "clone", derive(Clone))]
9410#[derive(Deserialize)]
9411pub struct Zigbee915005987601 {
9412    ///Brightness of this light
9413    pub brightness: f64,
9414    ///Color temperature of this light
9415    pub color_temp: f64,
9416    ///Color temperature after cold power on of this light
9417    pub color_temp_startup: f64,
9418    ///Link quality (signal strength)
9419    pub linkquality: f64,
9420    ///Controls the behavior when the device is powered on after power loss
9421    pub power_on_behavior: Zigbee915005987601Poweronbehavior,
9422    ///Zigbee herdsman description: "On/off state of this light"
9423    ///The string values get converted into boolean with: ON = true and OFF = false
9424    #[serde(deserialize_with = "zigbee915005987601_state_deserializer")]
9425    pub state: bool,
9426    /// Optional last_seen type, set as a global zigbee2mqtt setting
9427    pub last_seen: Option<LastSeen>,
9428    /// Optional elapsed type
9429    pub elapsed: Option<u64>,
9430}
9431/// Deserialize bool from String with custom value mapping
9432fn zigbee915005987601_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9433where
9434    D: Deserializer<'de>,
9435{
9436    match String::deserialize(deserializer)?.as_ref() {
9437        "ON" => Ok(true),
9438        "OFF" => Ok(false),
9439        other => Err(de::Error::invalid_value(
9440            Unexpected::Str(other),
9441            &"Value expected was either ON or OFF",
9442        )),
9443    }
9444}
9445
9446/// philips:915005987701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005987701.html)
9447///
9448/// 
9449#[cfg_attr(feature = "debug", derive(Debug))]
9450#[cfg_attr(feature = "clone", derive(Clone))]
9451#[derive(Deserialize)]
9452pub struct Zigbee915005987701 {
9453    ///Brightness of this light
9454    pub brightness: f64,
9455    ///Color temperature of this light
9456    pub color_temp: f64,
9457    ///Color temperature after cold power on of this light
9458    pub color_temp_startup: f64,
9459    ///Link quality (signal strength)
9460    pub linkquality: f64,
9461    ///Controls the behavior when the device is powered on after power loss
9462    pub power_on_behavior: Zigbee915005987701Poweronbehavior,
9463    ///Zigbee herdsman description: "On/off state of this light"
9464    ///The string values get converted into boolean with: ON = true and OFF = false
9465    #[serde(deserialize_with = "zigbee915005987701_state_deserializer")]
9466    pub state: bool,
9467    /// Optional last_seen type, set as a global zigbee2mqtt setting
9468    pub last_seen: Option<LastSeen>,
9469    /// Optional elapsed type
9470    pub elapsed: Option<u64>,
9471}
9472/// Deserialize bool from String with custom value mapping
9473fn zigbee915005987701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9474where
9475    D: Deserializer<'de>,
9476{
9477    match String::deserialize(deserializer)?.as_ref() {
9478        "ON" => Ok(true),
9479        "OFF" => Ok(false),
9480        other => Err(de::Error::invalid_value(
9481            Unexpected::Str(other),
9482            &"Value expected was either ON or OFF",
9483        )),
9484    }
9485}
9486
9487/// philips:915005987901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005987901.html)
9488///
9489/// 
9490#[cfg_attr(feature = "debug", derive(Debug))]
9491#[cfg_attr(feature = "clone", derive(Clone))]
9492#[derive(Deserialize)]
9493pub struct Zigbee915005987901 {
9494    ///Brightness of this light
9495    pub brightness: f64,
9496    ///Color temperature of this light
9497    pub color_temp: f64,
9498    ///Color temperature after cold power on of this light
9499    pub color_temp_startup: f64,
9500    ///Link quality (signal strength)
9501    pub linkquality: f64,
9502    ///Controls the behavior when the device is powered on after power loss
9503    pub power_on_behavior: Zigbee915005987901Poweronbehavior,
9504    ///Zigbee herdsman description: "On/off state of this light"
9505    ///The string values get converted into boolean with: ON = true and OFF = false
9506    #[serde(deserialize_with = "zigbee915005987901_state_deserializer")]
9507    pub state: bool,
9508    /// Optional last_seen type, set as a global zigbee2mqtt setting
9509    pub last_seen: Option<LastSeen>,
9510    /// Optional elapsed type
9511    pub elapsed: Option<u64>,
9512}
9513/// Deserialize bool from String with custom value mapping
9514fn zigbee915005987901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9515where
9516    D: Deserializer<'de>,
9517{
9518    match String::deserialize(deserializer)?.as_ref() {
9519        "ON" => Ok(true),
9520        "OFF" => Ok(false),
9521        other => Err(de::Error::invalid_value(
9522            Unexpected::Str(other),
9523            &"Value expected was either ON or OFF",
9524        )),
9525    }
9526}
9527
9528/// philips:915005988101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005988101.html)
9529///
9530/// 
9531#[cfg_attr(feature = "debug", derive(Debug))]
9532#[cfg_attr(feature = "clone", derive(Clone))]
9533#[derive(Deserialize)]
9534pub struct Zigbee915005988101 {
9535    ///Brightness of this light
9536    pub brightness: f64,
9537    ///Color temperature of this light
9538    pub color_temp: f64,
9539    ///Color temperature after cold power on of this light
9540    pub color_temp_startup: f64,
9541    ///Link quality (signal strength)
9542    pub linkquality: f64,
9543    ///Controls the behavior when the device is powered on after power loss
9544    pub power_on_behavior: Zigbee915005988101Poweronbehavior,
9545    ///Zigbee herdsman description: "On/off state of this light"
9546    ///The string values get converted into boolean with: ON = true and OFF = false
9547    #[serde(deserialize_with = "zigbee915005988101_state_deserializer")]
9548    pub state: bool,
9549    /// Optional last_seen type, set as a global zigbee2mqtt setting
9550    pub last_seen: Option<LastSeen>,
9551    /// Optional elapsed type
9552    pub elapsed: Option<u64>,
9553}
9554/// Deserialize bool from String with custom value mapping
9555fn zigbee915005988101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9556where
9557    D: Deserializer<'de>,
9558{
9559    match String::deserialize(deserializer)?.as_ref() {
9560        "ON" => Ok(true),
9561        "OFF" => Ok(false),
9562        other => Err(de::Error::invalid_value(
9563            Unexpected::Str(other),
9564            &"Value expected was either ON or OFF",
9565        )),
9566    }
9567}
9568
9569/// philips:915005988401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005988401.html)
9570///
9571/// 
9572#[cfg_attr(feature = "debug", derive(Debug))]
9573#[cfg_attr(feature = "clone", derive(Clone))]
9574#[derive(Deserialize)]
9575pub struct Zigbee915005988401 {
9576    ///Brightness of this light
9577    pub brightness: f64,
9578    ///Color temperature of this light
9579    pub color_temp: f64,
9580    ///Color temperature after cold power on of this light
9581    pub color_temp_startup: f64,
9582    ///Link quality (signal strength)
9583    pub linkquality: f64,
9584    ///Controls the behavior when the device is powered on after power loss
9585    pub power_on_behavior: Zigbee915005988401Poweronbehavior,
9586    ///Zigbee herdsman description: "On/off state of this light"
9587    ///The string values get converted into boolean with: ON = true and OFF = false
9588    #[serde(deserialize_with = "zigbee915005988401_state_deserializer")]
9589    pub state: bool,
9590    /// Optional last_seen type, set as a global zigbee2mqtt setting
9591    pub last_seen: Option<LastSeen>,
9592    /// Optional elapsed type
9593    pub elapsed: Option<u64>,
9594}
9595/// Deserialize bool from String with custom value mapping
9596fn zigbee915005988401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9597where
9598    D: Deserializer<'de>,
9599{
9600    match String::deserialize(deserializer)?.as_ref() {
9601        "ON" => Ok(true),
9602        "OFF" => Ok(false),
9603        other => Err(de::Error::invalid_value(
9604            Unexpected::Str(other),
9605            &"Value expected was either ON or OFF",
9606        )),
9607    }
9608}
9609
9610/// philips:915005988501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005988501.html)
9611///
9612/// 
9613#[cfg_attr(feature = "debug", derive(Debug))]
9614#[cfg_attr(feature = "clone", derive(Clone))]
9615#[derive(Deserialize)]
9616pub struct Zigbee915005988501 {
9617    ///Brightness of this light
9618    pub brightness: f64,
9619    ///Color temperature of this light
9620    pub color_temp: f64,
9621    ///Color temperature after cold power on of this light
9622    pub color_temp_startup: f64,
9623    ///Link quality (signal strength)
9624    pub linkquality: f64,
9625    ///Controls the behavior when the device is powered on after power loss
9626    pub power_on_behavior: Zigbee915005988501Poweronbehavior,
9627    ///Zigbee herdsman description: "On/off state of this light"
9628    ///The string values get converted into boolean with: ON = true and OFF = false
9629    #[serde(deserialize_with = "zigbee915005988501_state_deserializer")]
9630    pub state: bool,
9631    /// Optional last_seen type, set as a global zigbee2mqtt setting
9632    pub last_seen: Option<LastSeen>,
9633    /// Optional elapsed type
9634    pub elapsed: Option<u64>,
9635}
9636/// Deserialize bool from String with custom value mapping
9637fn zigbee915005988501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9638where
9639    D: Deserializer<'de>,
9640{
9641    match String::deserialize(deserializer)?.as_ref() {
9642        "ON" => Ok(true),
9643        "OFF" => Ok(false),
9644        other => Err(de::Error::invalid_value(
9645            Unexpected::Str(other),
9646            &"Value expected was either ON or OFF",
9647        )),
9648    }
9649}
9650
9651/// philips:915005996401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005996401.html)
9652///
9653/// 
9654#[cfg_attr(feature = "debug", derive(Debug))]
9655#[cfg_attr(feature = "clone", derive(Clone))]
9656#[derive(Deserialize)]
9657pub struct Zigbee915005996401 {
9658    ///Brightness of this light
9659    pub brightness: f64,
9660    ///Color temperature of this light
9661    pub color_temp: f64,
9662    ///Color temperature after cold power on of this light
9663    pub color_temp_startup: f64,
9664    ///Link quality (signal strength)
9665    pub linkquality: f64,
9666    ///Controls the behavior when the device is powered on after power loss
9667    pub power_on_behavior: Zigbee915005996401Poweronbehavior,
9668    ///Zigbee herdsman description: "On/off state of this light"
9669    ///The string values get converted into boolean with: ON = true and OFF = false
9670    #[serde(deserialize_with = "zigbee915005996401_state_deserializer")]
9671    pub state: bool,
9672    /// Optional last_seen type, set as a global zigbee2mqtt setting
9673    pub last_seen: Option<LastSeen>,
9674    /// Optional elapsed type
9675    pub elapsed: Option<u64>,
9676}
9677/// Deserialize bool from String with custom value mapping
9678fn zigbee915005996401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9679where
9680    D: Deserializer<'de>,
9681{
9682    match String::deserialize(deserializer)?.as_ref() {
9683        "ON" => Ok(true),
9684        "OFF" => Ok(false),
9685        other => Err(de::Error::invalid_value(
9686            Unexpected::Str(other),
9687            &"Value expected was either ON or OFF",
9688        )),
9689    }
9690}
9691
9692/// philips:915005996601 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005996601.html)
9693///
9694/// 
9695#[cfg_attr(feature = "debug", derive(Debug))]
9696#[cfg_attr(feature = "clone", derive(Clone))]
9697#[derive(Deserialize)]
9698pub struct Zigbee915005996601 {
9699    ///Brightness of this light
9700    pub brightness: f64,
9701    ///Color temperature of this light
9702    pub color_temp: f64,
9703    ///Color temperature after cold power on of this light
9704    pub color_temp_startup: f64,
9705    ///Link quality (signal strength)
9706    pub linkquality: f64,
9707    ///Controls the behavior when the device is powered on after power loss
9708    pub power_on_behavior: Zigbee915005996601Poweronbehavior,
9709    ///Zigbee herdsman description: "On/off state of this light"
9710    ///The string values get converted into boolean with: ON = true and OFF = false
9711    #[serde(deserialize_with = "zigbee915005996601_state_deserializer")]
9712    pub state: bool,
9713    /// Optional last_seen type, set as a global zigbee2mqtt setting
9714    pub last_seen: Option<LastSeen>,
9715    /// Optional elapsed type
9716    pub elapsed: Option<u64>,
9717}
9718/// Deserialize bool from String with custom value mapping
9719fn zigbee915005996601_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9720where
9721    D: Deserializer<'de>,
9722{
9723    match String::deserialize(deserializer)?.as_ref() {
9724        "ON" => Ok(true),
9725        "OFF" => Ok(false),
9726        other => Err(de::Error::invalid_value(
9727            Unexpected::Str(other),
9728            &"Value expected was either ON or OFF",
9729        )),
9730    }
9731}
9732
9733/// philips:915005996701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005996701.html)
9734///
9735/// 
9736#[cfg_attr(feature = "debug", derive(Debug))]
9737#[cfg_attr(feature = "clone", derive(Clone))]
9738#[derive(Deserialize)]
9739pub struct Zigbee915005996701 {
9740    ///Brightness of this light
9741    pub brightness: f64,
9742    ///Color temperature of this light
9743    pub color_temp: f64,
9744    ///Color temperature after cold power on of this light
9745    pub color_temp_startup: f64,
9746    ///Link quality (signal strength)
9747    pub linkquality: f64,
9748    ///Controls the behavior when the device is powered on after power loss
9749    pub power_on_behavior: Zigbee915005996701Poweronbehavior,
9750    ///Zigbee herdsman description: "On/off state of this light"
9751    ///The string values get converted into boolean with: ON = true and OFF = false
9752    #[serde(deserialize_with = "zigbee915005996701_state_deserializer")]
9753    pub state: bool,
9754    /// Optional last_seen type, set as a global zigbee2mqtt setting
9755    pub last_seen: Option<LastSeen>,
9756    /// Optional elapsed type
9757    pub elapsed: Option<u64>,
9758}
9759/// Deserialize bool from String with custom value mapping
9760fn zigbee915005996701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9761where
9762    D: Deserializer<'de>,
9763{
9764    match String::deserialize(deserializer)?.as_ref() {
9765        "ON" => Ok(true),
9766        "OFF" => Ok(false),
9767        other => Err(de::Error::invalid_value(
9768            Unexpected::Str(other),
9769            &"Value expected was either ON or OFF",
9770        )),
9771    }
9772}
9773
9774/// philips:915005996901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005996901.html)
9775///
9776/// 
9777#[cfg_attr(feature = "debug", derive(Debug))]
9778#[cfg_attr(feature = "clone", derive(Clone))]
9779#[derive(Deserialize)]
9780pub struct Zigbee915005996901 {
9781    ///Brightness of this light
9782    pub brightness: f64,
9783    ///Color temperature of this light
9784    pub color_temp: f64,
9785    ///Color temperature after cold power on of this light
9786    pub color_temp_startup: f64,
9787    ///Link quality (signal strength)
9788    pub linkquality: f64,
9789    ///Controls the behavior when the device is powered on after power loss
9790    pub power_on_behavior: Zigbee915005996901Poweronbehavior,
9791    ///Zigbee herdsman description: "On/off state of this light"
9792    ///The string values get converted into boolean with: ON = true and OFF = false
9793    #[serde(deserialize_with = "zigbee915005996901_state_deserializer")]
9794    pub state: bool,
9795    /// Optional last_seen type, set as a global zigbee2mqtt setting
9796    pub last_seen: Option<LastSeen>,
9797    /// Optional elapsed type
9798    pub elapsed: Option<u64>,
9799}
9800/// Deserialize bool from String with custom value mapping
9801fn zigbee915005996901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9802where
9803    D: Deserializer<'de>,
9804{
9805    match String::deserialize(deserializer)?.as_ref() {
9806        "ON" => Ok(true),
9807        "OFF" => Ok(false),
9808        other => Err(de::Error::invalid_value(
9809            Unexpected::Str(other),
9810            &"Value expected was either ON or OFF",
9811        )),
9812    }
9813}
9814
9815/// philips:915005997001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005997001.html)
9816///
9817/// 
9818#[cfg_attr(feature = "debug", derive(Debug))]
9819#[cfg_attr(feature = "clone", derive(Clone))]
9820#[derive(Deserialize)]
9821pub struct Zigbee915005997001 {
9822    ///Brightness of this light
9823    pub brightness: f64,
9824    ///Color temperature of this light
9825    pub color_temp: f64,
9826    ///Color temperature after cold power on of this light
9827    pub color_temp_startup: f64,
9828    ///Link quality (signal strength)
9829    pub linkquality: f64,
9830    ///Controls the behavior when the device is powered on after power loss
9831    pub power_on_behavior: Zigbee915005997001Poweronbehavior,
9832    ///Zigbee herdsman description: "On/off state of this light"
9833    ///The string values get converted into boolean with: ON = true and OFF = false
9834    #[serde(deserialize_with = "zigbee915005997001_state_deserializer")]
9835    pub state: bool,
9836    /// Optional last_seen type, set as a global zigbee2mqtt setting
9837    pub last_seen: Option<LastSeen>,
9838    /// Optional elapsed type
9839    pub elapsed: Option<u64>,
9840}
9841/// Deserialize bool from String with custom value mapping
9842fn zigbee915005997001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9843where
9844    D: Deserializer<'de>,
9845{
9846    match String::deserialize(deserializer)?.as_ref() {
9847        "ON" => Ok(true),
9848        "OFF" => Ok(false),
9849        other => Err(de::Error::invalid_value(
9850            Unexpected::Str(other),
9851            &"Value expected was either ON or OFF",
9852        )),
9853    }
9854}
9855
9856/// philips:915005997301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005997301.html)
9857///
9858/// 
9859#[cfg_attr(feature = "debug", derive(Debug))]
9860#[cfg_attr(feature = "clone", derive(Clone))]
9861#[derive(Deserialize)]
9862pub struct Zigbee915005997301 {
9863    ///Brightness of this light
9864    pub brightness: f64,
9865    ///Color temperature of this light
9866    pub color_temp: f64,
9867    ///Color temperature after cold power on of this light
9868    pub color_temp_startup: f64,
9869    ///Link quality (signal strength)
9870    pub linkquality: f64,
9871    ///Controls the behavior when the device is powered on after power loss
9872    pub power_on_behavior: Zigbee915005997301Poweronbehavior,
9873    ///Zigbee herdsman description: "On/off state of this light"
9874    ///The string values get converted into boolean with: ON = true and OFF = false
9875    #[serde(deserialize_with = "zigbee915005997301_state_deserializer")]
9876    pub state: bool,
9877    /// Optional last_seen type, set as a global zigbee2mqtt setting
9878    pub last_seen: Option<LastSeen>,
9879    /// Optional elapsed type
9880    pub elapsed: Option<u64>,
9881}
9882/// Deserialize bool from String with custom value mapping
9883fn zigbee915005997301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9884where
9885    D: Deserializer<'de>,
9886{
9887    match String::deserialize(deserializer)?.as_ref() {
9888        "ON" => Ok(true),
9889        "OFF" => Ok(false),
9890        other => Err(de::Error::invalid_value(
9891            Unexpected::Str(other),
9892            &"Value expected was either ON or OFF",
9893        )),
9894    }
9895}
9896
9897/// philips:915005997501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005997501.html)
9898///
9899/// 
9900#[cfg_attr(feature = "debug", derive(Debug))]
9901#[cfg_attr(feature = "clone", derive(Clone))]
9902#[derive(Deserialize)]
9903pub struct Zigbee915005997501 {
9904    ///Brightness of this light
9905    pub brightness: f64,
9906    ///Color temperature of this light
9907    pub color_temp: f64,
9908    ///Color temperature after cold power on of this light
9909    pub color_temp_startup: f64,
9910    ///Link quality (signal strength)
9911    pub linkquality: f64,
9912    ///Controls the behavior when the device is powered on after power loss
9913    pub power_on_behavior: Zigbee915005997501Poweronbehavior,
9914    ///Zigbee herdsman description: "On/off state of this light"
9915    ///The string values get converted into boolean with: ON = true and OFF = false
9916    #[serde(deserialize_with = "zigbee915005997501_state_deserializer")]
9917    pub state: bool,
9918    /// Optional last_seen type, set as a global zigbee2mqtt setting
9919    pub last_seen: Option<LastSeen>,
9920    /// Optional elapsed type
9921    pub elapsed: Option<u64>,
9922}
9923/// Deserialize bool from String with custom value mapping
9924fn zigbee915005997501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9925where
9926    D: Deserializer<'de>,
9927{
9928    match String::deserialize(deserializer)?.as_ref() {
9929        "ON" => Ok(true),
9930        "OFF" => Ok(false),
9931        other => Err(de::Error::invalid_value(
9932            Unexpected::Str(other),
9933            &"Value expected was either ON or OFF",
9934        )),
9935    }
9936}
9937
9938/// philips:915005997601 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005997601.html)
9939///
9940/// 
9941#[cfg_attr(feature = "debug", derive(Debug))]
9942#[cfg_attr(feature = "clone", derive(Clone))]
9943#[derive(Deserialize)]
9944pub struct Zigbee915005997601 {
9945    ///Brightness of this light
9946    pub brightness: f64,
9947    ///Color temperature of this light
9948    pub color_temp: f64,
9949    ///Color temperature after cold power on of this light
9950    pub color_temp_startup: f64,
9951    ///Link quality (signal strength)
9952    pub linkquality: f64,
9953    ///Controls the behavior when the device is powered on after power loss
9954    pub power_on_behavior: Zigbee915005997601Poweronbehavior,
9955    ///Zigbee herdsman description: "On/off state of this light"
9956    ///The string values get converted into boolean with: ON = true and OFF = false
9957    #[serde(deserialize_with = "zigbee915005997601_state_deserializer")]
9958    pub state: bool,
9959    /// Optional last_seen type, set as a global zigbee2mqtt setting
9960    pub last_seen: Option<LastSeen>,
9961    /// Optional elapsed type
9962    pub elapsed: Option<u64>,
9963}
9964/// Deserialize bool from String with custom value mapping
9965fn zigbee915005997601_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
9966where
9967    D: Deserializer<'de>,
9968{
9969    match String::deserialize(deserializer)?.as_ref() {
9970        "ON" => Ok(true),
9971        "OFF" => Ok(false),
9972        other => Err(de::Error::invalid_value(
9973            Unexpected::Str(other),
9974            &"Value expected was either ON or OFF",
9975        )),
9976    }
9977}
9978
9979/// philips:915005997701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005997701.html)
9980///
9981/// 
9982#[cfg_attr(feature = "debug", derive(Debug))]
9983#[cfg_attr(feature = "clone", derive(Clone))]
9984#[derive(Deserialize)]
9985pub struct Zigbee915005997701 {
9986    ///Brightness of this light
9987    pub brightness: f64,
9988    ///Color temperature of this light
9989    pub color_temp: f64,
9990    ///Color temperature after cold power on of this light
9991    pub color_temp_startup: f64,
9992    ///Link quality (signal strength)
9993    pub linkquality: f64,
9994    ///Controls the behavior when the device is powered on after power loss
9995    pub power_on_behavior: Zigbee915005997701Poweronbehavior,
9996    ///Zigbee herdsman description: "On/off state of this light"
9997    ///The string values get converted into boolean with: ON = true and OFF = false
9998    #[serde(deserialize_with = "zigbee915005997701_state_deserializer")]
9999    pub state: bool,
10000    /// Optional last_seen type, set as a global zigbee2mqtt setting
10001    pub last_seen: Option<LastSeen>,
10002    /// Optional elapsed type
10003    pub elapsed: Option<u64>,
10004}
10005/// Deserialize bool from String with custom value mapping
10006fn zigbee915005997701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10007where
10008    D: Deserializer<'de>,
10009{
10010    match String::deserialize(deserializer)?.as_ref() {
10011        "ON" => Ok(true),
10012        "OFF" => Ok(false),
10013        other => Err(de::Error::invalid_value(
10014            Unexpected::Str(other),
10015            &"Value expected was either ON or OFF",
10016        )),
10017    }
10018}
10019
10020/// philips:915005997801 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005997801.html)
10021///
10022/// 
10023#[cfg_attr(feature = "debug", derive(Debug))]
10024#[cfg_attr(feature = "clone", derive(Clone))]
10025#[derive(Deserialize)]
10026pub struct Zigbee915005997801 {
10027    ///Brightness of this light
10028    pub brightness: f64,
10029    ///Color temperature of this light
10030    pub color_temp: f64,
10031    ///Color temperature after cold power on of this light
10032    pub color_temp_startup: f64,
10033    ///Link quality (signal strength)
10034    pub linkquality: f64,
10035    ///Controls the behavior when the device is powered on after power loss
10036    pub power_on_behavior: Zigbee915005997801Poweronbehavior,
10037    ///Zigbee herdsman description: "On/off state of this light"
10038    ///The string values get converted into boolean with: ON = true and OFF = false
10039    #[serde(deserialize_with = "zigbee915005997801_state_deserializer")]
10040    pub state: bool,
10041    /// Optional last_seen type, set as a global zigbee2mqtt setting
10042    pub last_seen: Option<LastSeen>,
10043    /// Optional elapsed type
10044    pub elapsed: Option<u64>,
10045}
10046/// Deserialize bool from String with custom value mapping
10047fn zigbee915005997801_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10048where
10049    D: Deserializer<'de>,
10050{
10051    match String::deserialize(deserializer)?.as_ref() {
10052        "ON" => Ok(true),
10053        "OFF" => Ok(false),
10054        other => Err(de::Error::invalid_value(
10055            Unexpected::Str(other),
10056            &"Value expected was either ON or OFF",
10057        )),
10058    }
10059}
10060
10061/// philips:915005997901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005997901.html)
10062///
10063/// 
10064#[cfg_attr(feature = "debug", derive(Debug))]
10065#[cfg_attr(feature = "clone", derive(Clone))]
10066#[derive(Deserialize)]
10067pub struct Zigbee915005997901 {
10068    ///Brightness of this light
10069    pub brightness: f64,
10070    ///Color temperature of this light
10071    pub color_temp: f64,
10072    ///Color temperature after cold power on of this light
10073    pub color_temp_startup: f64,
10074    ///Link quality (signal strength)
10075    pub linkquality: f64,
10076    ///Controls the behavior when the device is powered on after power loss
10077    pub power_on_behavior: Zigbee915005997901Poweronbehavior,
10078    ///Zigbee herdsman description: "On/off state of this light"
10079    ///The string values get converted into boolean with: ON = true and OFF = false
10080    #[serde(deserialize_with = "zigbee915005997901_state_deserializer")]
10081    pub state: bool,
10082    /// Optional last_seen type, set as a global zigbee2mqtt setting
10083    pub last_seen: Option<LastSeen>,
10084    /// Optional elapsed type
10085    pub elapsed: Option<u64>,
10086}
10087/// Deserialize bool from String with custom value mapping
10088fn zigbee915005997901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10089where
10090    D: Deserializer<'de>,
10091{
10092    match String::deserialize(deserializer)?.as_ref() {
10093        "ON" => Ok(true),
10094        "OFF" => Ok(false),
10095        other => Err(de::Error::invalid_value(
10096            Unexpected::Str(other),
10097            &"Value expected was either ON or OFF",
10098        )),
10099    }
10100}
10101
10102/// philips:915005998001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005998001.html)
10103///
10104/// 
10105#[cfg_attr(feature = "debug", derive(Debug))]
10106#[cfg_attr(feature = "clone", derive(Clone))]
10107#[derive(Deserialize)]
10108pub struct Zigbee915005998001 {
10109    ///Brightness of this light
10110    pub brightness: f64,
10111    ///Color temperature of this light
10112    pub color_temp: f64,
10113    ///Color temperature after cold power on of this light
10114    pub color_temp_startup: f64,
10115    ///Link quality (signal strength)
10116    pub linkquality: f64,
10117    ///Controls the behavior when the device is powered on after power loss
10118    pub power_on_behavior: Zigbee915005998001Poweronbehavior,
10119    ///Zigbee herdsman description: "On/off state of this light"
10120    ///The string values get converted into boolean with: ON = true and OFF = false
10121    #[serde(deserialize_with = "zigbee915005998001_state_deserializer")]
10122    pub state: bool,
10123    /// Optional last_seen type, set as a global zigbee2mqtt setting
10124    pub last_seen: Option<LastSeen>,
10125    /// Optional elapsed type
10126    pub elapsed: Option<u64>,
10127}
10128/// Deserialize bool from String with custom value mapping
10129fn zigbee915005998001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10130where
10131    D: Deserializer<'de>,
10132{
10133    match String::deserialize(deserializer)?.as_ref() {
10134        "ON" => Ok(true),
10135        "OFF" => Ok(false),
10136        other => Err(de::Error::invalid_value(
10137            Unexpected::Str(other),
10138            &"Value expected was either ON or OFF",
10139        )),
10140    }
10141}
10142
10143/// philips:915005998101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005998101.html)
10144///
10145/// 
10146#[cfg_attr(feature = "debug", derive(Debug))]
10147#[cfg_attr(feature = "clone", derive(Clone))]
10148#[derive(Deserialize)]
10149pub struct Zigbee915005998101 {
10150    ///Brightness of this light
10151    pub brightness: f64,
10152    ///Color temperature of this light
10153    pub color_temp: f64,
10154    ///Color temperature after cold power on of this light
10155    pub color_temp_startup: f64,
10156    ///Link quality (signal strength)
10157    pub linkquality: f64,
10158    ///Controls the behavior when the device is powered on after power loss
10159    pub power_on_behavior: Zigbee915005998101Poweronbehavior,
10160    ///Zigbee herdsman description: "On/off state of this light"
10161    ///The string values get converted into boolean with: ON = true and OFF = false
10162    #[serde(deserialize_with = "zigbee915005998101_state_deserializer")]
10163    pub state: bool,
10164    /// Optional last_seen type, set as a global zigbee2mqtt setting
10165    pub last_seen: Option<LastSeen>,
10166    /// Optional elapsed type
10167    pub elapsed: Option<u64>,
10168}
10169/// Deserialize bool from String with custom value mapping
10170fn zigbee915005998101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10171where
10172    D: Deserializer<'de>,
10173{
10174    match String::deserialize(deserializer)?.as_ref() {
10175        "ON" => Ok(true),
10176        "OFF" => Ok(false),
10177        other => Err(de::Error::invalid_value(
10178            Unexpected::Str(other),
10179            &"Value expected was either ON or OFF",
10180        )),
10181    }
10182}
10183
10184/// philips:915005998201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/915005998201.html)
10185///
10186/// 
10187#[cfg_attr(feature = "debug", derive(Debug))]
10188#[cfg_attr(feature = "clone", derive(Clone))]
10189#[derive(Deserialize)]
10190pub struct Zigbee915005998201 {
10191    ///Brightness of this light
10192    pub brightness: f64,
10193    ///Color temperature of this light
10194    pub color_temp: f64,
10195    ///Color temperature after cold power on of this light
10196    pub color_temp_startup: f64,
10197    ///Link quality (signal strength)
10198    pub linkquality: f64,
10199    ///Controls the behavior when the device is powered on after power loss
10200    pub power_on_behavior: Zigbee915005998201Poweronbehavior,
10201    ///Zigbee herdsman description: "On/off state of this light"
10202    ///The string values get converted into boolean with: ON = true and OFF = false
10203    #[serde(deserialize_with = "zigbee915005998201_state_deserializer")]
10204    pub state: bool,
10205    /// Optional last_seen type, set as a global zigbee2mqtt setting
10206    pub last_seen: Option<LastSeen>,
10207    /// Optional elapsed type
10208    pub elapsed: Option<u64>,
10209}
10210/// Deserialize bool from String with custom value mapping
10211fn zigbee915005998201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10212where
10213    D: Deserializer<'de>,
10214{
10215    match String::deserialize(deserializer)?.as_ref() {
10216        "ON" => Ok(true),
10217        "OFF" => Ok(false),
10218        other => Err(de::Error::invalid_value(
10219            Unexpected::Str(other),
10220            &"Value expected was either ON or OFF",
10221        )),
10222    }
10223}
10224
10225/// philips:9290002579A [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290002579A.html)
10226///
10227/// 
10228#[cfg_attr(feature = "debug", derive(Debug))]
10229#[cfg_attr(feature = "clone", derive(Clone))]
10230#[derive(Deserialize)]
10231pub struct Zigbee9290002579a {
10232    ///Brightness of this light
10233    pub brightness: f64,
10234    ///Color temperature of this light
10235    pub color_temp: f64,
10236    ///Color temperature after cold power on of this light
10237    pub color_temp_startup: f64,
10238    ///Link quality (signal strength)
10239    pub linkquality: f64,
10240    ///Controls the behavior when the device is powered on after power loss
10241    pub power_on_behavior: Zigbee9290002579aPoweronbehavior,
10242    ///Zigbee herdsman description: "On/off state of this light"
10243    ///The string values get converted into boolean with: ON = true and OFF = false
10244    #[serde(deserialize_with = "zigbee9290002579a_state_deserializer")]
10245    pub state: bool,
10246    /// Optional last_seen type, set as a global zigbee2mqtt setting
10247    pub last_seen: Option<LastSeen>,
10248    /// Optional elapsed type
10249    pub elapsed: Option<u64>,
10250}
10251/// Deserialize bool from String with custom value mapping
10252fn zigbee9290002579a_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10253where
10254    D: Deserializer<'de>,
10255{
10256    match String::deserialize(deserializer)?.as_ref() {
10257        "ON" => Ok(true),
10258        "OFF" => Ok(false),
10259        other => Err(de::Error::invalid_value(
10260            Unexpected::Str(other),
10261            &"Value expected was either ON or OFF",
10262        )),
10263    }
10264}
10265
10266/// philips:9290011370 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290011370.html)
10267///
10268/// 
10269#[cfg_attr(feature = "debug", derive(Debug))]
10270#[cfg_attr(feature = "clone", derive(Clone))]
10271#[derive(Deserialize)]
10272pub struct Zigbee9290011370 {
10273    ///Brightness of this light
10274    pub brightness: f64,
10275    ///Link quality (signal strength)
10276    pub linkquality: f64,
10277    ///Controls the behavior when the device is powered on after power loss
10278    pub power_on_behavior: Zigbee9290011370Poweronbehavior,
10279    ///Zigbee herdsman description: "On/off state of this light"
10280    ///The string values get converted into boolean with: ON = true and OFF = false
10281    #[serde(deserialize_with = "zigbee9290011370_state_deserializer")]
10282    pub state: bool,
10283    /// Optional last_seen type, set as a global zigbee2mqtt setting
10284    pub last_seen: Option<LastSeen>,
10285    /// Optional elapsed type
10286    pub elapsed: Option<u64>,
10287}
10288/// Deserialize bool from String with custom value mapping
10289fn zigbee9290011370_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10290where
10291    D: Deserializer<'de>,
10292{
10293    match String::deserialize(deserializer)?.as_ref() {
10294        "ON" => Ok(true),
10295        "OFF" => Ok(false),
10296        other => Err(de::Error::invalid_value(
10297            Unexpected::Str(other),
10298            &"Value expected was either ON or OFF",
10299        )),
10300    }
10301}
10302
10303/// philips:9290011370B [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290011370B.html)
10304///
10305/// 
10306#[cfg_attr(feature = "debug", derive(Debug))]
10307#[cfg_attr(feature = "clone", derive(Clone))]
10308#[derive(Deserialize)]
10309pub struct Zigbee9290011370b {
10310    ///Brightness of this light
10311    pub brightness: f64,
10312    ///Link quality (signal strength)
10313    pub linkquality: f64,
10314    ///Controls the behavior when the device is powered on after power loss
10315    pub power_on_behavior: Zigbee9290011370bPoweronbehavior,
10316    ///Zigbee herdsman description: "On/off state of this light"
10317    ///The string values get converted into boolean with: ON = true and OFF = false
10318    #[serde(deserialize_with = "zigbee9290011370b_state_deserializer")]
10319    pub state: bool,
10320    /// Optional last_seen type, set as a global zigbee2mqtt setting
10321    pub last_seen: Option<LastSeen>,
10322    /// Optional elapsed type
10323    pub elapsed: Option<u64>,
10324}
10325/// Deserialize bool from String with custom value mapping
10326fn zigbee9290011370b_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10327where
10328    D: Deserializer<'de>,
10329{
10330    match String::deserialize(deserializer)?.as_ref() {
10331        "ON" => Ok(true),
10332        "OFF" => Ok(false),
10333        other => Err(de::Error::invalid_value(
10334            Unexpected::Str(other),
10335            &"Value expected was either ON or OFF",
10336        )),
10337    }
10338}
10339
10340/// philips:9290011998B [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290011998B.html)
10341///
10342/// 
10343#[cfg_attr(feature = "debug", derive(Debug))]
10344#[cfg_attr(feature = "clone", derive(Clone))]
10345#[derive(Deserialize)]
10346pub struct Zigbee9290011998b {
10347    ///Brightness of this light
10348    pub brightness: f64,
10349    ///Color temperature of this light
10350    pub color_temp: f64,
10351    ///Color temperature after cold power on of this light
10352    pub color_temp_startup: f64,
10353    ///Link quality (signal strength)
10354    pub linkquality: f64,
10355    ///Controls the behavior when the device is powered on after power loss
10356    pub power_on_behavior: Zigbee9290011998bPoweronbehavior,
10357    ///Zigbee herdsman description: "On/off state of this light"
10358    ///The string values get converted into boolean with: ON = true and OFF = false
10359    #[serde(deserialize_with = "zigbee9290011998b_state_deserializer")]
10360    pub state: bool,
10361    /// Optional last_seen type, set as a global zigbee2mqtt setting
10362    pub last_seen: Option<LastSeen>,
10363    /// Optional elapsed type
10364    pub elapsed: Option<u64>,
10365}
10366/// Deserialize bool from String with custom value mapping
10367fn zigbee9290011998b_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10368where
10369    D: Deserializer<'de>,
10370{
10371    match String::deserialize(deserializer)?.as_ref() {
10372        "ON" => Ok(true),
10373        "OFF" => Ok(false),
10374        other => Err(de::Error::invalid_value(
10375            Unexpected::Str(other),
10376            &"Value expected was either ON or OFF",
10377        )),
10378    }
10379}
10380
10381/// philips:9290012573A [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290012573A.html)
10382///
10383/// 
10384#[cfg_attr(feature = "debug", derive(Debug))]
10385#[cfg_attr(feature = "clone", derive(Clone))]
10386#[derive(Deserialize)]
10387pub struct Zigbee9290012573a {
10388    ///Brightness of this light
10389    pub brightness: f64,
10390    ///Color temperature of this light
10391    pub color_temp: f64,
10392    ///Color temperature after cold power on of this light
10393    pub color_temp_startup: f64,
10394    ///Link quality (signal strength)
10395    pub linkquality: f64,
10396    ///Controls the behavior when the device is powered on after power loss
10397    pub power_on_behavior: Zigbee9290012573aPoweronbehavior,
10398    ///Zigbee herdsman description: "On/off state of this light"
10399    ///The string values get converted into boolean with: ON = true and OFF = false
10400    #[serde(deserialize_with = "zigbee9290012573a_state_deserializer")]
10401    pub state: bool,
10402    /// Optional last_seen type, set as a global zigbee2mqtt setting
10403    pub last_seen: Option<LastSeen>,
10404    /// Optional elapsed type
10405    pub elapsed: Option<u64>,
10406}
10407/// Deserialize bool from String with custom value mapping
10408fn zigbee9290012573a_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10409where
10410    D: Deserializer<'de>,
10411{
10412    match String::deserialize(deserializer)?.as_ref() {
10413        "ON" => Ok(true),
10414        "OFF" => Ok(false),
10415        other => Err(de::Error::invalid_value(
10416            Unexpected::Str(other),
10417            &"Value expected was either ON or OFF",
10418        )),
10419    }
10420}
10421
10422/// philips:9290012607 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290012607.html)
10423///
10424/// 
10425#[cfg_attr(feature = "debug", derive(Debug))]
10426#[cfg_attr(feature = "clone", derive(Clone))]
10427#[derive(Deserialize)]
10428pub struct Zigbee9290012607 {
10429    ///Remaining battery in %, can take up to 24 hours before reported.
10430    pub battery: f64,
10431    ///Raw measured illuminance
10432    pub illuminance: f64,
10433    ///Measured illuminance in lux
10434    pub illuminance_lux: f64,
10435    ///Zigbee herdsman description: "Blink green LED on motion detection"
10436    ///Boolean values can be an unintuitive way round: value_on = true and value_off = false, consider double checking Zigbee2MQTT to understand what they mean
10437    pub led_indication: bool,
10438    ///Link quality (signal strength)
10439    pub linkquality: f64,
10440    pub motion_sensitivity: Zigbee9290012607Motionsensitivity,
10441    ///Zigbee herdsman description: "Indicates whether the device detected occupancy"
10442    ///Boolean values can be an unintuitive way round: value_on = true and value_off = false, consider double checking Zigbee2MQTT to understand what they mean
10443    pub occupancy: bool,
10444    pub occupancy_timeout: f64,
10445    ///Measured temperature value
10446    pub temperature: f64,
10447    /// Optional last_seen type, set as a global zigbee2mqtt setting
10448    pub last_seen: Option<LastSeen>,
10449    /// Optional elapsed type
10450    pub elapsed: Option<u64>,
10451}/// philips:9290018187B [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290018187B.html)
10452///
10453/// 
10454#[cfg_attr(feature = "debug", derive(Debug))]
10455#[cfg_attr(feature = "clone", derive(Clone))]
10456#[derive(Deserialize)]
10457pub struct Zigbee9290018187b {
10458    ///Brightness of this light
10459    pub brightness: f64,
10460    ///Color temperature of this light
10461    pub color_temp: f64,
10462    ///Color temperature after cold power on of this light
10463    pub color_temp_startup: f64,
10464    ///Link quality (signal strength)
10465    pub linkquality: f64,
10466    ///Controls the behavior when the device is powered on after power loss
10467    pub power_on_behavior: Zigbee9290018187bPoweronbehavior,
10468    ///Zigbee herdsman description: "On/off state of this light"
10469    ///The string values get converted into boolean with: ON = true and OFF = false
10470    #[serde(deserialize_with = "zigbee9290018187b_state_deserializer")]
10471    pub state: bool,
10472    /// Optional last_seen type, set as a global zigbee2mqtt setting
10473    pub last_seen: Option<LastSeen>,
10474    /// Optional elapsed type
10475    pub elapsed: Option<u64>,
10476}
10477/// Deserialize bool from String with custom value mapping
10478fn zigbee9290018187b_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10479where
10480    D: Deserializer<'de>,
10481{
10482    match String::deserialize(deserializer)?.as_ref() {
10483        "ON" => Ok(true),
10484        "OFF" => Ok(false),
10485        other => Err(de::Error::invalid_value(
10486            Unexpected::Str(other),
10487            &"Value expected was either ON or OFF",
10488        )),
10489    }
10490}
10491
10492/// philips:9290018189 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290018189.html)
10493///
10494/// 
10495#[cfg_attr(feature = "debug", derive(Debug))]
10496#[cfg_attr(feature = "clone", derive(Clone))]
10497#[derive(Deserialize)]
10498pub struct Zigbee9290018189 {
10499    ///Brightness of this light
10500    pub brightness: f64,
10501    ///Link quality (signal strength)
10502    pub linkquality: f64,
10503    ///Controls the behavior when the device is powered on after power loss
10504    pub power_on_behavior: Zigbee9290018189Poweronbehavior,
10505    ///Zigbee herdsman description: "On/off state of this light"
10506    ///The string values get converted into boolean with: ON = true and OFF = false
10507    #[serde(deserialize_with = "zigbee9290018189_state_deserializer")]
10508    pub state: bool,
10509    /// Optional last_seen type, set as a global zigbee2mqtt setting
10510    pub last_seen: Option<LastSeen>,
10511    /// Optional elapsed type
10512    pub elapsed: Option<u64>,
10513}
10514/// Deserialize bool from String with custom value mapping
10515fn zigbee9290018189_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10516where
10517    D: Deserializer<'de>,
10518{
10519    match String::deserialize(deserializer)?.as_ref() {
10520        "ON" => Ok(true),
10521        "OFF" => Ok(false),
10522        other => Err(de::Error::invalid_value(
10523            Unexpected::Str(other),
10524            &"Value expected was either ON or OFF",
10525        )),
10526    }
10527}
10528
10529/// philips:9290018194 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290018194.html)
10530///
10531/// 
10532#[cfg_attr(feature = "debug", derive(Debug))]
10533#[cfg_attr(feature = "clone", derive(Clone))]
10534#[derive(Deserialize)]
10535pub struct Zigbee9290018194 {
10536    ///Brightness of this light
10537    pub brightness: f64,
10538    ///Link quality (signal strength)
10539    pub linkquality: f64,
10540    ///Controls the behavior when the device is powered on after power loss
10541    pub power_on_behavior: Zigbee9290018194Poweronbehavior,
10542    ///Zigbee herdsman description: "On/off state of this light"
10543    ///The string values get converted into boolean with: ON = true and OFF = false
10544    #[serde(deserialize_with = "zigbee9290018194_state_deserializer")]
10545    pub state: bool,
10546    /// Optional last_seen type, set as a global zigbee2mqtt setting
10547    pub last_seen: Option<LastSeen>,
10548    /// Optional elapsed type
10549    pub elapsed: Option<u64>,
10550}
10551/// Deserialize bool from String with custom value mapping
10552fn zigbee9290018194_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10553where
10554    D: Deserializer<'de>,
10555{
10556    match String::deserialize(deserializer)?.as_ref() {
10557        "ON" => Ok(true),
10558        "OFF" => Ok(false),
10559        other => Err(de::Error::invalid_value(
10560            Unexpected::Str(other),
10561            &"Value expected was either ON or OFF",
10562        )),
10563    }
10564}
10565
10566/// philips:9290018195 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290018195.html)
10567///
10568/// 
10569#[cfg_attr(feature = "debug", derive(Debug))]
10570#[cfg_attr(feature = "clone", derive(Clone))]
10571#[derive(Deserialize)]
10572pub struct Zigbee9290018195 {
10573    ///Brightness of this light
10574    pub brightness: f64,
10575    ///Link quality (signal strength)
10576    pub linkquality: f64,
10577    ///Controls the behavior when the device is powered on after power loss
10578    pub power_on_behavior: Zigbee9290018195Poweronbehavior,
10579    ///Zigbee herdsman description: "On/off state of this light"
10580    ///The string values get converted into boolean with: ON = true and OFF = false
10581    #[serde(deserialize_with = "zigbee9290018195_state_deserializer")]
10582    pub state: bool,
10583    /// Optional last_seen type, set as a global zigbee2mqtt setting
10584    pub last_seen: Option<LastSeen>,
10585    /// Optional elapsed type
10586    pub elapsed: Option<u64>,
10587}
10588/// Deserialize bool from String with custom value mapping
10589fn zigbee9290018195_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10590where
10591    D: Deserializer<'de>,
10592{
10593    match String::deserialize(deserializer)?.as_ref() {
10594        "ON" => Ok(true),
10595        "OFF" => Ok(false),
10596        other => Err(de::Error::invalid_value(
10597            Unexpected::Str(other),
10598            &"Value expected was either ON or OFF",
10599        )),
10600    }
10601}
10602
10603/// philips:9290018215 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290018215.html)
10604///
10605/// 
10606#[cfg_attr(feature = "debug", derive(Debug))]
10607#[cfg_attr(feature = "clone", derive(Clone))]
10608#[derive(Deserialize)]
10609pub struct Zigbee9290018215 {
10610    ///Brightness of this light
10611    pub brightness: f64,
10612    ///Link quality (signal strength)
10613    pub linkquality: f64,
10614    ///Controls the behavior when the device is powered on after power loss
10615    pub power_on_behavior: Zigbee9290018215Poweronbehavior,
10616    ///Zigbee herdsman description: "On/off state of this light"
10617    ///The string values get converted into boolean with: ON = true and OFF = false
10618    #[serde(deserialize_with = "zigbee9290018215_state_deserializer")]
10619    pub state: bool,
10620    /// Optional last_seen type, set as a global zigbee2mqtt setting
10621    pub last_seen: Option<LastSeen>,
10622    /// Optional elapsed type
10623    pub elapsed: Option<u64>,
10624}
10625/// Deserialize bool from String with custom value mapping
10626fn zigbee9290018215_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10627where
10628    D: Deserializer<'de>,
10629{
10630    match String::deserialize(deserializer)?.as_ref() {
10631        "ON" => Ok(true),
10632        "OFF" => Ok(false),
10633        other => Err(de::Error::invalid_value(
10634            Unexpected::Str(other),
10635            &"Value expected was either ON or OFF",
10636        )),
10637    }
10638}
10639
10640/// philips:9290018216 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290018216.html)
10641///
10642/// 
10643#[cfg_attr(feature = "debug", derive(Debug))]
10644#[cfg_attr(feature = "clone", derive(Clone))]
10645#[derive(Deserialize)]
10646pub struct Zigbee9290018216 {
10647    ///Brightness of this light
10648    pub brightness: f64,
10649    ///Link quality (signal strength)
10650    pub linkquality: f64,
10651    ///Controls the behavior when the device is powered on after power loss
10652    pub power_on_behavior: Zigbee9290018216Poweronbehavior,
10653    ///Zigbee herdsman description: "On/off state of this light"
10654    ///The string values get converted into boolean with: ON = true and OFF = false
10655    #[serde(deserialize_with = "zigbee9290018216_state_deserializer")]
10656    pub state: bool,
10657    /// Optional last_seen type, set as a global zigbee2mqtt setting
10658    pub last_seen: Option<LastSeen>,
10659    /// Optional elapsed type
10660    pub elapsed: Option<u64>,
10661}
10662/// Deserialize bool from String with custom value mapping
10663fn zigbee9290018216_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10664where
10665    D: Deserializer<'de>,
10666{
10667    match String::deserialize(deserializer)?.as_ref() {
10668        "ON" => Ok(true),
10669        "OFF" => Ok(false),
10670        other => Err(de::Error::invalid_value(
10671            Unexpected::Str(other),
10672            &"Value expected was either ON or OFF",
10673        )),
10674    }
10675}
10676
10677/// philips:929001821618 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929001821618.html)
10678///
10679/// 
10680#[cfg_attr(feature = "debug", derive(Debug))]
10681#[cfg_attr(feature = "clone", derive(Clone))]
10682#[derive(Deserialize)]
10683pub struct Zigbee929001821618 {
10684    ///Brightness of this light
10685    pub brightness: f64,
10686    ///Link quality (signal strength)
10687    pub linkquality: f64,
10688    ///Controls the behavior when the device is powered on after power loss
10689    pub power_on_behavior: Zigbee929001821618Poweronbehavior,
10690    ///Zigbee herdsman description: "On/off state of this light"
10691    ///The string values get converted into boolean with: ON = true and OFF = false
10692    #[serde(deserialize_with = "zigbee929001821618_state_deserializer")]
10693    pub state: bool,
10694    /// Optional last_seen type, set as a global zigbee2mqtt setting
10695    pub last_seen: Option<LastSeen>,
10696    /// Optional elapsed type
10697    pub elapsed: Option<u64>,
10698}
10699/// Deserialize bool from String with custom value mapping
10700fn zigbee929001821618_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10701where
10702    D: Deserializer<'de>,
10703{
10704    match String::deserialize(deserializer)?.as_ref() {
10705        "ON" => Ok(true),
10706        "OFF" => Ok(false),
10707        other => Err(de::Error::invalid_value(
10708            Unexpected::Str(other),
10709            &"Value expected was either ON or OFF",
10710        )),
10711    }
10712}
10713
10714/// philips:9290018217 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290018217.html)
10715///
10716/// 
10717#[cfg_attr(feature = "debug", derive(Debug))]
10718#[cfg_attr(feature = "clone", derive(Clone))]
10719#[derive(Deserialize)]
10720pub struct Zigbee9290018217 {
10721    ///Brightness of this light
10722    pub brightness: f64,
10723    ///Link quality (signal strength)
10724    pub linkquality: f64,
10725    ///Controls the behavior when the device is powered on after power loss
10726    pub power_on_behavior: Zigbee9290018217Poweronbehavior,
10727    ///Zigbee herdsman description: "On/off state of this light"
10728    ///The string values get converted into boolean with: ON = true and OFF = false
10729    #[serde(deserialize_with = "zigbee9290018217_state_deserializer")]
10730    pub state: bool,
10731    /// Optional last_seen type, set as a global zigbee2mqtt setting
10732    pub last_seen: Option<LastSeen>,
10733    /// Optional elapsed type
10734    pub elapsed: Option<u64>,
10735}
10736/// Deserialize bool from String with custom value mapping
10737fn zigbee9290018217_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10738where
10739    D: Deserializer<'de>,
10740{
10741    match String::deserialize(deserializer)?.as_ref() {
10742        "ON" => Ok(true),
10743        "OFF" => Ok(false),
10744        other => Err(de::Error::invalid_value(
10745            Unexpected::Str(other),
10746            &"Value expected was either ON or OFF",
10747        )),
10748    }
10749}
10750
10751/// philips:9290018609 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290018609.html)
10752///
10753/// 
10754#[cfg_attr(feature = "debug", derive(Debug))]
10755#[cfg_attr(feature = "clone", derive(Clone))]
10756#[derive(Deserialize)]
10757pub struct Zigbee9290018609 {
10758    ///Brightness of this light
10759    pub brightness: f64,
10760    ///Link quality (signal strength)
10761    pub linkquality: f64,
10762    ///Controls the behavior when the device is powered on after power loss
10763    pub power_on_behavior: Zigbee9290018609Poweronbehavior,
10764    ///Zigbee herdsman description: "On/off state of this light"
10765    ///The string values get converted into boolean with: ON = true and OFF = false
10766    #[serde(deserialize_with = "zigbee9290018609_state_deserializer")]
10767    pub state: bool,
10768    /// Optional last_seen type, set as a global zigbee2mqtt setting
10769    pub last_seen: Option<LastSeen>,
10770    /// Optional elapsed type
10771    pub elapsed: Option<u64>,
10772}
10773/// Deserialize bool from String with custom value mapping
10774fn zigbee9290018609_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10775where
10776    D: Deserializer<'de>,
10777{
10778    match String::deserialize(deserializer)?.as_ref() {
10779        "ON" => Ok(true),
10780        "OFF" => Ok(false),
10781        other => Err(de::Error::invalid_value(
10782            Unexpected::Str(other),
10783            &"Value expected was either ON or OFF",
10784        )),
10785    }
10786}
10787
10788/// philips:929001953101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929001953101.html)
10789///
10790/// 
10791#[cfg_attr(feature = "debug", derive(Debug))]
10792#[cfg_attr(feature = "clone", derive(Clone))]
10793#[derive(Deserialize)]
10794pub struct Zigbee929001953101 {
10795    ///Brightness of this light
10796    pub brightness: f64,
10797    ///Color temperature of this light
10798    pub color_temp: f64,
10799    ///Color temperature after cold power on of this light
10800    pub color_temp_startup: f64,
10801    ///Link quality (signal strength)
10802    pub linkquality: f64,
10803    ///Controls the behavior when the device is powered on after power loss
10804    pub power_on_behavior: Zigbee929001953101Poweronbehavior,
10805    ///Zigbee herdsman description: "On/off state of this light"
10806    ///The string values get converted into boolean with: ON = true and OFF = false
10807    #[serde(deserialize_with = "zigbee929001953101_state_deserializer")]
10808    pub state: bool,
10809    /// Optional last_seen type, set as a global zigbee2mqtt setting
10810    pub last_seen: Option<LastSeen>,
10811    /// Optional elapsed type
10812    pub elapsed: Option<u64>,
10813}
10814/// Deserialize bool from String with custom value mapping
10815fn zigbee929001953101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10816where
10817    D: Deserializer<'de>,
10818{
10819    match String::deserialize(deserializer)?.as_ref() {
10820        "ON" => Ok(true),
10821        "OFF" => Ok(false),
10822        other => Err(de::Error::invalid_value(
10823            Unexpected::Str(other),
10824            &"Value expected was either ON or OFF",
10825        )),
10826    }
10827}
10828
10829/// philips:9290019532 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290019532.html)
10830///
10831/// 
10832#[cfg_attr(feature = "debug", derive(Debug))]
10833#[cfg_attr(feature = "clone", derive(Clone))]
10834#[derive(Deserialize)]
10835pub struct Zigbee9290019532 {
10836    ///Brightness of this light
10837    pub brightness: f64,
10838    ///Color temperature of this light
10839    pub color_temp: f64,
10840    ///Color temperature after cold power on of this light
10841    pub color_temp_startup: f64,
10842    ///Link quality (signal strength)
10843    pub linkquality: f64,
10844    ///Controls the behavior when the device is powered on after power loss
10845    pub power_on_behavior: Zigbee9290019532Poweronbehavior,
10846    ///Zigbee herdsman description: "On/off state of this light"
10847    ///The string values get converted into boolean with: ON = true and OFF = false
10848    #[serde(deserialize_with = "zigbee9290019532_state_deserializer")]
10849    pub state: bool,
10850    /// Optional last_seen type, set as a global zigbee2mqtt setting
10851    pub last_seen: Option<LastSeen>,
10852    /// Optional elapsed type
10853    pub elapsed: Option<u64>,
10854}
10855/// Deserialize bool from String with custom value mapping
10856fn zigbee9290019532_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10857where
10858    D: Deserializer<'de>,
10859{
10860    match String::deserialize(deserializer)?.as_ref() {
10861        "ON" => Ok(true),
10862        "OFF" => Ok(false),
10863        other => Err(de::Error::invalid_value(
10864            Unexpected::Str(other),
10865            &"Value expected was either ON or OFF",
10866        )),
10867    }
10868}
10869
10870/// philips:9290019533 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290019533.html)
10871///
10872/// 
10873#[cfg_attr(feature = "debug", derive(Debug))]
10874#[cfg_attr(feature = "clone", derive(Clone))]
10875#[derive(Deserialize)]
10876pub struct Zigbee9290019533 {
10877    ///Brightness of this light
10878    pub brightness: f64,
10879    ///Color temperature of this light
10880    pub color_temp: f64,
10881    ///Color temperature after cold power on of this light
10882    pub color_temp_startup: f64,
10883    ///Link quality (signal strength)
10884    pub linkquality: f64,
10885    ///Controls the behavior when the device is powered on after power loss
10886    pub power_on_behavior: Zigbee9290019533Poweronbehavior,
10887    ///Zigbee herdsman description: "On/off state of this light"
10888    ///The string values get converted into boolean with: ON = true and OFF = false
10889    #[serde(deserialize_with = "zigbee9290019533_state_deserializer")]
10890    pub state: bool,
10891    /// Optional last_seen type, set as a global zigbee2mqtt setting
10892    pub last_seen: Option<LastSeen>,
10893    /// Optional elapsed type
10894    pub elapsed: Option<u64>,
10895}
10896/// Deserialize bool from String with custom value mapping
10897fn zigbee9290019533_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10898where
10899    D: Deserializer<'de>,
10900{
10901    match String::deserialize(deserializer)?.as_ref() {
10902        "ON" => Ok(true),
10903        "OFF" => Ok(false),
10904        other => Err(de::Error::invalid_value(
10905            Unexpected::Str(other),
10906            &"Value expected was either ON or OFF",
10907        )),
10908    }
10909}
10910
10911/// philips:929001953301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929001953301.html)
10912///
10913/// 
10914#[cfg_attr(feature = "debug", derive(Debug))]
10915#[cfg_attr(feature = "clone", derive(Clone))]
10916#[derive(Deserialize)]
10917pub struct Zigbee929001953301 {
10918    ///Brightness of this light
10919    pub brightness: f64,
10920    ///Color temperature of this light
10921    pub color_temp: f64,
10922    ///Color temperature after cold power on of this light
10923    pub color_temp_startup: f64,
10924    ///Link quality (signal strength)
10925    pub linkquality: f64,
10926    ///Controls the behavior when the device is powered on after power loss
10927    pub power_on_behavior: Zigbee929001953301Poweronbehavior,
10928    ///Zigbee herdsman description: "On/off state of this light"
10929    ///The string values get converted into boolean with: ON = true and OFF = false
10930    #[serde(deserialize_with = "zigbee929001953301_state_deserializer")]
10931    pub state: bool,
10932    /// Optional last_seen type, set as a global zigbee2mqtt setting
10933    pub last_seen: Option<LastSeen>,
10934    /// Optional elapsed type
10935    pub elapsed: Option<u64>,
10936}
10937/// Deserialize bool from String with custom value mapping
10938fn zigbee929001953301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10939where
10940    D: Deserializer<'de>,
10941{
10942    match String::deserialize(deserializer)?.as_ref() {
10943        "ON" => Ok(true),
10944        "OFF" => Ok(false),
10945        other => Err(de::Error::invalid_value(
10946            Unexpected::Str(other),
10947            &"Value expected was either ON or OFF",
10948        )),
10949    }
10950}
10951
10952/// philips:9290019534 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290019534.html)
10953///
10954/// 
10955#[cfg_attr(feature = "debug", derive(Debug))]
10956#[cfg_attr(feature = "clone", derive(Clone))]
10957#[derive(Deserialize)]
10958pub struct Zigbee9290019534 {
10959    ///Brightness of this light
10960    pub brightness: f64,
10961    ///Color temperature of this light
10962    pub color_temp: f64,
10963    ///Color temperature after cold power on of this light
10964    pub color_temp_startup: f64,
10965    ///Link quality (signal strength)
10966    pub linkquality: f64,
10967    ///Controls the behavior when the device is powered on after power loss
10968    pub power_on_behavior: Zigbee9290019534Poweronbehavior,
10969    ///Zigbee herdsman description: "On/off state of this light"
10970    ///The string values get converted into boolean with: ON = true and OFF = false
10971    #[serde(deserialize_with = "zigbee9290019534_state_deserializer")]
10972    pub state: bool,
10973    /// Optional last_seen type, set as a global zigbee2mqtt setting
10974    pub last_seen: Option<LastSeen>,
10975    /// Optional elapsed type
10976    pub elapsed: Option<u64>,
10977}
10978/// Deserialize bool from String with custom value mapping
10979fn zigbee9290019534_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
10980where
10981    D: Deserializer<'de>,
10982{
10983    match String::deserialize(deserializer)?.as_ref() {
10984        "ON" => Ok(true),
10985        "OFF" => Ok(false),
10986        other => Err(de::Error::invalid_value(
10987            Unexpected::Str(other),
10988            &"Value expected was either ON or OFF",
10989        )),
10990    }
10991}
10992
10993/// philips:9290019536 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290019536.html)
10994///
10995/// 
10996#[cfg_attr(feature = "debug", derive(Debug))]
10997#[cfg_attr(feature = "clone", derive(Clone))]
10998#[derive(Deserialize)]
10999pub struct Zigbee9290019536 {
11000    ///Brightness of this light
11001    pub brightness: f64,
11002    ///Link quality (signal strength)
11003    pub linkquality: f64,
11004    ///Controls the behavior when the device is powered on after power loss
11005    pub power_on_behavior: Zigbee9290019536Poweronbehavior,
11006    ///Zigbee herdsman description: "On/off state of this light"
11007    ///The string values get converted into boolean with: ON = true and OFF = false
11008    #[serde(deserialize_with = "zigbee9290019536_state_deserializer")]
11009    pub state: bool,
11010    /// Optional last_seen type, set as a global zigbee2mqtt setting
11011    pub last_seen: Option<LastSeen>,
11012    /// Optional elapsed type
11013    pub elapsed: Option<u64>,
11014}
11015/// Deserialize bool from String with custom value mapping
11016fn zigbee9290019536_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11017where
11018    D: Deserializer<'de>,
11019{
11020    match String::deserialize(deserializer)?.as_ref() {
11021        "ON" => Ok(true),
11022        "OFF" => Ok(false),
11023        other => Err(de::Error::invalid_value(
11024            Unexpected::Str(other),
11025            &"Value expected was either ON or OFF",
11026        )),
11027    }
11028}
11029
11030/// philips:9290019758 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290019758.html)
11031///
11032/// 
11033#[cfg_attr(feature = "debug", derive(Debug))]
11034#[cfg_attr(feature = "clone", derive(Clone))]
11035#[derive(Deserialize)]
11036pub struct Zigbee9290019758 {
11037    ///Remaining battery in %, can take up to 24 hours before reported.
11038    pub battery: f64,
11039    ///Raw measured illuminance
11040    pub illuminance: f64,
11041    ///Measured illuminance in lux
11042    pub illuminance_lux: f64,
11043    ///Zigbee herdsman description: "Blink green LED on motion detection"
11044    ///Boolean values can be an unintuitive way round: value_on = true and value_off = false, consider double checking Zigbee2MQTT to understand what they mean
11045    pub led_indication: bool,
11046    ///Link quality (signal strength)
11047    pub linkquality: f64,
11048    pub motion_sensitivity: Zigbee9290019758Motionsensitivity,
11049    ///Zigbee herdsman description: "Indicates whether the device detected occupancy"
11050    ///Boolean values can be an unintuitive way round: value_on = true and value_off = false, consider double checking Zigbee2MQTT to understand what they mean
11051    pub occupancy: bool,
11052    pub occupancy_timeout: f64,
11053    ///Measured temperature value
11054    pub temperature: f64,
11055    /// Optional last_seen type, set as a global zigbee2mqtt setting
11056    pub last_seen: Option<LastSeen>,
11057    /// Optional elapsed type
11058    pub elapsed: Option<u64>,
11059}/// philips:929002039801 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002039801.html)
11060///
11061/// 
11062#[cfg_attr(feature = "debug", derive(Debug))]
11063#[cfg_attr(feature = "clone", derive(Clone))]
11064#[derive(Deserialize)]
11065pub struct Zigbee929002039801 {
11066    ///Brightness of this light
11067    pub brightness: f64,
11068    ///Link quality (signal strength)
11069    pub linkquality: f64,
11070    ///Controls the behavior when the device is powered on after power loss
11071    pub power_on_behavior: Zigbee929002039801Poweronbehavior,
11072    ///Zigbee herdsman description: "On/off state of this light"
11073    ///The string values get converted into boolean with: ON = true and OFF = false
11074    #[serde(deserialize_with = "zigbee929002039801_state_deserializer")]
11075    pub state: bool,
11076    /// Optional last_seen type, set as a global zigbee2mqtt setting
11077    pub last_seen: Option<LastSeen>,
11078    /// Optional elapsed type
11079    pub elapsed: Option<u64>,
11080}
11081/// Deserialize bool from String with custom value mapping
11082fn zigbee929002039801_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11083where
11084    D: Deserializer<'de>,
11085{
11086    match String::deserialize(deserializer)?.as_ref() {
11087        "ON" => Ok(true),
11088        "OFF" => Ok(false),
11089        other => Err(de::Error::invalid_value(
11090            Unexpected::Str(other),
11091            &"Value expected was either ON or OFF",
11092        )),
11093    }
11094}
11095
11096/// philips:9290020399 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290020399.html)
11097///
11098/// 
11099#[cfg_attr(feature = "debug", derive(Debug))]
11100#[cfg_attr(feature = "clone", derive(Clone))]
11101#[derive(Deserialize)]
11102pub struct Zigbee9290020399 {
11103    ///Brightness of this light
11104    pub brightness: f64,
11105    ///Link quality (signal strength)
11106    pub linkquality: f64,
11107    ///Controls the behavior when the device is powered on after power loss
11108    pub power_on_behavior: Zigbee9290020399Poweronbehavior,
11109    ///Zigbee herdsman description: "On/off state of this light"
11110    ///The string values get converted into boolean with: ON = true and OFF = false
11111    #[serde(deserialize_with = "zigbee9290020399_state_deserializer")]
11112    pub state: bool,
11113    /// Optional last_seen type, set as a global zigbee2mqtt setting
11114    pub last_seen: Option<LastSeen>,
11115    /// Optional elapsed type
11116    pub elapsed: Option<u64>,
11117}
11118/// Deserialize bool from String with custom value mapping
11119fn zigbee9290020399_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11120where
11121    D: Deserializer<'de>,
11122{
11123    match String::deserialize(deserializer)?.as_ref() {
11124        "ON" => Ok(true),
11125        "OFF" => Ok(false),
11126        other => Err(de::Error::invalid_value(
11127            Unexpected::Str(other),
11128            &"Value expected was either ON or OFF",
11129        )),
11130    }
11131}
11132
11133/// philips:9290020400 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290020400.html)
11134///
11135/// 
11136#[cfg_attr(feature = "debug", derive(Debug))]
11137#[cfg_attr(feature = "clone", derive(Clone))]
11138#[derive(Deserialize)]
11139pub struct Zigbee9290020400 {
11140    ///Brightness of this light
11141    pub brightness: f64,
11142    ///Link quality (signal strength)
11143    pub linkquality: f64,
11144    ///Controls the behavior when the device is powered on after power loss
11145    pub power_on_behavior: Zigbee9290020400Poweronbehavior,
11146    ///Zigbee herdsman description: "On/off state of this light"
11147    ///The string values get converted into boolean with: ON = true and OFF = false
11148    #[serde(deserialize_with = "zigbee9290020400_state_deserializer")]
11149    pub state: bool,
11150    /// Optional last_seen type, set as a global zigbee2mqtt setting
11151    pub last_seen: Option<LastSeen>,
11152    /// Optional elapsed type
11153    pub elapsed: Option<u64>,
11154}
11155/// Deserialize bool from String with custom value mapping
11156fn zigbee9290020400_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11157where
11158    D: Deserializer<'de>,
11159{
11160    match String::deserialize(deserializer)?.as_ref() {
11161        "ON" => Ok(true),
11162        "OFF" => Ok(false),
11163        other => Err(de::Error::invalid_value(
11164            Unexpected::Str(other),
11165            &"Value expected was either ON or OFF",
11166        )),
11167    }
11168}
11169
11170/// philips:9290022166 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022166.html)
11171///
11172/// 
11173#[cfg_attr(feature = "debug", derive(Debug))]
11174#[cfg_attr(feature = "clone", derive(Clone))]
11175#[derive(Deserialize)]
11176pub struct Zigbee9290022166 {
11177    ///Brightness of this light
11178    pub brightness: f64,
11179    ///Color temperature of this light
11180    pub color_temp: f64,
11181    ///Color temperature after cold power on of this light
11182    pub color_temp_startup: f64,
11183    ///Link quality (signal strength)
11184    pub linkquality: f64,
11185    ///Controls the behavior when the device is powered on after power loss
11186    pub power_on_behavior: Zigbee9290022166Poweronbehavior,
11187    ///Zigbee herdsman description: "On/off state of this light"
11188    ///The string values get converted into boolean with: ON = true and OFF = false
11189    #[serde(deserialize_with = "zigbee9290022166_state_deserializer")]
11190    pub state: bool,
11191    /// Optional last_seen type, set as a global zigbee2mqtt setting
11192    pub last_seen: Option<LastSeen>,
11193    /// Optional elapsed type
11194    pub elapsed: Option<u64>,
11195}
11196/// Deserialize bool from String with custom value mapping
11197fn zigbee9290022166_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11198where
11199    D: Deserializer<'de>,
11200{
11201    match String::deserialize(deserializer)?.as_ref() {
11202        "ON" => Ok(true),
11203        "OFF" => Ok(false),
11204        other => Err(de::Error::invalid_value(
11205            Unexpected::Str(other),
11206            &"Value expected was either ON or OFF",
11207        )),
11208    }
11209}
11210
11211/// philips:9290022167 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022167.html)
11212///
11213/// 
11214#[cfg_attr(feature = "debug", derive(Debug))]
11215#[cfg_attr(feature = "clone", derive(Clone))]
11216#[derive(Deserialize)]
11217pub struct Zigbee9290022167 {
11218    ///Brightness of this light
11219    pub brightness: f64,
11220    ///Color temperature of this light
11221    pub color_temp: f64,
11222    ///Color temperature after cold power on of this light
11223    pub color_temp_startup: f64,
11224    ///Link quality (signal strength)
11225    pub linkquality: f64,
11226    ///Controls the behavior when the device is powered on after power loss
11227    pub power_on_behavior: Zigbee9290022167Poweronbehavior,
11228    ///Zigbee herdsman description: "On/off state of this light"
11229    ///The string values get converted into boolean with: ON = true and OFF = false
11230    #[serde(deserialize_with = "zigbee9290022167_state_deserializer")]
11231    pub state: bool,
11232    /// Optional last_seen type, set as a global zigbee2mqtt setting
11233    pub last_seen: Option<LastSeen>,
11234    /// Optional elapsed type
11235    pub elapsed: Option<u64>,
11236}
11237/// Deserialize bool from String with custom value mapping
11238fn zigbee9290022167_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11239where
11240    D: Deserializer<'de>,
11241{
11242    match String::deserialize(deserializer)?.as_ref() {
11243        "ON" => Ok(true),
11244        "OFF" => Ok(false),
11245        other => Err(de::Error::invalid_value(
11246            Unexpected::Str(other),
11247            &"Value expected was either ON or OFF",
11248        )),
11249    }
11250}
11251
11252/// philips:9290022169 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022169.html)
11253///
11254/// 
11255#[cfg_attr(feature = "debug", derive(Debug))]
11256#[cfg_attr(feature = "clone", derive(Clone))]
11257#[derive(Deserialize)]
11258pub struct Zigbee9290022169 {
11259    ///Brightness of this light
11260    pub brightness: f64,
11261    ///Color temperature of this light
11262    pub color_temp: f64,
11263    ///Color temperature after cold power on of this light
11264    pub color_temp_startup: f64,
11265    ///Link quality (signal strength)
11266    pub linkquality: f64,
11267    ///Controls the behavior when the device is powered on after power loss
11268    pub power_on_behavior: Zigbee9290022169Poweronbehavior,
11269    ///Zigbee herdsman description: "On/off state of this light"
11270    ///The string values get converted into boolean with: ON = true and OFF = false
11271    #[serde(deserialize_with = "zigbee9290022169_state_deserializer")]
11272    pub state: bool,
11273    /// Optional last_seen type, set as a global zigbee2mqtt setting
11274    pub last_seen: Option<LastSeen>,
11275    /// Optional elapsed type
11276    pub elapsed: Option<u64>,
11277}
11278/// Deserialize bool from String with custom value mapping
11279fn zigbee9290022169_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11280where
11281    D: Deserializer<'de>,
11282{
11283    match String::deserialize(deserializer)?.as_ref() {
11284        "ON" => Ok(true),
11285        "OFF" => Ok(false),
11286        other => Err(de::Error::invalid_value(
11287            Unexpected::Str(other),
11288            &"Value expected was either ON or OFF",
11289        )),
11290    }
11291}
11292
11293/// philips:9290022266A [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022266A.html)
11294///
11295/// 
11296#[cfg_attr(feature = "debug", derive(Debug))]
11297#[cfg_attr(feature = "clone", derive(Clone))]
11298#[derive(Deserialize)]
11299pub struct Zigbee9290022266a {
11300    ///Brightness of this light
11301    pub brightness: f64,
11302    ///Color temperature of this light
11303    pub color_temp: f64,
11304    ///Color temperature after cold power on of this light
11305    pub color_temp_startup: f64,
11306    ///Link quality (signal strength)
11307    pub linkquality: f64,
11308    ///Controls the behavior when the device is powered on after power loss
11309    pub power_on_behavior: Zigbee9290022266aPoweronbehavior,
11310    ///Zigbee herdsman description: "On/off state of this light"
11311    ///The string values get converted into boolean with: ON = true and OFF = false
11312    #[serde(deserialize_with = "zigbee9290022266a_state_deserializer")]
11313    pub state: bool,
11314    /// Optional last_seen type, set as a global zigbee2mqtt setting
11315    pub last_seen: Option<LastSeen>,
11316    /// Optional elapsed type
11317    pub elapsed: Option<u64>,
11318}
11319/// Deserialize bool from String with custom value mapping
11320fn zigbee9290022266a_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11321where
11322    D: Deserializer<'de>,
11323{
11324    match String::deserialize(deserializer)?.as_ref() {
11325        "ON" => Ok(true),
11326        "OFF" => Ok(false),
11327        other => Err(de::Error::invalid_value(
11328            Unexpected::Str(other),
11329            &"Value expected was either ON or OFF",
11330        )),
11331    }
11332}
11333
11334/// philips:9290022267 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022267.html)
11335///
11336/// 
11337#[cfg_attr(feature = "debug", derive(Debug))]
11338#[cfg_attr(feature = "clone", derive(Clone))]
11339#[derive(Deserialize)]
11340pub struct Zigbee9290022267 {
11341    ///Brightness of this light
11342    pub brightness: f64,
11343    ///Color temperature of this light
11344    pub color_temp: f64,
11345    ///Color temperature after cold power on of this light
11346    pub color_temp_startup: f64,
11347    ///Link quality (signal strength)
11348    pub linkquality: f64,
11349    ///Controls the behavior when the device is powered on after power loss
11350    pub power_on_behavior: Zigbee9290022267Poweronbehavior,
11351    ///Zigbee herdsman description: "On/off state of this light"
11352    ///The string values get converted into boolean with: ON = true and OFF = false
11353    #[serde(deserialize_with = "zigbee9290022267_state_deserializer")]
11354    pub state: bool,
11355    /// Optional last_seen type, set as a global zigbee2mqtt setting
11356    pub last_seen: Option<LastSeen>,
11357    /// Optional elapsed type
11358    pub elapsed: Option<u64>,
11359}
11360/// Deserialize bool from String with custom value mapping
11361fn zigbee9290022267_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11362where
11363    D: Deserializer<'de>,
11364{
11365    match String::deserialize(deserializer)?.as_ref() {
11366        "ON" => Ok(true),
11367        "OFF" => Ok(false),
11368        other => Err(de::Error::invalid_value(
11369            Unexpected::Str(other),
11370            &"Value expected was either ON or OFF",
11371        )),
11372    }
11373}
11374
11375/// philips:9290022267A [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022267A.html)
11376///
11377/// 
11378#[cfg_attr(feature = "debug", derive(Debug))]
11379#[cfg_attr(feature = "clone", derive(Clone))]
11380#[derive(Deserialize)]
11381pub struct Zigbee9290022267a {
11382    ///Brightness of this light
11383    pub brightness: f64,
11384    ///Color temperature of this light
11385    pub color_temp: f64,
11386    ///Color temperature after cold power on of this light
11387    pub color_temp_startup: f64,
11388    ///Link quality (signal strength)
11389    pub linkquality: f64,
11390    ///Controls the behavior when the device is powered on after power loss
11391    pub power_on_behavior: Zigbee9290022267aPoweronbehavior,
11392    ///Zigbee herdsman description: "On/off state of this light"
11393    ///The string values get converted into boolean with: ON = true and OFF = false
11394    #[serde(deserialize_with = "zigbee9290022267a_state_deserializer")]
11395    pub state: bool,
11396    /// Optional last_seen type, set as a global zigbee2mqtt setting
11397    pub last_seen: Option<LastSeen>,
11398    /// Optional elapsed type
11399    pub elapsed: Option<u64>,
11400}
11401/// Deserialize bool from String with custom value mapping
11402fn zigbee9290022267a_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11403where
11404    D: Deserializer<'de>,
11405{
11406    match String::deserialize(deserializer)?.as_ref() {
11407        "ON" => Ok(true),
11408        "OFF" => Ok(false),
11409        other => Err(de::Error::invalid_value(
11410            Unexpected::Str(other),
11411            &"Value expected was either ON or OFF",
11412        )),
11413    }
11414}
11415
11416/// philips:9290022268 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022268.html)
11417///
11418/// 
11419#[cfg_attr(feature = "debug", derive(Debug))]
11420#[cfg_attr(feature = "clone", derive(Clone))]
11421#[derive(Deserialize)]
11422pub struct Zigbee9290022268 {
11423    ///Brightness of this light
11424    pub brightness: f64,
11425    ///Link quality (signal strength)
11426    pub linkquality: f64,
11427    ///Controls the behavior when the device is powered on after power loss
11428    pub power_on_behavior: Zigbee9290022268Poweronbehavior,
11429    ///Zigbee herdsman description: "On/off state of this light"
11430    ///The string values get converted into boolean with: ON = true and OFF = false
11431    #[serde(deserialize_with = "zigbee9290022268_state_deserializer")]
11432    pub state: bool,
11433    /// Optional last_seen type, set as a global zigbee2mqtt setting
11434    pub last_seen: Option<LastSeen>,
11435    /// Optional elapsed type
11436    pub elapsed: Option<u64>,
11437}
11438/// Deserialize bool from String with custom value mapping
11439fn zigbee9290022268_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11440where
11441    D: Deserializer<'de>,
11442{
11443    match String::deserialize(deserializer)?.as_ref() {
11444        "ON" => Ok(true),
11445        "OFF" => Ok(false),
11446        other => Err(de::Error::invalid_value(
11447            Unexpected::Str(other),
11448            &"Value expected was either ON or OFF",
11449        )),
11450    }
11451}
11452
11453/// philips:929002240401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002240401.html)
11454///
11455/// 
11456#[cfg_attr(feature = "debug", derive(Debug))]
11457#[cfg_attr(feature = "clone", derive(Clone))]
11458#[derive(Deserialize)]
11459pub struct Zigbee929002240401 {
11460    ///Link quality (signal strength)
11461    pub linkquality: f64,
11462    ///Zigbee herdsman description: "On/off state of the switch"
11463    ///The string values get converted into boolean with: ON = true and OFF = false
11464    #[serde(deserialize_with = "zigbee929002240401_state_deserializer")]
11465    pub state: bool,
11466    /// Optional last_seen type, set as a global zigbee2mqtt setting
11467    pub last_seen: Option<LastSeen>,
11468    /// Optional elapsed type
11469    pub elapsed: Option<u64>,
11470}
11471/// Deserialize bool from String with custom value mapping
11472fn zigbee929002240401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11473where
11474    D: Deserializer<'de>,
11475{
11476    match String::deserialize(deserializer)?.as_ref() {
11477        "ON" => Ok(true),
11478        "OFF" => Ok(false),
11479        other => Err(de::Error::invalid_value(
11480            Unexpected::Str(other),
11481            &"Value expected was either ON or OFF",
11482        )),
11483    }
11484}
11485
11486/// philips:9290022408 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022408.html)
11487///
11488/// 
11489#[cfg_attr(feature = "debug", derive(Debug))]
11490#[cfg_attr(feature = "clone", derive(Clone))]
11491#[derive(Deserialize)]
11492pub struct Zigbee9290022408 {
11493    ///Link quality (signal strength)
11494    pub linkquality: f64,
11495    ///Zigbee herdsman description: "On/off state of the switch"
11496    ///The string values get converted into boolean with: ON = true and OFF = false
11497    #[serde(deserialize_with = "zigbee9290022408_state_deserializer")]
11498    pub state: bool,
11499    /// Optional last_seen type, set as a global zigbee2mqtt setting
11500    pub last_seen: Option<LastSeen>,
11501    /// Optional elapsed type
11502    pub elapsed: Option<u64>,
11503}
11504/// Deserialize bool from String with custom value mapping
11505fn zigbee9290022408_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11506where
11507    D: Deserializer<'de>,
11508{
11509    match String::deserialize(deserializer)?.as_ref() {
11510        "ON" => Ok(true),
11511        "OFF" => Ok(false),
11512        other => Err(de::Error::invalid_value(
11513            Unexpected::Str(other),
11514            &"Value expected was either ON or OFF",
11515        )),
11516    }
11517}
11518
11519/// philips:9290022411 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022411.html)
11520///
11521/// 
11522#[cfg_attr(feature = "debug", derive(Debug))]
11523#[cfg_attr(feature = "clone", derive(Clone))]
11524#[derive(Deserialize)]
11525pub struct Zigbee9290022411 {
11526    ///Brightness of this light
11527    pub brightness: f64,
11528    ///Link quality (signal strength)
11529    pub linkquality: f64,
11530    ///Controls the behavior when the device is powered on after power loss
11531    pub power_on_behavior: Zigbee9290022411Poweronbehavior,
11532    ///Zigbee herdsman description: "On/off state of this light"
11533    ///The string values get converted into boolean with: ON = true and OFF = false
11534    #[serde(deserialize_with = "zigbee9290022411_state_deserializer")]
11535    pub state: bool,
11536    /// Optional last_seen type, set as a global zigbee2mqtt setting
11537    pub last_seen: Option<LastSeen>,
11538    /// Optional elapsed type
11539    pub elapsed: Option<u64>,
11540}
11541/// Deserialize bool from String with custom value mapping
11542fn zigbee9290022411_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11543where
11544    D: Deserializer<'de>,
11545{
11546    match String::deserialize(deserializer)?.as_ref() {
11547        "ON" => Ok(true),
11548        "OFF" => Ok(false),
11549        other => Err(de::Error::invalid_value(
11550            Unexpected::Str(other),
11551            &"Value expected was either ON or OFF",
11552        )),
11553    }
11554}
11555
11556/// philips:929002241201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002241201.html)
11557///
11558/// 
11559#[cfg_attr(feature = "debug", derive(Debug))]
11560#[cfg_attr(feature = "clone", derive(Clone))]
11561#[derive(Deserialize)]
11562pub struct Zigbee929002241201 {
11563    ///Brightness of this light
11564    pub brightness: f64,
11565    ///Link quality (signal strength)
11566    pub linkquality: f64,
11567    ///Controls the behavior when the device is powered on after power loss
11568    pub power_on_behavior: Zigbee929002241201Poweronbehavior,
11569    ///Zigbee herdsman description: "On/off state of this light"
11570    ///The string values get converted into boolean with: ON = true and OFF = false
11571    #[serde(deserialize_with = "zigbee929002241201_state_deserializer")]
11572    pub state: bool,
11573    /// Optional last_seen type, set as a global zigbee2mqtt setting
11574    pub last_seen: Option<LastSeen>,
11575    /// Optional elapsed type
11576    pub elapsed: Option<u64>,
11577}
11578/// Deserialize bool from String with custom value mapping
11579fn zigbee929002241201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11580where
11581    D: Deserializer<'de>,
11582{
11583    match String::deserialize(deserializer)?.as_ref() {
11584        "ON" => Ok(true),
11585        "OFF" => Ok(false),
11586        other => Err(de::Error::invalid_value(
11587            Unexpected::Str(other),
11588            &"Value expected was either ON or OFF",
11589        )),
11590    }
11591}
11592
11593/// philips:9290022415 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022415.html)
11594///
11595/// 
11596#[cfg_attr(feature = "debug", derive(Debug))]
11597#[cfg_attr(feature = "clone", derive(Clone))]
11598#[derive(Deserialize)]
11599pub struct Zigbee9290022415 {
11600    ///Brightness of this light
11601    pub brightness: f64,
11602    ///Link quality (signal strength)
11603    pub linkquality: f64,
11604    ///Controls the behavior when the device is powered on after power loss
11605    pub power_on_behavior: Zigbee9290022415Poweronbehavior,
11606    ///Zigbee herdsman description: "On/off state of this light"
11607    ///The string values get converted into boolean with: ON = true and OFF = false
11608    #[serde(deserialize_with = "zigbee9290022415_state_deserializer")]
11609    pub state: bool,
11610    /// Optional last_seen type, set as a global zigbee2mqtt setting
11611    pub last_seen: Option<LastSeen>,
11612    /// Optional elapsed type
11613    pub elapsed: Option<u64>,
11614}
11615/// Deserialize bool from String with custom value mapping
11616fn zigbee9290022415_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11617where
11618    D: Deserializer<'de>,
11619{
11620    match String::deserialize(deserializer)?.as_ref() {
11621        "ON" => Ok(true),
11622        "OFF" => Ok(false),
11623        other => Err(de::Error::invalid_value(
11624            Unexpected::Str(other),
11625            &"Value expected was either ON or OFF",
11626        )),
11627    }
11628}
11629
11630/// philips:929002277501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002277501.html)
11631///
11632/// 
11633#[cfg_attr(feature = "debug", derive(Debug))]
11634#[cfg_attr(feature = "clone", derive(Clone))]
11635#[derive(Deserialize)]
11636pub struct Zigbee929002277501 {
11637    ///Brightness of this light
11638    pub brightness: f64,
11639    ///Link quality (signal strength)
11640    pub linkquality: f64,
11641    ///Controls the behavior when the device is powered on after power loss
11642    pub power_on_behavior: Zigbee929002277501Poweronbehavior,
11643    ///Zigbee herdsman description: "On/off state of this light"
11644    ///The string values get converted into boolean with: ON = true and OFF = false
11645    #[serde(deserialize_with = "zigbee929002277501_state_deserializer")]
11646    pub state: bool,
11647    /// Optional last_seen type, set as a global zigbee2mqtt setting
11648    pub last_seen: Option<LastSeen>,
11649    /// Optional elapsed type
11650    pub elapsed: Option<u64>,
11651}
11652/// Deserialize bool from String with custom value mapping
11653fn zigbee929002277501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11654where
11655    D: Deserializer<'de>,
11656{
11657    match String::deserialize(deserializer)?.as_ref() {
11658        "ON" => Ok(true),
11659        "OFF" => Ok(false),
11660        other => Err(de::Error::invalid_value(
11661            Unexpected::Str(other),
11662            &"Value expected was either ON or OFF",
11663        )),
11664    }
11665}
11666
11667/// philips:9290022890 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022890.html)
11668///
11669/// 
11670#[cfg_attr(feature = "debug", derive(Debug))]
11671#[cfg_attr(feature = "clone", derive(Clone))]
11672#[derive(Deserialize)]
11673pub struct Zigbee9290022890 {
11674    ///Brightness of this light
11675    pub brightness: f64,
11676    ///Color temperature of this light
11677    pub color_temp: f64,
11678    ///Color temperature after cold power on of this light
11679    pub color_temp_startup: f64,
11680    ///Link quality (signal strength)
11681    pub linkquality: f64,
11682    ///Controls the behavior when the device is powered on after power loss
11683    pub power_on_behavior: Zigbee9290022890Poweronbehavior,
11684    ///Zigbee herdsman description: "On/off state of this light"
11685    ///The string values get converted into boolean with: ON = true and OFF = false
11686    #[serde(deserialize_with = "zigbee9290022890_state_deserializer")]
11687    pub state: bool,
11688    /// Optional last_seen type, set as a global zigbee2mqtt setting
11689    pub last_seen: Option<LastSeen>,
11690    /// Optional elapsed type
11691    pub elapsed: Option<u64>,
11692}
11693/// Deserialize bool from String with custom value mapping
11694fn zigbee9290022890_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11695where
11696    D: Deserializer<'de>,
11697{
11698    match String::deserialize(deserializer)?.as_ref() {
11699        "ON" => Ok(true),
11700        "OFF" => Ok(false),
11701        other => Err(de::Error::invalid_value(
11702            Unexpected::Str(other),
11703            &"Value expected was either ON or OFF",
11704        )),
11705    }
11706}
11707
11708/// philips:9290022891 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022891.html)
11709///
11710/// 
11711#[cfg_attr(feature = "debug", derive(Debug))]
11712#[cfg_attr(feature = "clone", derive(Clone))]
11713#[derive(Deserialize)]
11714pub struct Zigbee9290022891 {
11715    ///Brightness of this light
11716    pub brightness: f64,
11717    ///Color temperature of this light
11718    pub color_temp: f64,
11719    ///Color temperature after cold power on of this light
11720    pub color_temp_startup: f64,
11721    ///Link quality (signal strength)
11722    pub linkquality: f64,
11723    ///Controls the behavior when the device is powered on after power loss
11724    pub power_on_behavior: Zigbee9290022891Poweronbehavior,
11725    ///Zigbee herdsman description: "On/off state of this light"
11726    ///The string values get converted into boolean with: ON = true and OFF = false
11727    #[serde(deserialize_with = "zigbee9290022891_state_deserializer")]
11728    pub state: bool,
11729    /// Optional last_seen type, set as a global zigbee2mqtt setting
11730    pub last_seen: Option<LastSeen>,
11731    /// Optional elapsed type
11732    pub elapsed: Option<u64>,
11733}
11734/// Deserialize bool from String with custom value mapping
11735fn zigbee9290022891_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11736where
11737    D: Deserializer<'de>,
11738{
11739    match String::deserialize(deserializer)?.as_ref() {
11740        "ON" => Ok(true),
11741        "OFF" => Ok(false),
11742        other => Err(de::Error::invalid_value(
11743            Unexpected::Str(other),
11744            &"Value expected was either ON or OFF",
11745        )),
11746    }
11747}
11748
11749/// philips:929002294101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002294101.html)
11750///
11751/// 
11752#[cfg_attr(feature = "debug", derive(Debug))]
11753#[cfg_attr(feature = "clone", derive(Clone))]
11754#[derive(Deserialize)]
11755pub struct Zigbee929002294101 {
11756    ///Brightness of this light
11757    pub brightness: f64,
11758    ///Color temperature of this light
11759    pub color_temp: f64,
11760    ///Color temperature after cold power on of this light
11761    pub color_temp_startup: f64,
11762    ///Link quality (signal strength)
11763    pub linkquality: f64,
11764    ///Controls the behavior when the device is powered on after power loss
11765    pub power_on_behavior: Zigbee929002294101Poweronbehavior,
11766    ///Zigbee herdsman description: "On/off state of this light"
11767    ///The string values get converted into boolean with: ON = true and OFF = false
11768    #[serde(deserialize_with = "zigbee929002294101_state_deserializer")]
11769    pub state: bool,
11770    /// Optional last_seen type, set as a global zigbee2mqtt setting
11771    pub last_seen: Option<LastSeen>,
11772    /// Optional elapsed type
11773    pub elapsed: Option<u64>,
11774}
11775/// Deserialize bool from String with custom value mapping
11776fn zigbee929002294101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11777where
11778    D: Deserializer<'de>,
11779{
11780    match String::deserialize(deserializer)?.as_ref() {
11781        "ON" => Ok(true),
11782        "OFF" => Ok(false),
11783        other => Err(de::Error::invalid_value(
11784            Unexpected::Str(other),
11785            &"Value expected was either ON or OFF",
11786        )),
11787    }
11788}
11789
11790/// philips:929002294102 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002294102.html)
11791///
11792/// 
11793#[cfg_attr(feature = "debug", derive(Debug))]
11794#[cfg_attr(feature = "clone", derive(Clone))]
11795#[derive(Deserialize)]
11796pub struct Zigbee929002294102 {
11797    ///Brightness of this light
11798    pub brightness: f64,
11799    ///Link quality (signal strength)
11800    pub linkquality: f64,
11801    ///Controls the behavior when the device is powered on after power loss
11802    pub power_on_behavior: Zigbee929002294102Poweronbehavior,
11803    ///Zigbee herdsman description: "On/off state of this light"
11804    ///The string values get converted into boolean with: ON = true and OFF = false
11805    #[serde(deserialize_with = "zigbee929002294102_state_deserializer")]
11806    pub state: bool,
11807    /// Optional last_seen type, set as a global zigbee2mqtt setting
11808    pub last_seen: Option<LastSeen>,
11809    /// Optional elapsed type
11810    pub elapsed: Option<u64>,
11811}
11812/// Deserialize bool from String with custom value mapping
11813fn zigbee929002294102_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11814where
11815    D: Deserializer<'de>,
11816{
11817    match String::deserialize(deserializer)?.as_ref() {
11818        "ON" => Ok(true),
11819        "OFF" => Ok(false),
11820        other => Err(de::Error::invalid_value(
11821            Unexpected::Str(other),
11822            &"Value expected was either ON or OFF",
11823        )),
11824    }
11825}
11826
11827/// philips:929002294203 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002294203.html)
11828///
11829/// 
11830#[cfg_attr(feature = "debug", derive(Debug))]
11831#[cfg_attr(feature = "clone", derive(Clone))]
11832#[derive(Deserialize)]
11833pub struct Zigbee929002294203 {
11834    ///Brightness of this light
11835    pub brightness: f64,
11836    ///Color temperature of this light
11837    pub color_temp: f64,
11838    ///Color temperature after cold power on of this light
11839    pub color_temp_startup: f64,
11840    ///Link quality (signal strength)
11841    pub linkquality: f64,
11842    ///Controls the behavior when the device is powered on after power loss
11843    pub power_on_behavior: Zigbee929002294203Poweronbehavior,
11844    ///Zigbee herdsman description: "On/off state of this light"
11845    ///The string values get converted into boolean with: ON = true and OFF = false
11846    #[serde(deserialize_with = "zigbee929002294203_state_deserializer")]
11847    pub state: bool,
11848    /// Optional last_seen type, set as a global zigbee2mqtt setting
11849    pub last_seen: Option<LastSeen>,
11850    /// Optional elapsed type
11851    pub elapsed: Option<u64>,
11852}
11853/// Deserialize bool from String with custom value mapping
11854fn zigbee929002294203_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11855where
11856    D: Deserializer<'de>,
11857{
11858    match String::deserialize(deserializer)?.as_ref() {
11859        "ON" => Ok(true),
11860        "OFF" => Ok(false),
11861        other => Err(de::Error::invalid_value(
11862            Unexpected::Str(other),
11863            &"Value expected was either ON or OFF",
11864        )),
11865    }
11866}
11867
11868/// philips:9290022943 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022943.html)
11869///
11870/// 
11871#[cfg_attr(feature = "debug", derive(Debug))]
11872#[cfg_attr(feature = "clone", derive(Clone))]
11873#[derive(Deserialize)]
11874pub struct Zigbee9290022943 {
11875    ///Brightness of this light
11876    pub brightness: f64,
11877    ///Color temperature of this light
11878    pub color_temp: f64,
11879    ///Color temperature after cold power on of this light
11880    pub color_temp_startup: f64,
11881    ///Link quality (signal strength)
11882    pub linkquality: f64,
11883    ///Controls the behavior when the device is powered on after power loss
11884    pub power_on_behavior: Zigbee9290022943Poweronbehavior,
11885    ///Zigbee herdsman description: "On/off state of this light"
11886    ///The string values get converted into boolean with: ON = true and OFF = false
11887    #[serde(deserialize_with = "zigbee9290022943_state_deserializer")]
11888    pub state: bool,
11889    /// Optional last_seen type, set as a global zigbee2mqtt setting
11890    pub last_seen: Option<LastSeen>,
11891    /// Optional elapsed type
11892    pub elapsed: Option<u64>,
11893}
11894/// Deserialize bool from String with custom value mapping
11895fn zigbee9290022943_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11896where
11897    D: Deserializer<'de>,
11898{
11899    match String::deserialize(deserializer)?.as_ref() {
11900        "ON" => Ok(true),
11901        "OFF" => Ok(false),
11902        other => Err(de::Error::invalid_value(
11903            Unexpected::Str(other),
11904            &"Value expected was either ON or OFF",
11905        )),
11906    }
11907}
11908
11909/// philips:9290022944 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290022944.html)
11910///
11911/// 
11912#[cfg_attr(feature = "debug", derive(Debug))]
11913#[cfg_attr(feature = "clone", derive(Clone))]
11914#[derive(Deserialize)]
11915pub struct Zigbee9290022944 {
11916    ///Brightness of this light
11917    pub brightness: f64,
11918    ///Color temperature of this light
11919    pub color_temp: f64,
11920    ///Color temperature after cold power on of this light
11921    pub color_temp_startup: f64,
11922    ///Link quality (signal strength)
11923    pub linkquality: f64,
11924    ///Controls the behavior when the device is powered on after power loss
11925    pub power_on_behavior: Zigbee9290022944Poweronbehavior,
11926    ///Zigbee herdsman description: "On/off state of this light"
11927    ///The string values get converted into boolean with: ON = true and OFF = false
11928    #[serde(deserialize_with = "zigbee9290022944_state_deserializer")]
11929    pub state: bool,
11930    /// Optional last_seen type, set as a global zigbee2mqtt setting
11931    pub last_seen: Option<LastSeen>,
11932    /// Optional elapsed type
11933    pub elapsed: Option<u64>,
11934}
11935/// Deserialize bool from String with custom value mapping
11936fn zigbee9290022944_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11937where
11938    D: Deserializer<'de>,
11939{
11940    match String::deserialize(deserializer)?.as_ref() {
11941        "ON" => Ok(true),
11942        "OFF" => Ok(false),
11943        other => Err(de::Error::invalid_value(
11944            Unexpected::Str(other),
11945            &"Value expected was either ON or OFF",
11946        )),
11947    }
11948}
11949
11950/// philips:9290023349 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290023349.html)
11951///
11952/// 
11953#[cfg_attr(feature = "debug", derive(Debug))]
11954#[cfg_attr(feature = "clone", derive(Clone))]
11955#[derive(Deserialize)]
11956pub struct Zigbee9290023349 {
11957    ///Brightness of this light
11958    pub brightness: f64,
11959    ///Link quality (signal strength)
11960    pub linkquality: f64,
11961    ///Controls the behavior when the device is powered on after power loss
11962    pub power_on_behavior: Zigbee9290023349Poweronbehavior,
11963    ///Zigbee herdsman description: "On/off state of this light"
11964    ///The string values get converted into boolean with: ON = true and OFF = false
11965    #[serde(deserialize_with = "zigbee9290023349_state_deserializer")]
11966    pub state: bool,
11967    /// Optional last_seen type, set as a global zigbee2mqtt setting
11968    pub last_seen: Option<LastSeen>,
11969    /// Optional elapsed type
11970    pub elapsed: Option<u64>,
11971}
11972/// Deserialize bool from String with custom value mapping
11973fn zigbee9290023349_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
11974where
11975    D: Deserializer<'de>,
11976{
11977    match String::deserialize(deserializer)?.as_ref() {
11978        "ON" => Ok(true),
11979        "OFF" => Ok(false),
11980        other => Err(de::Error::invalid_value(
11981            Unexpected::Str(other),
11982            &"Value expected was either ON or OFF",
11983        )),
11984    }
11985}
11986
11987/// philips:929002335001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002335001.html)
11988///
11989/// 
11990#[cfg_attr(feature = "debug", derive(Debug))]
11991#[cfg_attr(feature = "clone", derive(Clone))]
11992#[derive(Deserialize)]
11993pub struct Zigbee929002335001 {
11994    ///Brightness of this light
11995    pub brightness: f64,
11996    ///Link quality (signal strength)
11997    pub linkquality: f64,
11998    ///Controls the behavior when the device is powered on after power loss
11999    pub power_on_behavior: Zigbee929002335001Poweronbehavior,
12000    ///Zigbee herdsman description: "On/off state of this light"
12001    ///The string values get converted into boolean with: ON = true and OFF = false
12002    #[serde(deserialize_with = "zigbee929002335001_state_deserializer")]
12003    pub state: bool,
12004    /// Optional last_seen type, set as a global zigbee2mqtt setting
12005    pub last_seen: Option<LastSeen>,
12006    /// Optional elapsed type
12007    pub elapsed: Option<u64>,
12008}
12009/// Deserialize bool from String with custom value mapping
12010fn zigbee929002335001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12011where
12012    D: Deserializer<'de>,
12013{
12014    match String::deserialize(deserializer)?.as_ref() {
12015        "ON" => Ok(true),
12016        "OFF" => Ok(false),
12017        other => Err(de::Error::invalid_value(
12018            Unexpected::Str(other),
12019            &"Value expected was either ON or OFF",
12020        )),
12021    }
12022}
12023
12024/// philips:9290023351 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290023351.html)
12025///
12026/// 
12027#[cfg_attr(feature = "debug", derive(Debug))]
12028#[cfg_attr(feature = "clone", derive(Clone))]
12029#[derive(Deserialize)]
12030pub struct Zigbee9290023351 {
12031    ///Brightness of this light
12032    pub brightness: f64,
12033    ///Link quality (signal strength)
12034    pub linkquality: f64,
12035    ///Controls the behavior when the device is powered on after power loss
12036    pub power_on_behavior: Zigbee9290023351Poweronbehavior,
12037    ///Zigbee herdsman description: "On/off state of this light"
12038    ///The string values get converted into boolean with: ON = true and OFF = false
12039    #[serde(deserialize_with = "zigbee9290023351_state_deserializer")]
12040    pub state: bool,
12041    /// Optional last_seen type, set as a global zigbee2mqtt setting
12042    pub last_seen: Option<LastSeen>,
12043    /// Optional elapsed type
12044    pub elapsed: Option<u64>,
12045}
12046/// Deserialize bool from String with custom value mapping
12047fn zigbee9290023351_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12048where
12049    D: Deserializer<'de>,
12050{
12051    match String::deserialize(deserializer)?.as_ref() {
12052        "ON" => Ok(true),
12053        "OFF" => Ok(false),
12054        other => Err(de::Error::invalid_value(
12055            Unexpected::Str(other),
12056            &"Value expected was either ON or OFF",
12057        )),
12058    }
12059}
12060
12061/// philips:929002335105 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002335105.html)
12062///
12063/// 
12064#[cfg_attr(feature = "debug", derive(Debug))]
12065#[cfg_attr(feature = "clone", derive(Clone))]
12066#[derive(Deserialize)]
12067pub struct Zigbee929002335105 {
12068    ///Brightness of this light
12069    pub brightness: f64,
12070    ///Color temperature of this light
12071    pub color_temp: f64,
12072    ///Color temperature after cold power on of this light
12073    pub color_temp_startup: f64,
12074    ///Link quality (signal strength)
12075    pub linkquality: f64,
12076    ///Controls the behavior when the device is powered on after power loss
12077    pub power_on_behavior: Zigbee929002335105Poweronbehavior,
12078    ///Zigbee herdsman description: "On/off state of this light"
12079    ///The string values get converted into boolean with: ON = true and OFF = false
12080    #[serde(deserialize_with = "zigbee929002335105_state_deserializer")]
12081    pub state: bool,
12082    /// Optional last_seen type, set as a global zigbee2mqtt setting
12083    pub last_seen: Option<LastSeen>,
12084    /// Optional elapsed type
12085    pub elapsed: Option<u64>,
12086}
12087/// Deserialize bool from String with custom value mapping
12088fn zigbee929002335105_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12089where
12090    D: Deserializer<'de>,
12091{
12092    match String::deserialize(deserializer)?.as_ref() {
12093        "ON" => Ok(true),
12094        "OFF" => Ok(false),
12095        other => Err(de::Error::invalid_value(
12096            Unexpected::Str(other),
12097            &"Value expected was either ON or OFF",
12098        )),
12099    }
12100}
12101
12102/// philips:929002375901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002375901.html)
12103///
12104/// 
12105#[cfg_attr(feature = "debug", derive(Debug))]
12106#[cfg_attr(feature = "clone", derive(Clone))]
12107#[derive(Deserialize)]
12108pub struct Zigbee929002375901 {
12109    ///Brightness of this light
12110    pub brightness: f64,
12111    ///Color temperature of this light
12112    pub color_temp: f64,
12113    ///Color temperature after cold power on of this light
12114    pub color_temp_startup: f64,
12115    ///Link quality (signal strength)
12116    pub linkquality: f64,
12117    ///Controls the behavior when the device is powered on after power loss
12118    pub power_on_behavior: Zigbee929002375901Poweronbehavior,
12119    ///Zigbee herdsman description: "On/off state of this light"
12120    ///The string values get converted into boolean with: ON = true and OFF = false
12121    #[serde(deserialize_with = "zigbee929002375901_state_deserializer")]
12122    pub state: bool,
12123    /// Optional last_seen type, set as a global zigbee2mqtt setting
12124    pub last_seen: Option<LastSeen>,
12125    /// Optional elapsed type
12126    pub elapsed: Option<u64>,
12127}
12128/// Deserialize bool from String with custom value mapping
12129fn zigbee929002375901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12130where
12131    D: Deserializer<'de>,
12132{
12133    match String::deserialize(deserializer)?.as_ref() {
12134        "ON" => Ok(true),
12135        "OFF" => Ok(false),
12136        other => Err(de::Error::invalid_value(
12137            Unexpected::Str(other),
12138            &"Value expected was either ON or OFF",
12139        )),
12140    }
12141}
12142
12143/// philips:929002376001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376001.html)
12144///
12145/// 
12146#[cfg_attr(feature = "debug", derive(Debug))]
12147#[cfg_attr(feature = "clone", derive(Clone))]
12148#[derive(Deserialize)]
12149pub struct Zigbee929002376001 {
12150    ///Brightness of this light
12151    pub brightness: f64,
12152    ///Color temperature of this light
12153    pub color_temp: f64,
12154    ///Color temperature after cold power on of this light
12155    pub color_temp_startup: f64,
12156    ///Link quality (signal strength)
12157    pub linkquality: f64,
12158    ///Controls the behavior when the device is powered on after power loss
12159    pub power_on_behavior: Zigbee929002376001Poweronbehavior,
12160    ///Zigbee herdsman description: "On/off state of this light"
12161    ///The string values get converted into boolean with: ON = true and OFF = false
12162    #[serde(deserialize_with = "zigbee929002376001_state_deserializer")]
12163    pub state: bool,
12164    /// Optional last_seen type, set as a global zigbee2mqtt setting
12165    pub last_seen: Option<LastSeen>,
12166    /// Optional elapsed type
12167    pub elapsed: Option<u64>,
12168}
12169/// Deserialize bool from String with custom value mapping
12170fn zigbee929002376001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12171where
12172    D: Deserializer<'de>,
12173{
12174    match String::deserialize(deserializer)?.as_ref() {
12175        "ON" => Ok(true),
12176        "OFF" => Ok(false),
12177        other => Err(de::Error::invalid_value(
12178            Unexpected::Str(other),
12179            &"Value expected was either ON or OFF",
12180        )),
12181    }
12182}
12183
12184/// philips:929002376101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376101.html)
12185///
12186/// 
12187#[cfg_attr(feature = "debug", derive(Debug))]
12188#[cfg_attr(feature = "clone", derive(Clone))]
12189#[derive(Deserialize)]
12190pub struct Zigbee929002376101 {
12191    ///Brightness of this light
12192    pub brightness: f64,
12193    ///Color temperature of this light
12194    pub color_temp: f64,
12195    ///Color temperature after cold power on of this light
12196    pub color_temp_startup: f64,
12197    ///Link quality (signal strength)
12198    pub linkquality: f64,
12199    ///Controls the behavior when the device is powered on after power loss
12200    pub power_on_behavior: Zigbee929002376101Poweronbehavior,
12201    ///Zigbee herdsman description: "On/off state of this light"
12202    ///The string values get converted into boolean with: ON = true and OFF = false
12203    #[serde(deserialize_with = "zigbee929002376101_state_deserializer")]
12204    pub state: bool,
12205    /// Optional last_seen type, set as a global zigbee2mqtt setting
12206    pub last_seen: Option<LastSeen>,
12207    /// Optional elapsed type
12208    pub elapsed: Option<u64>,
12209}
12210/// Deserialize bool from String with custom value mapping
12211fn zigbee929002376101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12212where
12213    D: Deserializer<'de>,
12214{
12215    match String::deserialize(deserializer)?.as_ref() {
12216        "ON" => Ok(true),
12217        "OFF" => Ok(false),
12218        other => Err(de::Error::invalid_value(
12219            Unexpected::Str(other),
12220            &"Value expected was either ON or OFF",
12221        )),
12222    }
12223}
12224
12225/// philips:929002376201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376201.html)
12226///
12227/// 
12228#[cfg_attr(feature = "debug", derive(Debug))]
12229#[cfg_attr(feature = "clone", derive(Clone))]
12230#[derive(Deserialize)]
12231pub struct Zigbee929002376201 {
12232    ///Brightness of this light
12233    pub brightness: f64,
12234    ///Color temperature of this light
12235    pub color_temp: f64,
12236    ///Color temperature after cold power on of this light
12237    pub color_temp_startup: f64,
12238    ///Link quality (signal strength)
12239    pub linkquality: f64,
12240    ///Controls the behavior when the device is powered on after power loss
12241    pub power_on_behavior: Zigbee929002376201Poweronbehavior,
12242    ///Zigbee herdsman description: "On/off state of this light"
12243    ///The string values get converted into boolean with: ON = true and OFF = false
12244    #[serde(deserialize_with = "zigbee929002376201_state_deserializer")]
12245    pub state: bool,
12246    /// Optional last_seen type, set as a global zigbee2mqtt setting
12247    pub last_seen: Option<LastSeen>,
12248    /// Optional elapsed type
12249    pub elapsed: Option<u64>,
12250}
12251/// Deserialize bool from String with custom value mapping
12252fn zigbee929002376201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12253where
12254    D: Deserializer<'de>,
12255{
12256    match String::deserialize(deserializer)?.as_ref() {
12257        "ON" => Ok(true),
12258        "OFF" => Ok(false),
12259        other => Err(de::Error::invalid_value(
12260            Unexpected::Str(other),
12261            &"Value expected was either ON or OFF",
12262        )),
12263    }
12264}
12265
12266/// philips:929002376301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376301.html)
12267///
12268/// 
12269#[cfg_attr(feature = "debug", derive(Debug))]
12270#[cfg_attr(feature = "clone", derive(Clone))]
12271#[derive(Deserialize)]
12272pub struct Zigbee929002376301 {
12273    ///Brightness of this light
12274    pub brightness: f64,
12275    ///Color temperature of this light
12276    pub color_temp: f64,
12277    ///Color temperature after cold power on of this light
12278    pub color_temp_startup: f64,
12279    ///Link quality (signal strength)
12280    pub linkquality: f64,
12281    ///Controls the behavior when the device is powered on after power loss
12282    pub power_on_behavior: Zigbee929002376301Poweronbehavior,
12283    ///Zigbee herdsman description: "On/off state of this light"
12284    ///The string values get converted into boolean with: ON = true and OFF = false
12285    #[serde(deserialize_with = "zigbee929002376301_state_deserializer")]
12286    pub state: bool,
12287    /// Optional last_seen type, set as a global zigbee2mqtt setting
12288    pub last_seen: Option<LastSeen>,
12289    /// Optional elapsed type
12290    pub elapsed: Option<u64>,
12291}
12292/// Deserialize bool from String with custom value mapping
12293fn zigbee929002376301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12294where
12295    D: Deserializer<'de>,
12296{
12297    match String::deserialize(deserializer)?.as_ref() {
12298        "ON" => Ok(true),
12299        "OFF" => Ok(false),
12300        other => Err(de::Error::invalid_value(
12301            Unexpected::Str(other),
12302            &"Value expected was either ON or OFF",
12303        )),
12304    }
12305}
12306
12307/// philips:929002376401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376401.html)
12308///
12309/// 
12310#[cfg_attr(feature = "debug", derive(Debug))]
12311#[cfg_attr(feature = "clone", derive(Clone))]
12312#[derive(Deserialize)]
12313pub struct Zigbee929002376401 {
12314    ///Brightness of this light
12315    pub brightness: f64,
12316    ///Color temperature of this light
12317    pub color_temp: f64,
12318    ///Color temperature after cold power on of this light
12319    pub color_temp_startup: f64,
12320    ///Link quality (signal strength)
12321    pub linkquality: f64,
12322    ///Controls the behavior when the device is powered on after power loss
12323    pub power_on_behavior: Zigbee929002376401Poweronbehavior,
12324    ///Zigbee herdsman description: "On/off state of this light"
12325    ///The string values get converted into boolean with: ON = true and OFF = false
12326    #[serde(deserialize_with = "zigbee929002376401_state_deserializer")]
12327    pub state: bool,
12328    /// Optional last_seen type, set as a global zigbee2mqtt setting
12329    pub last_seen: Option<LastSeen>,
12330    /// Optional elapsed type
12331    pub elapsed: Option<u64>,
12332}
12333/// Deserialize bool from String with custom value mapping
12334fn zigbee929002376401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12335where
12336    D: Deserializer<'de>,
12337{
12338    match String::deserialize(deserializer)?.as_ref() {
12339        "ON" => Ok(true),
12340        "OFF" => Ok(false),
12341        other => Err(de::Error::invalid_value(
12342            Unexpected::Str(other),
12343            &"Value expected was either ON or OFF",
12344        )),
12345    }
12346}
12347
12348/// philips:929002376501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376501.html)
12349///
12350/// 
12351#[cfg_attr(feature = "debug", derive(Debug))]
12352#[cfg_attr(feature = "clone", derive(Clone))]
12353#[derive(Deserialize)]
12354pub struct Zigbee929002376501 {
12355    ///Brightness of this light
12356    pub brightness: f64,
12357    ///Color temperature of this light
12358    pub color_temp: f64,
12359    ///Color temperature after cold power on of this light
12360    pub color_temp_startup: f64,
12361    ///Link quality (signal strength)
12362    pub linkquality: f64,
12363    ///Controls the behavior when the device is powered on after power loss
12364    pub power_on_behavior: Zigbee929002376501Poweronbehavior,
12365    ///Zigbee herdsman description: "On/off state of this light"
12366    ///The string values get converted into boolean with: ON = true and OFF = false
12367    #[serde(deserialize_with = "zigbee929002376501_state_deserializer")]
12368    pub state: bool,
12369    /// Optional last_seen type, set as a global zigbee2mqtt setting
12370    pub last_seen: Option<LastSeen>,
12371    /// Optional elapsed type
12372    pub elapsed: Option<u64>,
12373}
12374/// Deserialize bool from String with custom value mapping
12375fn zigbee929002376501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12376where
12377    D: Deserializer<'de>,
12378{
12379    match String::deserialize(deserializer)?.as_ref() {
12380        "ON" => Ok(true),
12381        "OFF" => Ok(false),
12382        other => Err(de::Error::invalid_value(
12383            Unexpected::Str(other),
12384            &"Value expected was either ON or OFF",
12385        )),
12386    }
12387}
12388
12389/// philips:929002376701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376701.html)
12390///
12391/// 
12392#[cfg_attr(feature = "debug", derive(Debug))]
12393#[cfg_attr(feature = "clone", derive(Clone))]
12394#[derive(Deserialize)]
12395pub struct Zigbee929002376701 {
12396    ///Brightness of this light
12397    pub brightness: f64,
12398    ///Color temperature of this light
12399    pub color_temp: f64,
12400    ///Color temperature after cold power on of this light
12401    pub color_temp_startup: f64,
12402    ///Link quality (signal strength)
12403    pub linkquality: f64,
12404    ///Controls the behavior when the device is powered on after power loss
12405    pub power_on_behavior: Zigbee929002376701Poweronbehavior,
12406    ///Zigbee herdsman description: "On/off state of this light"
12407    ///The string values get converted into boolean with: ON = true and OFF = false
12408    #[serde(deserialize_with = "zigbee929002376701_state_deserializer")]
12409    pub state: bool,
12410    /// Optional last_seen type, set as a global zigbee2mqtt setting
12411    pub last_seen: Option<LastSeen>,
12412    /// Optional elapsed type
12413    pub elapsed: Option<u64>,
12414}
12415/// Deserialize bool from String with custom value mapping
12416fn zigbee929002376701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12417where
12418    D: Deserializer<'de>,
12419{
12420    match String::deserialize(deserializer)?.as_ref() {
12421        "ON" => Ok(true),
12422        "OFF" => Ok(false),
12423        other => Err(de::Error::invalid_value(
12424            Unexpected::Str(other),
12425            &"Value expected was either ON or OFF",
12426        )),
12427    }
12428}
12429
12430/// philips:929002376703 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376703.html)
12431///
12432/// 
12433#[cfg_attr(feature = "debug", derive(Debug))]
12434#[cfg_attr(feature = "clone", derive(Clone))]
12435#[derive(Deserialize)]
12436pub struct Zigbee929002376703 {
12437    ///Brightness of this light
12438    pub brightness: f64,
12439    ///Color temperature of this light
12440    pub color_temp: f64,
12441    ///Color temperature after cold power on of this light
12442    pub color_temp_startup: f64,
12443    ///Link quality (signal strength)
12444    pub linkquality: f64,
12445    ///Controls the behavior when the device is powered on after power loss
12446    pub power_on_behavior: Zigbee929002376703Poweronbehavior,
12447    ///Zigbee herdsman description: "On/off state of this light"
12448    ///The string values get converted into boolean with: ON = true and OFF = false
12449    #[serde(deserialize_with = "zigbee929002376703_state_deserializer")]
12450    pub state: bool,
12451    /// Optional last_seen type, set as a global zigbee2mqtt setting
12452    pub last_seen: Option<LastSeen>,
12453    /// Optional elapsed type
12454    pub elapsed: Option<u64>,
12455}
12456/// Deserialize bool from String with custom value mapping
12457fn zigbee929002376703_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12458where
12459    D: Deserializer<'de>,
12460{
12461    match String::deserialize(deserializer)?.as_ref() {
12462        "ON" => Ok(true),
12463        "OFF" => Ok(false),
12464        other => Err(de::Error::invalid_value(
12465            Unexpected::Str(other),
12466            &"Value expected was either ON or OFF",
12467        )),
12468    }
12469}
12470
12471/// philips:929002376801 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376801.html)
12472///
12473/// 
12474#[cfg_attr(feature = "debug", derive(Debug))]
12475#[cfg_attr(feature = "clone", derive(Clone))]
12476#[derive(Deserialize)]
12477pub struct Zigbee929002376801 {
12478    ///Brightness of this light
12479    pub brightness: f64,
12480    ///Color temperature of this light
12481    pub color_temp: f64,
12482    ///Color temperature after cold power on of this light
12483    pub color_temp_startup: f64,
12484    ///Link quality (signal strength)
12485    pub linkquality: f64,
12486    ///Controls the behavior when the device is powered on after power loss
12487    pub power_on_behavior: Zigbee929002376801Poweronbehavior,
12488    ///Zigbee herdsman description: "On/off state of this light"
12489    ///The string values get converted into boolean with: ON = true and OFF = false
12490    #[serde(deserialize_with = "zigbee929002376801_state_deserializer")]
12491    pub state: bool,
12492    /// Optional last_seen type, set as a global zigbee2mqtt setting
12493    pub last_seen: Option<LastSeen>,
12494    /// Optional elapsed type
12495    pub elapsed: Option<u64>,
12496}
12497/// Deserialize bool from String with custom value mapping
12498fn zigbee929002376801_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12499where
12500    D: Deserializer<'de>,
12501{
12502    match String::deserialize(deserializer)?.as_ref() {
12503        "ON" => Ok(true),
12504        "OFF" => Ok(false),
12505        other => Err(de::Error::invalid_value(
12506            Unexpected::Str(other),
12507            &"Value expected was either ON or OFF",
12508        )),
12509    }
12510}
12511
12512/// philips:929002376803 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376803.html)
12513///
12514/// 
12515#[cfg_attr(feature = "debug", derive(Debug))]
12516#[cfg_attr(feature = "clone", derive(Clone))]
12517#[derive(Deserialize)]
12518pub struct Zigbee929002376803 {
12519    ///Brightness of this light
12520    pub brightness: f64,
12521    ///Color temperature of this light
12522    pub color_temp: f64,
12523    ///Color temperature after cold power on of this light
12524    pub color_temp_startup: f64,
12525    ///Link quality (signal strength)
12526    pub linkquality: f64,
12527    ///Controls the behavior when the device is powered on after power loss
12528    pub power_on_behavior: Zigbee929002376803Poweronbehavior,
12529    ///Zigbee herdsman description: "On/off state of this light"
12530    ///The string values get converted into boolean with: ON = true and OFF = false
12531    #[serde(deserialize_with = "zigbee929002376803_state_deserializer")]
12532    pub state: bool,
12533    /// Optional last_seen type, set as a global zigbee2mqtt setting
12534    pub last_seen: Option<LastSeen>,
12535    /// Optional elapsed type
12536    pub elapsed: Option<u64>,
12537}
12538/// Deserialize bool from String with custom value mapping
12539fn zigbee929002376803_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12540where
12541    D: Deserializer<'de>,
12542{
12543    match String::deserialize(deserializer)?.as_ref() {
12544        "ON" => Ok(true),
12545        "OFF" => Ok(false),
12546        other => Err(de::Error::invalid_value(
12547            Unexpected::Str(other),
12548            &"Value expected was either ON or OFF",
12549        )),
12550    }
12551}
12552
12553/// philips:929002376901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002376901.html)
12554///
12555/// 
12556#[cfg_attr(feature = "debug", derive(Debug))]
12557#[cfg_attr(feature = "clone", derive(Clone))]
12558#[derive(Deserialize)]
12559pub struct Zigbee929002376901 {
12560    ///Brightness of this light
12561    pub brightness: f64,
12562    ///Color temperature of this light
12563    pub color_temp: f64,
12564    ///Color temperature after cold power on of this light
12565    pub color_temp_startup: f64,
12566    ///Link quality (signal strength)
12567    pub linkquality: f64,
12568    ///Controls the behavior when the device is powered on after power loss
12569    pub power_on_behavior: Zigbee929002376901Poweronbehavior,
12570    ///Zigbee herdsman description: "On/off state of this light"
12571    ///The string values get converted into boolean with: ON = true and OFF = false
12572    #[serde(deserialize_with = "zigbee929002376901_state_deserializer")]
12573    pub state: bool,
12574    /// Optional last_seen type, set as a global zigbee2mqtt setting
12575    pub last_seen: Option<LastSeen>,
12576    /// Optional elapsed type
12577    pub elapsed: Option<u64>,
12578}
12579/// Deserialize bool from String with custom value mapping
12580fn zigbee929002376901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12581where
12582    D: Deserializer<'de>,
12583{
12584    match String::deserialize(deserializer)?.as_ref() {
12585        "ON" => Ok(true),
12586        "OFF" => Ok(false),
12587        other => Err(de::Error::invalid_value(
12588            Unexpected::Str(other),
12589            &"Value expected was either ON or OFF",
12590        )),
12591    }
12592}
12593
12594/// philips:929002398602 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002398602.html)
12595///
12596/// 
12597#[cfg_attr(feature = "debug", derive(Debug))]
12598#[cfg_attr(feature = "clone", derive(Clone))]
12599#[derive(Deserialize)]
12600pub struct Zigbee929002398602 {
12601    ///Triggered action (e.g. a button click)
12602    pub action: Zigbee929002398602Action,
12603    ///Remaining battery in %, can take up to 24 hours before reported.
12604    pub battery: f64,
12605    ///Link quality (signal strength)
12606    pub linkquality: f64,
12607    /// Optional last_seen type, set as a global zigbee2mqtt setting
12608    pub last_seen: Option<LastSeen>,
12609    /// Optional elapsed type
12610    pub elapsed: Option<u64>,
12611}/// philips:929002401201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002401201.html)
12612///
12613/// 
12614#[cfg_attr(feature = "debug", derive(Debug))]
12615#[cfg_attr(feature = "clone", derive(Clone))]
12616#[derive(Deserialize)]
12617pub struct Zigbee929002401201 {
12618    ///Brightness of this light
12619    pub brightness: f64,
12620    ///Color temperature of this light
12621    pub color_temp: f64,
12622    ///Color temperature after cold power on of this light
12623    pub color_temp_startup: f64,
12624    ///Link quality (signal strength)
12625    pub linkquality: f64,
12626    ///Controls the behavior when the device is powered on after power loss
12627    pub power_on_behavior: Zigbee929002401201Poweronbehavior,
12628    ///Zigbee herdsman description: "On/off state of this light"
12629    ///The string values get converted into boolean with: ON = true and OFF = false
12630    #[serde(deserialize_with = "zigbee929002401201_state_deserializer")]
12631    pub state: bool,
12632    /// Optional last_seen type, set as a global zigbee2mqtt setting
12633    pub last_seen: Option<LastSeen>,
12634    /// Optional elapsed type
12635    pub elapsed: Option<u64>,
12636}
12637/// Deserialize bool from String with custom value mapping
12638fn zigbee929002401201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12639where
12640    D: Deserializer<'de>,
12641{
12642    match String::deserialize(deserializer)?.as_ref() {
12643        "ON" => Ok(true),
12644        "OFF" => Ok(false),
12645        other => Err(de::Error::invalid_value(
12646            Unexpected::Str(other),
12647            &"Value expected was either ON or OFF",
12648        )),
12649    }
12650}
12651
12652/// philips:929002422702 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002422702.html)
12653///
12654/// 
12655#[cfg_attr(feature = "debug", derive(Debug))]
12656#[cfg_attr(feature = "clone", derive(Clone))]
12657#[derive(Deserialize)]
12658pub struct Zigbee929002422702 {
12659    ///Brightness of this light
12660    pub brightness: f64,
12661    ///Color temperature of this light
12662    pub color_temp: f64,
12663    ///Color temperature after cold power on of this light
12664    pub color_temp_startup: f64,
12665    ///Link quality (signal strength)
12666    pub linkquality: f64,
12667    ///Controls the behavior when the device is powered on after power loss
12668    pub power_on_behavior: Zigbee929002422702Poweronbehavior,
12669    ///Zigbee herdsman description: "On/off state of this light"
12670    ///The string values get converted into boolean with: ON = true and OFF = false
12671    #[serde(deserialize_with = "zigbee929002422702_state_deserializer")]
12672    pub state: bool,
12673    /// Optional last_seen type, set as a global zigbee2mqtt setting
12674    pub last_seen: Option<LastSeen>,
12675    /// Optional elapsed type
12676    pub elapsed: Option<u64>,
12677}
12678/// Deserialize bool from String with custom value mapping
12679fn zigbee929002422702_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12680where
12681    D: Deserializer<'de>,
12682{
12683    match String::deserialize(deserializer)?.as_ref() {
12684        "ON" => Ok(true),
12685        "OFF" => Ok(false),
12686        other => Err(de::Error::invalid_value(
12687            Unexpected::Str(other),
12688            &"Value expected was either ON or OFF",
12689        )),
12690    }
12691}
12692
12693/// philips:929002422801 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002422801.html)
12694///
12695/// 
12696#[cfg_attr(feature = "debug", derive(Debug))]
12697#[cfg_attr(feature = "clone", derive(Clone))]
12698#[derive(Deserialize)]
12699pub struct Zigbee929002422801 {
12700    ///Brightness of this light
12701    pub brightness: f64,
12702    ///Color temperature of this light
12703    pub color_temp: f64,
12704    ///Color temperature after cold power on of this light
12705    pub color_temp_startup: f64,
12706    ///Link quality (signal strength)
12707    pub linkquality: f64,
12708    ///Controls the behavior when the device is powered on after power loss
12709    pub power_on_behavior: Zigbee929002422801Poweronbehavior,
12710    ///Zigbee herdsman description: "On/off state of this light"
12711    ///The string values get converted into boolean with: ON = true and OFF = false
12712    #[serde(deserialize_with = "zigbee929002422801_state_deserializer")]
12713    pub state: bool,
12714    /// Optional last_seen type, set as a global zigbee2mqtt setting
12715    pub last_seen: Option<LastSeen>,
12716    /// Optional elapsed type
12717    pub elapsed: Option<u64>,
12718}
12719/// Deserialize bool from String with custom value mapping
12720fn zigbee929002422801_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12721where
12722    D: Deserializer<'de>,
12723{
12724    match String::deserialize(deserializer)?.as_ref() {
12725        "ON" => Ok(true),
12726        "OFF" => Ok(false),
12727        other => Err(de::Error::invalid_value(
12728            Unexpected::Str(other),
12729            &"Value expected was either ON or OFF",
12730        )),
12731    }
12732}
12733
12734/// philips:929002422901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002422901.html)
12735///
12736/// 
12737#[cfg_attr(feature = "debug", derive(Debug))]
12738#[cfg_attr(feature = "clone", derive(Clone))]
12739#[derive(Deserialize)]
12740pub struct Zigbee929002422901 {
12741    ///Brightness of this light
12742    pub brightness: f64,
12743    ///Color temperature of this light
12744    pub color_temp: f64,
12745    ///Color temperature after cold power on of this light
12746    pub color_temp_startup: f64,
12747    ///Link quality (signal strength)
12748    pub linkquality: f64,
12749    ///Controls the behavior when the device is powered on after power loss
12750    pub power_on_behavior: Zigbee929002422901Poweronbehavior,
12751    ///Zigbee herdsman description: "On/off state of this light"
12752    ///The string values get converted into boolean with: ON = true and OFF = false
12753    #[serde(deserialize_with = "zigbee929002422901_state_deserializer")]
12754    pub state: bool,
12755    /// Optional last_seen type, set as a global zigbee2mqtt setting
12756    pub last_seen: Option<LastSeen>,
12757    /// Optional elapsed type
12758    pub elapsed: Option<u64>,
12759}
12760/// Deserialize bool from String with custom value mapping
12761fn zigbee929002422901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12762where
12763    D: Deserializer<'de>,
12764{
12765    match String::deserialize(deserializer)?.as_ref() {
12766        "ON" => Ok(true),
12767        "OFF" => Ok(false),
12768        other => Err(de::Error::invalid_value(
12769            Unexpected::Str(other),
12770            &"Value expected was either ON or OFF",
12771        )),
12772    }
12773}
12774
12775/// philips:9290024406 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024406.html)
12776///
12777/// 
12778#[cfg_attr(feature = "debug", derive(Debug))]
12779#[cfg_attr(feature = "clone", derive(Clone))]
12780#[derive(Deserialize)]
12781pub struct Zigbee9290024406 {
12782    ///Brightness of this light
12783    pub brightness: f64,
12784    ///Link quality (signal strength)
12785    pub linkquality: f64,
12786    ///Controls the behavior when the device is powered on after power loss
12787    pub power_on_behavior: Zigbee9290024406Poweronbehavior,
12788    ///Zigbee herdsman description: "On/off state of this light"
12789    ///The string values get converted into boolean with: ON = true and OFF = false
12790    #[serde(deserialize_with = "zigbee9290024406_state_deserializer")]
12791    pub state: bool,
12792    /// Optional last_seen type, set as a global zigbee2mqtt setting
12793    pub last_seen: Option<LastSeen>,
12794    /// Optional elapsed type
12795    pub elapsed: Option<u64>,
12796}
12797/// Deserialize bool from String with custom value mapping
12798fn zigbee9290024406_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12799where
12800    D: Deserializer<'de>,
12801{
12802    match String::deserialize(deserializer)?.as_ref() {
12803        "ON" => Ok(true),
12804        "OFF" => Ok(false),
12805        other => Err(de::Error::invalid_value(
12806            Unexpected::Str(other),
12807            &"Value expected was either ON or OFF",
12808        )),
12809    }
12810}
12811
12812/// philips:9290024426 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024426.html)
12813///
12814/// 
12815#[cfg_attr(feature = "debug", derive(Debug))]
12816#[cfg_attr(feature = "clone", derive(Clone))]
12817#[derive(Deserialize)]
12818pub struct Zigbee9290024426 {
12819    ///Link quality (signal strength)
12820    pub linkquality: f64,
12821    ///Zigbee herdsman description: "On/off state of the switch"
12822    ///The string values get converted into boolean with: ON = true and OFF = false
12823    #[serde(deserialize_with = "zigbee9290024426_state_deserializer")]
12824    pub state: bool,
12825    /// Optional last_seen type, set as a global zigbee2mqtt setting
12826    pub last_seen: Option<LastSeen>,
12827    /// Optional elapsed type
12828    pub elapsed: Option<u64>,
12829}
12830/// Deserialize bool from String with custom value mapping
12831fn zigbee9290024426_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12832where
12833    D: Deserializer<'de>,
12834{
12835    match String::deserialize(deserializer)?.as_ref() {
12836        "ON" => Ok(true),
12837        "OFF" => Ok(false),
12838        other => Err(de::Error::invalid_value(
12839            Unexpected::Str(other),
12840            &"Value expected was either ON or OFF",
12841        )),
12842    }
12843}
12844
12845/// philips:92900244777 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/92900244777.html)
12846///
12847/// 
12848#[cfg_attr(feature = "debug", derive(Debug))]
12849#[cfg_attr(feature = "clone", derive(Clone))]
12850#[derive(Deserialize)]
12851pub struct Zigbee92900244777 {
12852    ///Brightness of this light
12853    pub brightness: f64,
12854    ///Color temperature of this light
12855    pub color_temp: f64,
12856    ///Color temperature after cold power on of this light
12857    pub color_temp_startup: f64,
12858    ///Link quality (signal strength)
12859    pub linkquality: f64,
12860    ///Controls the behavior when the device is powered on after power loss
12861    pub power_on_behavior: Zigbee92900244777Poweronbehavior,
12862    ///Zigbee herdsman description: "On/off state of this light"
12863    ///The string values get converted into boolean with: ON = true and OFF = false
12864    #[serde(deserialize_with = "zigbee92900244777_state_deserializer")]
12865    pub state: bool,
12866    /// Optional last_seen type, set as a global zigbee2mqtt setting
12867    pub last_seen: Option<LastSeen>,
12868    /// Optional elapsed type
12869    pub elapsed: Option<u64>,
12870}
12871/// Deserialize bool from String with custom value mapping
12872fn zigbee92900244777_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12873where
12874    D: Deserializer<'de>,
12875{
12876    match String::deserialize(deserializer)?.as_ref() {
12877        "ON" => Ok(true),
12878        "OFF" => Ok(false),
12879        other => Err(de::Error::invalid_value(
12880            Unexpected::Str(other),
12881            &"Value expected was either ON or OFF",
12882        )),
12883    }
12884}
12885
12886/// philips:929002459201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002459201.html)
12887///
12888/// 
12889#[cfg_attr(feature = "debug", derive(Debug))]
12890#[cfg_attr(feature = "clone", derive(Clone))]
12891#[derive(Deserialize)]
12892pub struct Zigbee929002459201 {
12893    ///Brightness of this light
12894    pub brightness: f64,
12895    ///Link quality (signal strength)
12896    pub linkquality: f64,
12897    ///Controls the behavior when the device is powered on after power loss
12898    pub power_on_behavior: Zigbee929002459201Poweronbehavior,
12899    ///Zigbee herdsman description: "On/off state of this light"
12900    ///The string values get converted into boolean with: ON = true and OFF = false
12901    #[serde(deserialize_with = "zigbee929002459201_state_deserializer")]
12902    pub state: bool,
12903    /// Optional last_seen type, set as a global zigbee2mqtt setting
12904    pub last_seen: Option<LastSeen>,
12905    /// Optional elapsed type
12906    pub elapsed: Option<u64>,
12907}
12908/// Deserialize bool from String with custom value mapping
12909fn zigbee929002459201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12910where
12911    D: Deserializer<'de>,
12912{
12913    match String::deserialize(deserializer)?.as_ref() {
12914        "ON" => Ok(true),
12915        "OFF" => Ok(false),
12916        other => Err(de::Error::invalid_value(
12917            Unexpected::Str(other),
12918            &"Value expected was either ON or OFF",
12919        )),
12920    }
12921}
12922
12923/// philips:9290024683 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024683.html)
12924///
12925/// 
12926#[cfg_attr(feature = "debug", derive(Debug))]
12927#[cfg_attr(feature = "clone", derive(Clone))]
12928#[derive(Deserialize)]
12929pub struct Zigbee9290024683 {
12930    ///Brightness of this light
12931    pub brightness: f64,
12932    ///Color temperature of this light
12933    pub color_temp: f64,
12934    ///Color temperature after cold power on of this light
12935    pub color_temp_startup: f64,
12936    ///Link quality (signal strength)
12937    pub linkquality: f64,
12938    ///Controls the behavior when the device is powered on after power loss
12939    pub power_on_behavior: Zigbee9290024683Poweronbehavior,
12940    ///Zigbee herdsman description: "On/off state of this light"
12941    ///The string values get converted into boolean with: ON = true and OFF = false
12942    #[serde(deserialize_with = "zigbee9290024683_state_deserializer")]
12943    pub state: bool,
12944    /// Optional last_seen type, set as a global zigbee2mqtt setting
12945    pub last_seen: Option<LastSeen>,
12946    /// Optional elapsed type
12947    pub elapsed: Option<u64>,
12948}
12949/// Deserialize bool from String with custom value mapping
12950fn zigbee9290024683_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12951where
12952    D: Deserializer<'de>,
12953{
12954    match String::deserialize(deserializer)?.as_ref() {
12955        "ON" => Ok(true),
12956        "OFF" => Ok(false),
12957        other => Err(de::Error::invalid_value(
12958            Unexpected::Str(other),
12959            &"Value expected was either ON or OFF",
12960        )),
12961    }
12962}
12963
12964/// philips:9290024684 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024684.html)
12965///
12966/// 
12967#[cfg_attr(feature = "debug", derive(Debug))]
12968#[cfg_attr(feature = "clone", derive(Clone))]
12969#[derive(Deserialize)]
12970pub struct Zigbee9290024684 {
12971    ///Brightness of this light
12972    pub brightness: f64,
12973    ///Color temperature of this light
12974    pub color_temp: f64,
12975    ///Color temperature after cold power on of this light
12976    pub color_temp_startup: f64,
12977    ///Link quality (signal strength)
12978    pub linkquality: f64,
12979    ///Controls the behavior when the device is powered on after power loss
12980    pub power_on_behavior: Zigbee9290024684Poweronbehavior,
12981    ///Zigbee herdsman description: "On/off state of this light"
12982    ///The string values get converted into boolean with: ON = true and OFF = false
12983    #[serde(deserialize_with = "zigbee9290024684_state_deserializer")]
12984    pub state: bool,
12985    /// Optional last_seen type, set as a global zigbee2mqtt setting
12986    pub last_seen: Option<LastSeen>,
12987    /// Optional elapsed type
12988    pub elapsed: Option<u64>,
12989}
12990/// Deserialize bool from String with custom value mapping
12991fn zigbee9290024684_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
12992where
12993    D: Deserializer<'de>,
12994{
12995    match String::deserialize(deserializer)?.as_ref() {
12996        "ON" => Ok(true),
12997        "OFF" => Ok(false),
12998        other => Err(de::Error::invalid_value(
12999            Unexpected::Str(other),
13000            &"Value expected was either ON or OFF",
13001        )),
13002    }
13003}
13004
13005/// philips:9290024687 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024687.html)
13006///
13007/// 
13008#[cfg_attr(feature = "debug", derive(Debug))]
13009#[cfg_attr(feature = "clone", derive(Clone))]
13010#[derive(Deserialize)]
13011pub struct Zigbee9290024687 {
13012    ///Brightness of this light
13013    pub brightness: f64,
13014    ///Color temperature of this light
13015    pub color_temp: f64,
13016    ///Color temperature after cold power on of this light
13017    pub color_temp_startup: f64,
13018    ///Link quality (signal strength)
13019    pub linkquality: f64,
13020    ///Controls the behavior when the device is powered on after power loss
13021    pub power_on_behavior: Zigbee9290024687Poweronbehavior,
13022    ///Zigbee herdsman description: "On/off state of this light"
13023    ///The string values get converted into boolean with: ON = true and OFF = false
13024    #[serde(deserialize_with = "zigbee9290024687_state_deserializer")]
13025    pub state: bool,
13026    /// Optional last_seen type, set as a global zigbee2mqtt setting
13027    pub last_seen: Option<LastSeen>,
13028    /// Optional elapsed type
13029    pub elapsed: Option<u64>,
13030}
13031/// Deserialize bool from String with custom value mapping
13032fn zigbee9290024687_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13033where
13034    D: Deserializer<'de>,
13035{
13036    match String::deserialize(deserializer)?.as_ref() {
13037        "ON" => Ok(true),
13038        "OFF" => Ok(false),
13039        other => Err(de::Error::invalid_value(
13040            Unexpected::Str(other),
13041            &"Value expected was either ON or OFF",
13042        )),
13043    }
13044}
13045
13046/// philips:9290024688 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024688.html)
13047///
13048/// 
13049#[cfg_attr(feature = "debug", derive(Debug))]
13050#[cfg_attr(feature = "clone", derive(Clone))]
13051#[derive(Deserialize)]
13052pub struct Zigbee9290024688 {
13053    ///Brightness of this light
13054    pub brightness: f64,
13055    ///Color temperature of this light
13056    pub color_temp: f64,
13057    ///Color temperature after cold power on of this light
13058    pub color_temp_startup: f64,
13059    ///Link quality (signal strength)
13060    pub linkquality: f64,
13061    ///Controls the behavior when the device is powered on after power loss
13062    pub power_on_behavior: Zigbee9290024688Poweronbehavior,
13063    ///Zigbee herdsman description: "On/off state of this light"
13064    ///The string values get converted into boolean with: ON = true and OFF = false
13065    #[serde(deserialize_with = "zigbee9290024688_state_deserializer")]
13066    pub state: bool,
13067    /// Optional last_seen type, set as a global zigbee2mqtt setting
13068    pub last_seen: Option<LastSeen>,
13069    /// Optional elapsed type
13070    pub elapsed: Option<u64>,
13071}
13072/// Deserialize bool from String with custom value mapping
13073fn zigbee9290024688_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13074where
13075    D: Deserializer<'de>,
13076{
13077    match String::deserialize(deserializer)?.as_ref() {
13078        "ON" => Ok(true),
13079        "OFF" => Ok(false),
13080        other => Err(de::Error::invalid_value(
13081            Unexpected::Str(other),
13082            &"Value expected was either ON or OFF",
13083        )),
13084    }
13085}
13086
13087/// philips:9290024691 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024691.html)
13088///
13089/// 
13090#[cfg_attr(feature = "debug", derive(Debug))]
13091#[cfg_attr(feature = "clone", derive(Clone))]
13092#[derive(Deserialize)]
13093pub struct Zigbee9290024691 {
13094    ///Brightness of this light
13095    pub brightness: f64,
13096    ///Link quality (signal strength)
13097    pub linkquality: f64,
13098    ///Controls the behavior when the device is powered on after power loss
13099    pub power_on_behavior: Zigbee9290024691Poweronbehavior,
13100    ///Zigbee herdsman description: "On/off state of this light"
13101    ///The string values get converted into boolean with: ON = true and OFF = false
13102    #[serde(deserialize_with = "zigbee9290024691_state_deserializer")]
13103    pub state: bool,
13104    /// Optional last_seen type, set as a global zigbee2mqtt setting
13105    pub last_seen: Option<LastSeen>,
13106    /// Optional elapsed type
13107    pub elapsed: Option<u64>,
13108}
13109/// Deserialize bool from String with custom value mapping
13110fn zigbee9290024691_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13111where
13112    D: Deserializer<'de>,
13113{
13114    match String::deserialize(deserializer)?.as_ref() {
13115        "ON" => Ok(true),
13116        "OFF" => Ok(false),
13117        other => Err(de::Error::invalid_value(
13118            Unexpected::Str(other),
13119            &"Value expected was either ON or OFF",
13120        )),
13121    }
13122}
13123
13124/// philips:9290024691A [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024691A.html)
13125///
13126/// 
13127#[cfg_attr(feature = "debug", derive(Debug))]
13128#[cfg_attr(feature = "clone", derive(Clone))]
13129#[derive(Deserialize)]
13130pub struct Zigbee9290024691a {
13131    ///Brightness of this light
13132    pub brightness: f64,
13133    ///Link quality (signal strength)
13134    pub linkquality: f64,
13135    ///Controls the behavior when the device is powered on after power loss
13136    pub power_on_behavior: Zigbee9290024691aPoweronbehavior,
13137    ///Zigbee herdsman description: "On/off state of this light"
13138    ///The string values get converted into boolean with: ON = true and OFF = false
13139    #[serde(deserialize_with = "zigbee9290024691a_state_deserializer")]
13140    pub state: bool,
13141    /// Optional last_seen type, set as a global zigbee2mqtt setting
13142    pub last_seen: Option<LastSeen>,
13143    /// Optional elapsed type
13144    pub elapsed: Option<u64>,
13145}
13146/// Deserialize bool from String with custom value mapping
13147fn zigbee9290024691a_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13148where
13149    D: Deserializer<'de>,
13150{
13151    match String::deserialize(deserializer)?.as_ref() {
13152        "ON" => Ok(true),
13153        "OFF" => Ok(false),
13154        other => Err(de::Error::invalid_value(
13155            Unexpected::Str(other),
13156            &"Value expected was either ON or OFF",
13157        )),
13158    }
13159}
13160
13161/// philips:929002469202 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002469202.html)
13162///
13163/// 
13164#[cfg_attr(feature = "debug", derive(Debug))]
13165#[cfg_attr(feature = "clone", derive(Clone))]
13166#[derive(Deserialize)]
13167pub struct Zigbee929002469202 {
13168    ///Brightness of this light
13169    pub brightness: f64,
13170    ///Link quality (signal strength)
13171    pub linkquality: f64,
13172    ///Controls the behavior when the device is powered on after power loss
13173    pub power_on_behavior: Zigbee929002469202Poweronbehavior,
13174    ///Zigbee herdsman description: "On/off state of this light"
13175    ///The string values get converted into boolean with: ON = true and OFF = false
13176    #[serde(deserialize_with = "zigbee929002469202_state_deserializer")]
13177    pub state: bool,
13178    /// Optional last_seen type, set as a global zigbee2mqtt setting
13179    pub last_seen: Option<LastSeen>,
13180    /// Optional elapsed type
13181    pub elapsed: Option<u64>,
13182}
13183/// Deserialize bool from String with custom value mapping
13184fn zigbee929002469202_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13185where
13186    D: Deserializer<'de>,
13187{
13188    match String::deserialize(deserializer)?.as_ref() {
13189        "ON" => Ok(true),
13190        "OFF" => Ok(false),
13191        other => Err(de::Error::invalid_value(
13192            Unexpected::Str(other),
13193            &"Value expected was either ON or OFF",
13194        )),
13195    }
13196}
13197
13198/// philips:929002469216 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002469216.html)
13199///
13200/// 
13201#[cfg_attr(feature = "debug", derive(Debug))]
13202#[cfg_attr(feature = "clone", derive(Clone))]
13203#[derive(Deserialize)]
13204pub struct Zigbee929002469216 {
13205    ///Brightness of this light
13206    pub brightness: f64,
13207    ///Link quality (signal strength)
13208    pub linkquality: f64,
13209    ///Controls the behavior when the device is powered on after power loss
13210    pub power_on_behavior: Zigbee929002469216Poweronbehavior,
13211    ///Zigbee herdsman description: "On/off state of this light"
13212    ///The string values get converted into boolean with: ON = true and OFF = false
13213    #[serde(deserialize_with = "zigbee929002469216_state_deserializer")]
13214    pub state: bool,
13215    /// Optional last_seen type, set as a global zigbee2mqtt setting
13216    pub last_seen: Option<LastSeen>,
13217    /// Optional elapsed type
13218    pub elapsed: Option<u64>,
13219}
13220/// Deserialize bool from String with custom value mapping
13221fn zigbee929002469216_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13222where
13223    D: Deserializer<'de>,
13224{
13225    match String::deserialize(deserializer)?.as_ref() {
13226        "ON" => Ok(true),
13227        "OFF" => Ok(false),
13228        other => Err(de::Error::invalid_value(
13229            Unexpected::Str(other),
13230            &"Value expected was either ON or OFF",
13231        )),
13232    }
13233}
13234
13235/// philips:9290024693 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024693.html)
13236///
13237/// 
13238#[cfg_attr(feature = "debug", derive(Debug))]
13239#[cfg_attr(feature = "clone", derive(Clone))]
13240#[derive(Deserialize)]
13241pub struct Zigbee9290024693 {
13242    ///Brightness of this light
13243    pub brightness: f64,
13244    ///Link quality (signal strength)
13245    pub linkquality: f64,
13246    ///Controls the behavior when the device is powered on after power loss
13247    pub power_on_behavior: Zigbee9290024693Poweronbehavior,
13248    ///Zigbee herdsman description: "On/off state of this light"
13249    ///The string values get converted into boolean with: ON = true and OFF = false
13250    #[serde(deserialize_with = "zigbee9290024693_state_deserializer")]
13251    pub state: bool,
13252    /// Optional last_seen type, set as a global zigbee2mqtt setting
13253    pub last_seen: Option<LastSeen>,
13254    /// Optional elapsed type
13255    pub elapsed: Option<u64>,
13256}
13257/// Deserialize bool from String with custom value mapping
13258fn zigbee9290024693_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13259where
13260    D: Deserializer<'de>,
13261{
13262    match String::deserialize(deserializer)?.as_ref() {
13263        "ON" => Ok(true),
13264        "OFF" => Ok(false),
13265        other => Err(de::Error::invalid_value(
13266            Unexpected::Str(other),
13267            &"Value expected was either ON or OFF",
13268        )),
13269    }
13270}
13271
13272/// philips:929002471601 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002471601.html)
13273///
13274/// 
13275#[cfg_attr(feature = "debug", derive(Debug))]
13276#[cfg_attr(feature = "clone", derive(Clone))]
13277#[derive(Deserialize)]
13278pub struct Zigbee929002471601 {
13279    ///Brightness of this light
13280    pub brightness: f64,
13281    ///Color temperature of this light
13282    pub color_temp: f64,
13283    ///Color temperature after cold power on of this light
13284    pub color_temp_startup: f64,
13285    ///Link quality (signal strength)
13286    pub linkquality: f64,
13287    ///Controls the behavior when the device is powered on after power loss
13288    pub power_on_behavior: Zigbee929002471601Poweronbehavior,
13289    ///Zigbee herdsman description: "On/off state of this light"
13290    ///The string values get converted into boolean with: ON = true and OFF = false
13291    #[serde(deserialize_with = "zigbee929002471601_state_deserializer")]
13292    pub state: bool,
13293    /// Optional last_seen type, set as a global zigbee2mqtt setting
13294    pub last_seen: Option<LastSeen>,
13295    /// Optional elapsed type
13296    pub elapsed: Option<u64>,
13297}
13298/// Deserialize bool from String with custom value mapping
13299fn zigbee929002471601_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13300where
13301    D: Deserializer<'de>,
13302{
13303    match String::deserialize(deserializer)?.as_ref() {
13304        "ON" => Ok(true),
13305        "OFF" => Ok(false),
13306        other => Err(de::Error::invalid_value(
13307            Unexpected::Str(other),
13308            &"Value expected was either ON or OFF",
13309        )),
13310    }
13311}
13312
13313/// philips:9290024717 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024717.html)
13314///
13315/// 
13316#[cfg_attr(feature = "debug", derive(Debug))]
13317#[cfg_attr(feature = "clone", derive(Clone))]
13318#[derive(Deserialize)]
13319pub struct Zigbee9290024717 {
13320    ///Brightness of this light
13321    pub brightness: f64,
13322    ///Color temperature of this light
13323    pub color_temp: f64,
13324    ///Color temperature after cold power on of this light
13325    pub color_temp_startup: f64,
13326    ///Link quality (signal strength)
13327    pub linkquality: f64,
13328    ///Controls the behavior when the device is powered on after power loss
13329    pub power_on_behavior: Zigbee9290024717Poweronbehavior,
13330    ///Zigbee herdsman description: "On/off state of this light"
13331    ///The string values get converted into boolean with: ON = true and OFF = false
13332    #[serde(deserialize_with = "zigbee9290024717_state_deserializer")]
13333    pub state: bool,
13334    /// Optional last_seen type, set as a global zigbee2mqtt setting
13335    pub last_seen: Option<LastSeen>,
13336    /// Optional elapsed type
13337    pub elapsed: Option<u64>,
13338}
13339/// Deserialize bool from String with custom value mapping
13340fn zigbee9290024717_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13341where
13342    D: Deserializer<'de>,
13343{
13344    match String::deserialize(deserializer)?.as_ref() {
13345        "ON" => Ok(true),
13346        "OFF" => Ok(false),
13347        other => Err(de::Error::invalid_value(
13348            Unexpected::Str(other),
13349            &"Value expected was either ON or OFF",
13350        )),
13351    }
13352}
13353
13354/// philips:929002471901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002471901.html)
13355///
13356/// 
13357#[cfg_attr(feature = "debug", derive(Debug))]
13358#[cfg_attr(feature = "clone", derive(Clone))]
13359#[derive(Deserialize)]
13360pub struct Zigbee929002471901 {
13361    ///Brightness of this light
13362    pub brightness: f64,
13363    ///Color temperature of this light
13364    pub color_temp: f64,
13365    ///Color temperature after cold power on of this light
13366    pub color_temp_startup: f64,
13367    ///Link quality (signal strength)
13368    pub linkquality: f64,
13369    ///Controls the behavior when the device is powered on after power loss
13370    pub power_on_behavior: Zigbee929002471901Poweronbehavior,
13371    ///Zigbee herdsman description: "On/off state of this light"
13372    ///The string values get converted into boolean with: ON = true and OFF = false
13373    #[serde(deserialize_with = "zigbee929002471901_state_deserializer")]
13374    pub state: bool,
13375    /// Optional last_seen type, set as a global zigbee2mqtt setting
13376    pub last_seen: Option<LastSeen>,
13377    /// Optional elapsed type
13378    pub elapsed: Option<u64>,
13379}
13380/// Deserialize bool from String with custom value mapping
13381fn zigbee929002471901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13382where
13383    D: Deserializer<'de>,
13384{
13385    match String::deserialize(deserializer)?.as_ref() {
13386        "ON" => Ok(true),
13387        "OFF" => Ok(false),
13388        other => Err(de::Error::invalid_value(
13389            Unexpected::Str(other),
13390            &"Value expected was either ON or OFF",
13391        )),
13392    }
13393}
13394
13395/// philips:929002477901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002477901.html)
13396///
13397/// 
13398#[cfg_attr(feature = "debug", derive(Debug))]
13399#[cfg_attr(feature = "clone", derive(Clone))]
13400#[derive(Deserialize)]
13401pub struct Zigbee929002477901 {
13402    ///Brightness of this light
13403    pub brightness: f64,
13404    ///Color temperature of this light
13405    pub color_temp: f64,
13406    ///Color temperature after cold power on of this light
13407    pub color_temp_startup: f64,
13408    ///Link quality (signal strength)
13409    pub linkquality: f64,
13410    ///Controls the behavior when the device is powered on after power loss
13411    pub power_on_behavior: Zigbee929002477901Poweronbehavior,
13412    ///Zigbee herdsman description: "On/off state of this light"
13413    ///The string values get converted into boolean with: ON = true and OFF = false
13414    #[serde(deserialize_with = "zigbee929002477901_state_deserializer")]
13415    pub state: bool,
13416    /// Optional last_seen type, set as a global zigbee2mqtt setting
13417    pub last_seen: Option<LastSeen>,
13418    /// Optional elapsed type
13419    pub elapsed: Option<u64>,
13420}
13421/// Deserialize bool from String with custom value mapping
13422fn zigbee929002477901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13423where
13424    D: Deserializer<'de>,
13425{
13426    match String::deserialize(deserializer)?.as_ref() {
13427        "ON" => Ok(true),
13428        "OFF" => Ok(false),
13429        other => Err(de::Error::invalid_value(
13430            Unexpected::Str(other),
13431            &"Value expected was either ON or OFF",
13432        )),
13433    }
13434}
13435
13436/// philips:9290024782 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024782.html)
13437///
13438/// 
13439#[cfg_attr(feature = "debug", derive(Debug))]
13440#[cfg_attr(feature = "clone", derive(Clone))]
13441#[derive(Deserialize)]
13442pub struct Zigbee9290024782 {
13443    ///Brightness of this light
13444    pub brightness: f64,
13445    ///Link quality (signal strength)
13446    pub linkquality: f64,
13447    ///Controls the behavior when the device is powered on after power loss
13448    pub power_on_behavior: Zigbee9290024782Poweronbehavior,
13449    ///Zigbee herdsman description: "On/off state of this light"
13450    ///The string values get converted into boolean with: ON = true and OFF = false
13451    #[serde(deserialize_with = "zigbee9290024782_state_deserializer")]
13452    pub state: bool,
13453    /// Optional last_seen type, set as a global zigbee2mqtt setting
13454    pub last_seen: Option<LastSeen>,
13455    /// Optional elapsed type
13456    pub elapsed: Option<u64>,
13457}
13458/// Deserialize bool from String with custom value mapping
13459fn zigbee9290024782_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13460where
13461    D: Deserializer<'de>,
13462{
13463    match String::deserialize(deserializer)?.as_ref() {
13464        "ON" => Ok(true),
13465        "OFF" => Ok(false),
13466        other => Err(de::Error::invalid_value(
13467            Unexpected::Str(other),
13468            &"Value expected was either ON or OFF",
13469        )),
13470    }
13471}
13472
13473/// philips:9290024783 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024783.html)
13474///
13475/// 
13476#[cfg_attr(feature = "debug", derive(Debug))]
13477#[cfg_attr(feature = "clone", derive(Clone))]
13478#[derive(Deserialize)]
13479pub struct Zigbee9290024783 {
13480    ///Brightness of this light
13481    pub brightness: f64,
13482    ///Color temperature of this light
13483    pub color_temp: f64,
13484    ///Color temperature after cold power on of this light
13485    pub color_temp_startup: f64,
13486    ///Link quality (signal strength)
13487    pub linkquality: f64,
13488    ///Controls the behavior when the device is powered on after power loss
13489    pub power_on_behavior: Zigbee9290024783Poweronbehavior,
13490    ///Zigbee herdsman description: "On/off state of this light"
13491    ///The string values get converted into boolean with: ON = true and OFF = false
13492    #[serde(deserialize_with = "zigbee9290024783_state_deserializer")]
13493    pub state: bool,
13494    /// Optional last_seen type, set as a global zigbee2mqtt setting
13495    pub last_seen: Option<LastSeen>,
13496    /// Optional elapsed type
13497    pub elapsed: Option<u64>,
13498}
13499/// Deserialize bool from String with custom value mapping
13500fn zigbee9290024783_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13501where
13502    D: Deserializer<'de>,
13503{
13504    match String::deserialize(deserializer)?.as_ref() {
13505        "ON" => Ok(true),
13506        "OFF" => Ok(false),
13507        other => Err(de::Error::invalid_value(
13508            Unexpected::Str(other),
13509            &"Value expected was either ON or OFF",
13510        )),
13511    }
13512}
13513
13514/// philips:929002478401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002478401.html)
13515///
13516/// 
13517#[cfg_attr(feature = "debug", derive(Debug))]
13518#[cfg_attr(feature = "clone", derive(Clone))]
13519#[derive(Deserialize)]
13520pub struct Zigbee929002478401 {
13521    ///Brightness of this light
13522    pub brightness: f64,
13523    ///Color temperature of this light
13524    pub color_temp: f64,
13525    ///Color temperature after cold power on of this light
13526    pub color_temp_startup: f64,
13527    ///Link quality (signal strength)
13528    pub linkquality: f64,
13529    ///Controls the behavior when the device is powered on after power loss
13530    pub power_on_behavior: Zigbee929002478401Poweronbehavior,
13531    ///Zigbee herdsman description: "On/off state of this light"
13532    ///The string values get converted into boolean with: ON = true and OFF = false
13533    #[serde(deserialize_with = "zigbee929002478401_state_deserializer")]
13534    pub state: bool,
13535    /// Optional last_seen type, set as a global zigbee2mqtt setting
13536    pub last_seen: Option<LastSeen>,
13537    /// Optional elapsed type
13538    pub elapsed: Option<u64>,
13539}
13540/// Deserialize bool from String with custom value mapping
13541fn zigbee929002478401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13542where
13543    D: Deserializer<'de>,
13544{
13545    match String::deserialize(deserializer)?.as_ref() {
13546        "ON" => Ok(true),
13547        "OFF" => Ok(false),
13548        other => Err(de::Error::invalid_value(
13549            Unexpected::Str(other),
13550            &"Value expected was either ON or OFF",
13551        )),
13552    }
13553}
13554
13555/// philips:9290024785 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024785.html)
13556///
13557/// 
13558#[cfg_attr(feature = "debug", derive(Debug))]
13559#[cfg_attr(feature = "clone", derive(Clone))]
13560#[derive(Deserialize)]
13561pub struct Zigbee9290024785 {
13562    ///Brightness of this light
13563    pub brightness: f64,
13564    ///Color temperature of this light
13565    pub color_temp: f64,
13566    ///Color temperature after cold power on of this light
13567    pub color_temp_startup: f64,
13568    ///Link quality (signal strength)
13569    pub linkquality: f64,
13570    ///Controls the behavior when the device is powered on after power loss
13571    pub power_on_behavior: Zigbee9290024785Poweronbehavior,
13572    ///Zigbee herdsman description: "On/off state of this light"
13573    ///The string values get converted into boolean with: ON = true and OFF = false
13574    #[serde(deserialize_with = "zigbee9290024785_state_deserializer")]
13575    pub state: bool,
13576    /// Optional last_seen type, set as a global zigbee2mqtt setting
13577    pub last_seen: Option<LastSeen>,
13578    /// Optional elapsed type
13579    pub elapsed: Option<u64>,
13580}
13581/// Deserialize bool from String with custom value mapping
13582fn zigbee9290024785_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13583where
13584    D: Deserializer<'de>,
13585{
13586    match String::deserialize(deserializer)?.as_ref() {
13587        "ON" => Ok(true),
13588        "OFF" => Ok(false),
13589        other => Err(de::Error::invalid_value(
13590            Unexpected::Str(other),
13591            &"Value expected was either ON or OFF",
13592        )),
13593    }
13594}
13595
13596/// philips:9290024796 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024796.html)
13597///
13598/// 
13599#[cfg_attr(feature = "debug", derive(Debug))]
13600#[cfg_attr(feature = "clone", derive(Clone))]
13601#[derive(Deserialize)]
13602pub struct Zigbee9290024796 {
13603    ///Brightness of this light
13604    pub brightness: f64,
13605    ///Link quality (signal strength)
13606    pub linkquality: f64,
13607    ///Controls the behavior when the device is powered on after power loss
13608    pub power_on_behavior: Zigbee9290024796Poweronbehavior,
13609    ///Zigbee herdsman description: "On/off state of this light"
13610    ///The string values get converted into boolean with: ON = true and OFF = false
13611    #[serde(deserialize_with = "zigbee9290024796_state_deserializer")]
13612    pub state: bool,
13613    /// Optional last_seen type, set as a global zigbee2mqtt setting
13614    pub last_seen: Option<LastSeen>,
13615    /// Optional elapsed type
13616    pub elapsed: Option<u64>,
13617}
13618/// Deserialize bool from String with custom value mapping
13619fn zigbee9290024796_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13620where
13621    D: Deserializer<'de>,
13622{
13623    match String::deserialize(deserializer)?.as_ref() {
13624        "ON" => Ok(true),
13625        "OFF" => Ok(false),
13626        other => Err(de::Error::invalid_value(
13627            Unexpected::Str(other),
13628            &"Value expected was either ON or OFF",
13629        )),
13630    }
13631}
13632
13633/// philips:9290024896 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290024896.html)
13634///
13635/// 
13636#[cfg_attr(feature = "debug", derive(Debug))]
13637#[cfg_attr(feature = "clone", derive(Clone))]
13638#[derive(Deserialize)]
13639pub struct Zigbee9290024896 {
13640    ///Brightness of this light
13641    pub brightness: f64,
13642    ///Color temperature of this light
13643    pub color_temp: f64,
13644    ///Color temperature after cold power on of this light
13645    pub color_temp_startup: f64,
13646    ///Link quality (signal strength)
13647    pub linkquality: f64,
13648    ///Controls the behavior when the device is powered on after power loss
13649    pub power_on_behavior: Zigbee9290024896Poweronbehavior,
13650    ///Zigbee herdsman description: "On/off state of this light"
13651    ///The string values get converted into boolean with: ON = true and OFF = false
13652    #[serde(deserialize_with = "zigbee9290024896_state_deserializer")]
13653    pub state: bool,
13654    /// Optional last_seen type, set as a global zigbee2mqtt setting
13655    pub last_seen: Option<LastSeen>,
13656    /// Optional elapsed type
13657    pub elapsed: Option<u64>,
13658}
13659/// Deserialize bool from String with custom value mapping
13660fn zigbee9290024896_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13661where
13662    D: Deserializer<'de>,
13663{
13664    match String::deserialize(deserializer)?.as_ref() {
13665        "ON" => Ok(true),
13666        "OFF" => Ok(false),
13667        other => Err(de::Error::invalid_value(
13668            Unexpected::Str(other),
13669            &"Value expected was either ON or OFF",
13670        )),
13671    }
13672}
13673
13674/// philips:929002966401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002966401.html)
13675///
13676/// 
13677#[cfg_attr(feature = "debug", derive(Debug))]
13678#[cfg_attr(feature = "clone", derive(Clone))]
13679#[derive(Deserialize)]
13680pub struct Zigbee929002966401 {
13681    ///Brightness of this light
13682    pub brightness: f64,
13683    ///Color temperature of this light
13684    pub color_temp: f64,
13685    ///Color temperature after cold power on of this light
13686    pub color_temp_startup: f64,
13687    ///Link quality (signal strength)
13688    pub linkquality: f64,
13689    ///Controls the behavior when the device is powered on after power loss
13690    pub power_on_behavior: Zigbee929002966401Poweronbehavior,
13691    ///Zigbee herdsman description: "On/off state of this light"
13692    ///The string values get converted into boolean with: ON = true and OFF = false
13693    #[serde(deserialize_with = "zigbee929002966401_state_deserializer")]
13694    pub state: bool,
13695    /// Optional last_seen type, set as a global zigbee2mqtt setting
13696    pub last_seen: Option<LastSeen>,
13697    /// Optional elapsed type
13698    pub elapsed: Option<u64>,
13699}
13700/// Deserialize bool from String with custom value mapping
13701fn zigbee929002966401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13702where
13703    D: Deserializer<'de>,
13704{
13705    match String::deserialize(deserializer)?.as_ref() {
13706        "ON" => Ok(true),
13707        "OFF" => Ok(false),
13708        other => Err(de::Error::invalid_value(
13709            Unexpected::Str(other),
13710            &"Value expected was either ON or OFF",
13711        )),
13712    }
13713}
13714
13715/// philips:929002966501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002966501.html)
13716///
13717/// 
13718#[cfg_attr(feature = "debug", derive(Debug))]
13719#[cfg_attr(feature = "clone", derive(Clone))]
13720#[derive(Deserialize)]
13721pub struct Zigbee929002966501 {
13722    ///Brightness of this light
13723    pub brightness: f64,
13724    ///Color temperature of this light
13725    pub color_temp: f64,
13726    ///Color temperature after cold power on of this light
13727    pub color_temp_startup: f64,
13728    ///Link quality (signal strength)
13729    pub linkquality: f64,
13730    ///Controls the behavior when the device is powered on after power loss
13731    pub power_on_behavior: Zigbee929002966501Poweronbehavior,
13732    ///Zigbee herdsman description: "On/off state of this light"
13733    ///The string values get converted into boolean with: ON = true and OFF = false
13734    #[serde(deserialize_with = "zigbee929002966501_state_deserializer")]
13735    pub state: bool,
13736    /// Optional last_seen type, set as a global zigbee2mqtt setting
13737    pub last_seen: Option<LastSeen>,
13738    /// Optional elapsed type
13739    pub elapsed: Option<u64>,
13740}
13741/// Deserialize bool from String with custom value mapping
13742fn zigbee929002966501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13743where
13744    D: Deserializer<'de>,
13745{
13746    match String::deserialize(deserializer)?.as_ref() {
13747        "ON" => Ok(true),
13748        "OFF" => Ok(false),
13749        other => Err(de::Error::invalid_value(
13750            Unexpected::Str(other),
13751            &"Value expected was either ON or OFF",
13752        )),
13753    }
13754}
13755
13756/// philips:9290029808 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290029808.html)
13757///
13758/// 
13759#[cfg_attr(feature = "debug", derive(Debug))]
13760#[cfg_attr(feature = "clone", derive(Clone))]
13761#[derive(Deserialize)]
13762pub struct Zigbee9290029808 {
13763    ///Brightness of this light
13764    pub brightness: f64,
13765    ///Color temperature of this light
13766    pub color_temp: f64,
13767    ///Color temperature after cold power on of this light
13768    pub color_temp_startup: f64,
13769    ///Link quality (signal strength)
13770    pub linkquality: f64,
13771    ///Controls the behavior when the device is powered on after power loss
13772    pub power_on_behavior: Zigbee9290029808Poweronbehavior,
13773    ///Zigbee herdsman description: "On/off state of this light"
13774    ///The string values get converted into boolean with: ON = true and OFF = false
13775    #[serde(deserialize_with = "zigbee9290029808_state_deserializer")]
13776    pub state: bool,
13777    /// Optional last_seen type, set as a global zigbee2mqtt setting
13778    pub last_seen: Option<LastSeen>,
13779    /// Optional elapsed type
13780    pub elapsed: Option<u64>,
13781}
13782/// Deserialize bool from String with custom value mapping
13783fn zigbee9290029808_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13784where
13785    D: Deserializer<'de>,
13786{
13787    match String::deserialize(deserializer)?.as_ref() {
13788        "ON" => Ok(true),
13789        "OFF" => Ok(false),
13790        other => Err(de::Error::invalid_value(
13791            Unexpected::Str(other),
13792            &"Value expected was either ON or OFF",
13793        )),
13794    }
13795}
13796
13797/// philips:929002980901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002980901.html)
13798///
13799/// 
13800#[cfg_attr(feature = "debug", derive(Debug))]
13801#[cfg_attr(feature = "clone", derive(Clone))]
13802#[derive(Deserialize)]
13803pub struct Zigbee929002980901 {
13804    ///Brightness of this light
13805    pub brightness: f64,
13806    ///Color temperature of this light
13807    pub color_temp: f64,
13808    ///Color temperature after cold power on of this light
13809    pub color_temp_startup: f64,
13810    ///Link quality (signal strength)
13811    pub linkquality: f64,
13812    ///Controls the behavior when the device is powered on after power loss
13813    pub power_on_behavior: Zigbee929002980901Poweronbehavior,
13814    ///Zigbee herdsman description: "On/off state of this light"
13815    ///The string values get converted into boolean with: ON = true and OFF = false
13816    #[serde(deserialize_with = "zigbee929002980901_state_deserializer")]
13817    pub state: bool,
13818    /// Optional last_seen type, set as a global zigbee2mqtt setting
13819    pub last_seen: Option<LastSeen>,
13820    /// Optional elapsed type
13821    pub elapsed: Option<u64>,
13822}
13823/// Deserialize bool from String with custom value mapping
13824fn zigbee929002980901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13825where
13826    D: Deserializer<'de>,
13827{
13828    match String::deserialize(deserializer)?.as_ref() {
13829        "ON" => Ok(true),
13830        "OFF" => Ok(false),
13831        other => Err(de::Error::invalid_value(
13832            Unexpected::Str(other),
13833            &"Value expected was either ON or OFF",
13834        )),
13835    }
13836}
13837
13838/// philips:929002994901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929002994901.html)
13839///
13840/// 
13841#[cfg_attr(feature = "debug", derive(Debug))]
13842#[cfg_attr(feature = "clone", derive(Clone))]
13843#[derive(Deserialize)]
13844pub struct Zigbee929002994901 {
13845    ///Brightness of this light
13846    pub brightness: f64,
13847    ///Color temperature of this light
13848    pub color_temp: f64,
13849    ///Color temperature after cold power on of this light
13850    pub color_temp_startup: f64,
13851    ///Link quality (signal strength)
13852    pub linkquality: f64,
13853    ///Controls the behavior when the device is powered on after power loss
13854    pub power_on_behavior: Zigbee929002994901Poweronbehavior,
13855    ///Zigbee herdsman description: "On/off state of this light"
13856    ///The string values get converted into boolean with: ON = true and OFF = false
13857    #[serde(deserialize_with = "zigbee929002994901_state_deserializer")]
13858    pub state: bool,
13859    /// Optional last_seen type, set as a global zigbee2mqtt setting
13860    pub last_seen: Option<LastSeen>,
13861    /// Optional elapsed type
13862    pub elapsed: Option<u64>,
13863}
13864/// Deserialize bool from String with custom value mapping
13865fn zigbee929002994901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13866where
13867    D: Deserializer<'de>,
13868{
13869    match String::deserialize(deserializer)?.as_ref() {
13870        "ON" => Ok(true),
13871        "OFF" => Ok(false),
13872        other => Err(de::Error::invalid_value(
13873            Unexpected::Str(other),
13874            &"Value expected was either ON or OFF",
13875        )),
13876    }
13877}
13878
13879/// philips:929003017102 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003017102.html)
13880///
13881/// 
13882#[cfg_attr(feature = "debug", derive(Debug))]
13883#[cfg_attr(feature = "clone", derive(Clone))]
13884#[derive(Deserialize)]
13885pub struct Zigbee929003017102 {
13886    ///Triggered action (e.g. a button click)
13887    pub action: Zigbee929003017102Action,
13888    ///Remaining battery in %, can take up to 24 hours before reported.
13889    pub battery: f64,
13890    pub device_mode: Zigbee929003017102Devicemode,
13891    ///Link quality (signal strength)
13892    pub linkquality: f64,
13893    /// Optional last_seen type, set as a global zigbee2mqtt setting
13894    pub last_seen: Option<LastSeen>,
13895    /// Optional elapsed type
13896    pub elapsed: Option<u64>,
13897}/// philips:9290030211 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290030211.html)
13898///
13899/// 
13900#[cfg_attr(feature = "debug", derive(Debug))]
13901#[cfg_attr(feature = "clone", derive(Clone))]
13902#[derive(Deserialize)]
13903pub struct Zigbee9290030211 {
13904    ///Brightness of this light
13905    pub brightness: f64,
13906    ///Link quality (signal strength)
13907    pub linkquality: f64,
13908    ///Controls the behavior when the device is powered on after power loss
13909    pub power_on_behavior: Zigbee9290030211Poweronbehavior,
13910    ///Zigbee herdsman description: "On/off state of this light"
13911    ///The string values get converted into boolean with: ON = true and OFF = false
13912    #[serde(deserialize_with = "zigbee9290030211_state_deserializer")]
13913    pub state: bool,
13914    /// Optional last_seen type, set as a global zigbee2mqtt setting
13915    pub last_seen: Option<LastSeen>,
13916    /// Optional elapsed type
13917    pub elapsed: Option<u64>,
13918}
13919/// Deserialize bool from String with custom value mapping
13920fn zigbee9290030211_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13921where
13922    D: Deserializer<'de>,
13923{
13924    match String::deserialize(deserializer)?.as_ref() {
13925        "ON" => Ok(true),
13926        "OFF" => Ok(false),
13927        other => Err(de::Error::invalid_value(
13928            Unexpected::Str(other),
13929            &"Value expected was either ON or OFF",
13930        )),
13931    }
13932}
13933
13934/// philips:929003021301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003021301.html)
13935///
13936/// 
13937#[cfg_attr(feature = "debug", derive(Debug))]
13938#[cfg_attr(feature = "clone", derive(Clone))]
13939#[derive(Deserialize)]
13940pub struct Zigbee929003021301 {
13941    ///Brightness of this light
13942    pub brightness: f64,
13943    ///Link quality (signal strength)
13944    pub linkquality: f64,
13945    ///Controls the behavior when the device is powered on after power loss
13946    pub power_on_behavior: Zigbee929003021301Poweronbehavior,
13947    ///Zigbee herdsman description: "On/off state of this light"
13948    ///The string values get converted into boolean with: ON = true and OFF = false
13949    #[serde(deserialize_with = "zigbee929003021301_state_deserializer")]
13950    pub state: bool,
13951    /// Optional last_seen type, set as a global zigbee2mqtt setting
13952    pub last_seen: Option<LastSeen>,
13953    /// Optional elapsed type
13954    pub elapsed: Option<u64>,
13955}
13956/// Deserialize bool from String with custom value mapping
13957fn zigbee929003021301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13958where
13959    D: Deserializer<'de>,
13960{
13961    match String::deserialize(deserializer)?.as_ref() {
13962        "ON" => Ok(true),
13963        "OFF" => Ok(false),
13964        other => Err(de::Error::invalid_value(
13965            Unexpected::Str(other),
13966            &"Value expected was either ON or OFF",
13967        )),
13968    }
13969}
13970
13971/// philips:929003045201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003045201.html)
13972///
13973/// 
13974#[cfg_attr(feature = "debug", derive(Debug))]
13975#[cfg_attr(feature = "clone", derive(Clone))]
13976#[derive(Deserialize)]
13977pub struct Zigbee929003045201 {
13978    ///Brightness of this light
13979    pub brightness: f64,
13980    ///Color temperature of this light
13981    pub color_temp: f64,
13982    ///Color temperature after cold power on of this light
13983    pub color_temp_startup: f64,
13984    ///Link quality (signal strength)
13985    pub linkquality: f64,
13986    ///Controls the behavior when the device is powered on after power loss
13987    pub power_on_behavior: Zigbee929003045201Poweronbehavior,
13988    ///Zigbee herdsman description: "On/off state of this light"
13989    ///The string values get converted into boolean with: ON = true and OFF = false
13990    #[serde(deserialize_with = "zigbee929003045201_state_deserializer")]
13991    pub state: bool,
13992    /// Optional last_seen type, set as a global zigbee2mqtt setting
13993    pub last_seen: Option<LastSeen>,
13994    /// Optional elapsed type
13995    pub elapsed: Option<u64>,
13996}
13997/// Deserialize bool from String with custom value mapping
13998fn zigbee929003045201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
13999where
14000    D: Deserializer<'de>,
14001{
14002    match String::deserialize(deserializer)?.as_ref() {
14003        "ON" => Ok(true),
14004        "OFF" => Ok(false),
14005        other => Err(de::Error::invalid_value(
14006            Unexpected::Str(other),
14007            &"Value expected was either ON or OFF",
14008        )),
14009    }
14010}
14011
14012/// philips:929003045301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003045301.html)
14013///
14014/// 
14015#[cfg_attr(feature = "debug", derive(Debug))]
14016#[cfg_attr(feature = "clone", derive(Clone))]
14017#[derive(Deserialize)]
14018pub struct Zigbee929003045301 {
14019    ///Brightness of this light
14020    pub brightness: f64,
14021    ///Color temperature of this light
14022    pub color_temp: f64,
14023    ///Color temperature after cold power on of this light
14024    pub color_temp_startup: f64,
14025    ///Link quality (signal strength)
14026    pub linkquality: f64,
14027    ///Controls the behavior when the device is powered on after power loss
14028    pub power_on_behavior: Zigbee929003045301Poweronbehavior,
14029    ///Zigbee herdsman description: "On/off state of this light"
14030    ///The string values get converted into boolean with: ON = true and OFF = false
14031    #[serde(deserialize_with = "zigbee929003045301_state_deserializer")]
14032    pub state: bool,
14033    /// Optional last_seen type, set as a global zigbee2mqtt setting
14034    pub last_seen: Option<LastSeen>,
14035    /// Optional elapsed type
14036    pub elapsed: Option<u64>,
14037}
14038/// Deserialize bool from String with custom value mapping
14039fn zigbee929003045301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14040where
14041    D: Deserializer<'de>,
14042{
14043    match String::deserialize(deserializer)?.as_ref() {
14044        "ON" => Ok(true),
14045        "OFF" => Ok(false),
14046        other => Err(de::Error::invalid_value(
14047            Unexpected::Str(other),
14048            &"Value expected was either ON or OFF",
14049        )),
14050    }
14051}
14052
14053/// philips:929003045401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003045401.html)
14054///
14055/// 
14056#[cfg_attr(feature = "debug", derive(Debug))]
14057#[cfg_attr(feature = "clone", derive(Clone))]
14058#[derive(Deserialize)]
14059pub struct Zigbee929003045401 {
14060    ///Brightness of this light
14061    pub brightness: f64,
14062    ///Color temperature of this light
14063    pub color_temp: f64,
14064    ///Color temperature after cold power on of this light
14065    pub color_temp_startup: f64,
14066    ///Link quality (signal strength)
14067    pub linkquality: f64,
14068    ///Controls the behavior when the device is powered on after power loss
14069    pub power_on_behavior: Zigbee929003045401Poweronbehavior,
14070    ///Zigbee herdsman description: "On/off state of this light"
14071    ///The string values get converted into boolean with: ON = true and OFF = false
14072    #[serde(deserialize_with = "zigbee929003045401_state_deserializer")]
14073    pub state: bool,
14074    /// Optional last_seen type, set as a global zigbee2mqtt setting
14075    pub last_seen: Option<LastSeen>,
14076    /// Optional elapsed type
14077    pub elapsed: Option<u64>,
14078}
14079/// Deserialize bool from String with custom value mapping
14080fn zigbee929003045401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14081where
14082    D: Deserializer<'de>,
14083{
14084    match String::deserialize(deserializer)?.as_ref() {
14085        "ON" => Ok(true),
14086        "OFF" => Ok(false),
14087        other => Err(de::Error::invalid_value(
14088            Unexpected::Str(other),
14089            &"Value expected was either ON or OFF",
14090        )),
14091    }
14092}
14093
14094/// philips:929003045501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003045501.html)
14095///
14096/// 
14097#[cfg_attr(feature = "debug", derive(Debug))]
14098#[cfg_attr(feature = "clone", derive(Clone))]
14099#[derive(Deserialize)]
14100pub struct Zigbee929003045501 {
14101    ///Brightness of this light
14102    pub brightness: f64,
14103    ///Color temperature of this light
14104    pub color_temp: f64,
14105    ///Color temperature after cold power on of this light
14106    pub color_temp_startup: f64,
14107    ///Link quality (signal strength)
14108    pub linkquality: f64,
14109    ///Controls the behavior when the device is powered on after power loss
14110    pub power_on_behavior: Zigbee929003045501Poweronbehavior,
14111    ///Zigbee herdsman description: "On/off state of this light"
14112    ///The string values get converted into boolean with: ON = true and OFF = false
14113    #[serde(deserialize_with = "zigbee929003045501_state_deserializer")]
14114    pub state: bool,
14115    /// Optional last_seen type, set as a global zigbee2mqtt setting
14116    pub last_seen: Option<LastSeen>,
14117    /// Optional elapsed type
14118    pub elapsed: Option<u64>,
14119}
14120/// Deserialize bool from String with custom value mapping
14121fn zigbee929003045501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14122where
14123    D: Deserializer<'de>,
14124{
14125    match String::deserialize(deserializer)?.as_ref() {
14126        "ON" => Ok(true),
14127        "OFF" => Ok(false),
14128        other => Err(de::Error::invalid_value(
14129            Unexpected::Str(other),
14130            &"Value expected was either ON or OFF",
14131        )),
14132    }
14133}
14134
14135/// philips:929003045901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003045901.html)
14136///
14137/// 
14138#[cfg_attr(feature = "debug", derive(Debug))]
14139#[cfg_attr(feature = "clone", derive(Clone))]
14140#[derive(Deserialize)]
14141pub struct Zigbee929003045901 {
14142    ///Brightness of this light
14143    pub brightness: f64,
14144    ///Color temperature of this light
14145    pub color_temp: f64,
14146    ///Color temperature after cold power on of this light
14147    pub color_temp_startup: f64,
14148    ///Link quality (signal strength)
14149    pub linkquality: f64,
14150    ///Controls the behavior when the device is powered on after power loss
14151    pub power_on_behavior: Zigbee929003045901Poweronbehavior,
14152    ///Zigbee herdsman description: "On/off state of this light"
14153    ///The string values get converted into boolean with: ON = true and OFF = false
14154    #[serde(deserialize_with = "zigbee929003045901_state_deserializer")]
14155    pub state: bool,
14156    /// Optional last_seen type, set as a global zigbee2mqtt setting
14157    pub last_seen: Option<LastSeen>,
14158    /// Optional elapsed type
14159    pub elapsed: Option<u64>,
14160}
14161/// Deserialize bool from String with custom value mapping
14162fn zigbee929003045901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14163where
14164    D: Deserializer<'de>,
14165{
14166    match String::deserialize(deserializer)?.as_ref() {
14167        "ON" => Ok(true),
14168        "OFF" => Ok(false),
14169        other => Err(de::Error::invalid_value(
14170            Unexpected::Str(other),
14171            &"Value expected was either ON or OFF",
14172        )),
14173    }
14174}
14175
14176/// philips:929003046201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003046201.html)
14177///
14178/// 
14179#[cfg_attr(feature = "debug", derive(Debug))]
14180#[cfg_attr(feature = "clone", derive(Clone))]
14181#[derive(Deserialize)]
14182pub struct Zigbee929003046201 {
14183    ///Brightness of this light
14184    pub brightness: f64,
14185    ///Color temperature of this light
14186    pub color_temp: f64,
14187    ///Color temperature after cold power on of this light
14188    pub color_temp_startup: f64,
14189    ///Link quality (signal strength)
14190    pub linkquality: f64,
14191    ///Controls the behavior when the device is powered on after power loss
14192    pub power_on_behavior: Zigbee929003046201Poweronbehavior,
14193    ///Zigbee herdsman description: "On/off state of this light"
14194    ///The string values get converted into boolean with: ON = true and OFF = false
14195    #[serde(deserialize_with = "zigbee929003046201_state_deserializer")]
14196    pub state: bool,
14197    /// Optional last_seen type, set as a global zigbee2mqtt setting
14198    pub last_seen: Option<LastSeen>,
14199    /// Optional elapsed type
14200    pub elapsed: Option<u64>,
14201}
14202/// Deserialize bool from String with custom value mapping
14203fn zigbee929003046201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14204where
14205    D: Deserializer<'de>,
14206{
14207    match String::deserialize(deserializer)?.as_ref() {
14208        "ON" => Ok(true),
14209        "OFF" => Ok(false),
14210        other => Err(de::Error::invalid_value(
14211            Unexpected::Str(other),
14212            &"Value expected was either ON or OFF",
14213        )),
14214    }
14215}
14216
14217/// philips:929003047001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003047001.html)
14218///
14219/// 
14220#[cfg_attr(feature = "debug", derive(Debug))]
14221#[cfg_attr(feature = "clone", derive(Clone))]
14222#[derive(Deserialize)]
14223pub struct Zigbee929003047001 {
14224    ///Brightness of this light
14225    pub brightness: f64,
14226    ///Color temperature of this light
14227    pub color_temp: f64,
14228    ///Color temperature after cold power on of this light
14229    pub color_temp_startup: f64,
14230    ///Link quality (signal strength)
14231    pub linkquality: f64,
14232    ///Controls the behavior when the device is powered on after power loss
14233    pub power_on_behavior: Zigbee929003047001Poweronbehavior,
14234    ///Zigbee herdsman description: "On/off state of this light"
14235    ///The string values get converted into boolean with: ON = true and OFF = false
14236    #[serde(deserialize_with = "zigbee929003047001_state_deserializer")]
14237    pub state: bool,
14238    /// Optional last_seen type, set as a global zigbee2mqtt setting
14239    pub last_seen: Option<LastSeen>,
14240    /// Optional elapsed type
14241    pub elapsed: Option<u64>,
14242}
14243/// Deserialize bool from String with custom value mapping
14244fn zigbee929003047001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14245where
14246    D: Deserializer<'de>,
14247{
14248    match String::deserialize(deserializer)?.as_ref() {
14249        "ON" => Ok(true),
14250        "OFF" => Ok(false),
14251        other => Err(de::Error::invalid_value(
14252            Unexpected::Str(other),
14253            &"Value expected was either ON or OFF",
14254        )),
14255    }
14256}
14257
14258/// philips:929003047101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003047101.html)
14259///
14260/// 
14261#[cfg_attr(feature = "debug", derive(Debug))]
14262#[cfg_attr(feature = "clone", derive(Clone))]
14263#[derive(Deserialize)]
14264pub struct Zigbee929003047101 {
14265    ///Brightness of this light
14266    pub brightness: f64,
14267    ///Color temperature of this light
14268    pub color_temp: f64,
14269    ///Color temperature after cold power on of this light
14270    pub color_temp_startup: f64,
14271    ///Link quality (signal strength)
14272    pub linkquality: f64,
14273    ///Controls the behavior when the device is powered on after power loss
14274    pub power_on_behavior: Zigbee929003047101Poweronbehavior,
14275    ///Zigbee herdsman description: "On/off state of this light"
14276    ///The string values get converted into boolean with: ON = true and OFF = false
14277    #[serde(deserialize_with = "zigbee929003047101_state_deserializer")]
14278    pub state: bool,
14279    /// Optional last_seen type, set as a global zigbee2mqtt setting
14280    pub last_seen: Option<LastSeen>,
14281    /// Optional elapsed type
14282    pub elapsed: Option<u64>,
14283}
14284/// Deserialize bool from String with custom value mapping
14285fn zigbee929003047101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14286where
14287    D: Deserializer<'de>,
14288{
14289    match String::deserialize(deserializer)?.as_ref() {
14290        "ON" => Ok(true),
14291        "OFF" => Ok(false),
14292        other => Err(de::Error::invalid_value(
14293            Unexpected::Str(other),
14294            &"Value expected was either ON or OFF",
14295        )),
14296    }
14297}
14298
14299/// philips:929003047401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003047401.html)
14300///
14301/// 
14302#[cfg_attr(feature = "debug", derive(Debug))]
14303#[cfg_attr(feature = "clone", derive(Clone))]
14304#[derive(Deserialize)]
14305pub struct Zigbee929003047401 {
14306    ///Brightness of this light
14307    pub brightness: f64,
14308    ///Color temperature of this light
14309    pub color_temp: f64,
14310    ///Color temperature after cold power on of this light
14311    pub color_temp_startup: f64,
14312    ///Link quality (signal strength)
14313    pub linkquality: f64,
14314    ///Controls the behavior when the device is powered on after power loss
14315    pub power_on_behavior: Zigbee929003047401Poweronbehavior,
14316    ///Zigbee herdsman description: "On/off state of this light"
14317    ///The string values get converted into boolean with: ON = true and OFF = false
14318    #[serde(deserialize_with = "zigbee929003047401_state_deserializer")]
14319    pub state: bool,
14320    /// Optional last_seen type, set as a global zigbee2mqtt setting
14321    pub last_seen: Option<LastSeen>,
14322    /// Optional elapsed type
14323    pub elapsed: Option<u64>,
14324}
14325/// Deserialize bool from String with custom value mapping
14326fn zigbee929003047401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14327where
14328    D: Deserializer<'de>,
14329{
14330    match String::deserialize(deserializer)?.as_ref() {
14331        "ON" => Ok(true),
14332        "OFF" => Ok(false),
14333        other => Err(de::Error::invalid_value(
14334            Unexpected::Str(other),
14335            &"Value expected was either ON or OFF",
14336        )),
14337    }
14338}
14339
14340/// philips:929003047501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003047501.html)
14341///
14342/// 
14343#[cfg_attr(feature = "debug", derive(Debug))]
14344#[cfg_attr(feature = "clone", derive(Clone))]
14345#[derive(Deserialize)]
14346pub struct Zigbee929003047501 {
14347    ///Brightness of this light
14348    pub brightness: f64,
14349    ///Color temperature of this light
14350    pub color_temp: f64,
14351    ///Color temperature after cold power on of this light
14352    pub color_temp_startup: f64,
14353    ///Link quality (signal strength)
14354    pub linkquality: f64,
14355    ///Controls the behavior when the device is powered on after power loss
14356    pub power_on_behavior: Zigbee929003047501Poweronbehavior,
14357    ///Zigbee herdsman description: "On/off state of this light"
14358    ///The string values get converted into boolean with: ON = true and OFF = false
14359    #[serde(deserialize_with = "zigbee929003047501_state_deserializer")]
14360    pub state: bool,
14361    /// Optional last_seen type, set as a global zigbee2mqtt setting
14362    pub last_seen: Option<LastSeen>,
14363    /// Optional elapsed type
14364    pub elapsed: Option<u64>,
14365}
14366/// Deserialize bool from String with custom value mapping
14367fn zigbee929003047501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14368where
14369    D: Deserializer<'de>,
14370{
14371    match String::deserialize(deserializer)?.as_ref() {
14372        "ON" => Ok(true),
14373        "OFF" => Ok(false),
14374        other => Err(de::Error::invalid_value(
14375            Unexpected::Str(other),
14376            &"Value expected was either ON or OFF",
14377        )),
14378    }
14379}
14380
14381/// philips:929003047601 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003047601.html)
14382///
14383/// 
14384#[cfg_attr(feature = "debug", derive(Debug))]
14385#[cfg_attr(feature = "clone", derive(Clone))]
14386#[derive(Deserialize)]
14387pub struct Zigbee929003047601 {
14388    ///Brightness of this light
14389    pub brightness: f64,
14390    ///Color temperature of this light
14391    pub color_temp: f64,
14392    ///Color temperature after cold power on of this light
14393    pub color_temp_startup: f64,
14394    ///Link quality (signal strength)
14395    pub linkquality: f64,
14396    ///Controls the behavior when the device is powered on after power loss
14397    pub power_on_behavior: Zigbee929003047601Poweronbehavior,
14398    ///Zigbee herdsman description: "On/off state of this light"
14399    ///The string values get converted into boolean with: ON = true and OFF = false
14400    #[serde(deserialize_with = "zigbee929003047601_state_deserializer")]
14401    pub state: bool,
14402    /// Optional last_seen type, set as a global zigbee2mqtt setting
14403    pub last_seen: Option<LastSeen>,
14404    /// Optional elapsed type
14405    pub elapsed: Option<u64>,
14406}
14407/// Deserialize bool from String with custom value mapping
14408fn zigbee929003047601_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14409where
14410    D: Deserializer<'de>,
14411{
14412    match String::deserialize(deserializer)?.as_ref() {
14413        "ON" => Ok(true),
14414        "OFF" => Ok(false),
14415        other => Err(de::Error::invalid_value(
14416            Unexpected::Str(other),
14417            &"Value expected was either ON or OFF",
14418        )),
14419    }
14420}
14421
14422/// philips:929003050601 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003050601.html)
14423///
14424/// 
14425#[cfg_attr(feature = "debug", derive(Debug))]
14426#[cfg_attr(feature = "clone", derive(Clone))]
14427#[derive(Deserialize)]
14428pub struct Zigbee929003050601 {
14429    ///Link quality (signal strength)
14430    pub linkquality: f64,
14431    ///Zigbee herdsman description: "On/off state of the switch"
14432    ///The string values get converted into boolean with: ON = true and OFF = false
14433    #[serde(deserialize_with = "zigbee929003050601_state_deserializer")]
14434    pub state: bool,
14435    /// Optional last_seen type, set as a global zigbee2mqtt setting
14436    pub last_seen: Option<LastSeen>,
14437    /// Optional elapsed type
14438    pub elapsed: Option<u64>,
14439}
14440/// Deserialize bool from String with custom value mapping
14441fn zigbee929003050601_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14442where
14443    D: Deserializer<'de>,
14444{
14445    match String::deserialize(deserializer)?.as_ref() {
14446        "ON" => Ok(true),
14447        "OFF" => Ok(false),
14448        other => Err(de::Error::invalid_value(
14449            Unexpected::Str(other),
14450            &"Value expected was either ON or OFF",
14451        )),
14452    }
14453}
14454
14455/// philips:9290030509 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290030509.html)
14456///
14457/// 
14458#[cfg_attr(feature = "debug", derive(Debug))]
14459#[cfg_attr(feature = "clone", derive(Clone))]
14460#[derive(Deserialize)]
14461pub struct Zigbee9290030509 {
14462    ///Link quality (signal strength)
14463    pub linkquality: f64,
14464    ///Zigbee herdsman description: "On/off state of the switch"
14465    ///The string values get converted into boolean with: ON = true and OFF = false
14466    #[serde(deserialize_with = "zigbee9290030509_state_deserializer")]
14467    pub state: bool,
14468    /// Optional last_seen type, set as a global zigbee2mqtt setting
14469    pub last_seen: Option<LastSeen>,
14470    /// Optional elapsed type
14471    pub elapsed: Option<u64>,
14472}
14473/// Deserialize bool from String with custom value mapping
14474fn zigbee9290030509_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14475where
14476    D: Deserializer<'de>,
14477{
14478    match String::deserialize(deserializer)?.as_ref() {
14479        "ON" => Ok(true),
14480        "OFF" => Ok(false),
14481        other => Err(de::Error::invalid_value(
14482            Unexpected::Str(other),
14483            &"Value expected was either ON or OFF",
14484        )),
14485    }
14486}
14487
14488/// philips:9290030514 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290030514.html)
14489///
14490/// 
14491#[cfg_attr(feature = "debug", derive(Debug))]
14492#[cfg_attr(feature = "clone", derive(Clone))]
14493#[derive(Deserialize)]
14494pub struct Zigbee9290030514 {
14495    ///Brightness of this light
14496    pub brightness: f64,
14497    ///Link quality (signal strength)
14498    pub linkquality: f64,
14499    ///Controls the behavior when the device is powered on after power loss
14500    pub power_on_behavior: Zigbee9290030514Poweronbehavior,
14501    ///Zigbee herdsman description: "On/off state of this light"
14502    ///The string values get converted into boolean with: ON = true and OFF = false
14503    #[serde(deserialize_with = "zigbee9290030514_state_deserializer")]
14504    pub state: bool,
14505    /// Optional last_seen type, set as a global zigbee2mqtt setting
14506    pub last_seen: Option<LastSeen>,
14507    /// Optional elapsed type
14508    pub elapsed: Option<u64>,
14509}
14510/// Deserialize bool from String with custom value mapping
14511fn zigbee9290030514_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14512where
14513    D: Deserializer<'de>,
14514{
14515    match String::deserialize(deserializer)?.as_ref() {
14516        "ON" => Ok(true),
14517        "OFF" => Ok(false),
14518        other => Err(de::Error::invalid_value(
14519            Unexpected::Str(other),
14520            &"Value expected was either ON or OFF",
14521        )),
14522    }
14523}
14524
14525/// philips:9290030517 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290030517.html)
14526///
14527/// 
14528#[cfg_attr(feature = "debug", derive(Debug))]
14529#[cfg_attr(feature = "clone", derive(Clone))]
14530#[derive(Deserialize)]
14531pub struct Zigbee9290030517 {
14532    ///Brightness of this light
14533    pub brightness: f64,
14534    ///Color temperature of this light
14535    pub color_temp: f64,
14536    ///Color temperature after cold power on of this light
14537    pub color_temp_startup: f64,
14538    ///Link quality (signal strength)
14539    pub linkquality: f64,
14540    ///Controls the behavior when the device is powered on after power loss
14541    pub power_on_behavior: Zigbee9290030517Poweronbehavior,
14542    ///Zigbee herdsman description: "On/off state of this light"
14543    ///The string values get converted into boolean with: ON = true and OFF = false
14544    #[serde(deserialize_with = "zigbee9290030517_state_deserializer")]
14545    pub state: bool,
14546    /// Optional last_seen type, set as a global zigbee2mqtt setting
14547    pub last_seen: Option<LastSeen>,
14548    /// Optional elapsed type
14549    pub elapsed: Option<u64>,
14550}
14551/// Deserialize bool from String with custom value mapping
14552fn zigbee9290030517_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14553where
14554    D: Deserializer<'de>,
14555{
14556    match String::deserialize(deserializer)?.as_ref() {
14557        "ON" => Ok(true),
14558        "OFF" => Ok(false),
14559        other => Err(de::Error::invalid_value(
14560            Unexpected::Str(other),
14561            &"Value expected was either ON or OFF",
14562        )),
14563    }
14564}
14565
14566/// philips:9290030521 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290030521.html)
14567///
14568/// 
14569#[cfg_attr(feature = "debug", derive(Debug))]
14570#[cfg_attr(feature = "clone", derive(Clone))]
14571#[derive(Deserialize)]
14572pub struct Zigbee9290030521 {
14573    ///Brightness of this light
14574    pub brightness: f64,
14575    ///Link quality (signal strength)
14576    pub linkquality: f64,
14577    ///Controls the behavior when the device is powered on after power loss
14578    pub power_on_behavior: Zigbee9290030521Poweronbehavior,
14579    ///Zigbee herdsman description: "On/off state of this light"
14580    ///The string values get converted into boolean with: ON = true and OFF = false
14581    #[serde(deserialize_with = "zigbee9290030521_state_deserializer")]
14582    pub state: bool,
14583    /// Optional last_seen type, set as a global zigbee2mqtt setting
14584    pub last_seen: Option<LastSeen>,
14585    /// Optional elapsed type
14586    pub elapsed: Option<u64>,
14587}
14588/// Deserialize bool from String with custom value mapping
14589fn zigbee9290030521_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14590where
14591    D: Deserializer<'de>,
14592{
14593    match String::deserialize(deserializer)?.as_ref() {
14594        "ON" => Ok(true),
14595        "OFF" => Ok(false),
14596        other => Err(de::Error::invalid_value(
14597            Unexpected::Str(other),
14598            &"Value expected was either ON or OFF",
14599        )),
14600    }
14601}
14602
14603/// philips:9290030523 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290030523.html)
14604///
14605/// 
14606#[cfg_attr(feature = "debug", derive(Debug))]
14607#[cfg_attr(feature = "clone", derive(Clone))]
14608#[derive(Deserialize)]
14609pub struct Zigbee9290030523 {
14610    ///Brightness of this light
14611    pub brightness: f64,
14612    ///Link quality (signal strength)
14613    pub linkquality: f64,
14614    ///Controls the behavior when the device is powered on after power loss
14615    pub power_on_behavior: Zigbee9290030523Poweronbehavior,
14616    ///Zigbee herdsman description: "On/off state of this light"
14617    ///The string values get converted into boolean with: ON = true and OFF = false
14618    #[serde(deserialize_with = "zigbee9290030523_state_deserializer")]
14619    pub state: bool,
14620    /// Optional last_seen type, set as a global zigbee2mqtt setting
14621    pub last_seen: Option<LastSeen>,
14622    /// Optional elapsed type
14623    pub elapsed: Option<u64>,
14624}
14625/// Deserialize bool from String with custom value mapping
14626fn zigbee9290030523_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14627where
14628    D: Deserializer<'de>,
14629{
14630    match String::deserialize(deserializer)?.as_ref() {
14631        "ON" => Ok(true),
14632        "OFF" => Ok(false),
14633        other => Err(de::Error::invalid_value(
14634            Unexpected::Str(other),
14635            &"Value expected was either ON or OFF",
14636        )),
14637    }
14638}
14639
14640/// philips:929003052601 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003052601.html)
14641///
14642/// 
14643#[cfg_attr(feature = "debug", derive(Debug))]
14644#[cfg_attr(feature = "clone", derive(Clone))]
14645#[derive(Deserialize)]
14646pub struct Zigbee929003052601 {
14647    ///Brightness of this light
14648    pub brightness: f64,
14649    ///Color temperature of this light
14650    pub color_temp: f64,
14651    ///Color temperature after cold power on of this light
14652    pub color_temp_startup: f64,
14653    ///Link quality (signal strength)
14654    pub linkquality: f64,
14655    ///Controls the behavior when the device is powered on after power loss
14656    pub power_on_behavior: Zigbee929003052601Poweronbehavior,
14657    ///Zigbee herdsman description: "On/off state of this light"
14658    ///The string values get converted into boolean with: ON = true and OFF = false
14659    #[serde(deserialize_with = "zigbee929003052601_state_deserializer")]
14660    pub state: bool,
14661    /// Optional last_seen type, set as a global zigbee2mqtt setting
14662    pub last_seen: Option<LastSeen>,
14663    /// Optional elapsed type
14664    pub elapsed: Option<u64>,
14665}
14666/// Deserialize bool from String with custom value mapping
14667fn zigbee929003052601_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14668where
14669    D: Deserializer<'de>,
14670{
14671    match String::deserialize(deserializer)?.as_ref() {
14672        "ON" => Ok(true),
14673        "OFF" => Ok(false),
14674        other => Err(de::Error::invalid_value(
14675            Unexpected::Str(other),
14676            &"Value expected was either ON or OFF",
14677        )),
14678    }
14679}
14680
14681/// philips:929003052901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003052901.html)
14682///
14683/// 
14684#[cfg_attr(feature = "debug", derive(Debug))]
14685#[cfg_attr(feature = "clone", derive(Clone))]
14686#[derive(Deserialize)]
14687pub struct Zigbee929003052901 {
14688    ///Brightness of this light
14689    pub brightness: f64,
14690    ///Color temperature of this light
14691    pub color_temp: f64,
14692    ///Color temperature after cold power on of this light
14693    pub color_temp_startup: f64,
14694    ///Link quality (signal strength)
14695    pub linkquality: f64,
14696    ///Controls the behavior when the device is powered on after power loss
14697    pub power_on_behavior: Zigbee929003052901Poweronbehavior,
14698    ///Zigbee herdsman description: "On/off state of this light"
14699    ///The string values get converted into boolean with: ON = true and OFF = false
14700    #[serde(deserialize_with = "zigbee929003052901_state_deserializer")]
14701    pub state: bool,
14702    /// Optional last_seen type, set as a global zigbee2mqtt setting
14703    pub last_seen: Option<LastSeen>,
14704    /// Optional elapsed type
14705    pub elapsed: Option<u64>,
14706}
14707/// Deserialize bool from String with custom value mapping
14708fn zigbee929003052901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14709where
14710    D: Deserializer<'de>,
14711{
14712    match String::deserialize(deserializer)?.as_ref() {
14713        "ON" => Ok(true),
14714        "OFF" => Ok(false),
14715        other => Err(de::Error::invalid_value(
14716            Unexpected::Str(other),
14717            &"Value expected was either ON or OFF",
14718        )),
14719    }
14720}
14721
14722/// philips:929003053001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003053001.html)
14723///
14724/// 
14725#[cfg_attr(feature = "debug", derive(Debug))]
14726#[cfg_attr(feature = "clone", derive(Clone))]
14727#[derive(Deserialize)]
14728pub struct Zigbee929003053001 {
14729    ///Brightness of this light
14730    pub brightness: f64,
14731    ///Color temperature of this light
14732    pub color_temp: f64,
14733    ///Color temperature after cold power on of this light
14734    pub color_temp_startup: f64,
14735    ///Link quality (signal strength)
14736    pub linkquality: f64,
14737    ///Controls the behavior when the device is powered on after power loss
14738    pub power_on_behavior: Zigbee929003053001Poweronbehavior,
14739    ///Zigbee herdsman description: "On/off state of this light"
14740    ///The string values get converted into boolean with: ON = true and OFF = false
14741    #[serde(deserialize_with = "zigbee929003053001_state_deserializer")]
14742    pub state: bool,
14743    /// Optional last_seen type, set as a global zigbee2mqtt setting
14744    pub last_seen: Option<LastSeen>,
14745    /// Optional elapsed type
14746    pub elapsed: Option<u64>,
14747}
14748/// Deserialize bool from String with custom value mapping
14749fn zigbee929003053001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14750where
14751    D: Deserializer<'de>,
14752{
14753    match String::deserialize(deserializer)?.as_ref() {
14754        "ON" => Ok(true),
14755        "OFF" => Ok(false),
14756        other => Err(de::Error::invalid_value(
14757            Unexpected::Str(other),
14758            &"Value expected was either ON or OFF",
14759        )),
14760    }
14761}
14762
14763/// philips:929003053201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003053201.html)
14764///
14765/// 
14766#[cfg_attr(feature = "debug", derive(Debug))]
14767#[cfg_attr(feature = "clone", derive(Clone))]
14768#[derive(Deserialize)]
14769pub struct Zigbee929003053201 {
14770    ///Brightness of this light
14771    pub brightness: f64,
14772    ///Color temperature of this light
14773    pub color_temp: f64,
14774    ///Color temperature after cold power on of this light
14775    pub color_temp_startup: f64,
14776    ///Link quality (signal strength)
14777    pub linkquality: f64,
14778    ///Controls the behavior when the device is powered on after power loss
14779    pub power_on_behavior: Zigbee929003053201Poweronbehavior,
14780    ///Zigbee herdsman description: "On/off state of this light"
14781    ///The string values get converted into boolean with: ON = true and OFF = false
14782    #[serde(deserialize_with = "zigbee929003053201_state_deserializer")]
14783    pub state: bool,
14784    /// Optional last_seen type, set as a global zigbee2mqtt setting
14785    pub last_seen: Option<LastSeen>,
14786    /// Optional elapsed type
14787    pub elapsed: Option<u64>,
14788}
14789/// Deserialize bool from String with custom value mapping
14790fn zigbee929003053201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14791where
14792    D: Deserializer<'de>,
14793{
14794    match String::deserialize(deserializer)?.as_ref() {
14795        "ON" => Ok(true),
14796        "OFF" => Ok(false),
14797        other => Err(de::Error::invalid_value(
14798            Unexpected::Str(other),
14799            &"Value expected was either ON or OFF",
14800        )),
14801    }
14802}
14803
14804/// philips:929003054001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003054001.html)
14805///
14806/// 
14807#[cfg_attr(feature = "debug", derive(Debug))]
14808#[cfg_attr(feature = "clone", derive(Clone))]
14809#[derive(Deserialize)]
14810pub struct Zigbee929003054001 {
14811    ///Brightness of this light
14812    pub brightness: f64,
14813    ///Color temperature of this light
14814    pub color_temp: f64,
14815    ///Color temperature after cold power on of this light
14816    pub color_temp_startup: f64,
14817    ///Link quality (signal strength)
14818    pub linkquality: f64,
14819    ///Controls the behavior when the device is powered on after power loss
14820    pub power_on_behavior: Zigbee929003054001Poweronbehavior,
14821    ///Zigbee herdsman description: "On/off state of this light"
14822    ///The string values get converted into boolean with: ON = true and OFF = false
14823    #[serde(deserialize_with = "zigbee929003054001_state_deserializer")]
14824    pub state: bool,
14825    /// Optional last_seen type, set as a global zigbee2mqtt setting
14826    pub last_seen: Option<LastSeen>,
14827    /// Optional elapsed type
14828    pub elapsed: Option<u64>,
14829}
14830/// Deserialize bool from String with custom value mapping
14831fn zigbee929003054001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14832where
14833    D: Deserializer<'de>,
14834{
14835    match String::deserialize(deserializer)?.as_ref() {
14836        "ON" => Ok(true),
14837        "OFF" => Ok(false),
14838        other => Err(de::Error::invalid_value(
14839            Unexpected::Str(other),
14840            &"Value expected was either ON or OFF",
14841        )),
14842    }
14843}
14844
14845/// philips:929003054101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003054101.html)
14846///
14847/// 
14848#[cfg_attr(feature = "debug", derive(Debug))]
14849#[cfg_attr(feature = "clone", derive(Clone))]
14850#[derive(Deserialize)]
14851pub struct Zigbee929003054101 {
14852    ///Brightness of this light
14853    pub brightness: f64,
14854    ///Color temperature of this light
14855    pub color_temp: f64,
14856    ///Color temperature after cold power on of this light
14857    pub color_temp_startup: f64,
14858    ///Link quality (signal strength)
14859    pub linkquality: f64,
14860    ///Controls the behavior when the device is powered on after power loss
14861    pub power_on_behavior: Zigbee929003054101Poweronbehavior,
14862    ///Zigbee herdsman description: "On/off state of this light"
14863    ///The string values get converted into boolean with: ON = true and OFF = false
14864    #[serde(deserialize_with = "zigbee929003054101_state_deserializer")]
14865    pub state: bool,
14866    /// Optional last_seen type, set as a global zigbee2mqtt setting
14867    pub last_seen: Option<LastSeen>,
14868    /// Optional elapsed type
14869    pub elapsed: Option<u64>,
14870}
14871/// Deserialize bool from String with custom value mapping
14872fn zigbee929003054101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14873where
14874    D: Deserializer<'de>,
14875{
14876    match String::deserialize(deserializer)?.as_ref() {
14877        "ON" => Ok(true),
14878        "OFF" => Ok(false),
14879        other => Err(de::Error::invalid_value(
14880            Unexpected::Str(other),
14881            &"Value expected was either ON or OFF",
14882        )),
14883    }
14884}
14885
14886/// philips:929003054301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003054301.html)
14887///
14888/// 
14889#[cfg_attr(feature = "debug", derive(Debug))]
14890#[cfg_attr(feature = "clone", derive(Clone))]
14891#[derive(Deserialize)]
14892pub struct Zigbee929003054301 {
14893    ///Brightness of this light
14894    pub brightness: f64,
14895    ///Color temperature of this light
14896    pub color_temp: f64,
14897    ///Color temperature after cold power on of this light
14898    pub color_temp_startup: f64,
14899    ///Link quality (signal strength)
14900    pub linkquality: f64,
14901    ///Controls the behavior when the device is powered on after power loss
14902    pub power_on_behavior: Zigbee929003054301Poweronbehavior,
14903    ///Zigbee herdsman description: "On/off state of this light"
14904    ///The string values get converted into boolean with: ON = true and OFF = false
14905    #[serde(deserialize_with = "zigbee929003054301_state_deserializer")]
14906    pub state: bool,
14907    /// Optional last_seen type, set as a global zigbee2mqtt setting
14908    pub last_seen: Option<LastSeen>,
14909    /// Optional elapsed type
14910    pub elapsed: Option<u64>,
14911}
14912/// Deserialize bool from String with custom value mapping
14913fn zigbee929003054301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14914where
14915    D: Deserializer<'de>,
14916{
14917    match String::deserialize(deserializer)?.as_ref() {
14918        "ON" => Ok(true),
14919        "OFF" => Ok(false),
14920        other => Err(de::Error::invalid_value(
14921            Unexpected::Str(other),
14922            &"Value expected was either ON or OFF",
14923        )),
14924    }
14925}
14926
14927/// philips:929003054501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003054501.html)
14928///
14929/// 
14930#[cfg_attr(feature = "debug", derive(Debug))]
14931#[cfg_attr(feature = "clone", derive(Clone))]
14932#[derive(Deserialize)]
14933pub struct Zigbee929003054501 {
14934    ///Brightness of this light
14935    pub brightness: f64,
14936    ///Color temperature of this light
14937    pub color_temp: f64,
14938    ///Color temperature after cold power on of this light
14939    pub color_temp_startup: f64,
14940    ///Link quality (signal strength)
14941    pub linkquality: f64,
14942    ///Controls the behavior when the device is powered on after power loss
14943    pub power_on_behavior: Zigbee929003054501Poweronbehavior,
14944    ///Zigbee herdsman description: "On/off state of this light"
14945    ///The string values get converted into boolean with: ON = true and OFF = false
14946    #[serde(deserialize_with = "zigbee929003054501_state_deserializer")]
14947    pub state: bool,
14948    /// Optional last_seen type, set as a global zigbee2mqtt setting
14949    pub last_seen: Option<LastSeen>,
14950    /// Optional elapsed type
14951    pub elapsed: Option<u64>,
14952}
14953/// Deserialize bool from String with custom value mapping
14954fn zigbee929003054501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14955where
14956    D: Deserializer<'de>,
14957{
14958    match String::deserialize(deserializer)?.as_ref() {
14959        "ON" => Ok(true),
14960        "OFF" => Ok(false),
14961        other => Err(de::Error::invalid_value(
14962            Unexpected::Str(other),
14963            &"Value expected was either ON or OFF",
14964        )),
14965    }
14966}
14967
14968/// philips:929003054601 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003054601.html)
14969///
14970/// 
14971#[cfg_attr(feature = "debug", derive(Debug))]
14972#[cfg_attr(feature = "clone", derive(Clone))]
14973#[derive(Deserialize)]
14974pub struct Zigbee929003054601 {
14975    ///Brightness of this light
14976    pub brightness: f64,
14977    ///Color temperature of this light
14978    pub color_temp: f64,
14979    ///Color temperature after cold power on of this light
14980    pub color_temp_startup: f64,
14981    ///Link quality (signal strength)
14982    pub linkquality: f64,
14983    ///Controls the behavior when the device is powered on after power loss
14984    pub power_on_behavior: Zigbee929003054601Poweronbehavior,
14985    ///Zigbee herdsman description: "On/off state of this light"
14986    ///The string values get converted into boolean with: ON = true and OFF = false
14987    #[serde(deserialize_with = "zigbee929003054601_state_deserializer")]
14988    pub state: bool,
14989    /// Optional last_seen type, set as a global zigbee2mqtt setting
14990    pub last_seen: Option<LastSeen>,
14991    /// Optional elapsed type
14992    pub elapsed: Option<u64>,
14993}
14994/// Deserialize bool from String with custom value mapping
14995fn zigbee929003054601_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
14996where
14997    D: Deserializer<'de>,
14998{
14999    match String::deserialize(deserializer)?.as_ref() {
15000        "ON" => Ok(true),
15001        "OFF" => Ok(false),
15002        other => Err(de::Error::invalid_value(
15003            Unexpected::Str(other),
15004            &"Value expected was either ON or OFF",
15005        )),
15006    }
15007}
15008
15009/// philips:929003054701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003054701.html)
15010///
15011/// 
15012#[cfg_attr(feature = "debug", derive(Debug))]
15013#[cfg_attr(feature = "clone", derive(Clone))]
15014#[derive(Deserialize)]
15015pub struct Zigbee929003054701 {
15016    ///Brightness of this light
15017    pub brightness: f64,
15018    ///Color temperature of this light
15019    pub color_temp: f64,
15020    ///Color temperature after cold power on of this light
15021    pub color_temp_startup: f64,
15022    ///Link quality (signal strength)
15023    pub linkquality: f64,
15024    ///Controls the behavior when the device is powered on after power loss
15025    pub power_on_behavior: Zigbee929003054701Poweronbehavior,
15026    ///Zigbee herdsman description: "On/off state of this light"
15027    ///The string values get converted into boolean with: ON = true and OFF = false
15028    #[serde(deserialize_with = "zigbee929003054701_state_deserializer")]
15029    pub state: bool,
15030    /// Optional last_seen type, set as a global zigbee2mqtt setting
15031    pub last_seen: Option<LastSeen>,
15032    /// Optional elapsed type
15033    pub elapsed: Option<u64>,
15034}
15035/// Deserialize bool from String with custom value mapping
15036fn zigbee929003054701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15037where
15038    D: Deserializer<'de>,
15039{
15040    match String::deserialize(deserializer)?.as_ref() {
15041        "ON" => Ok(true),
15042        "OFF" => Ok(false),
15043        other => Err(de::Error::invalid_value(
15044            Unexpected::Str(other),
15045            &"Value expected was either ON or OFF",
15046        )),
15047    }
15048}
15049
15050/// philips:929003054801 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003054801.html)
15051///
15052/// 
15053#[cfg_attr(feature = "debug", derive(Debug))]
15054#[cfg_attr(feature = "clone", derive(Clone))]
15055#[derive(Deserialize)]
15056pub struct Zigbee929003054801 {
15057    ///Brightness of this light
15058    pub brightness: f64,
15059    ///Color temperature of this light
15060    pub color_temp: f64,
15061    ///Color temperature after cold power on of this light
15062    pub color_temp_startup: f64,
15063    ///Link quality (signal strength)
15064    pub linkquality: f64,
15065    ///Controls the behavior when the device is powered on after power loss
15066    pub power_on_behavior: Zigbee929003054801Poweronbehavior,
15067    ///Zigbee herdsman description: "On/off state of this light"
15068    ///The string values get converted into boolean with: ON = true and OFF = false
15069    #[serde(deserialize_with = "zigbee929003054801_state_deserializer")]
15070    pub state: bool,
15071    /// Optional last_seen type, set as a global zigbee2mqtt setting
15072    pub last_seen: Option<LastSeen>,
15073    /// Optional elapsed type
15074    pub elapsed: Option<u64>,
15075}
15076/// Deserialize bool from String with custom value mapping
15077fn zigbee929003054801_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15078where
15079    D: Deserializer<'de>,
15080{
15081    match String::deserialize(deserializer)?.as_ref() {
15082        "ON" => Ok(true),
15083        "OFF" => Ok(false),
15084        other => Err(de::Error::invalid_value(
15085            Unexpected::Str(other),
15086            &"Value expected was either ON or OFF",
15087        )),
15088    }
15089}
15090
15091/// philips:929003055201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003055201.html)
15092///
15093/// 
15094#[cfg_attr(feature = "debug", derive(Debug))]
15095#[cfg_attr(feature = "clone", derive(Clone))]
15096#[derive(Deserialize)]
15097pub struct Zigbee929003055201 {
15098    ///Brightness of this light
15099    pub brightness: f64,
15100    ///Color temperature of this light
15101    pub color_temp: f64,
15102    ///Color temperature after cold power on of this light
15103    pub color_temp_startup: f64,
15104    ///Link quality (signal strength)
15105    pub linkquality: f64,
15106    ///Controls the behavior when the device is powered on after power loss
15107    pub power_on_behavior: Zigbee929003055201Poweronbehavior,
15108    ///Zigbee herdsman description: "On/off state of this light"
15109    ///The string values get converted into boolean with: ON = true and OFF = false
15110    #[serde(deserialize_with = "zigbee929003055201_state_deserializer")]
15111    pub state: bool,
15112    /// Optional last_seen type, set as a global zigbee2mqtt setting
15113    pub last_seen: Option<LastSeen>,
15114    /// Optional elapsed type
15115    pub elapsed: Option<u64>,
15116}
15117/// Deserialize bool from String with custom value mapping
15118fn zigbee929003055201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15119where
15120    D: Deserializer<'de>,
15121{
15122    match String::deserialize(deserializer)?.as_ref() {
15123        "ON" => Ok(true),
15124        "OFF" => Ok(false),
15125        other => Err(de::Error::invalid_value(
15126            Unexpected::Str(other),
15127            &"Value expected was either ON or OFF",
15128        )),
15129    }
15130}
15131
15132/// philips:929003055401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003055401.html)
15133///
15134/// 
15135#[cfg_attr(feature = "debug", derive(Debug))]
15136#[cfg_attr(feature = "clone", derive(Clone))]
15137#[derive(Deserialize)]
15138pub struct Zigbee929003055401 {
15139    ///Brightness of this light
15140    pub brightness: f64,
15141    ///Color temperature of this light
15142    pub color_temp: f64,
15143    ///Color temperature after cold power on of this light
15144    pub color_temp_startup: f64,
15145    ///Link quality (signal strength)
15146    pub linkquality: f64,
15147    ///Controls the behavior when the device is powered on after power loss
15148    pub power_on_behavior: Zigbee929003055401Poweronbehavior,
15149    ///Zigbee herdsman description: "On/off state of this light"
15150    ///The string values get converted into boolean with: ON = true and OFF = false
15151    #[serde(deserialize_with = "zigbee929003055401_state_deserializer")]
15152    pub state: bool,
15153    /// Optional last_seen type, set as a global zigbee2mqtt setting
15154    pub last_seen: Option<LastSeen>,
15155    /// Optional elapsed type
15156    pub elapsed: Option<u64>,
15157}
15158/// Deserialize bool from String with custom value mapping
15159fn zigbee929003055401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15160where
15161    D: Deserializer<'de>,
15162{
15163    match String::deserialize(deserializer)?.as_ref() {
15164        "ON" => Ok(true),
15165        "OFF" => Ok(false),
15166        other => Err(de::Error::invalid_value(
15167            Unexpected::Str(other),
15168            &"Value expected was either ON or OFF",
15169        )),
15170    }
15171}
15172
15173/// philips:929003055501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003055501.html)
15174///
15175/// 
15176#[cfg_attr(feature = "debug", derive(Debug))]
15177#[cfg_attr(feature = "clone", derive(Clone))]
15178#[derive(Deserialize)]
15179pub struct Zigbee929003055501 {
15180    ///Brightness of this light
15181    pub brightness: f64,
15182    ///Color temperature of this light
15183    pub color_temp: f64,
15184    ///Color temperature after cold power on of this light
15185    pub color_temp_startup: f64,
15186    ///Link quality (signal strength)
15187    pub linkquality: f64,
15188    ///Controls the behavior when the device is powered on after power loss
15189    pub power_on_behavior: Zigbee929003055501Poweronbehavior,
15190    ///Zigbee herdsman description: "On/off state of this light"
15191    ///The string values get converted into boolean with: ON = true and OFF = false
15192    #[serde(deserialize_with = "zigbee929003055501_state_deserializer")]
15193    pub state: bool,
15194    /// Optional last_seen type, set as a global zigbee2mqtt setting
15195    pub last_seen: Option<LastSeen>,
15196    /// Optional elapsed type
15197    pub elapsed: Option<u64>,
15198}
15199/// Deserialize bool from String with custom value mapping
15200fn zigbee929003055501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15201where
15202    D: Deserializer<'de>,
15203{
15204    match String::deserialize(deserializer)?.as_ref() {
15205        "ON" => Ok(true),
15206        "OFF" => Ok(false),
15207        other => Err(de::Error::invalid_value(
15208            Unexpected::Str(other),
15209            &"Value expected was either ON or OFF",
15210        )),
15211    }
15212}
15213
15214/// philips:929003055701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003055701.html)
15215///
15216/// 
15217#[cfg_attr(feature = "debug", derive(Debug))]
15218#[cfg_attr(feature = "clone", derive(Clone))]
15219#[derive(Deserialize)]
15220pub struct Zigbee929003055701 {
15221    ///Brightness of this light
15222    pub brightness: f64,
15223    ///Color temperature of this light
15224    pub color_temp: f64,
15225    ///Color temperature after cold power on of this light
15226    pub color_temp_startup: f64,
15227    ///Link quality (signal strength)
15228    pub linkquality: f64,
15229    ///Controls the behavior when the device is powered on after power loss
15230    pub power_on_behavior: Zigbee929003055701Poweronbehavior,
15231    ///Zigbee herdsman description: "On/off state of this light"
15232    ///The string values get converted into boolean with: ON = true and OFF = false
15233    #[serde(deserialize_with = "zigbee929003055701_state_deserializer")]
15234    pub state: bool,
15235    /// Optional last_seen type, set as a global zigbee2mqtt setting
15236    pub last_seen: Option<LastSeen>,
15237    /// Optional elapsed type
15238    pub elapsed: Option<u64>,
15239}
15240/// Deserialize bool from String with custom value mapping
15241fn zigbee929003055701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15242where
15243    D: Deserializer<'de>,
15244{
15245    match String::deserialize(deserializer)?.as_ref() {
15246        "ON" => Ok(true),
15247        "OFF" => Ok(false),
15248        other => Err(de::Error::invalid_value(
15249            Unexpected::Str(other),
15250            &"Value expected was either ON or OFF",
15251        )),
15252    }
15253}
15254
15255/// philips:929003055801 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003055801.html)
15256///
15257/// 
15258#[cfg_attr(feature = "debug", derive(Debug))]
15259#[cfg_attr(feature = "clone", derive(Clone))]
15260#[derive(Deserialize)]
15261pub struct Zigbee929003055801 {
15262    ///Brightness of this light
15263    pub brightness: f64,
15264    ///Color temperature of this light
15265    pub color_temp: f64,
15266    ///Color temperature after cold power on of this light
15267    pub color_temp_startup: f64,
15268    ///Link quality (signal strength)
15269    pub linkquality: f64,
15270    ///Controls the behavior when the device is powered on after power loss
15271    pub power_on_behavior: Zigbee929003055801Poweronbehavior,
15272    ///Zigbee herdsman description: "On/off state of this light"
15273    ///The string values get converted into boolean with: ON = true and OFF = false
15274    #[serde(deserialize_with = "zigbee929003055801_state_deserializer")]
15275    pub state: bool,
15276    /// Optional last_seen type, set as a global zigbee2mqtt setting
15277    pub last_seen: Option<LastSeen>,
15278    /// Optional elapsed type
15279    pub elapsed: Option<u64>,
15280}
15281/// Deserialize bool from String with custom value mapping
15282fn zigbee929003055801_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15283where
15284    D: Deserializer<'de>,
15285{
15286    match String::deserialize(deserializer)?.as_ref() {
15287        "ON" => Ok(true),
15288        "OFF" => Ok(false),
15289        other => Err(de::Error::invalid_value(
15290            Unexpected::Str(other),
15291            &"Value expected was either ON or OFF",
15292        )),
15293    }
15294}
15295
15296/// philips:929003055901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003055901.html)
15297///
15298/// 
15299#[cfg_attr(feature = "debug", derive(Debug))]
15300#[cfg_attr(feature = "clone", derive(Clone))]
15301#[derive(Deserialize)]
15302pub struct Zigbee929003055901 {
15303    ///Brightness of this light
15304    pub brightness: f64,
15305    ///Color temperature of this light
15306    pub color_temp: f64,
15307    ///Color temperature after cold power on of this light
15308    pub color_temp_startup: f64,
15309    ///Link quality (signal strength)
15310    pub linkquality: f64,
15311    ///Controls the behavior when the device is powered on after power loss
15312    pub power_on_behavior: Zigbee929003055901Poweronbehavior,
15313    ///Zigbee herdsman description: "On/off state of this light"
15314    ///The string values get converted into boolean with: ON = true and OFF = false
15315    #[serde(deserialize_with = "zigbee929003055901_state_deserializer")]
15316    pub state: bool,
15317    /// Optional last_seen type, set as a global zigbee2mqtt setting
15318    pub last_seen: Option<LastSeen>,
15319    /// Optional elapsed type
15320    pub elapsed: Option<u64>,
15321}
15322/// Deserialize bool from String with custom value mapping
15323fn zigbee929003055901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15324where
15325    D: Deserializer<'de>,
15326{
15327    match String::deserialize(deserializer)?.as_ref() {
15328        "ON" => Ok(true),
15329        "OFF" => Ok(false),
15330        other => Err(de::Error::invalid_value(
15331            Unexpected::Str(other),
15332            &"Value expected was either ON or OFF",
15333        )),
15334    }
15335}
15336
15337/// philips:929003056001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003056001.html)
15338///
15339/// 
15340#[cfg_attr(feature = "debug", derive(Debug))]
15341#[cfg_attr(feature = "clone", derive(Clone))]
15342#[derive(Deserialize)]
15343pub struct Zigbee929003056001 {
15344    ///Brightness of this light
15345    pub brightness: f64,
15346    ///Color temperature of this light
15347    pub color_temp: f64,
15348    ///Color temperature after cold power on of this light
15349    pub color_temp_startup: f64,
15350    ///Link quality (signal strength)
15351    pub linkquality: f64,
15352    ///Controls the behavior when the device is powered on after power loss
15353    pub power_on_behavior: Zigbee929003056001Poweronbehavior,
15354    ///Zigbee herdsman description: "On/off state of this light"
15355    ///The string values get converted into boolean with: ON = true and OFF = false
15356    #[serde(deserialize_with = "zigbee929003056001_state_deserializer")]
15357    pub state: bool,
15358    /// Optional last_seen type, set as a global zigbee2mqtt setting
15359    pub last_seen: Option<LastSeen>,
15360    /// Optional elapsed type
15361    pub elapsed: Option<u64>,
15362}
15363/// Deserialize bool from String with custom value mapping
15364fn zigbee929003056001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15365where
15366    D: Deserializer<'de>,
15367{
15368    match String::deserialize(deserializer)?.as_ref() {
15369        "ON" => Ok(true),
15370        "OFF" => Ok(false),
15371        other => Err(de::Error::invalid_value(
15372            Unexpected::Str(other),
15373            &"Value expected was either ON or OFF",
15374        )),
15375    }
15376}
15377
15378/// philips:929003056701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003056701.html)
15379///
15380/// 
15381#[cfg_attr(feature = "debug", derive(Debug))]
15382#[cfg_attr(feature = "clone", derive(Clone))]
15383#[derive(Deserialize)]
15384pub struct Zigbee929003056701 {
15385    ///Brightness of this light
15386    pub brightness: f64,
15387    ///Color temperature of this light
15388    pub color_temp: f64,
15389    ///Color temperature after cold power on of this light
15390    pub color_temp_startup: f64,
15391    ///Link quality (signal strength)
15392    pub linkquality: f64,
15393    ///Controls the behavior when the device is powered on after power loss
15394    pub power_on_behavior: Zigbee929003056701Poweronbehavior,
15395    ///Zigbee herdsman description: "On/off state of this light"
15396    ///The string values get converted into boolean with: ON = true and OFF = false
15397    #[serde(deserialize_with = "zigbee929003056701_state_deserializer")]
15398    pub state: bool,
15399    /// Optional last_seen type, set as a global zigbee2mqtt setting
15400    pub last_seen: Option<LastSeen>,
15401    /// Optional elapsed type
15402    pub elapsed: Option<u64>,
15403}
15404/// Deserialize bool from String with custom value mapping
15405fn zigbee929003056701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15406where
15407    D: Deserializer<'de>,
15408{
15409    match String::deserialize(deserializer)?.as_ref() {
15410        "ON" => Ok(true),
15411        "OFF" => Ok(false),
15412        other => Err(de::Error::invalid_value(
15413            Unexpected::Str(other),
15414            &"Value expected was either ON or OFF",
15415        )),
15416    }
15417}
15418
15419/// philips:929003056901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003056901.html)
15420///
15421/// 
15422#[cfg_attr(feature = "debug", derive(Debug))]
15423#[cfg_attr(feature = "clone", derive(Clone))]
15424#[derive(Deserialize)]
15425pub struct Zigbee929003056901 {
15426    ///Brightness of this light
15427    pub brightness: f64,
15428    ///Color temperature of this light
15429    pub color_temp: f64,
15430    ///Color temperature after cold power on of this light
15431    pub color_temp_startup: f64,
15432    ///Link quality (signal strength)
15433    pub linkquality: f64,
15434    ///Controls the behavior when the device is powered on after power loss
15435    pub power_on_behavior: Zigbee929003056901Poweronbehavior,
15436    ///Zigbee herdsman description: "On/off state of this light"
15437    ///The string values get converted into boolean with: ON = true and OFF = false
15438    #[serde(deserialize_with = "zigbee929003056901_state_deserializer")]
15439    pub state: bool,
15440    /// Optional last_seen type, set as a global zigbee2mqtt setting
15441    pub last_seen: Option<LastSeen>,
15442    /// Optional elapsed type
15443    pub elapsed: Option<u64>,
15444}
15445/// Deserialize bool from String with custom value mapping
15446fn zigbee929003056901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15447where
15448    D: Deserializer<'de>,
15449{
15450    match String::deserialize(deserializer)?.as_ref() {
15451        "ON" => Ok(true),
15452        "OFF" => Ok(false),
15453        other => Err(de::Error::invalid_value(
15454            Unexpected::Str(other),
15455            &"Value expected was either ON or OFF",
15456        )),
15457    }
15458}
15459
15460/// philips:9290030674 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290030674.html)
15461///
15462/// 
15463#[cfg_attr(feature = "debug", derive(Debug))]
15464#[cfg_attr(feature = "clone", derive(Clone))]
15465#[derive(Deserialize)]
15466pub struct Zigbee9290030674 {
15467    ///Remaining battery in %, can take up to 24 hours before reported.
15468    pub battery: f64,
15469    ///Raw measured illuminance
15470    pub illuminance: f64,
15471    ///Measured illuminance in lux
15472    pub illuminance_lux: f64,
15473    ///Zigbee herdsman description: "Blink green LED on motion detection"
15474    ///Boolean values can be an unintuitive way round: value_on = true and value_off = false, consider double checking Zigbee2MQTT to understand what they mean
15475    pub led_indication: bool,
15476    ///Link quality (signal strength)
15477    pub linkquality: f64,
15478    pub motion_sensitivity: Zigbee9290030674Motionsensitivity,
15479    ///Zigbee herdsman description: "Indicates whether the device detected occupancy"
15480    ///Boolean values can be an unintuitive way round: value_on = true and value_off = false, consider double checking Zigbee2MQTT to understand what they mean
15481    pub occupancy: bool,
15482    pub occupancy_timeout: f64,
15483    ///Measured temperature value
15484    pub temperature: f64,
15485    /// Optional last_seen type, set as a global zigbee2mqtt setting
15486    pub last_seen: Option<LastSeen>,
15487    /// Optional elapsed type
15488    pub elapsed: Option<u64>,
15489}/// philips:9290030675 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290030675.html)
15490///
15491/// 
15492#[cfg_attr(feature = "debug", derive(Debug))]
15493#[cfg_attr(feature = "clone", derive(Clone))]
15494#[derive(Deserialize)]
15495pub struct Zigbee9290030675 {
15496    ///Remaining battery in %, can take up to 24 hours before reported.
15497    pub battery: f64,
15498    ///Raw measured illuminance
15499    pub illuminance: f64,
15500    ///Measured illuminance in lux
15501    pub illuminance_lux: f64,
15502    ///Zigbee herdsman description: "Blink green LED on motion detection"
15503    ///Boolean values can be an unintuitive way round: value_on = true and value_off = false, consider double checking Zigbee2MQTT to understand what they mean
15504    pub led_indication: bool,
15505    ///Link quality (signal strength)
15506    pub linkquality: f64,
15507    pub motion_sensitivity: Zigbee9290030675Motionsensitivity,
15508    ///Zigbee herdsman description: "Indicates whether the device detected occupancy"
15509    ///Boolean values can be an unintuitive way round: value_on = true and value_off = false, consider double checking Zigbee2MQTT to understand what they mean
15510    pub occupancy: bool,
15511    pub occupancy_timeout: f64,
15512    ///Measured temperature value
15513    pub temperature: f64,
15514    /// Optional last_seen type, set as a global zigbee2mqtt setting
15515    pub last_seen: Option<LastSeen>,
15516    /// Optional elapsed type
15517    pub elapsed: Option<u64>,
15518}/// philips:929003074701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003074701.html)
15519///
15520/// 
15521#[cfg_attr(feature = "debug", derive(Debug))]
15522#[cfg_attr(feature = "clone", derive(Clone))]
15523#[derive(Deserialize)]
15524pub struct Zigbee929003074701 {
15525    ///Brightness of this light
15526    pub brightness: f64,
15527    ///Color temperature of this light
15528    pub color_temp: f64,
15529    ///Color temperature after cold power on of this light
15530    pub color_temp_startup: f64,
15531    ///Link quality (signal strength)
15532    pub linkquality: f64,
15533    ///Controls the behavior when the device is powered on after power loss
15534    pub power_on_behavior: Zigbee929003074701Poweronbehavior,
15535    ///Zigbee herdsman description: "On/off state of this light"
15536    ///The string values get converted into boolean with: ON = true and OFF = false
15537    #[serde(deserialize_with = "zigbee929003074701_state_deserializer")]
15538    pub state: bool,
15539    /// Optional last_seen type, set as a global zigbee2mqtt setting
15540    pub last_seen: Option<LastSeen>,
15541    /// Optional elapsed type
15542    pub elapsed: Option<u64>,
15543}
15544/// Deserialize bool from String with custom value mapping
15545fn zigbee929003074701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15546where
15547    D: Deserializer<'de>,
15548{
15549    match String::deserialize(deserializer)?.as_ref() {
15550        "ON" => Ok(true),
15551        "OFF" => Ok(false),
15552        other => Err(de::Error::invalid_value(
15553            Unexpected::Str(other),
15554            &"Value expected was either ON or OFF",
15555        )),
15556    }
15557}
15558
15559/// philips:929003074801 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003074801.html)
15560///
15561/// 
15562#[cfg_attr(feature = "debug", derive(Debug))]
15563#[cfg_attr(feature = "clone", derive(Clone))]
15564#[derive(Deserialize)]
15565pub struct Zigbee929003074801 {
15566    ///Brightness of this light
15567    pub brightness: f64,
15568    ///Color temperature of this light
15569    pub color_temp: f64,
15570    ///Color temperature after cold power on of this light
15571    pub color_temp_startup: f64,
15572    ///Link quality (signal strength)
15573    pub linkquality: f64,
15574    ///Controls the behavior when the device is powered on after power loss
15575    pub power_on_behavior: Zigbee929003074801Poweronbehavior,
15576    ///Zigbee herdsman description: "On/off state of this light"
15577    ///The string values get converted into boolean with: ON = true and OFF = false
15578    #[serde(deserialize_with = "zigbee929003074801_state_deserializer")]
15579    pub state: bool,
15580    /// Optional last_seen type, set as a global zigbee2mqtt setting
15581    pub last_seen: Option<LastSeen>,
15582    /// Optional elapsed type
15583    pub elapsed: Option<u64>,
15584}
15585/// Deserialize bool from String with custom value mapping
15586fn zigbee929003074801_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15587where
15588    D: Deserializer<'de>,
15589{
15590    match String::deserialize(deserializer)?.as_ref() {
15591        "ON" => Ok(true),
15592        "OFF" => Ok(false),
15593        other => Err(de::Error::invalid_value(
15594            Unexpected::Str(other),
15595            &"Value expected was either ON or OFF",
15596        )),
15597    }
15598}
15599
15600/// philips:929003089301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003089301.html)
15601///
15602/// 
15603#[cfg_attr(feature = "debug", derive(Debug))]
15604#[cfg_attr(feature = "clone", derive(Clone))]
15605#[derive(Deserialize)]
15606pub struct Zigbee929003089301 {
15607    ///Brightness of this light
15608    pub brightness: f64,
15609    ///Color temperature of this light
15610    pub color_temp: f64,
15611    ///Color temperature after cold power on of this light
15612    pub color_temp_startup: f64,
15613    ///Link quality (signal strength)
15614    pub linkquality: f64,
15615    ///Controls the behavior when the device is powered on after power loss
15616    pub power_on_behavior: Zigbee929003089301Poweronbehavior,
15617    ///Zigbee herdsman description: "On/off state of this light"
15618    ///The string values get converted into boolean with: ON = true and OFF = false
15619    #[serde(deserialize_with = "zigbee929003089301_state_deserializer")]
15620    pub state: bool,
15621    /// Optional last_seen type, set as a global zigbee2mqtt setting
15622    pub last_seen: Option<LastSeen>,
15623    /// Optional elapsed type
15624    pub elapsed: Option<u64>,
15625}
15626/// Deserialize bool from String with custom value mapping
15627fn zigbee929003089301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15628where
15629    D: Deserializer<'de>,
15630{
15631    match String::deserialize(deserializer)?.as_ref() {
15632        "ON" => Ok(true),
15633        "OFF" => Ok(false),
15634        other => Err(de::Error::invalid_value(
15635            Unexpected::Str(other),
15636            &"Value expected was either ON or OFF",
15637        )),
15638    }
15639}
15640
15641/// philips:929003098601 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003098601.html)
15642///
15643/// 
15644#[cfg_attr(feature = "debug", derive(Debug))]
15645#[cfg_attr(feature = "clone", derive(Clone))]
15646#[derive(Deserialize)]
15647pub struct Zigbee929003098601 {
15648    ///Brightness of this light
15649    pub brightness: f64,
15650    ///Color temperature of this light
15651    pub color_temp: f64,
15652    ///Color temperature after cold power on of this light
15653    pub color_temp_startup: f64,
15654    ///Link quality (signal strength)
15655    pub linkquality: f64,
15656    ///Controls the behavior when the device is powered on after power loss
15657    pub power_on_behavior: Zigbee929003098601Poweronbehavior,
15658    ///Zigbee herdsman description: "On/off state of this light"
15659    ///The string values get converted into boolean with: ON = true and OFF = false
15660    #[serde(deserialize_with = "zigbee929003098601_state_deserializer")]
15661    pub state: bool,
15662    /// Optional last_seen type, set as a global zigbee2mqtt setting
15663    pub last_seen: Option<LastSeen>,
15664    /// Optional elapsed type
15665    pub elapsed: Option<u64>,
15666}
15667/// Deserialize bool from String with custom value mapping
15668fn zigbee929003098601_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15669where
15670    D: Deserializer<'de>,
15671{
15672    match String::deserialize(deserializer)?.as_ref() {
15673        "ON" => Ok(true),
15674        "OFF" => Ok(false),
15675        other => Err(de::Error::invalid_value(
15676            Unexpected::Str(other),
15677            &"Value expected was either ON or OFF",
15678        )),
15679    }
15680}
15681
15682/// philips:929003098901 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003098901.html)
15683///
15684/// 
15685#[cfg_attr(feature = "debug", derive(Debug))]
15686#[cfg_attr(feature = "clone", derive(Clone))]
15687#[derive(Deserialize)]
15688pub struct Zigbee929003098901 {
15689    ///Brightness of this light
15690    pub brightness: f64,
15691    ///Link quality (signal strength)
15692    pub linkquality: f64,
15693    ///Controls the behavior when the device is powered on after power loss
15694    pub power_on_behavior: Zigbee929003098901Poweronbehavior,
15695    ///Zigbee herdsman description: "On/off state of this light"
15696    ///The string values get converted into boolean with: ON = true and OFF = false
15697    #[serde(deserialize_with = "zigbee929003098901_state_deserializer")]
15698    pub state: bool,
15699    /// Optional last_seen type, set as a global zigbee2mqtt setting
15700    pub last_seen: Option<LastSeen>,
15701    /// Optional elapsed type
15702    pub elapsed: Option<u64>,
15703}
15704/// Deserialize bool from String with custom value mapping
15705fn zigbee929003098901_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15706where
15707    D: Deserializer<'de>,
15708{
15709    match String::deserialize(deserializer)?.as_ref() {
15710        "ON" => Ok(true),
15711        "OFF" => Ok(false),
15712        other => Err(de::Error::invalid_value(
15713            Unexpected::Str(other),
15714            &"Value expected was either ON or OFF",
15715        )),
15716    }
15717}
15718
15719/// philips:929003099001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003099001.html)
15720///
15721/// 
15722#[cfg_attr(feature = "debug", derive(Debug))]
15723#[cfg_attr(feature = "clone", derive(Clone))]
15724#[derive(Deserialize)]
15725pub struct Zigbee929003099001 {
15726    ///Brightness of this light
15727    pub brightness: f64,
15728    ///Color temperature of this light
15729    pub color_temp: f64,
15730    ///Color temperature after cold power on of this light
15731    pub color_temp_startup: f64,
15732    ///Link quality (signal strength)
15733    pub linkquality: f64,
15734    ///Controls the behavior when the device is powered on after power loss
15735    pub power_on_behavior: Zigbee929003099001Poweronbehavior,
15736    ///Zigbee herdsman description: "On/off state of this light"
15737    ///The string values get converted into boolean with: ON = true and OFF = false
15738    #[serde(deserialize_with = "zigbee929003099001_state_deserializer")]
15739    pub state: bool,
15740    /// Optional last_seen type, set as a global zigbee2mqtt setting
15741    pub last_seen: Option<LastSeen>,
15742    /// Optional elapsed type
15743    pub elapsed: Option<u64>,
15744}
15745/// Deserialize bool from String with custom value mapping
15746fn zigbee929003099001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15747where
15748    D: Deserializer<'de>,
15749{
15750    match String::deserialize(deserializer)?.as_ref() {
15751        "ON" => Ok(true),
15752        "OFF" => Ok(false),
15753        other => Err(de::Error::invalid_value(
15754            Unexpected::Str(other),
15755            &"Value expected was either ON or OFF",
15756        )),
15757    }
15758}
15759
15760/// philips:929003099101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003099101.html)
15761///
15762/// 
15763#[cfg_attr(feature = "debug", derive(Debug))]
15764#[cfg_attr(feature = "clone", derive(Clone))]
15765#[derive(Deserialize)]
15766pub struct Zigbee929003099101 {
15767    ///Brightness of this light
15768    pub brightness: f64,
15769    ///Color temperature of this light
15770    pub color_temp: f64,
15771    ///Color temperature after cold power on of this light
15772    pub color_temp_startup: f64,
15773    ///Link quality (signal strength)
15774    pub linkquality: f64,
15775    ///Controls the behavior when the device is powered on after power loss
15776    pub power_on_behavior: Zigbee929003099101Poweronbehavior,
15777    ///Zigbee herdsman description: "On/off state of this light"
15778    ///The string values get converted into boolean with: ON = true and OFF = false
15779    #[serde(deserialize_with = "zigbee929003099101_state_deserializer")]
15780    pub state: bool,
15781    /// Optional last_seen type, set as a global zigbee2mqtt setting
15782    pub last_seen: Option<LastSeen>,
15783    /// Optional elapsed type
15784    pub elapsed: Option<u64>,
15785}
15786/// Deserialize bool from String with custom value mapping
15787fn zigbee929003099101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15788where
15789    D: Deserializer<'de>,
15790{
15791    match String::deserialize(deserializer)?.as_ref() {
15792        "ON" => Ok(true),
15793        "OFF" => Ok(false),
15794        other => Err(de::Error::invalid_value(
15795            Unexpected::Str(other),
15796            &"Value expected was either ON or OFF",
15797        )),
15798    }
15799}
15800
15801/// philips:929003099301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003099301.html)
15802///
15803/// 
15804#[cfg_attr(feature = "debug", derive(Debug))]
15805#[cfg_attr(feature = "clone", derive(Clone))]
15806#[derive(Deserialize)]
15807pub struct Zigbee929003099301 {
15808    ///Brightness of this light
15809    pub brightness: f64,
15810    ///Color temperature of this light
15811    pub color_temp: f64,
15812    ///Color temperature after cold power on of this light
15813    pub color_temp_startup: f64,
15814    ///Link quality (signal strength)
15815    pub linkquality: f64,
15816    ///Controls the behavior when the device is powered on after power loss
15817    pub power_on_behavior: Zigbee929003099301Poweronbehavior,
15818    ///Zigbee herdsman description: "On/off state of this light"
15819    ///The string values get converted into boolean with: ON = true and OFF = false
15820    #[serde(deserialize_with = "zigbee929003099301_state_deserializer")]
15821    pub state: bool,
15822    /// Optional last_seen type, set as a global zigbee2mqtt setting
15823    pub last_seen: Option<LastSeen>,
15824    /// Optional elapsed type
15825    pub elapsed: Option<u64>,
15826}
15827/// Deserialize bool from String with custom value mapping
15828fn zigbee929003099301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15829where
15830    D: Deserializer<'de>,
15831{
15832    match String::deserialize(deserializer)?.as_ref() {
15833        "ON" => Ok(true),
15834        "OFF" => Ok(false),
15835        other => Err(de::Error::invalid_value(
15836            Unexpected::Str(other),
15837            &"Value expected was either ON or OFF",
15838        )),
15839    }
15840}
15841
15842/// philips:929003115801 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003115801.html)
15843///
15844/// 
15845#[cfg_attr(feature = "debug", derive(Debug))]
15846#[cfg_attr(feature = "clone", derive(Clone))]
15847#[derive(Deserialize)]
15848pub struct Zigbee929003115801 {
15849    ///Brightness of this light
15850    pub brightness: f64,
15851    ///Color temperature of this light
15852    pub color_temp: f64,
15853    ///Color temperature after cold power on of this light
15854    pub color_temp_startup: f64,
15855    ///Link quality (signal strength)
15856    pub linkquality: f64,
15857    ///Controls the behavior when the device is powered on after power loss
15858    pub power_on_behavior: Zigbee929003115801Poweronbehavior,
15859    ///Zigbee herdsman description: "On/off state of this light"
15860    ///The string values get converted into boolean with: ON = true and OFF = false
15861    #[serde(deserialize_with = "zigbee929003115801_state_deserializer")]
15862    pub state: bool,
15863    /// Optional last_seen type, set as a global zigbee2mqtt setting
15864    pub last_seen: Option<LastSeen>,
15865    /// Optional elapsed type
15866    pub elapsed: Option<u64>,
15867}
15868/// Deserialize bool from String with custom value mapping
15869fn zigbee929003115801_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15870where
15871    D: Deserializer<'de>,
15872{
15873    match String::deserialize(deserializer)?.as_ref() {
15874        "ON" => Ok(true),
15875        "OFF" => Ok(false),
15876        other => Err(de::Error::invalid_value(
15877            Unexpected::Str(other),
15878            &"Value expected was either ON or OFF",
15879        )),
15880    }
15881}
15882
15883/// philips:929003116201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003116201.html)
15884///
15885/// 
15886#[cfg_attr(feature = "debug", derive(Debug))]
15887#[cfg_attr(feature = "clone", derive(Clone))]
15888#[derive(Deserialize)]
15889pub struct Zigbee929003116201 {
15890    ///Brightness of this light
15891    pub brightness: f64,
15892    ///Color temperature of this light
15893    pub color_temp: f64,
15894    ///Color temperature after cold power on of this light
15895    pub color_temp_startup: f64,
15896    ///Link quality (signal strength)
15897    pub linkquality: f64,
15898    ///Controls the behavior when the device is powered on after power loss
15899    pub power_on_behavior: Zigbee929003116201Poweronbehavior,
15900    ///Zigbee herdsman description: "On/off state of this light"
15901    ///The string values get converted into boolean with: ON = true and OFF = false
15902    #[serde(deserialize_with = "zigbee929003116201_state_deserializer")]
15903    pub state: bool,
15904    /// Optional last_seen type, set as a global zigbee2mqtt setting
15905    pub last_seen: Option<LastSeen>,
15906    /// Optional elapsed type
15907    pub elapsed: Option<u64>,
15908}
15909/// Deserialize bool from String with custom value mapping
15910fn zigbee929003116201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15911where
15912    D: Deserializer<'de>,
15913{
15914    match String::deserialize(deserializer)?.as_ref() {
15915        "ON" => Ok(true),
15916        "OFF" => Ok(false),
15917        other => Err(de::Error::invalid_value(
15918            Unexpected::Str(other),
15919            &"Value expected was either ON or OFF",
15920        )),
15921    }
15922}
15923
15924/// philips:929003117101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003117101.html)
15925///
15926/// 
15927#[cfg_attr(feature = "debug", derive(Debug))]
15928#[cfg_attr(feature = "clone", derive(Clone))]
15929#[derive(Deserialize)]
15930pub struct Zigbee929003117101 {
15931    ///Brightness of this light
15932    pub brightness: f64,
15933    ///Color temperature of this light
15934    pub color_temp: f64,
15935    ///Color temperature after cold power on of this light
15936    pub color_temp_startup: f64,
15937    ///Link quality (signal strength)
15938    pub linkquality: f64,
15939    ///Controls the behavior when the device is powered on after power loss
15940    pub power_on_behavior: Zigbee929003117101Poweronbehavior,
15941    ///Zigbee herdsman description: "On/off state of this light"
15942    ///The string values get converted into boolean with: ON = true and OFF = false
15943    #[serde(deserialize_with = "zigbee929003117101_state_deserializer")]
15944    pub state: bool,
15945    /// Optional last_seen type, set as a global zigbee2mqtt setting
15946    pub last_seen: Option<LastSeen>,
15947    /// Optional elapsed type
15948    pub elapsed: Option<u64>,
15949}
15950/// Deserialize bool from String with custom value mapping
15951fn zigbee929003117101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15952where
15953    D: Deserializer<'de>,
15954{
15955    match String::deserialize(deserializer)?.as_ref() {
15956        "ON" => Ok(true),
15957        "OFF" => Ok(false),
15958        other => Err(de::Error::invalid_value(
15959            Unexpected::Str(other),
15960            &"Value expected was either ON or OFF",
15961        )),
15962    }
15963}
15964
15965/// philips:929003117201 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003117201.html)
15966///
15967/// 
15968#[cfg_attr(feature = "debug", derive(Debug))]
15969#[cfg_attr(feature = "clone", derive(Clone))]
15970#[derive(Deserialize)]
15971pub struct Zigbee929003117201 {
15972    ///Brightness of this light
15973    pub brightness: f64,
15974    ///Color temperature of this light
15975    pub color_temp: f64,
15976    ///Color temperature after cold power on of this light
15977    pub color_temp_startup: f64,
15978    ///Link quality (signal strength)
15979    pub linkquality: f64,
15980    ///Controls the behavior when the device is powered on after power loss
15981    pub power_on_behavior: Zigbee929003117201Poweronbehavior,
15982    ///Zigbee herdsman description: "On/off state of this light"
15983    ///The string values get converted into boolean with: ON = true and OFF = false
15984    #[serde(deserialize_with = "zigbee929003117201_state_deserializer")]
15985    pub state: bool,
15986    /// Optional last_seen type, set as a global zigbee2mqtt setting
15987    pub last_seen: Option<LastSeen>,
15988    /// Optional elapsed type
15989    pub elapsed: Option<u64>,
15990}
15991/// Deserialize bool from String with custom value mapping
15992fn zigbee929003117201_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
15993where
15994    D: Deserializer<'de>,
15995{
15996    match String::deserialize(deserializer)?.as_ref() {
15997        "ON" => Ok(true),
15998        "OFF" => Ok(false),
15999        other => Err(de::Error::invalid_value(
16000            Unexpected::Str(other),
16001            &"Value expected was either ON or OFF",
16002        )),
16003    }
16004}
16005
16006/// philips:929003117301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003117301.html)
16007///
16008/// 
16009#[cfg_attr(feature = "debug", derive(Debug))]
16010#[cfg_attr(feature = "clone", derive(Clone))]
16011#[derive(Deserialize)]
16012pub struct Zigbee929003117301 {
16013    ///Brightness of this light
16014    pub brightness: f64,
16015    ///Color temperature of this light
16016    pub color_temp: f64,
16017    ///Color temperature after cold power on of this light
16018    pub color_temp_startup: f64,
16019    ///Link quality (signal strength)
16020    pub linkquality: f64,
16021    ///Controls the behavior when the device is powered on after power loss
16022    pub power_on_behavior: Zigbee929003117301Poweronbehavior,
16023    ///Zigbee herdsman description: "On/off state of this light"
16024    ///The string values get converted into boolean with: ON = true and OFF = false
16025    #[serde(deserialize_with = "zigbee929003117301_state_deserializer")]
16026    pub state: bool,
16027    /// Optional last_seen type, set as a global zigbee2mqtt setting
16028    pub last_seen: Option<LastSeen>,
16029    /// Optional elapsed type
16030    pub elapsed: Option<u64>,
16031}
16032/// Deserialize bool from String with custom value mapping
16033fn zigbee929003117301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16034where
16035    D: Deserializer<'de>,
16036{
16037    match String::deserialize(deserializer)?.as_ref() {
16038        "ON" => Ok(true),
16039        "OFF" => Ok(false),
16040        other => Err(de::Error::invalid_value(
16041            Unexpected::Str(other),
16042            &"Value expected was either ON or OFF",
16043        )),
16044    }
16045}
16046
16047/// philips:929003117401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003117401.html)
16048///
16049/// 
16050#[cfg_attr(feature = "debug", derive(Debug))]
16051#[cfg_attr(feature = "clone", derive(Clone))]
16052#[derive(Deserialize)]
16053pub struct Zigbee929003117401 {
16054    ///Brightness of this light
16055    pub brightness: f64,
16056    ///Color temperature of this light
16057    pub color_temp: f64,
16058    ///Color temperature after cold power on of this light
16059    pub color_temp_startup: f64,
16060    ///Link quality (signal strength)
16061    pub linkquality: f64,
16062    ///Controls the behavior when the device is powered on after power loss
16063    pub power_on_behavior: Zigbee929003117401Poweronbehavior,
16064    ///Zigbee herdsman description: "On/off state of this light"
16065    ///The string values get converted into boolean with: ON = true and OFF = false
16066    #[serde(deserialize_with = "zigbee929003117401_state_deserializer")]
16067    pub state: bool,
16068    /// Optional last_seen type, set as a global zigbee2mqtt setting
16069    pub last_seen: Option<LastSeen>,
16070    /// Optional elapsed type
16071    pub elapsed: Option<u64>,
16072}
16073/// Deserialize bool from String with custom value mapping
16074fn zigbee929003117401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16075where
16076    D: Deserializer<'de>,
16077{
16078    match String::deserialize(deserializer)?.as_ref() {
16079        "ON" => Ok(true),
16080        "OFF" => Ok(false),
16081        other => Err(de::Error::invalid_value(
16082            Unexpected::Str(other),
16083            &"Value expected was either ON or OFF",
16084        )),
16085    }
16086}
16087
16088/// philips:929003117701 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003117701.html)
16089///
16090/// 
16091#[cfg_attr(feature = "debug", derive(Debug))]
16092#[cfg_attr(feature = "clone", derive(Clone))]
16093#[derive(Deserialize)]
16094pub struct Zigbee929003117701 {
16095    ///Brightness of this light
16096    pub brightness: f64,
16097    ///Color temperature of this light
16098    pub color_temp: f64,
16099    ///Color temperature after cold power on of this light
16100    pub color_temp_startup: f64,
16101    ///Link quality (signal strength)
16102    pub linkquality: f64,
16103    ///Controls the behavior when the device is powered on after power loss
16104    pub power_on_behavior: Zigbee929003117701Poweronbehavior,
16105    ///Zigbee herdsman description: "On/off state of this light"
16106    ///The string values get converted into boolean with: ON = true and OFF = false
16107    #[serde(deserialize_with = "zigbee929003117701_state_deserializer")]
16108    pub state: bool,
16109    /// Optional last_seen type, set as a global zigbee2mqtt setting
16110    pub last_seen: Option<LastSeen>,
16111    /// Optional elapsed type
16112    pub elapsed: Option<u64>,
16113}
16114/// Deserialize bool from String with custom value mapping
16115fn zigbee929003117701_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16116where
16117    D: Deserializer<'de>,
16118{
16119    match String::deserialize(deserializer)?.as_ref() {
16120        "ON" => Ok(true),
16121        "OFF" => Ok(false),
16122        other => Err(de::Error::invalid_value(
16123            Unexpected::Str(other),
16124            &"Value expected was either ON or OFF",
16125        )),
16126    }
16127}
16128
16129/// philips:929003117801 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003117801.html)
16130///
16131/// 
16132#[cfg_attr(feature = "debug", derive(Debug))]
16133#[cfg_attr(feature = "clone", derive(Clone))]
16134#[derive(Deserialize)]
16135pub struct Zigbee929003117801 {
16136    ///Brightness of this light
16137    pub brightness: f64,
16138    ///Color temperature of this light
16139    pub color_temp: f64,
16140    ///Color temperature after cold power on of this light
16141    pub color_temp_startup: f64,
16142    ///Link quality (signal strength)
16143    pub linkquality: f64,
16144    ///Controls the behavior when the device is powered on after power loss
16145    pub power_on_behavior: Zigbee929003117801Poweronbehavior,
16146    ///Zigbee herdsman description: "On/off state of this light"
16147    ///The string values get converted into boolean with: ON = true and OFF = false
16148    #[serde(deserialize_with = "zigbee929003117801_state_deserializer")]
16149    pub state: bool,
16150    /// Optional last_seen type, set as a global zigbee2mqtt setting
16151    pub last_seen: Option<LastSeen>,
16152    /// Optional elapsed type
16153    pub elapsed: Option<u64>,
16154}
16155/// Deserialize bool from String with custom value mapping
16156fn zigbee929003117801_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16157where
16158    D: Deserializer<'de>,
16159{
16160    match String::deserialize(deserializer)?.as_ref() {
16161        "ON" => Ok(true),
16162        "OFF" => Ok(false),
16163        other => Err(de::Error::invalid_value(
16164            Unexpected::Str(other),
16165            &"Value expected was either ON or OFF",
16166        )),
16167    }
16168}
16169
16170/// philips:929003128501 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003128501.html)
16171///
16172/// 
16173#[cfg_attr(feature = "debug", derive(Debug))]
16174#[cfg_attr(feature = "clone", derive(Clone))]
16175#[derive(Deserialize)]
16176pub struct Zigbee929003128501 {
16177    ///Brightness of this light
16178    pub brightness: f64,
16179    ///Color temperature of this light
16180    pub color_temp: f64,
16181    ///Color temperature after cold power on of this light
16182    pub color_temp_startup: f64,
16183    ///Link quality (signal strength)
16184    pub linkquality: f64,
16185    ///Controls the behavior when the device is powered on after power loss
16186    pub power_on_behavior: Zigbee929003128501Poweronbehavior,
16187    ///Zigbee herdsman description: "On/off state of this light"
16188    ///The string values get converted into boolean with: ON = true and OFF = false
16189    #[serde(deserialize_with = "zigbee929003128501_state_deserializer")]
16190    pub state: bool,
16191    /// Optional last_seen type, set as a global zigbee2mqtt setting
16192    pub last_seen: Option<LastSeen>,
16193    /// Optional elapsed type
16194    pub elapsed: Option<u64>,
16195}
16196/// Deserialize bool from String with custom value mapping
16197fn zigbee929003128501_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16198where
16199    D: Deserializer<'de>,
16200{
16201    match String::deserialize(deserializer)?.as_ref() {
16202        "ON" => Ok(true),
16203        "OFF" => Ok(false),
16204        other => Err(de::Error::invalid_value(
16205            Unexpected::Str(other),
16206            &"Value expected was either ON or OFF",
16207        )),
16208    }
16209}
16210
16211/// philips:9290031345 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290031345.html)
16212///
16213/// 
16214#[cfg_attr(feature = "debug", derive(Debug))]
16215#[cfg_attr(feature = "clone", derive(Clone))]
16216#[derive(Deserialize)]
16217pub struct Zigbee9290031345 {
16218    ///Brightness of this light
16219    pub brightness: f64,
16220    ///Color temperature of this light
16221    pub color_temp: f64,
16222    ///Color temperature after cold power on of this light
16223    pub color_temp_startup: f64,
16224    ///Link quality (signal strength)
16225    pub linkquality: f64,
16226    ///Controls the behavior when the device is powered on after power loss
16227    pub power_on_behavior: Zigbee9290031345Poweronbehavior,
16228    ///Zigbee herdsman description: "On/off state of this light"
16229    ///The string values get converted into boolean with: ON = true and OFF = false
16230    #[serde(deserialize_with = "zigbee9290031345_state_deserializer")]
16231    pub state: bool,
16232    /// Optional last_seen type, set as a global zigbee2mqtt setting
16233    pub last_seen: Option<LastSeen>,
16234    /// Optional elapsed type
16235    pub elapsed: Option<u64>,
16236}
16237/// Deserialize bool from String with custom value mapping
16238fn zigbee9290031345_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16239where
16240    D: Deserializer<'de>,
16241{
16242    match String::deserialize(deserializer)?.as_ref() {
16243        "ON" => Ok(true),
16244        "OFF" => Ok(false),
16245        other => Err(de::Error::invalid_value(
16246            Unexpected::Str(other),
16247            &"Value expected was either ON or OFF",
16248        )),
16249    }
16250}
16251
16252/// philips:9290031346 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290031346.html)
16253///
16254/// 
16255#[cfg_attr(feature = "debug", derive(Debug))]
16256#[cfg_attr(feature = "clone", derive(Clone))]
16257#[derive(Deserialize)]
16258pub struct Zigbee9290031346 {
16259    ///Brightness of this light
16260    pub brightness: f64,
16261    ///Color temperature of this light
16262    pub color_temp: f64,
16263    ///Color temperature after cold power on of this light
16264    pub color_temp_startup: f64,
16265    ///Link quality (signal strength)
16266    pub linkquality: f64,
16267    ///Controls the behavior when the device is powered on after power loss
16268    pub power_on_behavior: Zigbee9290031346Poweronbehavior,
16269    ///Zigbee herdsman description: "On/off state of this light"
16270    ///The string values get converted into boolean with: ON = true and OFF = false
16271    #[serde(deserialize_with = "zigbee9290031346_state_deserializer")]
16272    pub state: bool,
16273    /// Optional last_seen type, set as a global zigbee2mqtt setting
16274    pub last_seen: Option<LastSeen>,
16275    /// Optional elapsed type
16276    pub elapsed: Option<u64>,
16277}
16278/// Deserialize bool from String with custom value mapping
16279fn zigbee9290031346_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16280where
16281    D: Deserializer<'de>,
16282{
16283    match String::deserialize(deserializer)?.as_ref() {
16284        "ON" => Ok(true),
16285        "OFF" => Ok(false),
16286        other => Err(de::Error::invalid_value(
16287            Unexpected::Str(other),
16288            &"Value expected was either ON or OFF",
16289        )),
16290    }
16291}
16292
16293/// philips:9290031451 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290031451.html)
16294///
16295/// 
16296#[cfg_attr(feature = "debug", derive(Debug))]
16297#[cfg_attr(feature = "clone", derive(Clone))]
16298#[derive(Deserialize)]
16299pub struct Zigbee9290031451 {
16300    ///Brightness of this light
16301    pub brightness: f64,
16302    ///Color temperature of this light
16303    pub color_temp: f64,
16304    ///Color temperature after cold power on of this light
16305    pub color_temp_startup: f64,
16306    ///Link quality (signal strength)
16307    pub linkquality: f64,
16308    ///Controls the behavior when the device is powered on after power loss
16309    pub power_on_behavior: Zigbee9290031451Poweronbehavior,
16310    ///Zigbee herdsman description: "On/off state of this light"
16311    ///The string values get converted into boolean with: ON = true and OFF = false
16312    #[serde(deserialize_with = "zigbee9290031451_state_deserializer")]
16313    pub state: bool,
16314    /// Optional last_seen type, set as a global zigbee2mqtt setting
16315    pub last_seen: Option<LastSeen>,
16316    /// Optional elapsed type
16317    pub elapsed: Option<u64>,
16318}
16319/// Deserialize bool from String with custom value mapping
16320fn zigbee9290031451_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16321where
16322    D: Deserializer<'de>,
16323{
16324    match String::deserialize(deserializer)?.as_ref() {
16325        "ON" => Ok(true),
16326        "OFF" => Ok(false),
16327        other => Err(de::Error::invalid_value(
16328            Unexpected::Str(other),
16329            &"Value expected was either ON or OFF",
16330        )),
16331    }
16332}
16333
16334/// philips:9290031452 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/9290031452.html)
16335///
16336/// 
16337#[cfg_attr(feature = "debug", derive(Debug))]
16338#[cfg_attr(feature = "clone", derive(Clone))]
16339#[derive(Deserialize)]
16340pub struct Zigbee9290031452 {
16341    ///Brightness of this light
16342    pub brightness: f64,
16343    ///Color temperature of this light
16344    pub color_temp: f64,
16345    ///Color temperature after cold power on of this light
16346    pub color_temp_startup: f64,
16347    ///Link quality (signal strength)
16348    pub linkquality: f64,
16349    ///Controls the behavior when the device is powered on after power loss
16350    pub power_on_behavior: Zigbee9290031452Poweronbehavior,
16351    ///Zigbee herdsman description: "On/off state of this light"
16352    ///The string values get converted into boolean with: ON = true and OFF = false
16353    #[serde(deserialize_with = "zigbee9290031452_state_deserializer")]
16354    pub state: bool,
16355    /// Optional last_seen type, set as a global zigbee2mqtt setting
16356    pub last_seen: Option<LastSeen>,
16357    /// Optional elapsed type
16358    pub elapsed: Option<u64>,
16359}
16360/// Deserialize bool from String with custom value mapping
16361fn zigbee9290031452_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16362where
16363    D: Deserializer<'de>,
16364{
16365    match String::deserialize(deserializer)?.as_ref() {
16366        "ON" => Ok(true),
16367        "OFF" => Ok(false),
16368        other => Err(de::Error::invalid_value(
16369            Unexpected::Str(other),
16370            &"Value expected was either ON or OFF",
16371        )),
16372    }
16373}
16374
16375/// philips:929003516101 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003516101.html)
16376///
16377/// 
16378#[cfg_attr(feature = "debug", derive(Debug))]
16379#[cfg_attr(feature = "clone", derive(Clone))]
16380#[derive(Deserialize)]
16381pub struct Zigbee929003516101 {
16382    ///Brightness of this light
16383    pub brightness: f64,
16384    ///Color temperature of this light
16385    pub color_temp: f64,
16386    ///Color temperature after cold power on of this light
16387    pub color_temp_startup: f64,
16388    ///Link quality (signal strength)
16389    pub linkquality: f64,
16390    ///Controls the behavior when the device is powered on after power loss
16391    pub power_on_behavior: Zigbee929003516101Poweronbehavior,
16392    ///Zigbee herdsman description: "On/off state of this light"
16393    ///The string values get converted into boolean with: ON = true and OFF = false
16394    #[serde(deserialize_with = "zigbee929003516101_state_deserializer")]
16395    pub state: bool,
16396    /// Optional last_seen type, set as a global zigbee2mqtt setting
16397    pub last_seen: Option<LastSeen>,
16398    /// Optional elapsed type
16399    pub elapsed: Option<u64>,
16400}
16401/// Deserialize bool from String with custom value mapping
16402fn zigbee929003516101_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16403where
16404    D: Deserializer<'de>,
16405{
16406    match String::deserialize(deserializer)?.as_ref() {
16407        "ON" => Ok(true),
16408        "OFF" => Ok(false),
16409        other => Err(de::Error::invalid_value(
16410            Unexpected::Str(other),
16411            &"Value expected was either ON or OFF",
16412        )),
16413    }
16414}
16415
16416/// philips:929003526301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003526301.html)
16417///
16418/// 
16419#[cfg_attr(feature = "debug", derive(Debug))]
16420#[cfg_attr(feature = "clone", derive(Clone))]
16421#[derive(Deserialize)]
16422pub struct Zigbee929003526301 {
16423    ///Brightness of this light
16424    pub brightness: f64,
16425    ///Color temperature of this light
16426    pub color_temp: f64,
16427    ///Color temperature after cold power on of this light
16428    pub color_temp_startup: f64,
16429    ///Link quality (signal strength)
16430    pub linkquality: f64,
16431    ///Controls the behavior when the device is powered on after power loss
16432    pub power_on_behavior: Zigbee929003526301Poweronbehavior,
16433    ///Zigbee herdsman description: "On/off state of this light"
16434    ///The string values get converted into boolean with: ON = true and OFF = false
16435    #[serde(deserialize_with = "zigbee929003526301_state_deserializer")]
16436    pub state: bool,
16437    /// Optional last_seen type, set as a global zigbee2mqtt setting
16438    pub last_seen: Option<LastSeen>,
16439    /// Optional elapsed type
16440    pub elapsed: Option<u64>,
16441}
16442/// Deserialize bool from String with custom value mapping
16443fn zigbee929003526301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16444where
16445    D: Deserializer<'de>,
16446{
16447    match String::deserialize(deserializer)?.as_ref() {
16448        "ON" => Ok(true),
16449        "OFF" => Ok(false),
16450        other => Err(de::Error::invalid_value(
16451            Unexpected::Str(other),
16452            &"Value expected was either ON or OFF",
16453        )),
16454    }
16455}
16456
16457/// philips:929003531702 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003531702.html)
16458///
16459/// 
16460#[cfg_attr(feature = "debug", derive(Debug))]
16461#[cfg_attr(feature = "clone", derive(Clone))]
16462#[derive(Deserialize)]
16463pub struct Zigbee929003531702 {
16464    ///Brightness of this light
16465    pub brightness: f64,
16466    ///Color temperature of this light
16467    pub color_temp: f64,
16468    ///Color temperature after cold power on of this light
16469    pub color_temp_startup: f64,
16470    ///Link quality (signal strength)
16471    pub linkquality: f64,
16472    ///Controls the behavior when the device is powered on after power loss
16473    pub power_on_behavior: Zigbee929003531702Poweronbehavior,
16474    ///Zigbee herdsman description: "On/off state of this light"
16475    ///The string values get converted into boolean with: ON = true and OFF = false
16476    #[serde(deserialize_with = "zigbee929003531702_state_deserializer")]
16477    pub state: bool,
16478    /// Optional last_seen type, set as a global zigbee2mqtt setting
16479    pub last_seen: Option<LastSeen>,
16480    /// Optional elapsed type
16481    pub elapsed: Option<u64>,
16482}
16483/// Deserialize bool from String with custom value mapping
16484fn zigbee929003531702_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16485where
16486    D: Deserializer<'de>,
16487{
16488    match String::deserialize(deserializer)?.as_ref() {
16489        "ON" => Ok(true),
16490        "OFF" => Ok(false),
16491        other => Err(de::Error::invalid_value(
16492            Unexpected::Str(other),
16493            &"Value expected was either ON or OFF",
16494        )),
16495    }
16496}
16497
16498/// philips:929003535301 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003535301.html)
16499///
16500/// 
16501#[cfg_attr(feature = "debug", derive(Debug))]
16502#[cfg_attr(feature = "clone", derive(Clone))]
16503#[derive(Deserialize)]
16504pub struct Zigbee929003535301 {
16505    ///Brightness of this light
16506    pub brightness: f64,
16507    ///Color temperature of this light
16508    pub color_temp: f64,
16509    ///Color temperature after cold power on of this light
16510    pub color_temp_startup: f64,
16511    ///Link quality (signal strength)
16512    pub linkquality: f64,
16513    ///Controls the behavior when the device is powered on after power loss
16514    pub power_on_behavior: Zigbee929003535301Poweronbehavior,
16515    ///Zigbee herdsman description: "On/off state of this light"
16516    ///The string values get converted into boolean with: ON = true and OFF = false
16517    #[serde(deserialize_with = "zigbee929003535301_state_deserializer")]
16518    pub state: bool,
16519    /// Optional last_seen type, set as a global zigbee2mqtt setting
16520    pub last_seen: Option<LastSeen>,
16521    /// Optional elapsed type
16522    pub elapsed: Option<u64>,
16523}
16524/// Deserialize bool from String with custom value mapping
16525fn zigbee929003535301_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16526where
16527    D: Deserializer<'de>,
16528{
16529    match String::deserialize(deserializer)?.as_ref() {
16530        "ON" => Ok(true),
16531        "OFF" => Ok(false),
16532        other => Err(de::Error::invalid_value(
16533            Unexpected::Str(other),
16534            &"Value expected was either ON or OFF",
16535        )),
16536    }
16537}
16538
16539/// philips:929003553001 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/929003553001.html)
16540///
16541/// 
16542#[cfg_attr(feature = "debug", derive(Debug))]
16543#[cfg_attr(feature = "clone", derive(Clone))]
16544#[derive(Deserialize)]
16545pub struct Zigbee929003553001 {
16546    ///Brightness of this light
16547    pub brightness: f64,
16548    ///Color temperature of this light
16549    pub color_temp: f64,
16550    ///Color temperature after cold power on of this light
16551    pub color_temp_startup: f64,
16552    ///Link quality (signal strength)
16553    pub linkquality: f64,
16554    ///Controls the behavior when the device is powered on after power loss
16555    pub power_on_behavior: Zigbee929003553001Poweronbehavior,
16556    ///Zigbee herdsman description: "On/off state of this light"
16557    ///The string values get converted into boolean with: ON = true and OFF = false
16558    #[serde(deserialize_with = "zigbee929003553001_state_deserializer")]
16559    pub state: bool,
16560    /// Optional last_seen type, set as a global zigbee2mqtt setting
16561    pub last_seen: Option<LastSeen>,
16562    /// Optional elapsed type
16563    pub elapsed: Option<u64>,
16564}
16565/// Deserialize bool from String with custom value mapping
16566fn zigbee929003553001_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16567where
16568    D: Deserializer<'de>,
16569{
16570    match String::deserialize(deserializer)?.as_ref() {
16571        "ON" => Ok(true),
16572        "OFF" => Ok(false),
16573        other => Err(de::Error::invalid_value(
16574            Unexpected::Str(other),
16575            &"Value expected was either ON or OFF",
16576        )),
16577    }
16578}
16579
16580/// philips:LWG004 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/LWG004.html)
16581///
16582/// 
16583#[cfg_attr(feature = "debug", derive(Debug))]
16584#[cfg_attr(feature = "clone", derive(Clone))]
16585#[derive(Deserialize)]
16586pub struct ZigbeeLwg004 {
16587    ///Brightness of this light
16588    pub brightness: f64,
16589    ///Link quality (signal strength)
16590    pub linkquality: f64,
16591    ///Controls the behavior when the device is powered on after power loss
16592    pub power_on_behavior: ZigbeeLwg004Poweronbehavior,
16593    ///Zigbee herdsman description: "On/off state of this light"
16594    ///The string values get converted into boolean with: ON = true and OFF = false
16595    #[serde(deserialize_with = "zigbeelwg004_state_deserializer")]
16596    pub state: bool,
16597    /// Optional last_seen type, set as a global zigbee2mqtt setting
16598    pub last_seen: Option<LastSeen>,
16599    /// Optional elapsed type
16600    pub elapsed: Option<u64>,
16601}
16602/// Deserialize bool from String with custom value mapping
16603fn zigbeelwg004_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
16604where
16605    D: Deserializer<'de>,
16606{
16607    match String::deserialize(deserializer)?.as_ref() {
16608        "ON" => Ok(true),
16609        "OFF" => Ok(false),
16610        other => Err(de::Error::invalid_value(
16611            Unexpected::Str(other),
16612            &"Value expected was either ON or OFF",
16613        )),
16614    }
16615}
16616
16617
16618#[cfg_attr(feature = "debug", derive(Debug))]
16619#[cfg_attr(feature = "clone", derive(Clone))]
16620#[derive(Deserialize, PartialEq)]
16621pub enum Zigbee046677476816Poweronbehavior {
16622    #[serde(rename = "off")]
16623    Off,
16624    #[serde(rename = "on")]
16625    On,
16626    #[serde(rename = "previous")]
16627    Previous,
16628    #[serde(rename = "toggle")]
16629    Toggle,
16630}
16631#[cfg_attr(feature = "debug", derive(Debug))]
16632#[cfg_attr(feature = "clone", derive(Clone))]
16633#[derive(Deserialize, PartialEq)]
16634pub enum Zigbee046677551780Poweronbehavior {
16635    #[serde(rename = "off")]
16636    Off,
16637    #[serde(rename = "on")]
16638    On,
16639    #[serde(rename = "previous")]
16640    Previous,
16641    #[serde(rename = "toggle")]
16642    Toggle,
16643}
16644#[cfg_attr(feature = "debug", derive(Debug))]
16645#[cfg_attr(feature = "clone", derive(Clone))]
16646#[derive(Deserialize, PartialEq)]
16647pub enum Zigbee046677562229Poweronbehavior {
16648    #[serde(rename = "off")]
16649    Off,
16650    #[serde(rename = "on")]
16651    On,
16652    #[serde(rename = "previous")]
16653    Previous,
16654    #[serde(rename = "toggle")]
16655    Toggle,
16656}
16657#[cfg_attr(feature = "debug", derive(Debug))]
16658#[cfg_attr(feature = "clone", derive(Clone))]
16659#[derive(Deserialize, PartialEq)]
16660pub enum Zigbee046677577957Poweronbehavior {
16661    #[serde(rename = "off")]
16662    Off,
16663    #[serde(rename = "on")]
16664    On,
16665    #[serde(rename = "previous")]
16666    Previous,
16667    #[serde(rename = "toggle")]
16668    Toggle,
16669}
16670#[cfg_attr(feature = "debug", derive(Debug))]
16671#[cfg_attr(feature = "clone", derive(Clone))]
16672#[derive(Deserialize, PartialEq)]
16673pub enum Zigbee046677578138Poweronbehavior {
16674    #[serde(rename = "off")]
16675    Off,
16676    #[serde(rename = "on")]
16677    On,
16678    #[serde(rename = "previous")]
16679    Previous,
16680    #[serde(rename = "toggle")]
16681    Toggle,
16682}
16683#[cfg_attr(feature = "debug", derive(Debug))]
16684#[cfg_attr(feature = "clone", derive(Clone))]
16685#[derive(Deserialize, PartialEq)]
16686pub enum Zigbee046677803087Poweronbehavior {
16687    #[serde(rename = "off")]
16688    Off,
16689    #[serde(rename = "on")]
16690    On,
16691    #[serde(rename = "previous")]
16692    Previous,
16693    #[serde(rename = "toggle")]
16694    Toggle,
16695}
16696#[cfg_attr(feature = "debug", derive(Debug))]
16697#[cfg_attr(feature = "clone", derive(Clone))]
16698#[derive(Deserialize, PartialEq)]
16699pub enum Zigbee1740193p0Poweronbehavior {
16700    #[serde(rename = "off")]
16701    Off,
16702    #[serde(rename = "on")]
16703    On,
16704    #[serde(rename = "previous")]
16705    Previous,
16706    #[serde(rename = "toggle")]
16707    Toggle,
16708}
16709#[cfg_attr(feature = "debug", derive(Debug))]
16710#[cfg_attr(feature = "clone", derive(Clone))]
16711#[derive(Deserialize, PartialEq)]
16712pub enum Zigbee1740293p0Poweronbehavior {
16713    #[serde(rename = "off")]
16714    Off,
16715    #[serde(rename = "on")]
16716    On,
16717    #[serde(rename = "previous")]
16718    Previous,
16719    #[serde(rename = "toggle")]
16720    Toggle,
16721}
16722#[cfg_attr(feature = "debug", derive(Debug))]
16723#[cfg_attr(feature = "clone", derive(Clone))]
16724#[derive(Deserialize, PartialEq)]
16725pub enum Zigbee1741530p7Poweronbehavior {
16726    #[serde(rename = "off")]
16727    Off,
16728    #[serde(rename = "on")]
16729    On,
16730    #[serde(rename = "previous")]
16731    Previous,
16732    #[serde(rename = "toggle")]
16733    Toggle,
16734}
16735#[cfg_attr(feature = "debug", derive(Debug))]
16736#[cfg_attr(feature = "clone", derive(Clone))]
16737#[derive(Deserialize, PartialEq)]
16738pub enum Zigbee1741730v7Poweronbehavior {
16739    #[serde(rename = "off")]
16740    Off,
16741    #[serde(rename = "on")]
16742    On,
16743    #[serde(rename = "previous")]
16744    Previous,
16745    #[serde(rename = "toggle")]
16746    Toggle,
16747}
16748#[cfg_attr(feature = "debug", derive(Debug))]
16749#[cfg_attr(feature = "clone", derive(Clone))]
16750#[derive(Deserialize, PartialEq)]
16751pub enum Zigbee1741830p7Poweronbehavior {
16752    #[serde(rename = "off")]
16753    Off,
16754    #[serde(rename = "on")]
16755    On,
16756    #[serde(rename = "previous")]
16757    Previous,
16758    #[serde(rename = "toggle")]
16759    Toggle,
16760}
16761#[cfg_attr(feature = "debug", derive(Debug))]
16762#[cfg_attr(feature = "clone", derive(Clone))]
16763#[derive(Deserialize, PartialEq)]
16764pub enum Zigbee1741930v7Poweronbehavior {
16765    #[serde(rename = "off")]
16766    Off,
16767    #[serde(rename = "on")]
16768    On,
16769    #[serde(rename = "previous")]
16770    Previous,
16771    #[serde(rename = "toggle")]
16772    Toggle,
16773}
16774#[cfg_attr(feature = "debug", derive(Debug))]
16775#[cfg_attr(feature = "clone", derive(Clone))]
16776#[derive(Deserialize, PartialEq)]
16777pub enum Zigbee1742030p7Poweronbehavior {
16778    #[serde(rename = "off")]
16779    Off,
16780    #[serde(rename = "on")]
16781    On,
16782    #[serde(rename = "previous")]
16783    Previous,
16784    #[serde(rename = "toggle")]
16785    Toggle,
16786}
16787#[cfg_attr(feature = "debug", derive(Debug))]
16788#[cfg_attr(feature = "clone", derive(Clone))]
16789#[derive(Deserialize, PartialEq)]
16790pub enum Zigbee1742330p7Poweronbehavior {
16791    #[serde(rename = "off")]
16792    Off,
16793    #[serde(rename = "on")]
16794    On,
16795    #[serde(rename = "previous")]
16796    Previous,
16797    #[serde(rename = "toggle")]
16798    Toggle,
16799}
16800#[cfg_attr(feature = "debug", derive(Debug))]
16801#[cfg_attr(feature = "clone", derive(Clone))]
16802#[derive(Deserialize, PartialEq)]
16803pub enum Zigbee1742830p7Poweronbehavior {
16804    #[serde(rename = "off")]
16805    Off,
16806    #[serde(rename = "on")]
16807    On,
16808    #[serde(rename = "previous")]
16809    Previous,
16810    #[serde(rename = "toggle")]
16811    Toggle,
16812}
16813#[cfg_attr(feature = "debug", derive(Debug))]
16814#[cfg_attr(feature = "clone", derive(Clone))]
16815#[derive(Deserialize, PartialEq)]
16816pub enum Zigbee1742930p7Poweronbehavior {
16817    #[serde(rename = "off")]
16818    Off,
16819    #[serde(rename = "on")]
16820    On,
16821    #[serde(rename = "previous")]
16822    Previous,
16823    #[serde(rename = "toggle")]
16824    Toggle,
16825}
16826#[cfg_attr(feature = "debug", derive(Debug))]
16827#[cfg_attr(feature = "clone", derive(Clone))]
16828#[derive(Deserialize, PartialEq)]
16829pub enum Zigbee1743030p7Poweronbehavior {
16830    #[serde(rename = "off")]
16831    Off,
16832    #[serde(rename = "on")]
16833    On,
16834    #[serde(rename = "previous")]
16835    Previous,
16836    #[serde(rename = "toggle")]
16837    Toggle,
16838}
16839#[cfg_attr(feature = "debug", derive(Debug))]
16840#[cfg_attr(feature = "clone", derive(Clone))]
16841#[derive(Deserialize, PartialEq)]
16842pub enum Zigbee1743130p7Poweronbehavior {
16843    #[serde(rename = "off")]
16844    Off,
16845    #[serde(rename = "on")]
16846    On,
16847    #[serde(rename = "previous")]
16848    Previous,
16849    #[serde(rename = "toggle")]
16850    Toggle,
16851}
16852#[cfg_attr(feature = "debug", derive(Debug))]
16853#[cfg_attr(feature = "clone", derive(Clone))]
16854#[derive(Deserialize, PartialEq)]
16855pub enum Zigbee1743230p7Poweronbehavior {
16856    #[serde(rename = "off")]
16857    Off,
16858    #[serde(rename = "on")]
16859    On,
16860    #[serde(rename = "previous")]
16861    Previous,
16862    #[serde(rename = "toggle")]
16863    Toggle,
16864}
16865#[cfg_attr(feature = "debug", derive(Debug))]
16866#[cfg_attr(feature = "clone", derive(Clone))]
16867#[derive(Deserialize, PartialEq)]
16868pub enum Zigbee1743430p7Poweronbehavior {
16869    #[serde(rename = "off")]
16870    Off,
16871    #[serde(rename = "on")]
16872    On,
16873    #[serde(rename = "previous")]
16874    Previous,
16875    #[serde(rename = "toggle")]
16876    Toggle,
16877}
16878#[cfg_attr(feature = "debug", derive(Debug))]
16879#[cfg_attr(feature = "clone", derive(Clone))]
16880#[derive(Deserialize, PartialEq)]
16881pub enum Zigbee1743530p7Poweronbehavior {
16882    #[serde(rename = "off")]
16883    Off,
16884    #[serde(rename = "on")]
16885    On,
16886    #[serde(rename = "previous")]
16887    Previous,
16888    #[serde(rename = "toggle")]
16889    Toggle,
16890}
16891#[cfg_attr(feature = "debug", derive(Debug))]
16892#[cfg_attr(feature = "clone", derive(Clone))]
16893#[derive(Deserialize, PartialEq)]
16894pub enum Zigbee1743630p7Poweronbehavior {
16895    #[serde(rename = "off")]
16896    Off,
16897    #[serde(rename = "on")]
16898    On,
16899    #[serde(rename = "previous")]
16900    Previous,
16901    #[serde(rename = "toggle")]
16902    Toggle,
16903}
16904#[cfg_attr(feature = "debug", derive(Debug))]
16905#[cfg_attr(feature = "clone", derive(Clone))]
16906#[derive(Deserialize, PartialEq)]
16907pub enum Zigbee1743730p7Poweronbehavior {
16908    #[serde(rename = "off")]
16909    Off,
16910    #[serde(rename = "on")]
16911    On,
16912    #[serde(rename = "previous")]
16913    Previous,
16914    #[serde(rename = "toggle")]
16915    Toggle,
16916}
16917#[cfg_attr(feature = "debug", derive(Debug))]
16918#[cfg_attr(feature = "clone", derive(Clone))]
16919#[derive(Deserialize, PartialEq)]
16920pub enum Zigbee1743830p7Poweronbehavior {
16921    #[serde(rename = "off")]
16922    Off,
16923    #[serde(rename = "on")]
16924    On,
16925    #[serde(rename = "previous")]
16926    Previous,
16927    #[serde(rename = "toggle")]
16928    Toggle,
16929}
16930#[cfg_attr(feature = "debug", derive(Debug))]
16931#[cfg_attr(feature = "clone", derive(Clone))]
16932#[derive(Deserialize, PartialEq)]
16933pub enum Zigbee1743830v7Poweronbehavior {
16934    #[serde(rename = "off")]
16935    Off,
16936    #[serde(rename = "on")]
16937    On,
16938    #[serde(rename = "previous")]
16939    Previous,
16940    #[serde(rename = "toggle")]
16941    Toggle,
16942}
16943#[cfg_attr(feature = "debug", derive(Debug))]
16944#[cfg_attr(feature = "clone", derive(Clone))]
16945#[derive(Deserialize, PartialEq)]
16946pub enum Zigbee1743930p7Poweronbehavior {
16947    #[serde(rename = "off")]
16948    Off,
16949    #[serde(rename = "on")]
16950    On,
16951    #[serde(rename = "previous")]
16952    Previous,
16953    #[serde(rename = "toggle")]
16954    Toggle,
16955}
16956#[cfg_attr(feature = "debug", derive(Debug))]
16957#[cfg_attr(feature = "clone", derive(Clone))]
16958#[derive(Deserialize, PartialEq)]
16959pub enum Zigbee1744130p7Poweronbehavior {
16960    #[serde(rename = "off")]
16961    Off,
16962    #[serde(rename = "on")]
16963    On,
16964    #[serde(rename = "previous")]
16965    Previous,
16966    #[serde(rename = "toggle")]
16967    Toggle,
16968}
16969#[cfg_attr(feature = "debug", derive(Debug))]
16970#[cfg_attr(feature = "clone", derive(Clone))]
16971#[derive(Deserialize, PartialEq)]
16972pub enum Zigbee1745130p7Poweronbehavior {
16973    #[serde(rename = "off")]
16974    Off,
16975    #[serde(rename = "on")]
16976    On,
16977    #[serde(rename = "previous")]
16978    Previous,
16979    #[serde(rename = "toggle")]
16980    Toggle,
16981}
16982#[cfg_attr(feature = "debug", derive(Debug))]
16983#[cfg_attr(feature = "clone", derive(Clone))]
16984#[derive(Deserialize, PartialEq)]
16985pub enum Zigbee1745430p7Poweronbehavior {
16986    #[serde(rename = "off")]
16987    Off,
16988    #[serde(rename = "on")]
16989    On,
16990    #[serde(rename = "previous")]
16991    Previous,
16992    #[serde(rename = "toggle")]
16993    Toggle,
16994}
16995#[cfg_attr(feature = "debug", derive(Debug))]
16996#[cfg_attr(feature = "clone", derive(Clone))]
16997#[derive(Deserialize, PartialEq)]
16998pub enum Zigbee1745530p7Poweronbehavior {
16999    #[serde(rename = "off")]
17000    Off,
17001    #[serde(rename = "on")]
17002    On,
17003    #[serde(rename = "previous")]
17004    Previous,
17005    #[serde(rename = "toggle")]
17006    Toggle,
17007}
17008#[cfg_attr(feature = "debug", derive(Debug))]
17009#[cfg_attr(feature = "clone", derive(Clone))]
17010#[derive(Deserialize, PartialEq)]
17011pub enum Zigbee1745630p7Poweronbehavior {
17012    #[serde(rename = "off")]
17013    Off,
17014    #[serde(rename = "on")]
17015    On,
17016    #[serde(rename = "previous")]
17017    Previous,
17018    #[serde(rename = "toggle")]
17019    Toggle,
17020}
17021#[cfg_attr(feature = "debug", derive(Debug))]
17022#[cfg_attr(feature = "clone", derive(Clone))]
17023#[derive(Deserialize, PartialEq)]
17024pub enum Zigbee1745730v7Poweronbehavior {
17025    #[serde(rename = "off")]
17026    Off,
17027    #[serde(rename = "on")]
17028    On,
17029    #[serde(rename = "previous")]
17030    Previous,
17031    #[serde(rename = "toggle")]
17032    Toggle,
17033}
17034#[cfg_attr(feature = "debug", derive(Debug))]
17035#[cfg_attr(feature = "clone", derive(Clone))]
17036#[derive(Deserialize, PartialEq)]
17037pub enum Zigbee1745930p7Poweronbehavior {
17038    #[serde(rename = "off")]
17039    Off,
17040    #[serde(rename = "on")]
17041    On,
17042    #[serde(rename = "previous")]
17043    Previous,
17044    #[serde(rename = "toggle")]
17045    Toggle,
17046}
17047#[cfg_attr(feature = "debug", derive(Debug))]
17048#[cfg_attr(feature = "clone", derive(Clone))]
17049#[derive(Deserialize, PartialEq)]
17050pub enum Zigbee1746130p7Poweronbehavior {
17051    #[serde(rename = "off")]
17052    Off,
17053    #[serde(rename = "on")]
17054    On,
17055    #[serde(rename = "previous")]
17056    Previous,
17057    #[serde(rename = "toggle")]
17058    Toggle,
17059}
17060#[cfg_attr(feature = "debug", derive(Debug))]
17061#[cfg_attr(feature = "clone", derive(Clone))]
17062#[derive(Deserialize, PartialEq)]
17063pub enum Zigbee1746230v7Poweronbehavior {
17064    #[serde(rename = "off")]
17065    Off,
17066    #[serde(rename = "on")]
17067    On,
17068    #[serde(rename = "previous")]
17069    Previous,
17070    #[serde(rename = "toggle")]
17071    Toggle,
17072}
17073#[cfg_attr(feature = "debug", derive(Debug))]
17074#[cfg_attr(feature = "clone", derive(Clone))]
17075#[derive(Deserialize, PartialEq)]
17076pub enum Zigbee1746330p7Poweronbehavior {
17077    #[serde(rename = "off")]
17078    Off,
17079    #[serde(rename = "on")]
17080    On,
17081    #[serde(rename = "previous")]
17082    Previous,
17083    #[serde(rename = "toggle")]
17084    Toggle,
17085}
17086#[cfg_attr(feature = "debug", derive(Debug))]
17087#[cfg_attr(feature = "clone", derive(Clone))]
17088#[derive(Deserialize, PartialEq)]
17089pub enum Zigbee1746430p7Poweronbehavior {
17090    #[serde(rename = "off")]
17091    Off,
17092    #[serde(rename = "on")]
17093    On,
17094    #[serde(rename = "previous")]
17095    Previous,
17096    #[serde(rename = "toggle")]
17097    Toggle,
17098}
17099#[cfg_attr(feature = "debug", derive(Debug))]
17100#[cfg_attr(feature = "clone", derive(Clone))]
17101#[derive(Deserialize, PartialEq)]
17102pub enum Zigbee1746447p7Poweronbehavior {
17103    #[serde(rename = "off")]
17104    Off,
17105    #[serde(rename = "on")]
17106    On,
17107    #[serde(rename = "previous")]
17108    Previous,
17109    #[serde(rename = "toggle")]
17110    Toggle,
17111}
17112#[cfg_attr(feature = "debug", derive(Debug))]
17113#[cfg_attr(feature = "clone", derive(Clone))]
17114#[derive(Deserialize, PartialEq)]
17115pub enum Zigbee1746530p7Poweronbehavior {
17116    #[serde(rename = "off")]
17117    Off,
17118    #[serde(rename = "on")]
17119    On,
17120    #[serde(rename = "previous")]
17121    Previous,
17122    #[serde(rename = "toggle")]
17123    Toggle,
17124}
17125#[cfg_attr(feature = "debug", derive(Debug))]
17126#[cfg_attr(feature = "clone", derive(Clone))]
17127#[derive(Deserialize, PartialEq)]
17128pub enum Zigbee1746547p7Poweronbehavior {
17129    #[serde(rename = "off")]
17130    Off,
17131    #[serde(rename = "on")]
17132    On,
17133    #[serde(rename = "previous")]
17134    Previous,
17135    #[serde(rename = "toggle")]
17136    Toggle,
17137}
17138#[cfg_attr(feature = "debug", derive(Debug))]
17139#[cfg_attr(feature = "clone", derive(Clone))]
17140#[derive(Deserialize, PartialEq)]
17141pub enum Zigbee1746630p7Poweronbehavior {
17142    #[serde(rename = "off")]
17143    Off,
17144    #[serde(rename = "on")]
17145    On,
17146    #[serde(rename = "previous")]
17147    Previous,
17148    #[serde(rename = "toggle")]
17149    Toggle,
17150}
17151#[cfg_attr(feature = "debug", derive(Debug))]
17152#[cfg_attr(feature = "clone", derive(Clone))]
17153#[derive(Deserialize, PartialEq)]
17154pub enum Zigbee1746630v7Poweronbehavior {
17155    #[serde(rename = "off")]
17156    Off,
17157    #[serde(rename = "on")]
17158    On,
17159    #[serde(rename = "previous")]
17160    Previous,
17161    #[serde(rename = "toggle")]
17162    Toggle,
17163}
17164#[cfg_attr(feature = "debug", derive(Debug))]
17165#[cfg_attr(feature = "clone", derive(Clone))]
17166#[derive(Deserialize, PartialEq)]
17167pub enum Zigbee1746730v7Poweronbehavior {
17168    #[serde(rename = "off")]
17169    Off,
17170    #[serde(rename = "on")]
17171    On,
17172    #[serde(rename = "previous")]
17173    Previous,
17174    #[serde(rename = "toggle")]
17175    Toggle,
17176}
17177#[cfg_attr(feature = "debug", derive(Debug))]
17178#[cfg_attr(feature = "clone", derive(Clone))]
17179#[derive(Deserialize, PartialEq)]
17180pub enum Zigbee3115331phPoweronbehavior {
17181    #[serde(rename = "off")]
17182    Off,
17183    #[serde(rename = "on")]
17184    On,
17185    #[serde(rename = "previous")]
17186    Previous,
17187    #[serde(rename = "toggle")]
17188    Toggle,
17189}
17190#[cfg_attr(feature = "debug", derive(Debug))]
17191#[cfg_attr(feature = "clone", derive(Clone))]
17192#[derive(Deserialize, PartialEq)]
17193pub enum Zigbee3216131p5Poweronbehavior {
17194    #[serde(rename = "off")]
17195    Off,
17196    #[serde(rename = "on")]
17197    On,
17198    #[serde(rename = "previous")]
17199    Previous,
17200    #[serde(rename = "toggle")]
17201    Toggle,
17202}
17203#[cfg_attr(feature = "debug", derive(Debug))]
17204#[cfg_attr(feature = "clone", derive(Clone))]
17205#[derive(Deserialize, PartialEq)]
17206pub enum Zigbee3216131p6Poweronbehavior {
17207    #[serde(rename = "off")]
17208    Off,
17209    #[serde(rename = "on")]
17210    On,
17211    #[serde(rename = "previous")]
17212    Previous,
17213    #[serde(rename = "toggle")]
17214    Toggle,
17215}
17216#[cfg_attr(feature = "debug", derive(Debug))]
17217#[cfg_attr(feature = "clone", derive(Clone))]
17218#[derive(Deserialize, PartialEq)]
17219pub enum Zigbee3216231p5Poweronbehavior {
17220    #[serde(rename = "off")]
17221    Off,
17222    #[serde(rename = "on")]
17223    On,
17224    #[serde(rename = "previous")]
17225    Previous,
17226    #[serde(rename = "toggle")]
17227    Toggle,
17228}
17229#[cfg_attr(feature = "debug", derive(Debug))]
17230#[cfg_attr(feature = "clone", derive(Clone))]
17231#[derive(Deserialize, PartialEq)]
17232pub enum Zigbee3216231p6Poweronbehavior {
17233    #[serde(rename = "off")]
17234    Off,
17235    #[serde(rename = "on")]
17236    On,
17237    #[serde(rename = "previous")]
17238    Previous,
17239    #[serde(rename = "toggle")]
17240    Toggle,
17241}
17242#[cfg_attr(feature = "debug", derive(Debug))]
17243#[cfg_attr(feature = "clone", derive(Clone))]
17244#[derive(Deserialize, PartialEq)]
17245pub enum Zigbee3216331p5Poweronbehavior {
17246    #[serde(rename = "off")]
17247    Off,
17248    #[serde(rename = "on")]
17249    On,
17250    #[serde(rename = "previous")]
17251    Previous,
17252    #[serde(rename = "toggle")]
17253    Toggle,
17254}
17255#[cfg_attr(feature = "debug", derive(Debug))]
17256#[cfg_attr(feature = "clone", derive(Clone))]
17257#[derive(Deserialize, PartialEq)]
17258pub enum Zigbee3216331p6Poweronbehavior {
17259    #[serde(rename = "off")]
17260    Off,
17261    #[serde(rename = "on")]
17262    On,
17263    #[serde(rename = "previous")]
17264    Previous,
17265    #[serde(rename = "toggle")]
17266    Toggle,
17267}
17268#[cfg_attr(feature = "debug", derive(Debug))]
17269#[cfg_attr(feature = "clone", derive(Clone))]
17270#[derive(Deserialize, PartialEq)]
17271pub enum Zigbee3216431p5Poweronbehavior {
17272    #[serde(rename = "off")]
17273    Off,
17274    #[serde(rename = "on")]
17275    On,
17276    #[serde(rename = "previous")]
17277    Previous,
17278    #[serde(rename = "toggle")]
17279    Toggle,
17280}
17281#[cfg_attr(feature = "debug", derive(Debug))]
17282#[cfg_attr(feature = "clone", derive(Clone))]
17283#[derive(Deserialize, PartialEq)]
17284pub enum Zigbee3216431p6Poweronbehavior {
17285    #[serde(rename = "off")]
17286    Off,
17287    #[serde(rename = "on")]
17288    On,
17289    #[serde(rename = "previous")]
17290    Previous,
17291    #[serde(rename = "toggle")]
17292    Toggle,
17293}
17294#[cfg_attr(feature = "debug", derive(Debug))]
17295#[cfg_attr(feature = "clone", derive(Clone))]
17296#[derive(Deserialize, PartialEq)]
17297pub enum Zigbee324131092621Action {
17298    #[serde(rename = "down_hold")]
17299    DownHold,
17300    #[serde(rename = "down_hold_release")]
17301    DownHoldRelease,
17302    #[serde(rename = "down_press")]
17303    DownPress,
17304    #[serde(rename = "off_hold")]
17305    OffHold,
17306    #[serde(rename = "off_hold_release")]
17307    OffHoldRelease,
17308    #[serde(rename = "off_press")]
17309    OffPress,
17310    #[serde(rename = "on_hold")]
17311    OnHold,
17312    #[serde(rename = "on_hold_release")]
17313    OnHoldRelease,
17314    #[serde(rename = "on_press")]
17315    OnPress,
17316    #[serde(rename = "up_hold")]
17317    UpHold,
17318    #[serde(rename = "up_hold_release")]
17319    UpHoldRelease,
17320    #[serde(rename = "up_press")]
17321    UpPress,
17322}
17323#[cfg_attr(feature = "debug", derive(Debug))]
17324#[cfg_attr(feature = "clone", derive(Clone))]
17325#[derive(Deserialize, PartialEq)]
17326pub enum Zigbee3261030p6Poweronbehavior {
17327    #[serde(rename = "off")]
17328    Off,
17329    #[serde(rename = "on")]
17330    On,
17331    #[serde(rename = "previous")]
17332    Previous,
17333    #[serde(rename = "toggle")]
17334    Toggle,
17335}
17336#[cfg_attr(feature = "debug", derive(Debug))]
17337#[cfg_attr(feature = "clone", derive(Clone))]
17338#[derive(Deserialize, PartialEq)]
17339pub enum Zigbee3261030p7Poweronbehavior {
17340    #[serde(rename = "off")]
17341    Off,
17342    #[serde(rename = "on")]
17343    On,
17344    #[serde(rename = "previous")]
17345    Previous,
17346    #[serde(rename = "toggle")]
17347    Toggle,
17348}
17349#[cfg_attr(feature = "debug", derive(Debug))]
17350#[cfg_attr(feature = "clone", derive(Clone))]
17351#[derive(Deserialize, PartialEq)]
17352pub enum Zigbee3261031p6Poweronbehavior {
17353    #[serde(rename = "off")]
17354    Off,
17355    #[serde(rename = "on")]
17356    On,
17357    #[serde(rename = "previous")]
17358    Previous,
17359    #[serde(rename = "toggle")]
17360    Toggle,
17361}
17362#[cfg_attr(feature = "debug", derive(Debug))]
17363#[cfg_attr(feature = "clone", derive(Clone))]
17364#[derive(Deserialize, PartialEq)]
17365pub enum Zigbee3261048p6Poweronbehavior {
17366    #[serde(rename = "off")]
17367    Off,
17368    #[serde(rename = "on")]
17369    On,
17370    #[serde(rename = "previous")]
17371    Previous,
17372    #[serde(rename = "toggle")]
17373    Toggle,
17374}
17375#[cfg_attr(feature = "debug", derive(Debug))]
17376#[cfg_attr(feature = "clone", derive(Clone))]
17377#[derive(Deserialize, PartialEq)]
17378pub enum Zigbee3261330p6Poweronbehavior {
17379    #[serde(rename = "off")]
17380    Off,
17381    #[serde(rename = "on")]
17382    On,
17383    #[serde(rename = "previous")]
17384    Previous,
17385    #[serde(rename = "toggle")]
17386    Toggle,
17387}
17388#[cfg_attr(feature = "debug", derive(Debug))]
17389#[cfg_attr(feature = "clone", derive(Clone))]
17390#[derive(Deserialize, PartialEq)]
17391pub enum Zigbee3261331p6Poweronbehavior {
17392    #[serde(rename = "off")]
17393    Off,
17394    #[serde(rename = "on")]
17395    On,
17396    #[serde(rename = "previous")]
17397    Previous,
17398    #[serde(rename = "toggle")]
17399    Toggle,
17400}
17401#[cfg_attr(feature = "debug", derive(Debug))]
17402#[cfg_attr(feature = "clone", derive(Clone))]
17403#[derive(Deserialize, PartialEq)]
17404pub enum Zigbee3261331p7Poweronbehavior {
17405    #[serde(rename = "off")]
17406    Off,
17407    #[serde(rename = "on")]
17408    On,
17409    #[serde(rename = "previous")]
17410    Previous,
17411    #[serde(rename = "toggle")]
17412    Toggle,
17413}
17414#[cfg_attr(feature = "debug", derive(Debug))]
17415#[cfg_attr(feature = "clone", derive(Clone))]
17416#[derive(Deserialize, PartialEq)]
17417pub enum Zigbee3261348p6Poweronbehavior {
17418    #[serde(rename = "off")]
17419    Off,
17420    #[serde(rename = "on")]
17421    On,
17422    #[serde(rename = "previous")]
17423    Previous,
17424    #[serde(rename = "toggle")]
17425    Toggle,
17426}
17427#[cfg_attr(feature = "debug", derive(Debug))]
17428#[cfg_attr(feature = "clone", derive(Clone))]
17429#[derive(Deserialize, PartialEq)]
17430pub enum Zigbee3306431p7Poweronbehavior {
17431    #[serde(rename = "off")]
17432    Off,
17433    #[serde(rename = "on")]
17434    On,
17435    #[serde(rename = "previous")]
17436    Previous,
17437    #[serde(rename = "toggle")]
17438    Toggle,
17439}
17440#[cfg_attr(feature = "debug", derive(Debug))]
17441#[cfg_attr(feature = "clone", derive(Clone))]
17442#[derive(Deserialize, PartialEq)]
17443pub enum Zigbee33850000Poweronbehavior {
17444    #[serde(rename = "off")]
17445    Off,
17446    #[serde(rename = "on")]
17447    On,
17448    #[serde(rename = "previous")]
17449    Previous,
17450    #[serde(rename = "toggle")]
17451    Toggle,
17452}
17453#[cfg_attr(feature = "debug", derive(Debug))]
17454#[cfg_attr(feature = "clone", derive(Clone))]
17455#[derive(Deserialize, PartialEq)]
17456pub enum Zigbee3402831p7Poweronbehavior {
17457    #[serde(rename = "off")]
17458    Off,
17459    #[serde(rename = "on")]
17460    On,
17461    #[serde(rename = "previous")]
17462    Previous,
17463    #[serde(rename = "toggle")]
17464    Toggle,
17465}
17466#[cfg_attr(feature = "debug", derive(Debug))]
17467#[cfg_attr(feature = "clone", derive(Clone))]
17468#[derive(Deserialize, PartialEq)]
17469pub enum Zigbee3417511p9Poweronbehavior {
17470    #[serde(rename = "off")]
17471    Off,
17472    #[serde(rename = "on")]
17473    On,
17474    #[serde(rename = "previous")]
17475    Previous,
17476    #[serde(rename = "toggle")]
17477    Toggle,
17478}
17479#[cfg_attr(feature = "debug", derive(Debug))]
17480#[cfg_attr(feature = "clone", derive(Clone))]
17481#[derive(Deserialize, PartialEq)]
17482pub enum Zigbee3417711p6Poweronbehavior {
17483    #[serde(rename = "off")]
17484    Off,
17485    #[serde(rename = "on")]
17486    On,
17487    #[serde(rename = "previous")]
17488    Previous,
17489    #[serde(rename = "toggle")]
17490    Toggle,
17491}
17492#[cfg_attr(feature = "debug", derive(Debug))]
17493#[cfg_attr(feature = "clone", derive(Clone))]
17494#[derive(Deserialize, PartialEq)]
17495pub enum Zigbee3417831p6Poweronbehavior {
17496    #[serde(rename = "off")]
17497    Off,
17498    #[serde(rename = "on")]
17499    On,
17500    #[serde(rename = "previous")]
17501    Previous,
17502    #[serde(rename = "toggle")]
17503    Toggle,
17504}
17505#[cfg_attr(feature = "debug", derive(Debug))]
17506#[cfg_attr(feature = "clone", derive(Clone))]
17507#[derive(Deserialize, PartialEq)]
17508pub enum Zigbee3417931p6Poweronbehavior {
17509    #[serde(rename = "off")]
17510    Off,
17511    #[serde(rename = "on")]
17512    On,
17513    #[serde(rename = "previous")]
17514    Previous,
17515    #[serde(rename = "toggle")]
17516    Toggle,
17517}
17518#[cfg_attr(feature = "debug", derive(Debug))]
17519#[cfg_attr(feature = "clone", derive(Clone))]
17520#[derive(Deserialize, PartialEq)]
17521pub enum Zigbee3418031p6Poweronbehavior {
17522    #[serde(rename = "off")]
17523    Off,
17524    #[serde(rename = "on")]
17525    On,
17526    #[serde(rename = "previous")]
17527    Previous,
17528    #[serde(rename = "toggle")]
17529    Toggle,
17530}
17531#[cfg_attr(feature = "debug", derive(Debug))]
17532#[cfg_attr(feature = "clone", derive(Clone))]
17533#[derive(Deserialize, PartialEq)]
17534pub enum Zigbee3418131p6Poweronbehavior {
17535    #[serde(rename = "off")]
17536    Off,
17537    #[serde(rename = "on")]
17538    On,
17539    #[serde(rename = "previous")]
17540    Previous,
17541    #[serde(rename = "toggle")]
17542    Toggle,
17543}
17544#[cfg_attr(feature = "debug", derive(Debug))]
17545#[cfg_attr(feature = "clone", derive(Clone))]
17546#[derive(Deserialize, PartialEq)]
17547pub enum Zigbee3418331p6Poweronbehavior {
17548    #[serde(rename = "off")]
17549    Off,
17550    #[serde(rename = "on")]
17551    On,
17552    #[serde(rename = "previous")]
17553    Previous,
17554    #[serde(rename = "toggle")]
17555    Toggle,
17556}
17557#[cfg_attr(feature = "debug", derive(Debug))]
17558#[cfg_attr(feature = "clone", derive(Clone))]
17559#[derive(Deserialize, PartialEq)]
17560pub enum Zigbee3418411p6Poweronbehavior {
17561    #[serde(rename = "off")]
17562    Off,
17563    #[serde(rename = "on")]
17564    On,
17565    #[serde(rename = "previous")]
17566    Previous,
17567    #[serde(rename = "toggle")]
17568    Toggle,
17569}
17570#[cfg_attr(feature = "debug", derive(Debug))]
17571#[cfg_attr(feature = "clone", derive(Clone))]
17572#[derive(Deserialize, PartialEq)]
17573pub enum Zigbee3418631p6Poweronbehavior {
17574    #[serde(rename = "off")]
17575    Off,
17576    #[serde(rename = "on")]
17577    On,
17578    #[serde(rename = "previous")]
17579    Previous,
17580    #[serde(rename = "toggle")]
17581    Toggle,
17582}
17583#[cfg_attr(feature = "debug", derive(Debug))]
17584#[cfg_attr(feature = "clone", derive(Clone))]
17585#[derive(Deserialize, PartialEq)]
17586pub enum Zigbee3418931p6Poweronbehavior {
17587    #[serde(rename = "off")]
17588    Off,
17589    #[serde(rename = "on")]
17590    On,
17591    #[serde(rename = "previous")]
17592    Previous,
17593    #[serde(rename = "toggle")]
17594    Toggle,
17595}
17596#[cfg_attr(feature = "debug", derive(Debug))]
17597#[cfg_attr(feature = "clone", derive(Clone))]
17598#[derive(Deserialize, PartialEq)]
17599pub enum Zigbee3435011p7Poweronbehavior {
17600    #[serde(rename = "off")]
17601    Off,
17602    #[serde(rename = "on")]
17603    On,
17604    #[serde(rename = "previous")]
17605    Previous,
17606    #[serde(rename = "toggle")]
17607    Toggle,
17608}
17609#[cfg_attr(feature = "debug", derive(Debug))]
17610#[cfg_attr(feature = "clone", derive(Clone))]
17611#[derive(Deserialize, PartialEq)]
17612pub enum Zigbee3435731p7Poweronbehavior {
17613    #[serde(rename = "off")]
17614    Off,
17615    #[serde(rename = "on")]
17616    On,
17617    #[serde(rename = "previous")]
17618    Previous,
17619    #[serde(rename = "toggle")]
17620    Toggle,
17621}
17622#[cfg_attr(feature = "debug", derive(Debug))]
17623#[cfg_attr(feature = "clone", derive(Clone))]
17624#[derive(Deserialize, PartialEq)]
17625pub enum Zigbee4023330p6Poweronbehavior {
17626    #[serde(rename = "off")]
17627    Off,
17628    #[serde(rename = "on")]
17629    On,
17630    #[serde(rename = "previous")]
17631    Previous,
17632    #[serde(rename = "toggle")]
17633    Toggle,
17634}
17635#[cfg_attr(feature = "debug", derive(Debug))]
17636#[cfg_attr(feature = "clone", derive(Clone))]
17637#[derive(Deserialize, PartialEq)]
17638pub enum Zigbee4023330p7Poweronbehavior {
17639    #[serde(rename = "off")]
17640    Off,
17641    #[serde(rename = "on")]
17642    On,
17643    #[serde(rename = "previous")]
17644    Previous,
17645    #[serde(rename = "toggle")]
17646    Toggle,
17647}
17648#[cfg_attr(feature = "debug", derive(Debug))]
17649#[cfg_attr(feature = "clone", derive(Clone))]
17650#[derive(Deserialize, PartialEq)]
17651pub enum Zigbee4023331p6Poweronbehavior {
17652    #[serde(rename = "off")]
17653    Off,
17654    #[serde(rename = "on")]
17655    On,
17656    #[serde(rename = "previous")]
17657    Previous,
17658    #[serde(rename = "toggle")]
17659    Toggle,
17660}
17661#[cfg_attr(feature = "debug", derive(Debug))]
17662#[cfg_attr(feature = "clone", derive(Clone))]
17663#[derive(Deserialize, PartialEq)]
17664pub enum Zigbee4033930p6Poweronbehavior {
17665    #[serde(rename = "off")]
17666    Off,
17667    #[serde(rename = "on")]
17668    On,
17669    #[serde(rename = "previous")]
17670    Previous,
17671    #[serde(rename = "toggle")]
17672    Toggle,
17673}
17674#[cfg_attr(feature = "debug", derive(Debug))]
17675#[cfg_attr(feature = "clone", derive(Clone))]
17676#[derive(Deserialize, PartialEq)]
17677pub enum Zigbee4033930p7Poweronbehavior {
17678    #[serde(rename = "off")]
17679    Off,
17680    #[serde(rename = "on")]
17681    On,
17682    #[serde(rename = "previous")]
17683    Previous,
17684    #[serde(rename = "toggle")]
17685    Toggle,
17686}
17687#[cfg_attr(feature = "debug", derive(Debug))]
17688#[cfg_attr(feature = "clone", derive(Clone))]
17689#[derive(Deserialize, PartialEq)]
17690pub enum Zigbee4034030p6Poweronbehavior {
17691    #[serde(rename = "off")]
17692    Off,
17693    #[serde(rename = "on")]
17694    On,
17695    #[serde(rename = "previous")]
17696    Previous,
17697    #[serde(rename = "toggle")]
17698    Toggle,
17699}
17700#[cfg_attr(feature = "debug", derive(Debug))]
17701#[cfg_attr(feature = "clone", derive(Clone))]
17702#[derive(Deserialize, PartialEq)]
17703pub enum Zigbee4034031p6Poweronbehavior {
17704    #[serde(rename = "off")]
17705    Off,
17706    #[serde(rename = "on")]
17707    On,
17708    #[serde(rename = "previous")]
17709    Previous,
17710    #[serde(rename = "toggle")]
17711    Toggle,
17712}
17713#[cfg_attr(feature = "debug", derive(Debug))]
17714#[cfg_attr(feature = "clone", derive(Clone))]
17715#[derive(Deserialize, PartialEq)]
17716pub enum Zigbee4034031p7Poweronbehavior {
17717    #[serde(rename = "off")]
17718    Off,
17719    #[serde(rename = "on")]
17720    On,
17721    #[serde(rename = "previous")]
17722    Previous,
17723    #[serde(rename = "toggle")]
17724    Toggle,
17725}
17726#[cfg_attr(feature = "debug", derive(Debug))]
17727#[cfg_attr(feature = "clone", derive(Clone))]
17728#[derive(Deserialize, PartialEq)]
17729pub enum Zigbee4076130p6Poweronbehavior {
17730    #[serde(rename = "off")]
17731    Off,
17732    #[serde(rename = "on")]
17733    On,
17734    #[serde(rename = "previous")]
17735    Previous,
17736    #[serde(rename = "toggle")]
17737    Toggle,
17738}
17739#[cfg_attr(feature = "debug", derive(Debug))]
17740#[cfg_attr(feature = "clone", derive(Clone))]
17741#[derive(Deserialize, PartialEq)]
17742pub enum Zigbee4076131p6Poweronbehavior {
17743    #[serde(rename = "off")]
17744    Off,
17745    #[serde(rename = "on")]
17746    On,
17747    #[serde(rename = "previous")]
17748    Previous,
17749    #[serde(rename = "toggle")]
17750    Toggle,
17751}
17752#[cfg_attr(feature = "debug", derive(Debug))]
17753#[cfg_attr(feature = "clone", derive(Clone))]
17754#[derive(Deserialize, PartialEq)]
17755pub enum Zigbee4080148p7Poweronbehavior {
17756    #[serde(rename = "off")]
17757    Off,
17758    #[serde(rename = "on")]
17759    On,
17760    #[serde(rename = "previous")]
17761    Previous,
17762    #[serde(rename = "toggle")]
17763    Toggle,
17764}
17765#[cfg_attr(feature = "debug", derive(Debug))]
17766#[cfg_attr(feature = "clone", derive(Clone))]
17767#[derive(Deserialize, PartialEq)]
17768pub enum Zigbee4080148p9Poweronbehavior {
17769    #[serde(rename = "off")]
17770    Off,
17771    #[serde(rename = "on")]
17772    On,
17773    #[serde(rename = "previous")]
17774    Previous,
17775    #[serde(rename = "toggle")]
17776    Toggle,
17777}
17778#[cfg_attr(feature = "debug", derive(Debug))]
17779#[cfg_attr(feature = "clone", derive(Clone))]
17780#[derive(Deserialize, PartialEq)]
17781pub enum Zigbee4080148u9Poweronbehavior {
17782    #[serde(rename = "off")]
17783    Off,
17784    #[serde(rename = "on")]
17785    On,
17786    #[serde(rename = "previous")]
17787    Previous,
17788    #[serde(rename = "toggle")]
17789    Toggle,
17790}
17791#[cfg_attr(feature = "debug", derive(Debug))]
17792#[cfg_attr(feature = "clone", derive(Clone))]
17793#[derive(Deserialize, PartialEq)]
17794pub enum Zigbee4080248p7Poweronbehavior {
17795    #[serde(rename = "off")]
17796    Off,
17797    #[serde(rename = "on")]
17798    On,
17799    #[serde(rename = "previous")]
17800    Previous,
17801    #[serde(rename = "toggle")]
17802    Toggle,
17803}
17804#[cfg_attr(feature = "debug", derive(Debug))]
17805#[cfg_attr(feature = "clone", derive(Clone))]
17806#[derive(Deserialize, PartialEq)]
17807pub enum Zigbee4080248p9Poweronbehavior {
17808    #[serde(rename = "off")]
17809    Off,
17810    #[serde(rename = "on")]
17811    On,
17812    #[serde(rename = "previous")]
17813    Previous,
17814    #[serde(rename = "toggle")]
17815    Toggle,
17816}
17817#[cfg_attr(feature = "debug", derive(Debug))]
17818#[cfg_attr(feature = "clone", derive(Clone))]
17819#[derive(Deserialize, PartialEq)]
17820pub enum Zigbee4080248u9Poweronbehavior {
17821    #[serde(rename = "off")]
17822    Off,
17823    #[serde(rename = "on")]
17824    On,
17825    #[serde(rename = "previous")]
17826    Previous,
17827    #[serde(rename = "toggle")]
17828    Toggle,
17829}
17830#[cfg_attr(feature = "debug", derive(Debug))]
17831#[cfg_attr(feature = "clone", derive(Clone))]
17832#[derive(Deserialize, PartialEq)]
17833pub enum Zigbee4090130p7Poweronbehavior {
17834    #[serde(rename = "off")]
17835    Off,
17836    #[serde(rename = "on")]
17837    On,
17838    #[serde(rename = "previous")]
17839    Previous,
17840    #[serde(rename = "toggle")]
17841    Toggle,
17842}
17843#[cfg_attr(feature = "debug", derive(Debug))]
17844#[cfg_attr(feature = "clone", derive(Clone))]
17845#[derive(Deserialize, PartialEq)]
17846pub enum Zigbee4090130p9Poweronbehavior {
17847    #[serde(rename = "off")]
17848    Off,
17849    #[serde(rename = "on")]
17850    On,
17851    #[serde(rename = "previous")]
17852    Previous,
17853    #[serde(rename = "toggle")]
17854    Toggle,
17855}
17856#[cfg_attr(feature = "debug", derive(Debug))]
17857#[cfg_attr(feature = "clone", derive(Clone))]
17858#[derive(Deserialize, PartialEq)]
17859pub enum Zigbee4090230p9Poweronbehavior {
17860    #[serde(rename = "off")]
17861    Off,
17862    #[serde(rename = "on")]
17863    On,
17864    #[serde(rename = "previous")]
17865    Previous,
17866    #[serde(rename = "toggle")]
17867    Toggle,
17868}
17869#[cfg_attr(feature = "debug", derive(Debug))]
17870#[cfg_attr(feature = "clone", derive(Clone))]
17871#[derive(Deserialize, PartialEq)]
17872pub enum Zigbee4090231p9Poweronbehavior {
17873    #[serde(rename = "off")]
17874    Off,
17875    #[serde(rename = "on")]
17876    On,
17877    #[serde(rename = "previous")]
17878    Previous,
17879    #[serde(rename = "toggle")]
17880    Toggle,
17881}
17882#[cfg_attr(feature = "debug", derive(Debug))]
17883#[cfg_attr(feature = "clone", derive(Clone))]
17884#[derive(Deserialize, PartialEq)]
17885pub enum Zigbee4090330p9Poweronbehavior {
17886    #[serde(rename = "off")]
17887    Off,
17888    #[serde(rename = "on")]
17889    On,
17890    #[serde(rename = "previous")]
17891    Previous,
17892    #[serde(rename = "toggle")]
17893    Toggle,
17894}
17895#[cfg_attr(feature = "debug", derive(Debug))]
17896#[cfg_attr(feature = "clone", derive(Clone))]
17897#[derive(Deserialize, PartialEq)]
17898pub enum Zigbee4090331p9Poweronbehavior {
17899    #[serde(rename = "off")]
17900    Off,
17901    #[serde(rename = "on")]
17902    On,
17903    #[serde(rename = "previous")]
17904    Previous,
17905    #[serde(rename = "toggle")]
17906    Toggle,
17907}
17908#[cfg_attr(feature = "debug", derive(Debug))]
17909#[cfg_attr(feature = "clone", derive(Clone))]
17910#[derive(Deserialize, PartialEq)]
17911pub enum Zigbee4090431p9Poweronbehavior {
17912    #[serde(rename = "off")]
17913    Off,
17914    #[serde(rename = "on")]
17915    On,
17916    #[serde(rename = "previous")]
17917    Previous,
17918    #[serde(rename = "toggle")]
17919    Toggle,
17920}
17921#[cfg_attr(feature = "debug", derive(Debug))]
17922#[cfg_attr(feature = "clone", derive(Clone))]
17923#[derive(Deserialize, PartialEq)]
17924pub enum Zigbee4090531p7Poweronbehavior {
17925    #[serde(rename = "off")]
17926    Off,
17927    #[serde(rename = "on")]
17928    On,
17929    #[serde(rename = "previous")]
17930    Previous,
17931    #[serde(rename = "toggle")]
17932    Toggle,
17933}
17934#[cfg_attr(feature = "debug", derive(Debug))]
17935#[cfg_attr(feature = "clone", derive(Clone))]
17936#[derive(Deserialize, PartialEq)]
17937pub enum Zigbee4090531p9Poweronbehavior {
17938    #[serde(rename = "off")]
17939    Off,
17940    #[serde(rename = "on")]
17941    On,
17942    #[serde(rename = "previous")]
17943    Previous,
17944    #[serde(rename = "toggle")]
17945    Toggle,
17946}
17947#[cfg_attr(feature = "debug", derive(Debug))]
17948#[cfg_attr(feature = "clone", derive(Clone))]
17949#[derive(Deserialize, PartialEq)]
17950pub enum Zigbee4090631p7Poweronbehavior {
17951    #[serde(rename = "off")]
17952    Off,
17953    #[serde(rename = "on")]
17954    On,
17955    #[serde(rename = "previous")]
17956    Previous,
17957    #[serde(rename = "toggle")]
17958    Toggle,
17959}
17960#[cfg_attr(feature = "debug", derive(Debug))]
17961#[cfg_attr(feature = "clone", derive(Clone))]
17962#[derive(Deserialize, PartialEq)]
17963pub enum Zigbee4090631p9Poweronbehavior {
17964    #[serde(rename = "off")]
17965    Off,
17966    #[serde(rename = "on")]
17967    On,
17968    #[serde(rename = "previous")]
17969    Previous,
17970    #[serde(rename = "toggle")]
17971    Toggle,
17972}
17973#[cfg_attr(feature = "debug", derive(Debug))]
17974#[cfg_attr(feature = "clone", derive(Clone))]
17975#[derive(Deserialize, PartialEq)]
17976pub enum Zigbee4096730p6Poweronbehavior {
17977    #[serde(rename = "off")]
17978    Off,
17979    #[serde(rename = "on")]
17980    On,
17981    #[serde(rename = "previous")]
17982    Previous,
17983    #[serde(rename = "toggle")]
17984    Toggle,
17985}
17986#[cfg_attr(feature = "debug", derive(Debug))]
17987#[cfg_attr(feature = "clone", derive(Clone))]
17988#[derive(Deserialize, PartialEq)]
17989pub enum Zigbee4096730u7Poweronbehavior {
17990    #[serde(rename = "off")]
17991    Off,
17992    #[serde(rename = "on")]
17993    On,
17994    #[serde(rename = "previous")]
17995    Previous,
17996    #[serde(rename = "toggle")]
17997    Toggle,
17998}
17999#[cfg_attr(feature = "debug", derive(Debug))]
18000#[cfg_attr(feature = "clone", derive(Clone))]
18001#[derive(Deserialize, PartialEq)]
18002pub enum Zigbee4098430p7Poweronbehavior {
18003    #[serde(rename = "off")]
18004    Off,
18005    #[serde(rename = "on")]
18006    On,
18007    #[serde(rename = "previous")]
18008    Previous,
18009    #[serde(rename = "toggle")]
18010    Toggle,
18011}
18012#[cfg_attr(feature = "debug", derive(Debug))]
18013#[cfg_attr(feature = "clone", derive(Clone))]
18014#[derive(Deserialize, PartialEq)]
18015pub enum Zigbee4100448u9Poweronbehavior {
18016    #[serde(rename = "off")]
18017    Off,
18018    #[serde(rename = "on")]
18019    On,
18020    #[serde(rename = "previous")]
18021    Previous,
18022    #[serde(rename = "toggle")]
18023    Toggle,
18024}
18025#[cfg_attr(feature = "debug", derive(Debug))]
18026#[cfg_attr(feature = "clone", derive(Clone))]
18027#[derive(Deserialize, PartialEq)]
18028pub enum Zigbee433714Poweronbehavior {
18029    #[serde(rename = "off")]
18030    Off,
18031    #[serde(rename = "on")]
18032    On,
18033    #[serde(rename = "previous")]
18034    Previous,
18035    #[serde(rename = "toggle")]
18036    Toggle,
18037}
18038#[cfg_attr(feature = "debug", derive(Debug))]
18039#[cfg_attr(feature = "clone", derive(Clone))]
18040#[derive(Deserialize, PartialEq)]
18041pub enum Zigbee4503748c6Poweronbehavior {
18042    #[serde(rename = "off")]
18043    Off,
18044    #[serde(rename = "on")]
18045    On,
18046    #[serde(rename = "previous")]
18047    Previous,
18048    #[serde(rename = "toggle")]
18049    Toggle,
18050}
18051#[cfg_attr(feature = "debug", derive(Debug))]
18052#[cfg_attr(feature = "clone", derive(Clone))]
18053#[derive(Deserialize, PartialEq)]
18054pub enum Zigbee4503848c5Poweronbehavior {
18055    #[serde(rename = "off")]
18056    Off,
18057    #[serde(rename = "on")]
18058    On,
18059    #[serde(rename = "previous")]
18060    Previous,
18061    #[serde(rename = "toggle")]
18062    Toggle,
18063}
18064#[cfg_attr(feature = "debug", derive(Debug))]
18065#[cfg_attr(feature = "clone", derive(Clone))]
18066#[derive(Deserialize, PartialEq)]
18067pub enum Zigbee4505748c5Poweronbehavior {
18068    #[serde(rename = "off")]
18069    Off,
18070    #[serde(rename = "on")]
18071    On,
18072    #[serde(rename = "previous")]
18073    Previous,
18074    #[serde(rename = "toggle")]
18075    Toggle,
18076}
18077#[cfg_attr(feature = "debug", derive(Debug))]
18078#[cfg_attr(feature = "clone", derive(Clone))]
18079#[derive(Deserialize, PartialEq)]
18080pub enum Zigbee4507748c5Poweronbehavior {
18081    #[serde(rename = "off")]
18082    Off,
18083    #[serde(rename = "on")]
18084    On,
18085    #[serde(rename = "previous")]
18086    Previous,
18087    #[serde(rename = "toggle")]
18088    Toggle,
18089}
18090#[cfg_attr(feature = "debug", derive(Debug))]
18091#[cfg_attr(feature = "clone", derive(Clone))]
18092#[derive(Deserialize, PartialEq)]
18093pub enum Zigbee464800Poweronbehavior {
18094    #[serde(rename = "off")]
18095    Off,
18096    #[serde(rename = "on")]
18097    On,
18098    #[serde(rename = "previous")]
18099    Previous,
18100    #[serde(rename = "toggle")]
18101    Toggle,
18102}
18103#[cfg_attr(feature = "debug", derive(Debug))]
18104#[cfg_attr(feature = "clone", derive(Clone))]
18105#[derive(Deserialize, PartialEq)]
18106pub enum Zigbee5041131p9Poweronbehavior {
18107    #[serde(rename = "off")]
18108    Off,
18109    #[serde(rename = "on")]
18110    On,
18111    #[serde(rename = "previous")]
18112    Previous,
18113    #[serde(rename = "toggle")]
18114    Toggle,
18115}
18116#[cfg_attr(feature = "debug", derive(Debug))]
18117#[cfg_attr(feature = "clone", derive(Clone))]
18118#[derive(Deserialize, PartialEq)]
18119pub enum Zigbee5042131p9Poweronbehavior {
18120    #[serde(rename = "off")]
18121    Off,
18122    #[serde(rename = "on")]
18123    On,
18124    #[serde(rename = "previous")]
18125    Previous,
18126    #[serde(rename = "toggle")]
18127    Toggle,
18128}
18129#[cfg_attr(feature = "debug", derive(Debug))]
18130#[cfg_attr(feature = "clone", derive(Clone))]
18131#[derive(Deserialize, PartialEq)]
18132pub enum Zigbee5045131p7Poweronbehavior {
18133    #[serde(rename = "off")]
18134    Off,
18135    #[serde(rename = "on")]
18136    On,
18137    #[serde(rename = "previous")]
18138    Previous,
18139    #[serde(rename = "toggle")]
18140    Toggle,
18141}
18142#[cfg_attr(feature = "debug", derive(Debug))]
18143#[cfg_attr(feature = "clone", derive(Clone))]
18144#[derive(Deserialize, PartialEq)]
18145pub enum Zigbee5045148p7Poweronbehavior {
18146    #[serde(rename = "off")]
18147    Off,
18148    #[serde(rename = "on")]
18149    On,
18150    #[serde(rename = "previous")]
18151    Previous,
18152    #[serde(rename = "toggle")]
18153    Toggle,
18154}
18155#[cfg_attr(feature = "debug", derive(Debug))]
18156#[cfg_attr(feature = "clone", derive(Clone))]
18157#[derive(Deserialize, PartialEq)]
18158pub enum Zigbee5047130p6Poweronbehavior {
18159    #[serde(rename = "off")]
18160    Off,
18161    #[serde(rename = "on")]
18162    On,
18163    #[serde(rename = "previous")]
18164    Previous,
18165    #[serde(rename = "toggle")]
18166    Toggle,
18167}
18168#[cfg_attr(feature = "debug", derive(Debug))]
18169#[cfg_attr(feature = "clone", derive(Clone))]
18170#[derive(Deserialize, PartialEq)]
18171pub enum Zigbee5047130p9Poweronbehavior {
18172    #[serde(rename = "off")]
18173    Off,
18174    #[serde(rename = "on")]
18175    On,
18176    #[serde(rename = "previous")]
18177    Previous,
18178    #[serde(rename = "toggle")]
18179    Toggle,
18180}
18181#[cfg_attr(feature = "debug", derive(Debug))]
18182#[cfg_attr(feature = "clone", derive(Clone))]
18183#[derive(Deserialize, PartialEq)]
18184pub enum Zigbee5047131p8Poweronbehavior {
18185    #[serde(rename = "off")]
18186    Off,
18187    #[serde(rename = "on")]
18188    On,
18189    #[serde(rename = "previous")]
18190    Previous,
18191    #[serde(rename = "toggle")]
18192    Toggle,
18193}
18194#[cfg_attr(feature = "debug", derive(Debug))]
18195#[cfg_attr(feature = "clone", derive(Clone))]
18196#[derive(Deserialize, PartialEq)]
18197pub enum Zigbee5047131p9Poweronbehavior {
18198    #[serde(rename = "off")]
18199    Off,
18200    #[serde(rename = "on")]
18201    On,
18202    #[serde(rename = "previous")]
18203    Previous,
18204    #[serde(rename = "toggle")]
18205    Toggle,
18206}
18207#[cfg_attr(feature = "debug", derive(Debug))]
18208#[cfg_attr(feature = "clone", derive(Clone))]
18209#[derive(Deserialize, PartialEq)]
18210pub enum Zigbee5047230p6Poweronbehavior {
18211    #[serde(rename = "off")]
18212    Off,
18213    #[serde(rename = "on")]
18214    On,
18215    #[serde(rename = "previous")]
18216    Previous,
18217    #[serde(rename = "toggle")]
18218    Toggle,
18219}
18220#[cfg_attr(feature = "debug", derive(Debug))]
18221#[cfg_attr(feature = "clone", derive(Clone))]
18222#[derive(Deserialize, PartialEq)]
18223pub enum Zigbee5047231p6Poweronbehavior {
18224    #[serde(rename = "off")]
18225    Off,
18226    #[serde(rename = "on")]
18227    On,
18228    #[serde(rename = "previous")]
18229    Previous,
18230    #[serde(rename = "toggle")]
18231    Toggle,
18232}
18233#[cfg_attr(feature = "debug", derive(Debug))]
18234#[cfg_attr(feature = "clone", derive(Clone))]
18235#[derive(Deserialize, PartialEq)]
18236pub enum Zigbee5047331p6Poweronbehavior {
18237    #[serde(rename = "off")]
18238    Off,
18239    #[serde(rename = "on")]
18240    On,
18241    #[serde(rename = "previous")]
18242    Previous,
18243    #[serde(rename = "toggle")]
18244    Toggle,
18245}
18246#[cfg_attr(feature = "debug", derive(Debug))]
18247#[cfg_attr(feature = "clone", derive(Clone))]
18248#[derive(Deserialize, PartialEq)]
18249pub enum Zigbee5047430p6Poweronbehavior {
18250    #[serde(rename = "off")]
18251    Off,
18252    #[serde(rename = "on")]
18253    On,
18254    #[serde(rename = "previous")]
18255    Previous,
18256    #[serde(rename = "toggle")]
18257    Toggle,
18258}
18259#[cfg_attr(feature = "debug", derive(Debug))]
18260#[cfg_attr(feature = "clone", derive(Clone))]
18261#[derive(Deserialize, PartialEq)]
18262pub enum Zigbee5055131p7Poweronbehavior {
18263    #[serde(rename = "off")]
18264    Off,
18265    #[serde(rename = "on")]
18266    On,
18267    #[serde(rename = "previous")]
18268    Previous,
18269    #[serde(rename = "toggle")]
18270    Toggle,
18271}
18272#[cfg_attr(feature = "debug", derive(Debug))]
18273#[cfg_attr(feature = "clone", derive(Clone))]
18274#[derive(Deserialize, PartialEq)]
18275pub enum Zigbee5055148p7Poweronbehavior {
18276    #[serde(rename = "off")]
18277    Off,
18278    #[serde(rename = "on")]
18279    On,
18280    #[serde(rename = "previous")]
18281    Previous,
18282    #[serde(rename = "toggle")]
18283    Toggle,
18284}
18285#[cfg_attr(feature = "debug", derive(Debug))]
18286#[cfg_attr(feature = "clone", derive(Clone))]
18287#[derive(Deserialize, PartialEq)]
18288pub enum Zigbee5060730p7Poweronbehavior {
18289    #[serde(rename = "off")]
18290    Off,
18291    #[serde(rename = "on")]
18292    On,
18293    #[serde(rename = "previous")]
18294    Previous,
18295    #[serde(rename = "toggle")]
18296    Toggle,
18297}
18298#[cfg_attr(feature = "debug", derive(Debug))]
18299#[cfg_attr(feature = "clone", derive(Clone))]
18300#[derive(Deserialize, PartialEq)]
18301pub enum Zigbee5060731p7Poweronbehavior {
18302    #[serde(rename = "off")]
18303    Off,
18304    #[serde(rename = "on")]
18305    On,
18306    #[serde(rename = "previous")]
18307    Previous,
18308    #[serde(rename = "toggle")]
18309    Toggle,
18310}
18311#[cfg_attr(feature = "debug", derive(Debug))]
18312#[cfg_attr(feature = "clone", derive(Clone))]
18313#[derive(Deserialize, PartialEq)]
18314pub enum Zigbee5060830p7Poweronbehavior {
18315    #[serde(rename = "off")]
18316    Off,
18317    #[serde(rename = "on")]
18318    On,
18319    #[serde(rename = "previous")]
18320    Previous,
18321    #[serde(rename = "toggle")]
18322    Toggle,
18323}
18324#[cfg_attr(feature = "debug", derive(Debug))]
18325#[cfg_attr(feature = "clone", derive(Clone))]
18326#[derive(Deserialize, PartialEq)]
18327pub enum Zigbee5060831p7Poweronbehavior {
18328    #[serde(rename = "off")]
18329    Off,
18330    #[serde(rename = "on")]
18331    On,
18332    #[serde(rename = "previous")]
18333    Previous,
18334    #[serde(rename = "toggle")]
18335    Toggle,
18336}
18337#[cfg_attr(feature = "debug", derive(Debug))]
18338#[cfg_attr(feature = "clone", derive(Clone))]
18339#[derive(Deserialize, PartialEq)]
18340pub enum Zigbee5060930p7Poweronbehavior {
18341    #[serde(rename = "off")]
18342    Off,
18343    #[serde(rename = "on")]
18344    On,
18345    #[serde(rename = "previous")]
18346    Previous,
18347    #[serde(rename = "toggle")]
18348    Toggle,
18349}
18350#[cfg_attr(feature = "debug", derive(Debug))]
18351#[cfg_attr(feature = "clone", derive(Clone))]
18352#[derive(Deserialize, PartialEq)]
18353pub enum Zigbee5060931p7Poweronbehavior {
18354    #[serde(rename = "off")]
18355    Off,
18356    #[serde(rename = "on")]
18357    On,
18358    #[serde(rename = "previous")]
18359    Previous,
18360    #[serde(rename = "toggle")]
18361    Toggle,
18362}
18363#[cfg_attr(feature = "debug", derive(Debug))]
18364#[cfg_attr(feature = "clone", derive(Clone))]
18365#[derive(Deserialize, PartialEq)]
18366pub enum Zigbee5061030p7Poweronbehavior {
18367    #[serde(rename = "off")]
18368    Off,
18369    #[serde(rename = "on")]
18370    On,
18371    #[serde(rename = "previous")]
18372    Previous,
18373    #[serde(rename = "toggle")]
18374    Toggle,
18375}
18376#[cfg_attr(feature = "debug", derive(Debug))]
18377#[cfg_attr(feature = "clone", derive(Clone))]
18378#[derive(Deserialize, PartialEq)]
18379pub enum Zigbee5061031p7Poweronbehavior {
18380    #[serde(rename = "off")]
18381    Off,
18382    #[serde(rename = "on")]
18383    On,
18384    #[serde(rename = "previous")]
18385    Previous,
18386    #[serde(rename = "toggle")]
18387    Toggle,
18388}
18389#[cfg_attr(feature = "debug", derive(Debug))]
18390#[cfg_attr(feature = "clone", derive(Clone))]
18391#[derive(Deserialize, PartialEq)]
18392pub enum Zigbee5062131p7Poweronbehavior {
18393    #[serde(rename = "off")]
18394    Off,
18395    #[serde(rename = "on")]
18396    On,
18397    #[serde(rename = "previous")]
18398    Previous,
18399    #[serde(rename = "toggle")]
18400    Toggle,
18401}
18402#[cfg_attr(feature = "debug", derive(Debug))]
18403#[cfg_attr(feature = "clone", derive(Clone))]
18404#[derive(Deserialize, PartialEq)]
18405pub enum Zigbee5062148p7Poweronbehavior {
18406    #[serde(rename = "off")]
18407    Off,
18408    #[serde(rename = "on")]
18409    On,
18410    #[serde(rename = "previous")]
18411    Previous,
18412    #[serde(rename = "toggle")]
18413    Toggle,
18414}
18415#[cfg_attr(feature = "debug", derive(Debug))]
18416#[cfg_attr(feature = "clone", derive(Clone))]
18417#[derive(Deserialize, PartialEq)]
18418pub enum Zigbee5062231p7Poweronbehavior {
18419    #[serde(rename = "off")]
18420    Off,
18421    #[serde(rename = "on")]
18422    On,
18423    #[serde(rename = "previous")]
18424    Previous,
18425    #[serde(rename = "toggle")]
18426    Toggle,
18427}
18428#[cfg_attr(feature = "debug", derive(Debug))]
18429#[cfg_attr(feature = "clone", derive(Clone))]
18430#[derive(Deserialize, PartialEq)]
18431pub enum Zigbee5062248p7Poweronbehavior {
18432    #[serde(rename = "off")]
18433    Off,
18434    #[serde(rename = "on")]
18435    On,
18436    #[serde(rename = "previous")]
18437    Previous,
18438    #[serde(rename = "toggle")]
18439    Toggle,
18440}
18441#[cfg_attr(feature = "debug", derive(Debug))]
18442#[cfg_attr(feature = "clone", derive(Clone))]
18443#[derive(Deserialize, PartialEq)]
18444pub enum Zigbee5062331p7Poweronbehavior {
18445    #[serde(rename = "off")]
18446    Off,
18447    #[serde(rename = "on")]
18448    On,
18449    #[serde(rename = "previous")]
18450    Previous,
18451    #[serde(rename = "toggle")]
18452    Toggle,
18453}
18454#[cfg_attr(feature = "debug", derive(Debug))]
18455#[cfg_attr(feature = "clone", derive(Clone))]
18456#[derive(Deserialize, PartialEq)]
18457pub enum Zigbee5062348p7Poweronbehavior {
18458    #[serde(rename = "off")]
18459    Off,
18460    #[serde(rename = "on")]
18461    On,
18462    #[serde(rename = "previous")]
18463    Previous,
18464    #[serde(rename = "toggle")]
18465    Toggle,
18466}
18467#[cfg_attr(feature = "debug", derive(Debug))]
18468#[cfg_attr(feature = "clone", derive(Clone))]
18469#[derive(Deserialize, PartialEq)]
18470pub enum Zigbee5062431p7Poweronbehavior {
18471    #[serde(rename = "off")]
18472    Off,
18473    #[serde(rename = "on")]
18474    On,
18475    #[serde(rename = "previous")]
18476    Previous,
18477    #[serde(rename = "toggle")]
18478    Toggle,
18479}
18480#[cfg_attr(feature = "debug", derive(Debug))]
18481#[cfg_attr(feature = "clone", derive(Clone))]
18482#[derive(Deserialize, PartialEq)]
18483pub enum Zigbee5062448p7Poweronbehavior {
18484    #[serde(rename = "off")]
18485    Off,
18486    #[serde(rename = "on")]
18487    On,
18488    #[serde(rename = "previous")]
18489    Previous,
18490    #[serde(rename = "toggle")]
18491    Toggle,
18492}
18493#[cfg_attr(feature = "debug", derive(Debug))]
18494#[cfg_attr(feature = "clone", derive(Clone))]
18495#[derive(Deserialize, PartialEq)]
18496pub enum Zigbee5063130p7Poweronbehavior {
18497    #[serde(rename = "off")]
18498    Off,
18499    #[serde(rename = "on")]
18500    On,
18501    #[serde(rename = "previous")]
18502    Previous,
18503    #[serde(rename = "toggle")]
18504    Toggle,
18505}
18506#[cfg_attr(feature = "debug", derive(Debug))]
18507#[cfg_attr(feature = "clone", derive(Clone))]
18508#[derive(Deserialize, PartialEq)]
18509pub enum Zigbee5063131p7Poweronbehavior {
18510    #[serde(rename = "off")]
18511    Off,
18512    #[serde(rename = "on")]
18513    On,
18514    #[serde(rename = "previous")]
18515    Previous,
18516    #[serde(rename = "toggle")]
18517    Toggle,
18518}
18519#[cfg_attr(feature = "debug", derive(Debug))]
18520#[cfg_attr(feature = "clone", derive(Clone))]
18521#[derive(Deserialize, PartialEq)]
18522pub enum Zigbee5063230p7Poweronbehavior {
18523    #[serde(rename = "off")]
18524    Off,
18525    #[serde(rename = "on")]
18526    On,
18527    #[serde(rename = "previous")]
18528    Previous,
18529    #[serde(rename = "toggle")]
18530    Toggle,
18531}
18532#[cfg_attr(feature = "debug", derive(Debug))]
18533#[cfg_attr(feature = "clone", derive(Clone))]
18534#[derive(Deserialize, PartialEq)]
18535pub enum Zigbee5063231p7Poweronbehavior {
18536    #[serde(rename = "off")]
18537    Off,
18538    #[serde(rename = "on")]
18539    On,
18540    #[serde(rename = "previous")]
18541    Previous,
18542    #[serde(rename = "toggle")]
18543    Toggle,
18544}
18545#[cfg_attr(feature = "debug", derive(Debug))]
18546#[cfg_attr(feature = "clone", derive(Clone))]
18547#[derive(Deserialize, PartialEq)]
18548pub enum Zigbee5063330p7Poweronbehavior {
18549    #[serde(rename = "off")]
18550    Off,
18551    #[serde(rename = "on")]
18552    On,
18553    #[serde(rename = "previous")]
18554    Previous,
18555    #[serde(rename = "toggle")]
18556    Toggle,
18557}
18558#[cfg_attr(feature = "debug", derive(Debug))]
18559#[cfg_attr(feature = "clone", derive(Clone))]
18560#[derive(Deserialize, PartialEq)]
18561pub enum Zigbee5063331p7Poweronbehavior {
18562    #[serde(rename = "off")]
18563    Off,
18564    #[serde(rename = "on")]
18565    On,
18566    #[serde(rename = "previous")]
18567    Previous,
18568    #[serde(rename = "toggle")]
18569    Toggle,
18570}
18571#[cfg_attr(feature = "debug", derive(Debug))]
18572#[cfg_attr(feature = "clone", derive(Clone))]
18573#[derive(Deserialize, PartialEq)]
18574pub enum Zigbee5063430p7Poweronbehavior {
18575    #[serde(rename = "off")]
18576    Off,
18577    #[serde(rename = "on")]
18578    On,
18579    #[serde(rename = "previous")]
18580    Previous,
18581    #[serde(rename = "toggle")]
18582    Toggle,
18583}
18584#[cfg_attr(feature = "debug", derive(Debug))]
18585#[cfg_attr(feature = "clone", derive(Clone))]
18586#[derive(Deserialize, PartialEq)]
18587pub enum Zigbee5063431p7Poweronbehavior {
18588    #[serde(rename = "off")]
18589    Off,
18590    #[serde(rename = "on")]
18591    On,
18592    #[serde(rename = "previous")]
18593    Previous,
18594    #[serde(rename = "toggle")]
18595    Toggle,
18596}
18597#[cfg_attr(feature = "debug", derive(Debug))]
18598#[cfg_attr(feature = "clone", derive(Clone))]
18599#[derive(Deserialize, PartialEq)]
18600pub enum Zigbee5110131h5Poweronbehavior {
18601    #[serde(rename = "off")]
18602    Off,
18603    #[serde(rename = "on")]
18604    On,
18605    #[serde(rename = "previous")]
18606    Previous,
18607    #[serde(rename = "toggle")]
18608    Toggle,
18609}
18610#[cfg_attr(feature = "debug", derive(Debug))]
18611#[cfg_attr(feature = "clone", derive(Clone))]
18612#[derive(Deserialize, PartialEq)]
18613pub enum Zigbee5110731h5Poweronbehavior {
18614    #[serde(rename = "off")]
18615    Off,
18616    #[serde(rename = "on")]
18617    On,
18618    #[serde(rename = "previous")]
18619    Previous,
18620    #[serde(rename = "toggle")]
18621    Toggle,
18622}
18623#[cfg_attr(feature = "debug", derive(Debug))]
18624#[cfg_attr(feature = "clone", derive(Clone))]
18625#[derive(Deserialize, PartialEq)]
18626pub enum Zigbee5111531h5Poweronbehavior {
18627    #[serde(rename = "off")]
18628    Off,
18629    #[serde(rename = "on")]
18630    On,
18631    #[serde(rename = "previous")]
18632    Previous,
18633    #[serde(rename = "toggle")]
18634    Toggle,
18635}
18636#[cfg_attr(feature = "debug", derive(Debug))]
18637#[cfg_attr(feature = "clone", derive(Clone))]
18638#[derive(Deserialize, PartialEq)]
18639pub enum Zigbee5309030p9Poweronbehavior {
18640    #[serde(rename = "off")]
18641    Off,
18642    #[serde(rename = "on")]
18643    On,
18644    #[serde(rename = "previous")]
18645    Previous,
18646    #[serde(rename = "toggle")]
18647    Toggle,
18648}
18649#[cfg_attr(feature = "debug", derive(Debug))]
18650#[cfg_attr(feature = "clone", derive(Clone))]
18651#[derive(Deserialize, PartialEq)]
18652pub enum Zigbee5309031p8Poweronbehavior {
18653    #[serde(rename = "off")]
18654    Off,
18655    #[serde(rename = "on")]
18656    On,
18657    #[serde(rename = "previous")]
18658    Previous,
18659    #[serde(rename = "toggle")]
18660    Toggle,
18661}
18662#[cfg_attr(feature = "debug", derive(Debug))]
18663#[cfg_attr(feature = "clone", derive(Clone))]
18664#[derive(Deserialize, PartialEq)]
18665pub enum Zigbee5309230p6Poweronbehavior {
18666    #[serde(rename = "off")]
18667    Off,
18668    #[serde(rename = "on")]
18669    On,
18670    #[serde(rename = "previous")]
18671    Previous,
18672    #[serde(rename = "toggle")]
18673    Toggle,
18674}
18675#[cfg_attr(feature = "debug", derive(Debug))]
18676#[cfg_attr(feature = "clone", derive(Clone))]
18677#[derive(Deserialize, PartialEq)]
18678pub enum Zigbee5309331p6Poweronbehavior {
18679    #[serde(rename = "off")]
18680    Off,
18681    #[serde(rename = "on")]
18682    On,
18683    #[serde(rename = "previous")]
18684    Previous,
18685    #[serde(rename = "toggle")]
18686    Toggle,
18687}
18688#[cfg_attr(feature = "debug", derive(Debug))]
18689#[cfg_attr(feature = "clone", derive(Clone))]
18690#[derive(Deserialize, PartialEq)]
18691pub enum Zigbee548727Poweronbehavior {
18692    #[serde(rename = "off")]
18693    Off,
18694    #[serde(rename = "on")]
18695    On,
18696    #[serde(rename = "previous")]
18697    Previous,
18698    #[serde(rename = "toggle")]
18699    Toggle,
18700}
18701#[cfg_attr(feature = "debug", derive(Debug))]
18702#[cfg_attr(feature = "clone", derive(Clone))]
18703#[derive(Deserialize, PartialEq)]
18704pub enum Zigbee5633030p6Poweronbehavior {
18705    #[serde(rename = "off")]
18706    Off,
18707    #[serde(rename = "on")]
18708    On,
18709    #[serde(rename = "previous")]
18710    Previous,
18711    #[serde(rename = "toggle")]
18712    Toggle,
18713}
18714#[cfg_attr(feature = "debug", derive(Debug))]
18715#[cfg_attr(feature = "clone", derive(Clone))]
18716#[derive(Deserialize, PartialEq)]
18717pub enum Zigbee5633031p9Poweronbehavior {
18718    #[serde(rename = "off")]
18719    Off,
18720    #[serde(rename = "on")]
18721    On,
18722    #[serde(rename = "previous")]
18723    Previous,
18724    #[serde(rename = "toggle")]
18725    Toggle,
18726}
18727#[cfg_attr(feature = "debug", derive(Debug))]
18728#[cfg_attr(feature = "clone", derive(Clone))]
18729#[derive(Deserialize, PartialEq)]
18730pub enum Zigbee578526Poweronbehavior {
18731    #[serde(rename = "off")]
18732    Off,
18733    #[serde(rename = "on")]
18734    On,
18735    #[serde(rename = "previous")]
18736    Previous,
18737    #[serde(rename = "toggle")]
18738    Toggle,
18739}
18740#[cfg_attr(feature = "debug", derive(Debug))]
18741#[cfg_attr(feature = "clone", derive(Clone))]
18742#[derive(Deserialize, PartialEq)]
18743pub enum Zigbee579573Poweronbehavior {
18744    #[serde(rename = "off")]
18745    Off,
18746    #[serde(rename = "on")]
18747    On,
18748    #[serde(rename = "previous")]
18749    Previous,
18750    #[serde(rename = "toggle")]
18751    Toggle,
18752}
18753#[cfg_attr(feature = "debug", derive(Debug))]
18754#[cfg_attr(feature = "clone", derive(Clone))]
18755#[derive(Deserialize, PartialEq)]
18756pub enum Zigbee5900131c5Poweronbehavior {
18757    #[serde(rename = "off")]
18758    Off,
18759    #[serde(rename = "on")]
18760    On,
18761    #[serde(rename = "previous")]
18762    Previous,
18763    #[serde(rename = "toggle")]
18764    Toggle,
18765}
18766#[cfg_attr(feature = "debug", derive(Debug))]
18767#[cfg_attr(feature = "clone", derive(Clone))]
18768#[derive(Deserialize, PartialEq)]
18769pub enum Zigbee5995111u5Poweronbehavior {
18770    #[serde(rename = "off")]
18771    Off,
18772    #[serde(rename = "on")]
18773    On,
18774    #[serde(rename = "previous")]
18775    Previous,
18776    #[serde(rename = "toggle")]
18777    Toggle,
18778}
18779#[cfg_attr(feature = "debug", derive(Debug))]
18780#[cfg_attr(feature = "clone", derive(Clone))]
18781#[derive(Deserialize, PartialEq)]
18782pub enum Zigbee5996311u5Poweronbehavior {
18783    #[serde(rename = "off")]
18784    Off,
18785    #[serde(rename = "on")]
18786    On,
18787    #[serde(rename = "previous")]
18788    Previous,
18789    #[serde(rename = "toggle")]
18790    Toggle,
18791}
18792#[cfg_attr(feature = "debug", derive(Debug))]
18793#[cfg_attr(feature = "clone", derive(Clone))]
18794#[derive(Deserialize, PartialEq)]
18795pub enum Zigbee5996411u5Poweronbehavior {
18796    #[serde(rename = "off")]
18797    Off,
18798    #[serde(rename = "on")]
18799    On,
18800    #[serde(rename = "previous")]
18801    Previous,
18802    #[serde(rename = "toggle")]
18803    Toggle,
18804}
18805#[cfg_attr(feature = "debug", derive(Debug))]
18806#[cfg_attr(feature = "clone", derive(Clone))]
18807#[derive(Deserialize, PartialEq)]
18808pub enum Zigbee5996511u5Poweronbehavior {
18809    #[serde(rename = "off")]
18810    Off,
18811    #[serde(rename = "on")]
18812    On,
18813    #[serde(rename = "previous")]
18814    Previous,
18815    #[serde(rename = "toggle")]
18816    Toggle,
18817}
18818#[cfg_attr(feature = "debug", derive(Debug))]
18819#[cfg_attr(feature = "clone", derive(Clone))]
18820#[derive(Deserialize, PartialEq)]
18821pub enum Zigbee5996611u5Poweronbehavior {
18822    #[serde(rename = "off")]
18823    Off,
18824    #[serde(rename = "on")]
18825    On,
18826    #[serde(rename = "previous")]
18827    Previous,
18828    #[serde(rename = "toggle")]
18829    Toggle,
18830}
18831#[cfg_attr(feature = "debug", derive(Debug))]
18832#[cfg_attr(feature = "clone", derive(Clone))]
18833#[derive(Deserialize, PartialEq)]
18834pub enum Zigbee6109231c5Poweronbehavior {
18835    #[serde(rename = "off")]
18836    Off,
18837    #[serde(rename = "on")]
18838    On,
18839    #[serde(rename = "previous")]
18840    Previous,
18841    #[serde(rename = "toggle")]
18842    Toggle,
18843}
18844#[cfg_attr(feature = "debug", derive(Debug))]
18845#[cfg_attr(feature = "clone", derive(Clone))]
18846#[derive(Deserialize, PartialEq)]
18847pub enum Zigbee6109331c5Poweronbehavior {
18848    #[serde(rename = "off")]
18849    Off,
18850    #[serde(rename = "on")]
18851    On,
18852    #[serde(rename = "previous")]
18853    Previous,
18854    #[serde(rename = "toggle")]
18855    Toggle,
18856}
18857#[cfg_attr(feature = "debug", derive(Debug))]
18858#[cfg_attr(feature = "clone", derive(Clone))]
18859#[derive(Deserialize, PartialEq)]
18860pub enum Zigbee7099860phPoweronbehavior {
18861    #[serde(rename = "off")]
18862    Off,
18863    #[serde(rename = "on")]
18864    On,
18865    #[serde(rename = "previous")]
18866    Previous,
18867    #[serde(rename = "toggle")]
18868    Toggle,
18869}
18870#[cfg_attr(feature = "debug", derive(Debug))]
18871#[cfg_attr(feature = "clone", derive(Clone))]
18872#[derive(Deserialize, PartialEq)]
18873pub enum Zigbee7099930phPoweronbehavior {
18874    #[serde(rename = "off")]
18875    Off,
18876    #[serde(rename = "on")]
18877    On,
18878    #[serde(rename = "previous")]
18879    Previous,
18880    #[serde(rename = "toggle")]
18881    Toggle,
18882}
18883#[cfg_attr(feature = "debug", derive(Debug))]
18884#[cfg_attr(feature = "clone", derive(Clone))]
18885#[derive(Deserialize, PartialEq)]
18886pub enum Zigbee7121131pu7120031ph7120131ph7120231puPoweronbehavior {
18887    #[serde(rename = "off")]
18888    Off,
18889    #[serde(rename = "on")]
18890    On,
18891    #[serde(rename = "previous")]
18892    Previous,
18893    #[serde(rename = "toggle")]
18894    Toggle,
18895}
18896#[cfg_attr(feature = "debug", derive(Debug))]
18897#[cfg_attr(feature = "clone", derive(Clone))]
18898#[derive(Deserialize, PartialEq)]
18899pub enum Zigbee7146060phPoweronbehavior {
18900    #[serde(rename = "off")]
18901    Off,
18902    #[serde(rename = "on")]
18903    On,
18904    #[serde(rename = "previous")]
18905    Previous,
18906    #[serde(rename = "toggle")]
18907    Toggle,
18908}
18909#[cfg_attr(feature = "debug", derive(Debug))]
18910#[cfg_attr(feature = "clone", derive(Clone))]
18911#[derive(Deserialize, PartialEq)]
18912pub enum Zigbee7199960phPoweronbehavior {
18913    #[serde(rename = "off")]
18914    Off,
18915    #[serde(rename = "on")]
18916    On,
18917    #[serde(rename = "previous")]
18918    Previous,
18919    #[serde(rename = "toggle")]
18920    Toggle,
18921}
18922#[cfg_attr(feature = "debug", derive(Debug))]
18923#[cfg_attr(feature = "clone", derive(Clone))]
18924#[derive(Deserialize, PartialEq)]
18925pub enum Zigbee7299355phPoweronbehavior {
18926    #[serde(rename = "off")]
18927    Off,
18928    #[serde(rename = "on")]
18929    On,
18930    #[serde(rename = "previous")]
18931    Previous,
18932    #[serde(rename = "toggle")]
18933    Toggle,
18934}
18935#[cfg_attr(feature = "debug", derive(Debug))]
18936#[cfg_attr(feature = "clone", derive(Clone))]
18937#[derive(Deserialize, PartialEq)]
18938pub enum Zigbee7299760phPoweronbehavior {
18939    #[serde(rename = "off")]
18940    Off,
18941    #[serde(rename = "on")]
18942    On,
18943    #[serde(rename = "previous")]
18944    Previous,
18945    #[serde(rename = "toggle")]
18946    Toggle,
18947}
18948#[cfg_attr(feature = "debug", derive(Debug))]
18949#[cfg_attr(feature = "clone", derive(Clone))]
18950#[derive(Deserialize, PartialEq)]
18951pub enum Zigbee7531609Poweronbehavior {
18952    #[serde(rename = "off")]
18953    Off,
18954    #[serde(rename = "on")]
18955    On,
18956    #[serde(rename = "previous")]
18957    Previous,
18958    #[serde(rename = "toggle")]
18959    Toggle,
18960}
18961#[cfg_attr(feature = "debug", derive(Debug))]
18962#[cfg_attr(feature = "clone", derive(Clone))]
18963#[derive(Deserialize, PartialEq)]
18964pub enum Zigbee7602031k6Poweronbehavior {
18965    #[serde(rename = "off")]
18966    Off,
18967    #[serde(rename = "on")]
18968    On,
18969    #[serde(rename = "previous")]
18970    Previous,
18971    #[serde(rename = "toggle")]
18972    Toggle,
18973}
18974#[cfg_attr(feature = "debug", derive(Debug))]
18975#[cfg_attr(feature = "clone", derive(Clone))]
18976#[derive(Deserialize, PartialEq)]
18977pub enum Zigbee7602031n6Poweronbehavior {
18978    #[serde(rename = "off")]
18979    Off,
18980    #[serde(rename = "on")]
18981    On,
18982    #[serde(rename = "previous")]
18983    Previous,
18984    #[serde(rename = "toggle")]
18985    Toggle,
18986}
18987#[cfg_attr(feature = "debug", derive(Debug))]
18988#[cfg_attr(feature = "clone", derive(Clone))]
18989#[derive(Deserialize, PartialEq)]
18990pub enum Zigbee7602031p7Poweronbehavior {
18991    #[serde(rename = "off")]
18992    Off,
18993    #[serde(rename = "on")]
18994    On,
18995    #[serde(rename = "previous")]
18996    Previous,
18997    #[serde(rename = "toggle")]
18998    Toggle,
18999}
19000#[cfg_attr(feature = "debug", derive(Debug))]
19001#[cfg_attr(feature = "clone", derive(Clone))]
19002#[derive(Deserialize, PartialEq)]
19003pub enum Zigbee800094Poweronbehavior {
19004    #[serde(rename = "off")]
19005    Off,
19006    #[serde(rename = "on")]
19007    On,
19008    #[serde(rename = "previous")]
19009    Previous,
19010    #[serde(rename = "toggle")]
19011    Toggle,
19012}
19013#[cfg_attr(feature = "debug", derive(Debug))]
19014#[cfg_attr(feature = "clone", derive(Clone))]
19015#[derive(Deserialize, PartialEq)]
19016pub enum Zigbee801480Poweronbehavior {
19017    #[serde(rename = "off")]
19018    Off,
19019    #[serde(rename = "on")]
19020    On,
19021    #[serde(rename = "previous")]
19022    Previous,
19023    #[serde(rename = "toggle")]
19024    Toggle,
19025}
19026#[cfg_attr(feature = "debug", derive(Debug))]
19027#[cfg_attr(feature = "clone", derive(Clone))]
19028#[derive(Deserialize, PartialEq)]
19029pub enum Zigbee8718696153055Poweronbehavior {
19030    #[serde(rename = "off")]
19031    Off,
19032    #[serde(rename = "on")]
19033    On,
19034    #[serde(rename = "previous")]
19035    Previous,
19036    #[serde(rename = "toggle")]
19037    Toggle,
19038}
19039#[cfg_attr(feature = "debug", derive(Debug))]
19040#[cfg_attr(feature = "clone", derive(Clone))]
19041#[derive(Deserialize, PartialEq)]
19042pub enum Zigbee8718696153062Poweronbehavior {
19043    #[serde(rename = "off")]
19044    Off,
19045    #[serde(rename = "on")]
19046    On,
19047    #[serde(rename = "previous")]
19048    Previous,
19049    #[serde(rename = "toggle")]
19050    Toggle,
19051}
19052#[cfg_attr(feature = "debug", derive(Debug))]
19053#[cfg_attr(feature = "clone", derive(Clone))]
19054#[derive(Deserialize, PartialEq)]
19055pub enum Zigbee8718696166079Poweronbehavior {
19056    #[serde(rename = "off")]
19057    Off,
19058    #[serde(rename = "on")]
19059    On,
19060    #[serde(rename = "previous")]
19061    Previous,
19062    #[serde(rename = "toggle")]
19063    Toggle,
19064}
19065#[cfg_attr(feature = "debug", derive(Debug))]
19066#[cfg_attr(feature = "clone", derive(Clone))]
19067#[derive(Deserialize, PartialEq)]
19068pub enum Zigbee8718696167991Poweronbehavior {
19069    #[serde(rename = "off")]
19070    Off,
19071    #[serde(rename = "on")]
19072    On,
19073    #[serde(rename = "previous")]
19074    Previous,
19075    #[serde(rename = "toggle")]
19076    Toggle,
19077}
19078#[cfg_attr(feature = "debug", derive(Debug))]
19079#[cfg_attr(feature = "clone", derive(Clone))]
19080#[derive(Deserialize, PartialEq)]
19081pub enum Zigbee8718696170557Poweronbehavior {
19082    #[serde(rename = "off")]
19083    Off,
19084    #[serde(rename = "on")]
19085    On,
19086    #[serde(rename = "previous")]
19087    Previous,
19088    #[serde(rename = "toggle")]
19089    Toggle,
19090}
19091#[cfg_attr(feature = "debug", derive(Debug))]
19092#[cfg_attr(feature = "clone", derive(Clone))]
19093#[derive(Deserialize, PartialEq)]
19094pub enum Zigbee8718696170625Poweronbehavior {
19095    #[serde(rename = "off")]
19096    Off,
19097    #[serde(rename = "on")]
19098    On,
19099    #[serde(rename = "previous")]
19100    Previous,
19101    #[serde(rename = "toggle")]
19102    Toggle,
19103}
19104#[cfg_attr(feature = "debug", derive(Debug))]
19105#[cfg_attr(feature = "clone", derive(Clone))]
19106#[derive(Deserialize, PartialEq)]
19107pub enum Zigbee8718696170656Poweronbehavior {
19108    #[serde(rename = "off")]
19109    Off,
19110    #[serde(rename = "on")]
19111    On,
19112    #[serde(rename = "previous")]
19113    Previous,
19114    #[serde(rename = "toggle")]
19115    Toggle,
19116}
19117#[cfg_attr(feature = "debug", derive(Debug))]
19118#[cfg_attr(feature = "clone", derive(Clone))]
19119#[derive(Deserialize, PartialEq)]
19120pub enum Zigbee8718696174548Poweronbehavior {
19121    #[serde(rename = "off")]
19122    Off,
19123    #[serde(rename = "on")]
19124    On,
19125    #[serde(rename = "previous")]
19126    Previous,
19127    #[serde(rename = "toggle")]
19128    Toggle,
19129}
19130#[cfg_attr(feature = "debug", derive(Debug))]
19131#[cfg_attr(feature = "clone", derive(Clone))]
19132#[derive(Deserialize, PartialEq)]
19133pub enum Zigbee8718696175798Poweronbehavior {
19134    #[serde(rename = "off")]
19135    Off,
19136    #[serde(rename = "on")]
19137    On,
19138    #[serde(rename = "previous")]
19139    Previous,
19140    #[serde(rename = "toggle")]
19141    Toggle,
19142}
19143#[cfg_attr(feature = "debug", derive(Debug))]
19144#[cfg_attr(feature = "clone", derive(Clone))]
19145#[derive(Deserialize, PartialEq)]
19146pub enum Zigbee8718696449691Poweronbehavior {
19147    #[serde(rename = "off")]
19148    Off,
19149    #[serde(rename = "on")]
19150    On,
19151    #[serde(rename = "previous")]
19152    Previous,
19153    #[serde(rename = "toggle")]
19154    Toggle,
19155}
19156#[cfg_attr(feature = "debug", derive(Debug))]
19157#[cfg_attr(feature = "clone", derive(Clone))]
19158#[derive(Deserialize, PartialEq)]
19159pub enum Zigbee8718696485880Poweronbehavior {
19160    #[serde(rename = "off")]
19161    Off,
19162    #[serde(rename = "on")]
19163    On,
19164    #[serde(rename = "previous")]
19165    Previous,
19166    #[serde(rename = "toggle")]
19167    Toggle,
19168}
19169#[cfg_attr(feature = "debug", derive(Debug))]
19170#[cfg_attr(feature = "clone", derive(Clone))]
19171#[derive(Deserialize, PartialEq)]
19172pub enum Zigbee8718696548738Poweronbehavior {
19173    #[serde(rename = "off")]
19174    Off,
19175    #[serde(rename = "on")]
19176    On,
19177    #[serde(rename = "previous")]
19178    Previous,
19179    #[serde(rename = "toggle")]
19180    Toggle,
19181}
19182#[cfg_attr(feature = "debug", derive(Debug))]
19183#[cfg_attr(feature = "clone", derive(Clone))]
19184#[derive(Deserialize, PartialEq)]
19185pub enum Zigbee8718696598283Poweronbehavior {
19186    #[serde(rename = "off")]
19187    Off,
19188    #[serde(rename = "on")]
19189    On,
19190    #[serde(rename = "previous")]
19191    Previous,
19192    #[serde(rename = "toggle")]
19193    Toggle,
19194}
19195#[cfg_attr(feature = "debug", derive(Debug))]
19196#[cfg_attr(feature = "clone", derive(Clone))]
19197#[derive(Deserialize, PartialEq)]
19198pub enum Zigbee8718696695203Poweronbehavior {
19199    #[serde(rename = "off")]
19200    Off,
19201    #[serde(rename = "on")]
19202    On,
19203    #[serde(rename = "previous")]
19204    Previous,
19205    #[serde(rename = "toggle")]
19206    Toggle,
19207}
19208#[cfg_attr(feature = "debug", derive(Debug))]
19209#[cfg_attr(feature = "clone", derive(Clone))]
19210#[derive(Deserialize, PartialEq)]
19211pub enum Zigbee8718699673147Poweronbehavior {
19212    #[serde(rename = "off")]
19213    Off,
19214    #[serde(rename = "on")]
19215    On,
19216    #[serde(rename = "previous")]
19217    Previous,
19218    #[serde(rename = "toggle")]
19219    Toggle,
19220}
19221#[cfg_attr(feature = "debug", derive(Debug))]
19222#[cfg_attr(feature = "clone", derive(Clone))]
19223#[derive(Deserialize, PartialEq)]
19224pub enum Zigbee8718699688820Poweronbehavior {
19225    #[serde(rename = "off")]
19226    Off,
19227    #[serde(rename = "on")]
19228    On,
19229    #[serde(rename = "previous")]
19230    Previous,
19231    #[serde(rename = "toggle")]
19232    Toggle,
19233}
19234#[cfg_attr(feature = "debug", derive(Debug))]
19235#[cfg_attr(feature = "clone", derive(Clone))]
19236#[derive(Deserialize, PartialEq)]
19237pub enum Zigbee8718699688882Poweronbehavior {
19238    #[serde(rename = "off")]
19239    Off,
19240    #[serde(rename = "on")]
19241    On,
19242    #[serde(rename = "previous")]
19243    Previous,
19244    #[serde(rename = "toggle")]
19245    Toggle,
19246}
19247#[cfg_attr(feature = "debug", derive(Debug))]
19248#[cfg_attr(feature = "clone", derive(Clone))]
19249#[derive(Deserialize, PartialEq)]
19250pub enum Zigbee8718699693985Action {
19251    #[serde(rename = "hold")]
19252    Hold,
19253    #[serde(rename = "off")]
19254    Off,
19255    #[serde(rename = "on")]
19256    On,
19257    #[serde(rename = "press")]
19258    Press,
19259    #[serde(rename = "release")]
19260    Release,
19261    #[serde(rename = "skip_backward")]
19262    SkipBackward,
19263    #[serde(rename = "skip_forward")]
19264    SkipForward,
19265}
19266#[cfg_attr(feature = "debug", derive(Debug))]
19267#[cfg_attr(feature = "clone", derive(Clone))]
19268#[derive(Deserialize, PartialEq)]
19269pub enum Zigbee8718699703424Poweronbehavior {
19270    #[serde(rename = "off")]
19271    Off,
19272    #[serde(rename = "on")]
19273    On,
19274    #[serde(rename = "previous")]
19275    Previous,
19276    #[serde(rename = "toggle")]
19277    Toggle,
19278}
19279#[cfg_attr(feature = "debug", derive(Debug))]
19280#[cfg_attr(feature = "clone", derive(Clone))]
19281#[derive(Deserialize, PartialEq)]
19282pub enum Zigbee8719514279131Poweronbehavior {
19283    #[serde(rename = "off")]
19284    Off,
19285    #[serde(rename = "on")]
19286    On,
19287    #[serde(rename = "previous")]
19288    Previous,
19289    #[serde(rename = "toggle")]
19290    Toggle,
19291}
19292#[cfg_attr(feature = "debug", derive(Debug))]
19293#[cfg_attr(feature = "clone", derive(Clone))]
19294#[derive(Deserialize, PartialEq)]
19295pub enum Zigbee8719514279155Poweronbehavior {
19296    #[serde(rename = "off")]
19297    Off,
19298    #[serde(rename = "on")]
19299    On,
19300    #[serde(rename = "previous")]
19301    Previous,
19302    #[serde(rename = "toggle")]
19303    Toggle,
19304}
19305#[cfg_attr(feature = "debug", derive(Debug))]
19306#[cfg_attr(feature = "clone", derive(Clone))]
19307#[derive(Deserialize, PartialEq)]
19308pub enum Zigbee8719514279193Poweronbehavior {
19309    #[serde(rename = "off")]
19310    Off,
19311    #[serde(rename = "on")]
19312    On,
19313    #[serde(rename = "previous")]
19314    Previous,
19315    #[serde(rename = "toggle")]
19316    Toggle,
19317}
19318#[cfg_attr(feature = "debug", derive(Debug))]
19319#[cfg_attr(feature = "clone", derive(Clone))]
19320#[derive(Deserialize, PartialEq)]
19321pub enum Zigbee8719514301443Poweronbehavior {
19322    #[serde(rename = "off")]
19323    Off,
19324    #[serde(rename = "on")]
19325    On,
19326    #[serde(rename = "previous")]
19327    Previous,
19328    #[serde(rename = "toggle")]
19329    Toggle,
19330}
19331#[cfg_attr(feature = "debug", derive(Debug))]
19332#[cfg_attr(feature = "clone", derive(Clone))]
19333#[derive(Deserialize, PartialEq)]
19334pub enum Zigbee8719514301481Poweronbehavior {
19335    #[serde(rename = "off")]
19336    Off,
19337    #[serde(rename = "on")]
19338    On,
19339    #[serde(rename = "previous")]
19340    Previous,
19341    #[serde(rename = "toggle")]
19342    Toggle,
19343}
19344#[cfg_attr(feature = "debug", derive(Debug))]
19345#[cfg_attr(feature = "clone", derive(Clone))]
19346#[derive(Deserialize, PartialEq)]
19347pub enum Zigbee8719514301528Poweronbehavior {
19348    #[serde(rename = "off")]
19349    Off,
19350    #[serde(rename = "on")]
19351    On,
19352    #[serde(rename = "previous")]
19353    Previous,
19354    #[serde(rename = "toggle")]
19355    Toggle,
19356}
19357#[cfg_attr(feature = "debug", derive(Debug))]
19358#[cfg_attr(feature = "clone", derive(Clone))]
19359#[derive(Deserialize, PartialEq)]
19360pub enum Zigbee8719514301542Poweronbehavior {
19361    #[serde(rename = "off")]
19362    Off,
19363    #[serde(rename = "on")]
19364    On,
19365    #[serde(rename = "previous")]
19366    Previous,
19367    #[serde(rename = "toggle")]
19368    Toggle,
19369}
19370#[cfg_attr(feature = "debug", derive(Debug))]
19371#[cfg_attr(feature = "clone", derive(Clone))]
19372#[derive(Deserialize, PartialEq)]
19373pub enum Zigbee8719514302235Poweronbehavior {
19374    #[serde(rename = "off")]
19375    Off,
19376    #[serde(rename = "on")]
19377    On,
19378    #[serde(rename = "previous")]
19379    Previous,
19380    #[serde(rename = "toggle")]
19381    Toggle,
19382}
19383#[cfg_attr(feature = "debug", derive(Debug))]
19384#[cfg_attr(feature = "clone", derive(Clone))]
19385#[derive(Deserialize, PartialEq)]
19386pub enum Zigbee8719514328242Poweronbehavior {
19387    #[serde(rename = "off")]
19388    Off,
19389    #[serde(rename = "on")]
19390    On,
19391    #[serde(rename = "previous")]
19392    Previous,
19393    #[serde(rename = "toggle")]
19394    Toggle,
19395}
19396#[cfg_attr(feature = "debug", derive(Debug))]
19397#[cfg_attr(feature = "clone", derive(Clone))]
19398#[derive(Deserialize, PartialEq)]
19399pub enum Zigbee8719514338142Poweronbehavior {
19400    #[serde(rename = "off")]
19401    Off,
19402    #[serde(rename = "on")]
19403    On,
19404    #[serde(rename = "previous")]
19405    Previous,
19406    #[serde(rename = "toggle")]
19407    Toggle,
19408}
19409#[cfg_attr(feature = "debug", derive(Debug))]
19410#[cfg_attr(feature = "clone", derive(Clone))]
19411#[derive(Deserialize, PartialEq)]
19412pub enum Zigbee8719514338524Poweronbehavior {
19413    #[serde(rename = "off")]
19414    Off,
19415    #[serde(rename = "on")]
19416    On,
19417    #[serde(rename = "previous")]
19418    Previous,
19419    #[serde(rename = "toggle")]
19420    Toggle,
19421}
19422#[cfg_attr(feature = "debug", derive(Debug))]
19423#[cfg_attr(feature = "clone", derive(Clone))]
19424#[derive(Deserialize, PartialEq)]
19425pub enum Zigbee871951433908Poweronbehavior {
19426    #[serde(rename = "off")]
19427    Off,
19428    #[serde(rename = "on")]
19429    On,
19430    #[serde(rename = "previous")]
19431    Previous,
19432    #[serde(rename = "toggle")]
19433    Toggle,
19434}
19435#[cfg_attr(feature = "debug", derive(Debug))]
19436#[cfg_attr(feature = "clone", derive(Clone))]
19437#[derive(Deserialize, PartialEq)]
19438pub enum Zigbee8719514339125Poweronbehavior {
19439    #[serde(rename = "off")]
19440    Off,
19441    #[serde(rename = "on")]
19442    On,
19443    #[serde(rename = "previous")]
19444    Previous,
19445    #[serde(rename = "toggle")]
19446    Toggle,
19447}
19448#[cfg_attr(feature = "debug", derive(Debug))]
19449#[cfg_attr(feature = "clone", derive(Clone))]
19450#[derive(Deserialize, PartialEq)]
19451pub enum Zigbee8719514339163Poweronbehavior {
19452    #[serde(rename = "off")]
19453    Off,
19454    #[serde(rename = "on")]
19455    On,
19456    #[serde(rename = "previous")]
19457    Previous,
19458    #[serde(rename = "toggle")]
19459    Toggle,
19460}
19461#[cfg_attr(feature = "debug", derive(Debug))]
19462#[cfg_attr(feature = "clone", derive(Clone))]
19463#[derive(Deserialize, PartialEq)]
19464pub enum Zigbee8719514344723Poweronbehavior {
19465    #[serde(rename = "off")]
19466    Off,
19467    #[serde(rename = "on")]
19468    On,
19469    #[serde(rename = "previous")]
19470    Previous,
19471    #[serde(rename = "toggle")]
19472    Toggle,
19473}
19474#[cfg_attr(feature = "debug", derive(Debug))]
19475#[cfg_attr(feature = "clone", derive(Clone))]
19476#[derive(Deserialize, PartialEq)]
19477pub enum Zigbee8719514382350Poweronbehavior {
19478    #[serde(rename = "off")]
19479    Off,
19480    #[serde(rename = "on")]
19481    On,
19482    #[serde(rename = "previous")]
19483    Previous,
19484    #[serde(rename = "toggle")]
19485    Toggle,
19486}
19487#[cfg_attr(feature = "debug", derive(Debug))]
19488#[cfg_attr(feature = "clone", derive(Clone))]
19489#[derive(Deserialize, PartialEq)]
19490pub enum Zigbee8719514392830Poweronbehavior {
19491    #[serde(rename = "off")]
19492    Off,
19493    #[serde(rename = "on")]
19494    On,
19495    #[serde(rename = "previous")]
19496    Previous,
19497    #[serde(rename = "toggle")]
19498    Toggle,
19499}
19500#[cfg_attr(feature = "debug", derive(Debug))]
19501#[cfg_attr(feature = "clone", derive(Clone))]
19502#[derive(Deserialize, PartialEq)]
19503pub enum Zigbee87195144409378719514440999Action {
19504    #[serde(rename = "button_1_hold")]
19505    Button1Hold,
19506    #[serde(rename = "button_1_hold_release")]
19507    Button1HoldRelease,
19508    #[serde(rename = "button_1_press")]
19509    Button1Press,
19510    #[serde(rename = "button_1_press_release")]
19511    Button1PressRelease,
19512    #[serde(rename = "button_2_hold")]
19513    Button2Hold,
19514    #[serde(rename = "button_2_hold_release")]
19515    Button2HoldRelease,
19516    #[serde(rename = "button_2_press")]
19517    Button2Press,
19518    #[serde(rename = "button_2_press_release")]
19519    Button2PressRelease,
19520    #[serde(rename = "button_3_hold")]
19521    Button3Hold,
19522    #[serde(rename = "button_3_hold_release")]
19523    Button3HoldRelease,
19524    #[serde(rename = "button_3_press")]
19525    Button3Press,
19526    #[serde(rename = "button_3_press_release")]
19527    Button3PressRelease,
19528    #[serde(rename = "button_4_hold")]
19529    Button4Hold,
19530    #[serde(rename = "button_4_hold_release")]
19531    Button4HoldRelease,
19532    #[serde(rename = "button_4_press")]
19533    Button4Press,
19534    #[serde(rename = "button_4_press_release")]
19535    Button4PressRelease,
19536    #[serde(rename = "dial_rotate_left_fast")]
19537    DialRotateLeftFast,
19538    #[serde(rename = "dial_rotate_left_slow")]
19539    DialRotateLeftSlow,
19540    #[serde(rename = "dial_rotate_left_step")]
19541    DialRotateLeftStep,
19542    #[serde(rename = "dial_rotate_right_fast")]
19543    DialRotateRightFast,
19544    #[serde(rename = "dial_rotate_right_slow")]
19545    DialRotateRightSlow,
19546    #[serde(rename = "dial_rotate_right_step")]
19547    DialRotateRightStep,
19548}
19549#[cfg_attr(feature = "debug", derive(Debug))]
19550#[cfg_attr(feature = "clone", derive(Clone))]
19551#[derive(Deserialize, PartialEq)]
19552pub enum Zigbee915005106701Poweronbehavior {
19553    #[serde(rename = "off")]
19554    Off,
19555    #[serde(rename = "on")]
19556    On,
19557    #[serde(rename = "previous")]
19558    Previous,
19559    #[serde(rename = "toggle")]
19560    Toggle,
19561}
19562#[cfg_attr(feature = "debug", derive(Debug))]
19563#[cfg_attr(feature = "clone", derive(Clone))]
19564#[derive(Deserialize, PartialEq)]
19565pub enum Zigbee915005587401Poweronbehavior {
19566    #[serde(rename = "off")]
19567    Off,
19568    #[serde(rename = "on")]
19569    On,
19570    #[serde(rename = "previous")]
19571    Previous,
19572    #[serde(rename = "toggle")]
19573    Toggle,
19574}
19575#[cfg_attr(feature = "debug", derive(Debug))]
19576#[cfg_attr(feature = "clone", derive(Clone))]
19577#[derive(Deserialize, PartialEq)]
19578pub enum Zigbee915005733701Poweronbehavior {
19579    #[serde(rename = "off")]
19580    Off,
19581    #[serde(rename = "on")]
19582    On,
19583    #[serde(rename = "previous")]
19584    Previous,
19585    #[serde(rename = "toggle")]
19586    Toggle,
19587}
19588#[cfg_attr(feature = "debug", derive(Debug))]
19589#[cfg_attr(feature = "clone", derive(Clone))]
19590#[derive(Deserialize, PartialEq)]
19591pub enum Zigbee915005916901Poweronbehavior {
19592    #[serde(rename = "off")]
19593    Off,
19594    #[serde(rename = "on")]
19595    On,
19596    #[serde(rename = "previous")]
19597    Previous,
19598    #[serde(rename = "toggle")]
19599    Toggle,
19600}
19601#[cfg_attr(feature = "debug", derive(Debug))]
19602#[cfg_attr(feature = "clone", derive(Clone))]
19603#[derive(Deserialize, PartialEq)]
19604pub enum Zigbee915005986901Poweronbehavior {
19605    #[serde(rename = "off")]
19606    Off,
19607    #[serde(rename = "on")]
19608    On,
19609    #[serde(rename = "previous")]
19610    Previous,
19611    #[serde(rename = "toggle")]
19612    Toggle,
19613}
19614#[cfg_attr(feature = "debug", derive(Debug))]
19615#[cfg_attr(feature = "clone", derive(Clone))]
19616#[derive(Deserialize, PartialEq)]
19617pub enum Zigbee915005987001Poweronbehavior {
19618    #[serde(rename = "off")]
19619    Off,
19620    #[serde(rename = "on")]
19621    On,
19622    #[serde(rename = "previous")]
19623    Previous,
19624    #[serde(rename = "toggle")]
19625    Toggle,
19626}
19627#[cfg_attr(feature = "debug", derive(Debug))]
19628#[cfg_attr(feature = "clone", derive(Clone))]
19629#[derive(Deserialize, PartialEq)]
19630pub enum Zigbee915005987101Poweronbehavior {
19631    #[serde(rename = "off")]
19632    Off,
19633    #[serde(rename = "on")]
19634    On,
19635    #[serde(rename = "previous")]
19636    Previous,
19637    #[serde(rename = "toggle")]
19638    Toggle,
19639}
19640#[cfg_attr(feature = "debug", derive(Debug))]
19641#[cfg_attr(feature = "clone", derive(Clone))]
19642#[derive(Deserialize, PartialEq)]
19643pub enum Zigbee915005987301Poweronbehavior {
19644    #[serde(rename = "off")]
19645    Off,
19646    #[serde(rename = "on")]
19647    On,
19648    #[serde(rename = "previous")]
19649    Previous,
19650    #[serde(rename = "toggle")]
19651    Toggle,
19652}
19653#[cfg_attr(feature = "debug", derive(Debug))]
19654#[cfg_attr(feature = "clone", derive(Clone))]
19655#[derive(Deserialize, PartialEq)]
19656pub enum Zigbee915005987401Poweronbehavior {
19657    #[serde(rename = "off")]
19658    Off,
19659    #[serde(rename = "on")]
19660    On,
19661    #[serde(rename = "previous")]
19662    Previous,
19663    #[serde(rename = "toggle")]
19664    Toggle,
19665}
19666#[cfg_attr(feature = "debug", derive(Debug))]
19667#[cfg_attr(feature = "clone", derive(Clone))]
19668#[derive(Deserialize, PartialEq)]
19669pub enum Zigbee915005987501Poweronbehavior {
19670    #[serde(rename = "off")]
19671    Off,
19672    #[serde(rename = "on")]
19673    On,
19674    #[serde(rename = "previous")]
19675    Previous,
19676    #[serde(rename = "toggle")]
19677    Toggle,
19678}
19679#[cfg_attr(feature = "debug", derive(Debug))]
19680#[cfg_attr(feature = "clone", derive(Clone))]
19681#[derive(Deserialize, PartialEq)]
19682pub enum Zigbee915005987601Poweronbehavior {
19683    #[serde(rename = "off")]
19684    Off,
19685    #[serde(rename = "on")]
19686    On,
19687    #[serde(rename = "previous")]
19688    Previous,
19689    #[serde(rename = "toggle")]
19690    Toggle,
19691}
19692#[cfg_attr(feature = "debug", derive(Debug))]
19693#[cfg_attr(feature = "clone", derive(Clone))]
19694#[derive(Deserialize, PartialEq)]
19695pub enum Zigbee915005987701Poweronbehavior {
19696    #[serde(rename = "off")]
19697    Off,
19698    #[serde(rename = "on")]
19699    On,
19700    #[serde(rename = "previous")]
19701    Previous,
19702    #[serde(rename = "toggle")]
19703    Toggle,
19704}
19705#[cfg_attr(feature = "debug", derive(Debug))]
19706#[cfg_attr(feature = "clone", derive(Clone))]
19707#[derive(Deserialize, PartialEq)]
19708pub enum Zigbee915005987901Poweronbehavior {
19709    #[serde(rename = "off")]
19710    Off,
19711    #[serde(rename = "on")]
19712    On,
19713    #[serde(rename = "previous")]
19714    Previous,
19715    #[serde(rename = "toggle")]
19716    Toggle,
19717}
19718#[cfg_attr(feature = "debug", derive(Debug))]
19719#[cfg_attr(feature = "clone", derive(Clone))]
19720#[derive(Deserialize, PartialEq)]
19721pub enum Zigbee915005988101Poweronbehavior {
19722    #[serde(rename = "off")]
19723    Off,
19724    #[serde(rename = "on")]
19725    On,
19726    #[serde(rename = "previous")]
19727    Previous,
19728    #[serde(rename = "toggle")]
19729    Toggle,
19730}
19731#[cfg_attr(feature = "debug", derive(Debug))]
19732#[cfg_attr(feature = "clone", derive(Clone))]
19733#[derive(Deserialize, PartialEq)]
19734pub enum Zigbee915005988401Poweronbehavior {
19735    #[serde(rename = "off")]
19736    Off,
19737    #[serde(rename = "on")]
19738    On,
19739    #[serde(rename = "previous")]
19740    Previous,
19741    #[serde(rename = "toggle")]
19742    Toggle,
19743}
19744#[cfg_attr(feature = "debug", derive(Debug))]
19745#[cfg_attr(feature = "clone", derive(Clone))]
19746#[derive(Deserialize, PartialEq)]
19747pub enum Zigbee915005988501Poweronbehavior {
19748    #[serde(rename = "off")]
19749    Off,
19750    #[serde(rename = "on")]
19751    On,
19752    #[serde(rename = "previous")]
19753    Previous,
19754    #[serde(rename = "toggle")]
19755    Toggle,
19756}
19757#[cfg_attr(feature = "debug", derive(Debug))]
19758#[cfg_attr(feature = "clone", derive(Clone))]
19759#[derive(Deserialize, PartialEq)]
19760pub enum Zigbee915005996401Poweronbehavior {
19761    #[serde(rename = "off")]
19762    Off,
19763    #[serde(rename = "on")]
19764    On,
19765    #[serde(rename = "previous")]
19766    Previous,
19767    #[serde(rename = "toggle")]
19768    Toggle,
19769}
19770#[cfg_attr(feature = "debug", derive(Debug))]
19771#[cfg_attr(feature = "clone", derive(Clone))]
19772#[derive(Deserialize, PartialEq)]
19773pub enum Zigbee915005996601Poweronbehavior {
19774    #[serde(rename = "off")]
19775    Off,
19776    #[serde(rename = "on")]
19777    On,
19778    #[serde(rename = "previous")]
19779    Previous,
19780    #[serde(rename = "toggle")]
19781    Toggle,
19782}
19783#[cfg_attr(feature = "debug", derive(Debug))]
19784#[cfg_attr(feature = "clone", derive(Clone))]
19785#[derive(Deserialize, PartialEq)]
19786pub enum Zigbee915005996701Poweronbehavior {
19787    #[serde(rename = "off")]
19788    Off,
19789    #[serde(rename = "on")]
19790    On,
19791    #[serde(rename = "previous")]
19792    Previous,
19793    #[serde(rename = "toggle")]
19794    Toggle,
19795}
19796#[cfg_attr(feature = "debug", derive(Debug))]
19797#[cfg_attr(feature = "clone", derive(Clone))]
19798#[derive(Deserialize, PartialEq)]
19799pub enum Zigbee915005996901Poweronbehavior {
19800    #[serde(rename = "off")]
19801    Off,
19802    #[serde(rename = "on")]
19803    On,
19804    #[serde(rename = "previous")]
19805    Previous,
19806    #[serde(rename = "toggle")]
19807    Toggle,
19808}
19809#[cfg_attr(feature = "debug", derive(Debug))]
19810#[cfg_attr(feature = "clone", derive(Clone))]
19811#[derive(Deserialize, PartialEq)]
19812pub enum Zigbee915005997001Poweronbehavior {
19813    #[serde(rename = "off")]
19814    Off,
19815    #[serde(rename = "on")]
19816    On,
19817    #[serde(rename = "previous")]
19818    Previous,
19819    #[serde(rename = "toggle")]
19820    Toggle,
19821}
19822#[cfg_attr(feature = "debug", derive(Debug))]
19823#[cfg_attr(feature = "clone", derive(Clone))]
19824#[derive(Deserialize, PartialEq)]
19825pub enum Zigbee915005997301Poweronbehavior {
19826    #[serde(rename = "off")]
19827    Off,
19828    #[serde(rename = "on")]
19829    On,
19830    #[serde(rename = "previous")]
19831    Previous,
19832    #[serde(rename = "toggle")]
19833    Toggle,
19834}
19835#[cfg_attr(feature = "debug", derive(Debug))]
19836#[cfg_attr(feature = "clone", derive(Clone))]
19837#[derive(Deserialize, PartialEq)]
19838pub enum Zigbee915005997501Poweronbehavior {
19839    #[serde(rename = "off")]
19840    Off,
19841    #[serde(rename = "on")]
19842    On,
19843    #[serde(rename = "previous")]
19844    Previous,
19845    #[serde(rename = "toggle")]
19846    Toggle,
19847}
19848#[cfg_attr(feature = "debug", derive(Debug))]
19849#[cfg_attr(feature = "clone", derive(Clone))]
19850#[derive(Deserialize, PartialEq)]
19851pub enum Zigbee915005997601Poweronbehavior {
19852    #[serde(rename = "off")]
19853    Off,
19854    #[serde(rename = "on")]
19855    On,
19856    #[serde(rename = "previous")]
19857    Previous,
19858    #[serde(rename = "toggle")]
19859    Toggle,
19860}
19861#[cfg_attr(feature = "debug", derive(Debug))]
19862#[cfg_attr(feature = "clone", derive(Clone))]
19863#[derive(Deserialize, PartialEq)]
19864pub enum Zigbee915005997701Poweronbehavior {
19865    #[serde(rename = "off")]
19866    Off,
19867    #[serde(rename = "on")]
19868    On,
19869    #[serde(rename = "previous")]
19870    Previous,
19871    #[serde(rename = "toggle")]
19872    Toggle,
19873}
19874#[cfg_attr(feature = "debug", derive(Debug))]
19875#[cfg_attr(feature = "clone", derive(Clone))]
19876#[derive(Deserialize, PartialEq)]
19877pub enum Zigbee915005997801Poweronbehavior {
19878    #[serde(rename = "off")]
19879    Off,
19880    #[serde(rename = "on")]
19881    On,
19882    #[serde(rename = "previous")]
19883    Previous,
19884    #[serde(rename = "toggle")]
19885    Toggle,
19886}
19887#[cfg_attr(feature = "debug", derive(Debug))]
19888#[cfg_attr(feature = "clone", derive(Clone))]
19889#[derive(Deserialize, PartialEq)]
19890pub enum Zigbee915005997901Poweronbehavior {
19891    #[serde(rename = "off")]
19892    Off,
19893    #[serde(rename = "on")]
19894    On,
19895    #[serde(rename = "previous")]
19896    Previous,
19897    #[serde(rename = "toggle")]
19898    Toggle,
19899}
19900#[cfg_attr(feature = "debug", derive(Debug))]
19901#[cfg_attr(feature = "clone", derive(Clone))]
19902#[derive(Deserialize, PartialEq)]
19903pub enum Zigbee915005998001Poweronbehavior {
19904    #[serde(rename = "off")]
19905    Off,
19906    #[serde(rename = "on")]
19907    On,
19908    #[serde(rename = "previous")]
19909    Previous,
19910    #[serde(rename = "toggle")]
19911    Toggle,
19912}
19913#[cfg_attr(feature = "debug", derive(Debug))]
19914#[cfg_attr(feature = "clone", derive(Clone))]
19915#[derive(Deserialize, PartialEq)]
19916pub enum Zigbee915005998101Poweronbehavior {
19917    #[serde(rename = "off")]
19918    Off,
19919    #[serde(rename = "on")]
19920    On,
19921    #[serde(rename = "previous")]
19922    Previous,
19923    #[serde(rename = "toggle")]
19924    Toggle,
19925}
19926#[cfg_attr(feature = "debug", derive(Debug))]
19927#[cfg_attr(feature = "clone", derive(Clone))]
19928#[derive(Deserialize, PartialEq)]
19929pub enum Zigbee915005998201Poweronbehavior {
19930    #[serde(rename = "off")]
19931    Off,
19932    #[serde(rename = "on")]
19933    On,
19934    #[serde(rename = "previous")]
19935    Previous,
19936    #[serde(rename = "toggle")]
19937    Toggle,
19938}
19939#[cfg_attr(feature = "debug", derive(Debug))]
19940#[cfg_attr(feature = "clone", derive(Clone))]
19941#[derive(Deserialize, PartialEq)]
19942pub enum Zigbee9290002579aPoweronbehavior {
19943    #[serde(rename = "off")]
19944    Off,
19945    #[serde(rename = "on")]
19946    On,
19947    #[serde(rename = "previous")]
19948    Previous,
19949    #[serde(rename = "toggle")]
19950    Toggle,
19951}
19952#[cfg_attr(feature = "debug", derive(Debug))]
19953#[cfg_attr(feature = "clone", derive(Clone))]
19954#[derive(Deserialize, PartialEq)]
19955pub enum Zigbee9290011370Poweronbehavior {
19956    #[serde(rename = "off")]
19957    Off,
19958    #[serde(rename = "on")]
19959    On,
19960    #[serde(rename = "previous")]
19961    Previous,
19962    #[serde(rename = "toggle")]
19963    Toggle,
19964}
19965#[cfg_attr(feature = "debug", derive(Debug))]
19966#[cfg_attr(feature = "clone", derive(Clone))]
19967#[derive(Deserialize, PartialEq)]
19968pub enum Zigbee9290011370bPoweronbehavior {
19969    #[serde(rename = "off")]
19970    Off,
19971    #[serde(rename = "on")]
19972    On,
19973    #[serde(rename = "previous")]
19974    Previous,
19975    #[serde(rename = "toggle")]
19976    Toggle,
19977}
19978#[cfg_attr(feature = "debug", derive(Debug))]
19979#[cfg_attr(feature = "clone", derive(Clone))]
19980#[derive(Deserialize, PartialEq)]
19981pub enum Zigbee9290011998bPoweronbehavior {
19982    #[serde(rename = "off")]
19983    Off,
19984    #[serde(rename = "on")]
19985    On,
19986    #[serde(rename = "previous")]
19987    Previous,
19988    #[serde(rename = "toggle")]
19989    Toggle,
19990}
19991#[cfg_attr(feature = "debug", derive(Debug))]
19992#[cfg_attr(feature = "clone", derive(Clone))]
19993#[derive(Deserialize, PartialEq)]
19994pub enum Zigbee9290012573aPoweronbehavior {
19995    #[serde(rename = "off")]
19996    Off,
19997    #[serde(rename = "on")]
19998    On,
19999    #[serde(rename = "previous")]
20000    Previous,
20001    #[serde(rename = "toggle")]
20002    Toggle,
20003}
20004#[cfg_attr(feature = "debug", derive(Debug))]
20005#[cfg_attr(feature = "clone", derive(Clone))]
20006#[derive(Deserialize, PartialEq)]
20007pub enum Zigbee9290012607Motionsensitivity {
20008    #[serde(rename = "high")]
20009    High,
20010    #[serde(rename = "low")]
20011    Low,
20012    #[serde(rename = "medium")]
20013    Medium,
20014}
20015#[cfg_attr(feature = "debug", derive(Debug))]
20016#[cfg_attr(feature = "clone", derive(Clone))]
20017#[derive(Deserialize, PartialEq)]
20018pub enum Zigbee9290018187bPoweronbehavior {
20019    #[serde(rename = "off")]
20020    Off,
20021    #[serde(rename = "on")]
20022    On,
20023    #[serde(rename = "previous")]
20024    Previous,
20025    #[serde(rename = "toggle")]
20026    Toggle,
20027}
20028#[cfg_attr(feature = "debug", derive(Debug))]
20029#[cfg_attr(feature = "clone", derive(Clone))]
20030#[derive(Deserialize, PartialEq)]
20031pub enum Zigbee9290018189Poweronbehavior {
20032    #[serde(rename = "off")]
20033    Off,
20034    #[serde(rename = "on")]
20035    On,
20036    #[serde(rename = "previous")]
20037    Previous,
20038    #[serde(rename = "toggle")]
20039    Toggle,
20040}
20041#[cfg_attr(feature = "debug", derive(Debug))]
20042#[cfg_attr(feature = "clone", derive(Clone))]
20043#[derive(Deserialize, PartialEq)]
20044pub enum Zigbee9290018194Poweronbehavior {
20045    #[serde(rename = "off")]
20046    Off,
20047    #[serde(rename = "on")]
20048    On,
20049    #[serde(rename = "previous")]
20050    Previous,
20051    #[serde(rename = "toggle")]
20052    Toggle,
20053}
20054#[cfg_attr(feature = "debug", derive(Debug))]
20055#[cfg_attr(feature = "clone", derive(Clone))]
20056#[derive(Deserialize, PartialEq)]
20057pub enum Zigbee9290018195Poweronbehavior {
20058    #[serde(rename = "off")]
20059    Off,
20060    #[serde(rename = "on")]
20061    On,
20062    #[serde(rename = "previous")]
20063    Previous,
20064    #[serde(rename = "toggle")]
20065    Toggle,
20066}
20067#[cfg_attr(feature = "debug", derive(Debug))]
20068#[cfg_attr(feature = "clone", derive(Clone))]
20069#[derive(Deserialize, PartialEq)]
20070pub enum Zigbee9290018215Poweronbehavior {
20071    #[serde(rename = "off")]
20072    Off,
20073    #[serde(rename = "on")]
20074    On,
20075    #[serde(rename = "previous")]
20076    Previous,
20077    #[serde(rename = "toggle")]
20078    Toggle,
20079}
20080#[cfg_attr(feature = "debug", derive(Debug))]
20081#[cfg_attr(feature = "clone", derive(Clone))]
20082#[derive(Deserialize, PartialEq)]
20083pub enum Zigbee929001821618Poweronbehavior {
20084    #[serde(rename = "off")]
20085    Off,
20086    #[serde(rename = "on")]
20087    On,
20088    #[serde(rename = "previous")]
20089    Previous,
20090    #[serde(rename = "toggle")]
20091    Toggle,
20092}
20093#[cfg_attr(feature = "debug", derive(Debug))]
20094#[cfg_attr(feature = "clone", derive(Clone))]
20095#[derive(Deserialize, PartialEq)]
20096pub enum Zigbee9290018216Poweronbehavior {
20097    #[serde(rename = "off")]
20098    Off,
20099    #[serde(rename = "on")]
20100    On,
20101    #[serde(rename = "previous")]
20102    Previous,
20103    #[serde(rename = "toggle")]
20104    Toggle,
20105}
20106#[cfg_attr(feature = "debug", derive(Debug))]
20107#[cfg_attr(feature = "clone", derive(Clone))]
20108#[derive(Deserialize, PartialEq)]
20109pub enum Zigbee9290018217Poweronbehavior {
20110    #[serde(rename = "off")]
20111    Off,
20112    #[serde(rename = "on")]
20113    On,
20114    #[serde(rename = "previous")]
20115    Previous,
20116    #[serde(rename = "toggle")]
20117    Toggle,
20118}
20119#[cfg_attr(feature = "debug", derive(Debug))]
20120#[cfg_attr(feature = "clone", derive(Clone))]
20121#[derive(Deserialize, PartialEq)]
20122pub enum Zigbee9290018609Poweronbehavior {
20123    #[serde(rename = "off")]
20124    Off,
20125    #[serde(rename = "on")]
20126    On,
20127    #[serde(rename = "previous")]
20128    Previous,
20129    #[serde(rename = "toggle")]
20130    Toggle,
20131}
20132#[cfg_attr(feature = "debug", derive(Debug))]
20133#[cfg_attr(feature = "clone", derive(Clone))]
20134#[derive(Deserialize, PartialEq)]
20135pub enum Zigbee929001953101Poweronbehavior {
20136    #[serde(rename = "off")]
20137    Off,
20138    #[serde(rename = "on")]
20139    On,
20140    #[serde(rename = "previous")]
20141    Previous,
20142    #[serde(rename = "toggle")]
20143    Toggle,
20144}
20145#[cfg_attr(feature = "debug", derive(Debug))]
20146#[cfg_attr(feature = "clone", derive(Clone))]
20147#[derive(Deserialize, PartialEq)]
20148pub enum Zigbee9290019532Poweronbehavior {
20149    #[serde(rename = "off")]
20150    Off,
20151    #[serde(rename = "on")]
20152    On,
20153    #[serde(rename = "previous")]
20154    Previous,
20155    #[serde(rename = "toggle")]
20156    Toggle,
20157}
20158#[cfg_attr(feature = "debug", derive(Debug))]
20159#[cfg_attr(feature = "clone", derive(Clone))]
20160#[derive(Deserialize, PartialEq)]
20161pub enum Zigbee929001953301Poweronbehavior {
20162    #[serde(rename = "off")]
20163    Off,
20164    #[serde(rename = "on")]
20165    On,
20166    #[serde(rename = "previous")]
20167    Previous,
20168    #[serde(rename = "toggle")]
20169    Toggle,
20170}
20171#[cfg_attr(feature = "debug", derive(Debug))]
20172#[cfg_attr(feature = "clone", derive(Clone))]
20173#[derive(Deserialize, PartialEq)]
20174pub enum Zigbee9290019533Poweronbehavior {
20175    #[serde(rename = "off")]
20176    Off,
20177    #[serde(rename = "on")]
20178    On,
20179    #[serde(rename = "previous")]
20180    Previous,
20181    #[serde(rename = "toggle")]
20182    Toggle,
20183}
20184#[cfg_attr(feature = "debug", derive(Debug))]
20185#[cfg_attr(feature = "clone", derive(Clone))]
20186#[derive(Deserialize, PartialEq)]
20187pub enum Zigbee9290019534Poweronbehavior {
20188    #[serde(rename = "off")]
20189    Off,
20190    #[serde(rename = "on")]
20191    On,
20192    #[serde(rename = "previous")]
20193    Previous,
20194    #[serde(rename = "toggle")]
20195    Toggle,
20196}
20197#[cfg_attr(feature = "debug", derive(Debug))]
20198#[cfg_attr(feature = "clone", derive(Clone))]
20199#[derive(Deserialize, PartialEq)]
20200pub enum Zigbee9290019536Poweronbehavior {
20201    #[serde(rename = "off")]
20202    Off,
20203    #[serde(rename = "on")]
20204    On,
20205    #[serde(rename = "previous")]
20206    Previous,
20207    #[serde(rename = "toggle")]
20208    Toggle,
20209}
20210#[cfg_attr(feature = "debug", derive(Debug))]
20211#[cfg_attr(feature = "clone", derive(Clone))]
20212#[derive(Deserialize, PartialEq)]
20213pub enum Zigbee9290019758Motionsensitivity {
20214    #[serde(rename = "high")]
20215    High,
20216    #[serde(rename = "low")]
20217    Low,
20218    #[serde(rename = "medium")]
20219    Medium,
20220}
20221#[cfg_attr(feature = "debug", derive(Debug))]
20222#[cfg_attr(feature = "clone", derive(Clone))]
20223#[derive(Deserialize, PartialEq)]
20224pub enum Zigbee929002039801Poweronbehavior {
20225    #[serde(rename = "off")]
20226    Off,
20227    #[serde(rename = "on")]
20228    On,
20229    #[serde(rename = "previous")]
20230    Previous,
20231    #[serde(rename = "toggle")]
20232    Toggle,
20233}
20234#[cfg_attr(feature = "debug", derive(Debug))]
20235#[cfg_attr(feature = "clone", derive(Clone))]
20236#[derive(Deserialize, PartialEq)]
20237pub enum Zigbee9290020399Poweronbehavior {
20238    #[serde(rename = "off")]
20239    Off,
20240    #[serde(rename = "on")]
20241    On,
20242    #[serde(rename = "previous")]
20243    Previous,
20244    #[serde(rename = "toggle")]
20245    Toggle,
20246}
20247#[cfg_attr(feature = "debug", derive(Debug))]
20248#[cfg_attr(feature = "clone", derive(Clone))]
20249#[derive(Deserialize, PartialEq)]
20250pub enum Zigbee9290020400Poweronbehavior {
20251    #[serde(rename = "off")]
20252    Off,
20253    #[serde(rename = "on")]
20254    On,
20255    #[serde(rename = "previous")]
20256    Previous,
20257    #[serde(rename = "toggle")]
20258    Toggle,
20259}
20260#[cfg_attr(feature = "debug", derive(Debug))]
20261#[cfg_attr(feature = "clone", derive(Clone))]
20262#[derive(Deserialize, PartialEq)]
20263pub enum Zigbee9290022166Poweronbehavior {
20264    #[serde(rename = "off")]
20265    Off,
20266    #[serde(rename = "on")]
20267    On,
20268    #[serde(rename = "previous")]
20269    Previous,
20270    #[serde(rename = "toggle")]
20271    Toggle,
20272}
20273#[cfg_attr(feature = "debug", derive(Debug))]
20274#[cfg_attr(feature = "clone", derive(Clone))]
20275#[derive(Deserialize, PartialEq)]
20276pub enum Zigbee9290022167Poweronbehavior {
20277    #[serde(rename = "off")]
20278    Off,
20279    #[serde(rename = "on")]
20280    On,
20281    #[serde(rename = "previous")]
20282    Previous,
20283    #[serde(rename = "toggle")]
20284    Toggle,
20285}
20286#[cfg_attr(feature = "debug", derive(Debug))]
20287#[cfg_attr(feature = "clone", derive(Clone))]
20288#[derive(Deserialize, PartialEq)]
20289pub enum Zigbee9290022169Poweronbehavior {
20290    #[serde(rename = "off")]
20291    Off,
20292    #[serde(rename = "on")]
20293    On,
20294    #[serde(rename = "previous")]
20295    Previous,
20296    #[serde(rename = "toggle")]
20297    Toggle,
20298}
20299#[cfg_attr(feature = "debug", derive(Debug))]
20300#[cfg_attr(feature = "clone", derive(Clone))]
20301#[derive(Deserialize, PartialEq)]
20302pub enum Zigbee9290022266aPoweronbehavior {
20303    #[serde(rename = "off")]
20304    Off,
20305    #[serde(rename = "on")]
20306    On,
20307    #[serde(rename = "previous")]
20308    Previous,
20309    #[serde(rename = "toggle")]
20310    Toggle,
20311}
20312#[cfg_attr(feature = "debug", derive(Debug))]
20313#[cfg_attr(feature = "clone", derive(Clone))]
20314#[derive(Deserialize, PartialEq)]
20315pub enum Zigbee9290022267Poweronbehavior {
20316    #[serde(rename = "off")]
20317    Off,
20318    #[serde(rename = "on")]
20319    On,
20320    #[serde(rename = "previous")]
20321    Previous,
20322    #[serde(rename = "toggle")]
20323    Toggle,
20324}
20325#[cfg_attr(feature = "debug", derive(Debug))]
20326#[cfg_attr(feature = "clone", derive(Clone))]
20327#[derive(Deserialize, PartialEq)]
20328pub enum Zigbee9290022267aPoweronbehavior {
20329    #[serde(rename = "off")]
20330    Off,
20331    #[serde(rename = "on")]
20332    On,
20333    #[serde(rename = "previous")]
20334    Previous,
20335    #[serde(rename = "toggle")]
20336    Toggle,
20337}
20338#[cfg_attr(feature = "debug", derive(Debug))]
20339#[cfg_attr(feature = "clone", derive(Clone))]
20340#[derive(Deserialize, PartialEq)]
20341pub enum Zigbee9290022268Poweronbehavior {
20342    #[serde(rename = "off")]
20343    Off,
20344    #[serde(rename = "on")]
20345    On,
20346    #[serde(rename = "previous")]
20347    Previous,
20348    #[serde(rename = "toggle")]
20349    Toggle,
20350}
20351#[cfg_attr(feature = "debug", derive(Debug))]
20352#[cfg_attr(feature = "clone", derive(Clone))]
20353#[derive(Deserialize, PartialEq)]
20354pub enum Zigbee9290022411Poweronbehavior {
20355    #[serde(rename = "off")]
20356    Off,
20357    #[serde(rename = "on")]
20358    On,
20359    #[serde(rename = "previous")]
20360    Previous,
20361    #[serde(rename = "toggle")]
20362    Toggle,
20363}
20364#[cfg_attr(feature = "debug", derive(Debug))]
20365#[cfg_attr(feature = "clone", derive(Clone))]
20366#[derive(Deserialize, PartialEq)]
20367pub enum Zigbee929002241201Poweronbehavior {
20368    #[serde(rename = "off")]
20369    Off,
20370    #[serde(rename = "on")]
20371    On,
20372    #[serde(rename = "previous")]
20373    Previous,
20374    #[serde(rename = "toggle")]
20375    Toggle,
20376}
20377#[cfg_attr(feature = "debug", derive(Debug))]
20378#[cfg_attr(feature = "clone", derive(Clone))]
20379#[derive(Deserialize, PartialEq)]
20380pub enum Zigbee9290022415Poweronbehavior {
20381    #[serde(rename = "off")]
20382    Off,
20383    #[serde(rename = "on")]
20384    On,
20385    #[serde(rename = "previous")]
20386    Previous,
20387    #[serde(rename = "toggle")]
20388    Toggle,
20389}
20390#[cfg_attr(feature = "debug", derive(Debug))]
20391#[cfg_attr(feature = "clone", derive(Clone))]
20392#[derive(Deserialize, PartialEq)]
20393pub enum Zigbee929002277501Poweronbehavior {
20394    #[serde(rename = "off")]
20395    Off,
20396    #[serde(rename = "on")]
20397    On,
20398    #[serde(rename = "previous")]
20399    Previous,
20400    #[serde(rename = "toggle")]
20401    Toggle,
20402}
20403#[cfg_attr(feature = "debug", derive(Debug))]
20404#[cfg_attr(feature = "clone", derive(Clone))]
20405#[derive(Deserialize, PartialEq)]
20406pub enum Zigbee9290022890Poweronbehavior {
20407    #[serde(rename = "off")]
20408    Off,
20409    #[serde(rename = "on")]
20410    On,
20411    #[serde(rename = "previous")]
20412    Previous,
20413    #[serde(rename = "toggle")]
20414    Toggle,
20415}
20416#[cfg_attr(feature = "debug", derive(Debug))]
20417#[cfg_attr(feature = "clone", derive(Clone))]
20418#[derive(Deserialize, PartialEq)]
20419pub enum Zigbee9290022891Poweronbehavior {
20420    #[serde(rename = "off")]
20421    Off,
20422    #[serde(rename = "on")]
20423    On,
20424    #[serde(rename = "previous")]
20425    Previous,
20426    #[serde(rename = "toggle")]
20427    Toggle,
20428}
20429#[cfg_attr(feature = "debug", derive(Debug))]
20430#[cfg_attr(feature = "clone", derive(Clone))]
20431#[derive(Deserialize, PartialEq)]
20432pub enum Zigbee929002294101Poweronbehavior {
20433    #[serde(rename = "off")]
20434    Off,
20435    #[serde(rename = "on")]
20436    On,
20437    #[serde(rename = "previous")]
20438    Previous,
20439    #[serde(rename = "toggle")]
20440    Toggle,
20441}
20442#[cfg_attr(feature = "debug", derive(Debug))]
20443#[cfg_attr(feature = "clone", derive(Clone))]
20444#[derive(Deserialize, PartialEq)]
20445pub enum Zigbee929002294102Poweronbehavior {
20446    #[serde(rename = "off")]
20447    Off,
20448    #[serde(rename = "on")]
20449    On,
20450    #[serde(rename = "previous")]
20451    Previous,
20452    #[serde(rename = "toggle")]
20453    Toggle,
20454}
20455#[cfg_attr(feature = "debug", derive(Debug))]
20456#[cfg_attr(feature = "clone", derive(Clone))]
20457#[derive(Deserialize, PartialEq)]
20458pub enum Zigbee929002294203Poweronbehavior {
20459    #[serde(rename = "off")]
20460    Off,
20461    #[serde(rename = "on")]
20462    On,
20463    #[serde(rename = "previous")]
20464    Previous,
20465    #[serde(rename = "toggle")]
20466    Toggle,
20467}
20468#[cfg_attr(feature = "debug", derive(Debug))]
20469#[cfg_attr(feature = "clone", derive(Clone))]
20470#[derive(Deserialize, PartialEq)]
20471pub enum Zigbee9290022943Poweronbehavior {
20472    #[serde(rename = "off")]
20473    Off,
20474    #[serde(rename = "on")]
20475    On,
20476    #[serde(rename = "previous")]
20477    Previous,
20478    #[serde(rename = "toggle")]
20479    Toggle,
20480}
20481#[cfg_attr(feature = "debug", derive(Debug))]
20482#[cfg_attr(feature = "clone", derive(Clone))]
20483#[derive(Deserialize, PartialEq)]
20484pub enum Zigbee9290022944Poweronbehavior {
20485    #[serde(rename = "off")]
20486    Off,
20487    #[serde(rename = "on")]
20488    On,
20489    #[serde(rename = "previous")]
20490    Previous,
20491    #[serde(rename = "toggle")]
20492    Toggle,
20493}
20494#[cfg_attr(feature = "debug", derive(Debug))]
20495#[cfg_attr(feature = "clone", derive(Clone))]
20496#[derive(Deserialize, PartialEq)]
20497pub enum Zigbee9290023349Poweronbehavior {
20498    #[serde(rename = "off")]
20499    Off,
20500    #[serde(rename = "on")]
20501    On,
20502    #[serde(rename = "previous")]
20503    Previous,
20504    #[serde(rename = "toggle")]
20505    Toggle,
20506}
20507#[cfg_attr(feature = "debug", derive(Debug))]
20508#[cfg_attr(feature = "clone", derive(Clone))]
20509#[derive(Deserialize, PartialEq)]
20510pub enum Zigbee929002335001Poweronbehavior {
20511    #[serde(rename = "off")]
20512    Off,
20513    #[serde(rename = "on")]
20514    On,
20515    #[serde(rename = "previous")]
20516    Previous,
20517    #[serde(rename = "toggle")]
20518    Toggle,
20519}
20520#[cfg_attr(feature = "debug", derive(Debug))]
20521#[cfg_attr(feature = "clone", derive(Clone))]
20522#[derive(Deserialize, PartialEq)]
20523pub enum Zigbee929002335105Poweronbehavior {
20524    #[serde(rename = "off")]
20525    Off,
20526    #[serde(rename = "on")]
20527    On,
20528    #[serde(rename = "previous")]
20529    Previous,
20530    #[serde(rename = "toggle")]
20531    Toggle,
20532}
20533#[cfg_attr(feature = "debug", derive(Debug))]
20534#[cfg_attr(feature = "clone", derive(Clone))]
20535#[derive(Deserialize, PartialEq)]
20536pub enum Zigbee9290023351Poweronbehavior {
20537    #[serde(rename = "off")]
20538    Off,
20539    #[serde(rename = "on")]
20540    On,
20541    #[serde(rename = "previous")]
20542    Previous,
20543    #[serde(rename = "toggle")]
20544    Toggle,
20545}
20546#[cfg_attr(feature = "debug", derive(Debug))]
20547#[cfg_attr(feature = "clone", derive(Clone))]
20548#[derive(Deserialize, PartialEq)]
20549pub enum Zigbee929002375901Poweronbehavior {
20550    #[serde(rename = "off")]
20551    Off,
20552    #[serde(rename = "on")]
20553    On,
20554    #[serde(rename = "previous")]
20555    Previous,
20556    #[serde(rename = "toggle")]
20557    Toggle,
20558}
20559#[cfg_attr(feature = "debug", derive(Debug))]
20560#[cfg_attr(feature = "clone", derive(Clone))]
20561#[derive(Deserialize, PartialEq)]
20562pub enum Zigbee929002376001Poweronbehavior {
20563    #[serde(rename = "off")]
20564    Off,
20565    #[serde(rename = "on")]
20566    On,
20567    #[serde(rename = "previous")]
20568    Previous,
20569    #[serde(rename = "toggle")]
20570    Toggle,
20571}
20572#[cfg_attr(feature = "debug", derive(Debug))]
20573#[cfg_attr(feature = "clone", derive(Clone))]
20574#[derive(Deserialize, PartialEq)]
20575pub enum Zigbee929002376101Poweronbehavior {
20576    #[serde(rename = "off")]
20577    Off,
20578    #[serde(rename = "on")]
20579    On,
20580    #[serde(rename = "previous")]
20581    Previous,
20582    #[serde(rename = "toggle")]
20583    Toggle,
20584}
20585#[cfg_attr(feature = "debug", derive(Debug))]
20586#[cfg_attr(feature = "clone", derive(Clone))]
20587#[derive(Deserialize, PartialEq)]
20588pub enum Zigbee929002376201Poweronbehavior {
20589    #[serde(rename = "off")]
20590    Off,
20591    #[serde(rename = "on")]
20592    On,
20593    #[serde(rename = "previous")]
20594    Previous,
20595    #[serde(rename = "toggle")]
20596    Toggle,
20597}
20598#[cfg_attr(feature = "debug", derive(Debug))]
20599#[cfg_attr(feature = "clone", derive(Clone))]
20600#[derive(Deserialize, PartialEq)]
20601pub enum Zigbee929002376301Poweronbehavior {
20602    #[serde(rename = "off")]
20603    Off,
20604    #[serde(rename = "on")]
20605    On,
20606    #[serde(rename = "previous")]
20607    Previous,
20608    #[serde(rename = "toggle")]
20609    Toggle,
20610}
20611#[cfg_attr(feature = "debug", derive(Debug))]
20612#[cfg_attr(feature = "clone", derive(Clone))]
20613#[derive(Deserialize, PartialEq)]
20614pub enum Zigbee929002376401Poweronbehavior {
20615    #[serde(rename = "off")]
20616    Off,
20617    #[serde(rename = "on")]
20618    On,
20619    #[serde(rename = "previous")]
20620    Previous,
20621    #[serde(rename = "toggle")]
20622    Toggle,
20623}
20624#[cfg_attr(feature = "debug", derive(Debug))]
20625#[cfg_attr(feature = "clone", derive(Clone))]
20626#[derive(Deserialize, PartialEq)]
20627pub enum Zigbee929002376501Poweronbehavior {
20628    #[serde(rename = "off")]
20629    Off,
20630    #[serde(rename = "on")]
20631    On,
20632    #[serde(rename = "previous")]
20633    Previous,
20634    #[serde(rename = "toggle")]
20635    Toggle,
20636}
20637#[cfg_attr(feature = "debug", derive(Debug))]
20638#[cfg_attr(feature = "clone", derive(Clone))]
20639#[derive(Deserialize, PartialEq)]
20640pub enum Zigbee929002376701Poweronbehavior {
20641    #[serde(rename = "off")]
20642    Off,
20643    #[serde(rename = "on")]
20644    On,
20645    #[serde(rename = "previous")]
20646    Previous,
20647    #[serde(rename = "toggle")]
20648    Toggle,
20649}
20650#[cfg_attr(feature = "debug", derive(Debug))]
20651#[cfg_attr(feature = "clone", derive(Clone))]
20652#[derive(Deserialize, PartialEq)]
20653pub enum Zigbee929002376703Poweronbehavior {
20654    #[serde(rename = "off")]
20655    Off,
20656    #[serde(rename = "on")]
20657    On,
20658    #[serde(rename = "previous")]
20659    Previous,
20660    #[serde(rename = "toggle")]
20661    Toggle,
20662}
20663#[cfg_attr(feature = "debug", derive(Debug))]
20664#[cfg_attr(feature = "clone", derive(Clone))]
20665#[derive(Deserialize, PartialEq)]
20666pub enum Zigbee929002376801Poweronbehavior {
20667    #[serde(rename = "off")]
20668    Off,
20669    #[serde(rename = "on")]
20670    On,
20671    #[serde(rename = "previous")]
20672    Previous,
20673    #[serde(rename = "toggle")]
20674    Toggle,
20675}
20676#[cfg_attr(feature = "debug", derive(Debug))]
20677#[cfg_attr(feature = "clone", derive(Clone))]
20678#[derive(Deserialize, PartialEq)]
20679pub enum Zigbee929002376803Poweronbehavior {
20680    #[serde(rename = "off")]
20681    Off,
20682    #[serde(rename = "on")]
20683    On,
20684    #[serde(rename = "previous")]
20685    Previous,
20686    #[serde(rename = "toggle")]
20687    Toggle,
20688}
20689#[cfg_attr(feature = "debug", derive(Debug))]
20690#[cfg_attr(feature = "clone", derive(Clone))]
20691#[derive(Deserialize, PartialEq)]
20692pub enum Zigbee929002376901Poweronbehavior {
20693    #[serde(rename = "off")]
20694    Off,
20695    #[serde(rename = "on")]
20696    On,
20697    #[serde(rename = "previous")]
20698    Previous,
20699    #[serde(rename = "toggle")]
20700    Toggle,
20701}
20702#[cfg_attr(feature = "debug", derive(Debug))]
20703#[cfg_attr(feature = "clone", derive(Clone))]
20704#[derive(Deserialize, PartialEq)]
20705pub enum Zigbee929002398602Action {
20706    #[serde(rename = "down_hold")]
20707    DownHold,
20708    #[serde(rename = "down_hold_release")]
20709    DownHoldRelease,
20710    #[serde(rename = "down_press")]
20711    DownPress,
20712    #[serde(rename = "down_press_release")]
20713    DownPressRelease,
20714    #[serde(rename = "off_hold")]
20715    OffHold,
20716    #[serde(rename = "off_hold_release")]
20717    OffHoldRelease,
20718    #[serde(rename = "off_press")]
20719    OffPress,
20720    #[serde(rename = "off_press_release")]
20721    OffPressRelease,
20722    #[serde(rename = "on_hold")]
20723    OnHold,
20724    #[serde(rename = "on_hold_release")]
20725    OnHoldRelease,
20726    #[serde(rename = "on_press")]
20727    OnPress,
20728    #[serde(rename = "on_press_release")]
20729    OnPressRelease,
20730    #[serde(rename = "recall_0")]
20731    Recall0,
20732    #[serde(rename = "recall_1")]
20733    Recall1,
20734    #[serde(rename = "up_hold")]
20735    UpHold,
20736    #[serde(rename = "up_hold_release")]
20737    UpHoldRelease,
20738    #[serde(rename = "up_press")]
20739    UpPress,
20740    #[serde(rename = "up_press_release")]
20741    UpPressRelease,
20742}
20743#[cfg_attr(feature = "debug", derive(Debug))]
20744#[cfg_attr(feature = "clone", derive(Clone))]
20745#[derive(Deserialize, PartialEq)]
20746pub enum Zigbee929002401201Poweronbehavior {
20747    #[serde(rename = "off")]
20748    Off,
20749    #[serde(rename = "on")]
20750    On,
20751    #[serde(rename = "previous")]
20752    Previous,
20753    #[serde(rename = "toggle")]
20754    Toggle,
20755}
20756#[cfg_attr(feature = "debug", derive(Debug))]
20757#[cfg_attr(feature = "clone", derive(Clone))]
20758#[derive(Deserialize, PartialEq)]
20759pub enum Zigbee929002422702Poweronbehavior {
20760    #[serde(rename = "off")]
20761    Off,
20762    #[serde(rename = "on")]
20763    On,
20764    #[serde(rename = "previous")]
20765    Previous,
20766    #[serde(rename = "toggle")]
20767    Toggle,
20768}
20769#[cfg_attr(feature = "debug", derive(Debug))]
20770#[cfg_attr(feature = "clone", derive(Clone))]
20771#[derive(Deserialize, PartialEq)]
20772pub enum Zigbee929002422801Poweronbehavior {
20773    #[serde(rename = "off")]
20774    Off,
20775    #[serde(rename = "on")]
20776    On,
20777    #[serde(rename = "previous")]
20778    Previous,
20779    #[serde(rename = "toggle")]
20780    Toggle,
20781}
20782#[cfg_attr(feature = "debug", derive(Debug))]
20783#[cfg_attr(feature = "clone", derive(Clone))]
20784#[derive(Deserialize, PartialEq)]
20785pub enum Zigbee929002422901Poweronbehavior {
20786    #[serde(rename = "off")]
20787    Off,
20788    #[serde(rename = "on")]
20789    On,
20790    #[serde(rename = "previous")]
20791    Previous,
20792    #[serde(rename = "toggle")]
20793    Toggle,
20794}
20795#[cfg_attr(feature = "debug", derive(Debug))]
20796#[cfg_attr(feature = "clone", derive(Clone))]
20797#[derive(Deserialize, PartialEq)]
20798pub enum Zigbee9290024406Poweronbehavior {
20799    #[serde(rename = "off")]
20800    Off,
20801    #[serde(rename = "on")]
20802    On,
20803    #[serde(rename = "previous")]
20804    Previous,
20805    #[serde(rename = "toggle")]
20806    Toggle,
20807}
20808#[cfg_attr(feature = "debug", derive(Debug))]
20809#[cfg_attr(feature = "clone", derive(Clone))]
20810#[derive(Deserialize, PartialEq)]
20811pub enum Zigbee92900244777Poweronbehavior {
20812    #[serde(rename = "off")]
20813    Off,
20814    #[serde(rename = "on")]
20815    On,
20816    #[serde(rename = "previous")]
20817    Previous,
20818    #[serde(rename = "toggle")]
20819    Toggle,
20820}
20821#[cfg_attr(feature = "debug", derive(Debug))]
20822#[cfg_attr(feature = "clone", derive(Clone))]
20823#[derive(Deserialize, PartialEq)]
20824pub enum Zigbee929002459201Poweronbehavior {
20825    #[serde(rename = "off")]
20826    Off,
20827    #[serde(rename = "on")]
20828    On,
20829    #[serde(rename = "previous")]
20830    Previous,
20831    #[serde(rename = "toggle")]
20832    Toggle,
20833}
20834#[cfg_attr(feature = "debug", derive(Debug))]
20835#[cfg_attr(feature = "clone", derive(Clone))]
20836#[derive(Deserialize, PartialEq)]
20837pub enum Zigbee9290024683Poweronbehavior {
20838    #[serde(rename = "off")]
20839    Off,
20840    #[serde(rename = "on")]
20841    On,
20842    #[serde(rename = "previous")]
20843    Previous,
20844    #[serde(rename = "toggle")]
20845    Toggle,
20846}
20847#[cfg_attr(feature = "debug", derive(Debug))]
20848#[cfg_attr(feature = "clone", derive(Clone))]
20849#[derive(Deserialize, PartialEq)]
20850pub enum Zigbee9290024684Poweronbehavior {
20851    #[serde(rename = "off")]
20852    Off,
20853    #[serde(rename = "on")]
20854    On,
20855    #[serde(rename = "previous")]
20856    Previous,
20857    #[serde(rename = "toggle")]
20858    Toggle,
20859}
20860#[cfg_attr(feature = "debug", derive(Debug))]
20861#[cfg_attr(feature = "clone", derive(Clone))]
20862#[derive(Deserialize, PartialEq)]
20863pub enum Zigbee9290024687Poweronbehavior {
20864    #[serde(rename = "off")]
20865    Off,
20866    #[serde(rename = "on")]
20867    On,
20868    #[serde(rename = "previous")]
20869    Previous,
20870    #[serde(rename = "toggle")]
20871    Toggle,
20872}
20873#[cfg_attr(feature = "debug", derive(Debug))]
20874#[cfg_attr(feature = "clone", derive(Clone))]
20875#[derive(Deserialize, PartialEq)]
20876pub enum Zigbee9290024688Poweronbehavior {
20877    #[serde(rename = "off")]
20878    Off,
20879    #[serde(rename = "on")]
20880    On,
20881    #[serde(rename = "previous")]
20882    Previous,
20883    #[serde(rename = "toggle")]
20884    Toggle,
20885}
20886#[cfg_attr(feature = "debug", derive(Debug))]
20887#[cfg_attr(feature = "clone", derive(Clone))]
20888#[derive(Deserialize, PartialEq)]
20889pub enum Zigbee9290024691Poweronbehavior {
20890    #[serde(rename = "off")]
20891    Off,
20892    #[serde(rename = "on")]
20893    On,
20894    #[serde(rename = "previous")]
20895    Previous,
20896    #[serde(rename = "toggle")]
20897    Toggle,
20898}
20899#[cfg_attr(feature = "debug", derive(Debug))]
20900#[cfg_attr(feature = "clone", derive(Clone))]
20901#[derive(Deserialize, PartialEq)]
20902pub enum Zigbee9290024691aPoweronbehavior {
20903    #[serde(rename = "off")]
20904    Off,
20905    #[serde(rename = "on")]
20906    On,
20907    #[serde(rename = "previous")]
20908    Previous,
20909    #[serde(rename = "toggle")]
20910    Toggle,
20911}
20912#[cfg_attr(feature = "debug", derive(Debug))]
20913#[cfg_attr(feature = "clone", derive(Clone))]
20914#[derive(Deserialize, PartialEq)]
20915pub enum Zigbee929002469202Poweronbehavior {
20916    #[serde(rename = "off")]
20917    Off,
20918    #[serde(rename = "on")]
20919    On,
20920    #[serde(rename = "previous")]
20921    Previous,
20922    #[serde(rename = "toggle")]
20923    Toggle,
20924}
20925#[cfg_attr(feature = "debug", derive(Debug))]
20926#[cfg_attr(feature = "clone", derive(Clone))]
20927#[derive(Deserialize, PartialEq)]
20928pub enum Zigbee929002469216Poweronbehavior {
20929    #[serde(rename = "off")]
20930    Off,
20931    #[serde(rename = "on")]
20932    On,
20933    #[serde(rename = "previous")]
20934    Previous,
20935    #[serde(rename = "toggle")]
20936    Toggle,
20937}
20938#[cfg_attr(feature = "debug", derive(Debug))]
20939#[cfg_attr(feature = "clone", derive(Clone))]
20940#[derive(Deserialize, PartialEq)]
20941pub enum Zigbee9290024693Poweronbehavior {
20942    #[serde(rename = "off")]
20943    Off,
20944    #[serde(rename = "on")]
20945    On,
20946    #[serde(rename = "previous")]
20947    Previous,
20948    #[serde(rename = "toggle")]
20949    Toggle,
20950}
20951#[cfg_attr(feature = "debug", derive(Debug))]
20952#[cfg_attr(feature = "clone", derive(Clone))]
20953#[derive(Deserialize, PartialEq)]
20954pub enum Zigbee929002471601Poweronbehavior {
20955    #[serde(rename = "off")]
20956    Off,
20957    #[serde(rename = "on")]
20958    On,
20959    #[serde(rename = "previous")]
20960    Previous,
20961    #[serde(rename = "toggle")]
20962    Toggle,
20963}
20964#[cfg_attr(feature = "debug", derive(Debug))]
20965#[cfg_attr(feature = "clone", derive(Clone))]
20966#[derive(Deserialize, PartialEq)]
20967pub enum Zigbee9290024717Poweronbehavior {
20968    #[serde(rename = "off")]
20969    Off,
20970    #[serde(rename = "on")]
20971    On,
20972    #[serde(rename = "previous")]
20973    Previous,
20974    #[serde(rename = "toggle")]
20975    Toggle,
20976}
20977#[cfg_attr(feature = "debug", derive(Debug))]
20978#[cfg_attr(feature = "clone", derive(Clone))]
20979#[derive(Deserialize, PartialEq)]
20980pub enum Zigbee929002471901Poweronbehavior {
20981    #[serde(rename = "off")]
20982    Off,
20983    #[serde(rename = "on")]
20984    On,
20985    #[serde(rename = "previous")]
20986    Previous,
20987    #[serde(rename = "toggle")]
20988    Toggle,
20989}
20990#[cfg_attr(feature = "debug", derive(Debug))]
20991#[cfg_attr(feature = "clone", derive(Clone))]
20992#[derive(Deserialize, PartialEq)]
20993pub enum Zigbee929002477901Poweronbehavior {
20994    #[serde(rename = "off")]
20995    Off,
20996    #[serde(rename = "on")]
20997    On,
20998    #[serde(rename = "previous")]
20999    Previous,
21000    #[serde(rename = "toggle")]
21001    Toggle,
21002}
21003#[cfg_attr(feature = "debug", derive(Debug))]
21004#[cfg_attr(feature = "clone", derive(Clone))]
21005#[derive(Deserialize, PartialEq)]
21006pub enum Zigbee9290024782Poweronbehavior {
21007    #[serde(rename = "off")]
21008    Off,
21009    #[serde(rename = "on")]
21010    On,
21011    #[serde(rename = "previous")]
21012    Previous,
21013    #[serde(rename = "toggle")]
21014    Toggle,
21015}
21016#[cfg_attr(feature = "debug", derive(Debug))]
21017#[cfg_attr(feature = "clone", derive(Clone))]
21018#[derive(Deserialize, PartialEq)]
21019pub enum Zigbee9290024783Poweronbehavior {
21020    #[serde(rename = "off")]
21021    Off,
21022    #[serde(rename = "on")]
21023    On,
21024    #[serde(rename = "previous")]
21025    Previous,
21026    #[serde(rename = "toggle")]
21027    Toggle,
21028}
21029#[cfg_attr(feature = "debug", derive(Debug))]
21030#[cfg_attr(feature = "clone", derive(Clone))]
21031#[derive(Deserialize, PartialEq)]
21032pub enum Zigbee929002478401Poweronbehavior {
21033    #[serde(rename = "off")]
21034    Off,
21035    #[serde(rename = "on")]
21036    On,
21037    #[serde(rename = "previous")]
21038    Previous,
21039    #[serde(rename = "toggle")]
21040    Toggle,
21041}
21042#[cfg_attr(feature = "debug", derive(Debug))]
21043#[cfg_attr(feature = "clone", derive(Clone))]
21044#[derive(Deserialize, PartialEq)]
21045pub enum Zigbee9290024785Poweronbehavior {
21046    #[serde(rename = "off")]
21047    Off,
21048    #[serde(rename = "on")]
21049    On,
21050    #[serde(rename = "previous")]
21051    Previous,
21052    #[serde(rename = "toggle")]
21053    Toggle,
21054}
21055#[cfg_attr(feature = "debug", derive(Debug))]
21056#[cfg_attr(feature = "clone", derive(Clone))]
21057#[derive(Deserialize, PartialEq)]
21058pub enum Zigbee9290024796Poweronbehavior {
21059    #[serde(rename = "off")]
21060    Off,
21061    #[serde(rename = "on")]
21062    On,
21063    #[serde(rename = "previous")]
21064    Previous,
21065    #[serde(rename = "toggle")]
21066    Toggle,
21067}
21068#[cfg_attr(feature = "debug", derive(Debug))]
21069#[cfg_attr(feature = "clone", derive(Clone))]
21070#[derive(Deserialize, PartialEq)]
21071pub enum Zigbee9290024896Poweronbehavior {
21072    #[serde(rename = "off")]
21073    Off,
21074    #[serde(rename = "on")]
21075    On,
21076    #[serde(rename = "previous")]
21077    Previous,
21078    #[serde(rename = "toggle")]
21079    Toggle,
21080}
21081#[cfg_attr(feature = "debug", derive(Debug))]
21082#[cfg_attr(feature = "clone", derive(Clone))]
21083#[derive(Deserialize, PartialEq)]
21084pub enum Zigbee929002966401Poweronbehavior {
21085    #[serde(rename = "off")]
21086    Off,
21087    #[serde(rename = "on")]
21088    On,
21089    #[serde(rename = "previous")]
21090    Previous,
21091    #[serde(rename = "toggle")]
21092    Toggle,
21093}
21094#[cfg_attr(feature = "debug", derive(Debug))]
21095#[cfg_attr(feature = "clone", derive(Clone))]
21096#[derive(Deserialize, PartialEq)]
21097pub enum Zigbee929002966501Poweronbehavior {
21098    #[serde(rename = "off")]
21099    Off,
21100    #[serde(rename = "on")]
21101    On,
21102    #[serde(rename = "previous")]
21103    Previous,
21104    #[serde(rename = "toggle")]
21105    Toggle,
21106}
21107#[cfg_attr(feature = "debug", derive(Debug))]
21108#[cfg_attr(feature = "clone", derive(Clone))]
21109#[derive(Deserialize, PartialEq)]
21110pub enum Zigbee9290029808Poweronbehavior {
21111    #[serde(rename = "off")]
21112    Off,
21113    #[serde(rename = "on")]
21114    On,
21115    #[serde(rename = "previous")]
21116    Previous,
21117    #[serde(rename = "toggle")]
21118    Toggle,
21119}
21120#[cfg_attr(feature = "debug", derive(Debug))]
21121#[cfg_attr(feature = "clone", derive(Clone))]
21122#[derive(Deserialize, PartialEq)]
21123pub enum Zigbee929002980901Poweronbehavior {
21124    #[serde(rename = "off")]
21125    Off,
21126    #[serde(rename = "on")]
21127    On,
21128    #[serde(rename = "previous")]
21129    Previous,
21130    #[serde(rename = "toggle")]
21131    Toggle,
21132}
21133#[cfg_attr(feature = "debug", derive(Debug))]
21134#[cfg_attr(feature = "clone", derive(Clone))]
21135#[derive(Deserialize, PartialEq)]
21136pub enum Zigbee929002994901Poweronbehavior {
21137    #[serde(rename = "off")]
21138    Off,
21139    #[serde(rename = "on")]
21140    On,
21141    #[serde(rename = "previous")]
21142    Previous,
21143    #[serde(rename = "toggle")]
21144    Toggle,
21145}
21146#[cfg_attr(feature = "debug", derive(Debug))]
21147#[cfg_attr(feature = "clone", derive(Clone))]
21148#[derive(Deserialize, PartialEq)]
21149pub enum Zigbee929003017102Action {
21150    #[serde(rename = "left_hold")]
21151    LeftHold,
21152    #[serde(rename = "left_hold_release")]
21153    LeftHoldRelease,
21154    #[serde(rename = "left_press")]
21155    LeftPress,
21156    #[serde(rename = "left_press_release")]
21157    LeftPressRelease,
21158    #[serde(rename = "right_hold")]
21159    RightHold,
21160    #[serde(rename = "right_hold_release")]
21161    RightHoldRelease,
21162    #[serde(rename = "right_press")]
21163    RightPress,
21164    #[serde(rename = "right_press_release")]
21165    RightPressRelease,
21166}
21167#[cfg_attr(feature = "debug", derive(Debug))]
21168#[cfg_attr(feature = "clone", derive(Clone))]
21169#[derive(Deserialize, PartialEq)]
21170pub enum Zigbee929003017102Devicemode {
21171    #[serde(rename = "dual_push_button")]
21172    DualPushButton,
21173    #[serde(rename = "dual_rocker")]
21174    DualRocker,
21175    #[serde(rename = "single_push_button")]
21176    SinglePushButton,
21177    #[serde(rename = "single_rocker")]
21178    SingleRocker,
21179}
21180#[cfg_attr(feature = "debug", derive(Debug))]
21181#[cfg_attr(feature = "clone", derive(Clone))]
21182#[derive(Deserialize, PartialEq)]
21183pub enum Zigbee9290030211Poweronbehavior {
21184    #[serde(rename = "off")]
21185    Off,
21186    #[serde(rename = "on")]
21187    On,
21188    #[serde(rename = "previous")]
21189    Previous,
21190    #[serde(rename = "toggle")]
21191    Toggle,
21192}
21193#[cfg_attr(feature = "debug", derive(Debug))]
21194#[cfg_attr(feature = "clone", derive(Clone))]
21195#[derive(Deserialize, PartialEq)]
21196pub enum Zigbee929003021301Poweronbehavior {
21197    #[serde(rename = "off")]
21198    Off,
21199    #[serde(rename = "on")]
21200    On,
21201    #[serde(rename = "previous")]
21202    Previous,
21203    #[serde(rename = "toggle")]
21204    Toggle,
21205}
21206#[cfg_attr(feature = "debug", derive(Debug))]
21207#[cfg_attr(feature = "clone", derive(Clone))]
21208#[derive(Deserialize, PartialEq)]
21209pub enum Zigbee929003045201Poweronbehavior {
21210    #[serde(rename = "off")]
21211    Off,
21212    #[serde(rename = "on")]
21213    On,
21214    #[serde(rename = "previous")]
21215    Previous,
21216    #[serde(rename = "toggle")]
21217    Toggle,
21218}
21219#[cfg_attr(feature = "debug", derive(Debug))]
21220#[cfg_attr(feature = "clone", derive(Clone))]
21221#[derive(Deserialize, PartialEq)]
21222pub enum Zigbee929003045301Poweronbehavior {
21223    #[serde(rename = "off")]
21224    Off,
21225    #[serde(rename = "on")]
21226    On,
21227    #[serde(rename = "previous")]
21228    Previous,
21229    #[serde(rename = "toggle")]
21230    Toggle,
21231}
21232#[cfg_attr(feature = "debug", derive(Debug))]
21233#[cfg_attr(feature = "clone", derive(Clone))]
21234#[derive(Deserialize, PartialEq)]
21235pub enum Zigbee929003045401Poweronbehavior {
21236    #[serde(rename = "off")]
21237    Off,
21238    #[serde(rename = "on")]
21239    On,
21240    #[serde(rename = "previous")]
21241    Previous,
21242    #[serde(rename = "toggle")]
21243    Toggle,
21244}
21245#[cfg_attr(feature = "debug", derive(Debug))]
21246#[cfg_attr(feature = "clone", derive(Clone))]
21247#[derive(Deserialize, PartialEq)]
21248pub enum Zigbee929003045501Poweronbehavior {
21249    #[serde(rename = "off")]
21250    Off,
21251    #[serde(rename = "on")]
21252    On,
21253    #[serde(rename = "previous")]
21254    Previous,
21255    #[serde(rename = "toggle")]
21256    Toggle,
21257}
21258#[cfg_attr(feature = "debug", derive(Debug))]
21259#[cfg_attr(feature = "clone", derive(Clone))]
21260#[derive(Deserialize, PartialEq)]
21261pub enum Zigbee929003045901Poweronbehavior {
21262    #[serde(rename = "off")]
21263    Off,
21264    #[serde(rename = "on")]
21265    On,
21266    #[serde(rename = "previous")]
21267    Previous,
21268    #[serde(rename = "toggle")]
21269    Toggle,
21270}
21271#[cfg_attr(feature = "debug", derive(Debug))]
21272#[cfg_attr(feature = "clone", derive(Clone))]
21273#[derive(Deserialize, PartialEq)]
21274pub enum Zigbee929003046201Poweronbehavior {
21275    #[serde(rename = "off")]
21276    Off,
21277    #[serde(rename = "on")]
21278    On,
21279    #[serde(rename = "previous")]
21280    Previous,
21281    #[serde(rename = "toggle")]
21282    Toggle,
21283}
21284#[cfg_attr(feature = "debug", derive(Debug))]
21285#[cfg_attr(feature = "clone", derive(Clone))]
21286#[derive(Deserialize, PartialEq)]
21287pub enum Zigbee929003047001Poweronbehavior {
21288    #[serde(rename = "off")]
21289    Off,
21290    #[serde(rename = "on")]
21291    On,
21292    #[serde(rename = "previous")]
21293    Previous,
21294    #[serde(rename = "toggle")]
21295    Toggle,
21296}
21297#[cfg_attr(feature = "debug", derive(Debug))]
21298#[cfg_attr(feature = "clone", derive(Clone))]
21299#[derive(Deserialize, PartialEq)]
21300pub enum Zigbee929003047101Poweronbehavior {
21301    #[serde(rename = "off")]
21302    Off,
21303    #[serde(rename = "on")]
21304    On,
21305    #[serde(rename = "previous")]
21306    Previous,
21307    #[serde(rename = "toggle")]
21308    Toggle,
21309}
21310#[cfg_attr(feature = "debug", derive(Debug))]
21311#[cfg_attr(feature = "clone", derive(Clone))]
21312#[derive(Deserialize, PartialEq)]
21313pub enum Zigbee929003047401Poweronbehavior {
21314    #[serde(rename = "off")]
21315    Off,
21316    #[serde(rename = "on")]
21317    On,
21318    #[serde(rename = "previous")]
21319    Previous,
21320    #[serde(rename = "toggle")]
21321    Toggle,
21322}
21323#[cfg_attr(feature = "debug", derive(Debug))]
21324#[cfg_attr(feature = "clone", derive(Clone))]
21325#[derive(Deserialize, PartialEq)]
21326pub enum Zigbee929003047501Poweronbehavior {
21327    #[serde(rename = "off")]
21328    Off,
21329    #[serde(rename = "on")]
21330    On,
21331    #[serde(rename = "previous")]
21332    Previous,
21333    #[serde(rename = "toggle")]
21334    Toggle,
21335}
21336#[cfg_attr(feature = "debug", derive(Debug))]
21337#[cfg_attr(feature = "clone", derive(Clone))]
21338#[derive(Deserialize, PartialEq)]
21339pub enum Zigbee929003047601Poweronbehavior {
21340    #[serde(rename = "off")]
21341    Off,
21342    #[serde(rename = "on")]
21343    On,
21344    #[serde(rename = "previous")]
21345    Previous,
21346    #[serde(rename = "toggle")]
21347    Toggle,
21348}
21349#[cfg_attr(feature = "debug", derive(Debug))]
21350#[cfg_attr(feature = "clone", derive(Clone))]
21351#[derive(Deserialize, PartialEq)]
21352pub enum Zigbee9290030514Poweronbehavior {
21353    #[serde(rename = "off")]
21354    Off,
21355    #[serde(rename = "on")]
21356    On,
21357    #[serde(rename = "previous")]
21358    Previous,
21359    #[serde(rename = "toggle")]
21360    Toggle,
21361}
21362#[cfg_attr(feature = "debug", derive(Debug))]
21363#[cfg_attr(feature = "clone", derive(Clone))]
21364#[derive(Deserialize, PartialEq)]
21365pub enum Zigbee9290030517Poweronbehavior {
21366    #[serde(rename = "off")]
21367    Off,
21368    #[serde(rename = "on")]
21369    On,
21370    #[serde(rename = "previous")]
21371    Previous,
21372    #[serde(rename = "toggle")]
21373    Toggle,
21374}
21375#[cfg_attr(feature = "debug", derive(Debug))]
21376#[cfg_attr(feature = "clone", derive(Clone))]
21377#[derive(Deserialize, PartialEq)]
21378pub enum Zigbee9290030521Poweronbehavior {
21379    #[serde(rename = "off")]
21380    Off,
21381    #[serde(rename = "on")]
21382    On,
21383    #[serde(rename = "previous")]
21384    Previous,
21385    #[serde(rename = "toggle")]
21386    Toggle,
21387}
21388#[cfg_attr(feature = "debug", derive(Debug))]
21389#[cfg_attr(feature = "clone", derive(Clone))]
21390#[derive(Deserialize, PartialEq)]
21391pub enum Zigbee9290030523Poweronbehavior {
21392    #[serde(rename = "off")]
21393    Off,
21394    #[serde(rename = "on")]
21395    On,
21396    #[serde(rename = "previous")]
21397    Previous,
21398    #[serde(rename = "toggle")]
21399    Toggle,
21400}
21401#[cfg_attr(feature = "debug", derive(Debug))]
21402#[cfg_attr(feature = "clone", derive(Clone))]
21403#[derive(Deserialize, PartialEq)]
21404pub enum Zigbee929003052601Poweronbehavior {
21405    #[serde(rename = "off")]
21406    Off,
21407    #[serde(rename = "on")]
21408    On,
21409    #[serde(rename = "previous")]
21410    Previous,
21411    #[serde(rename = "toggle")]
21412    Toggle,
21413}
21414#[cfg_attr(feature = "debug", derive(Debug))]
21415#[cfg_attr(feature = "clone", derive(Clone))]
21416#[derive(Deserialize, PartialEq)]
21417pub enum Zigbee929003052901Poweronbehavior {
21418    #[serde(rename = "off")]
21419    Off,
21420    #[serde(rename = "on")]
21421    On,
21422    #[serde(rename = "previous")]
21423    Previous,
21424    #[serde(rename = "toggle")]
21425    Toggle,
21426}
21427#[cfg_attr(feature = "debug", derive(Debug))]
21428#[cfg_attr(feature = "clone", derive(Clone))]
21429#[derive(Deserialize, PartialEq)]
21430pub enum Zigbee929003053001Poweronbehavior {
21431    #[serde(rename = "off")]
21432    Off,
21433    #[serde(rename = "on")]
21434    On,
21435    #[serde(rename = "previous")]
21436    Previous,
21437    #[serde(rename = "toggle")]
21438    Toggle,
21439}
21440#[cfg_attr(feature = "debug", derive(Debug))]
21441#[cfg_attr(feature = "clone", derive(Clone))]
21442#[derive(Deserialize, PartialEq)]
21443pub enum Zigbee929003053201Poweronbehavior {
21444    #[serde(rename = "off")]
21445    Off,
21446    #[serde(rename = "on")]
21447    On,
21448    #[serde(rename = "previous")]
21449    Previous,
21450    #[serde(rename = "toggle")]
21451    Toggle,
21452}
21453#[cfg_attr(feature = "debug", derive(Debug))]
21454#[cfg_attr(feature = "clone", derive(Clone))]
21455#[derive(Deserialize, PartialEq)]
21456pub enum Zigbee929003054001Poweronbehavior {
21457    #[serde(rename = "off")]
21458    Off,
21459    #[serde(rename = "on")]
21460    On,
21461    #[serde(rename = "previous")]
21462    Previous,
21463    #[serde(rename = "toggle")]
21464    Toggle,
21465}
21466#[cfg_attr(feature = "debug", derive(Debug))]
21467#[cfg_attr(feature = "clone", derive(Clone))]
21468#[derive(Deserialize, PartialEq)]
21469pub enum Zigbee929003054101Poweronbehavior {
21470    #[serde(rename = "off")]
21471    Off,
21472    #[serde(rename = "on")]
21473    On,
21474    #[serde(rename = "previous")]
21475    Previous,
21476    #[serde(rename = "toggle")]
21477    Toggle,
21478}
21479#[cfg_attr(feature = "debug", derive(Debug))]
21480#[cfg_attr(feature = "clone", derive(Clone))]
21481#[derive(Deserialize, PartialEq)]
21482pub enum Zigbee929003054301Poweronbehavior {
21483    #[serde(rename = "off")]
21484    Off,
21485    #[serde(rename = "on")]
21486    On,
21487    #[serde(rename = "previous")]
21488    Previous,
21489    #[serde(rename = "toggle")]
21490    Toggle,
21491}
21492#[cfg_attr(feature = "debug", derive(Debug))]
21493#[cfg_attr(feature = "clone", derive(Clone))]
21494#[derive(Deserialize, PartialEq)]
21495pub enum Zigbee929003054501Poweronbehavior {
21496    #[serde(rename = "off")]
21497    Off,
21498    #[serde(rename = "on")]
21499    On,
21500    #[serde(rename = "previous")]
21501    Previous,
21502    #[serde(rename = "toggle")]
21503    Toggle,
21504}
21505#[cfg_attr(feature = "debug", derive(Debug))]
21506#[cfg_attr(feature = "clone", derive(Clone))]
21507#[derive(Deserialize, PartialEq)]
21508pub enum Zigbee929003054601Poweronbehavior {
21509    #[serde(rename = "off")]
21510    Off,
21511    #[serde(rename = "on")]
21512    On,
21513    #[serde(rename = "previous")]
21514    Previous,
21515    #[serde(rename = "toggle")]
21516    Toggle,
21517}
21518#[cfg_attr(feature = "debug", derive(Debug))]
21519#[cfg_attr(feature = "clone", derive(Clone))]
21520#[derive(Deserialize, PartialEq)]
21521pub enum Zigbee929003054701Poweronbehavior {
21522    #[serde(rename = "off")]
21523    Off,
21524    #[serde(rename = "on")]
21525    On,
21526    #[serde(rename = "previous")]
21527    Previous,
21528    #[serde(rename = "toggle")]
21529    Toggle,
21530}
21531#[cfg_attr(feature = "debug", derive(Debug))]
21532#[cfg_attr(feature = "clone", derive(Clone))]
21533#[derive(Deserialize, PartialEq)]
21534pub enum Zigbee929003054801Poweronbehavior {
21535    #[serde(rename = "off")]
21536    Off,
21537    #[serde(rename = "on")]
21538    On,
21539    #[serde(rename = "previous")]
21540    Previous,
21541    #[serde(rename = "toggle")]
21542    Toggle,
21543}
21544#[cfg_attr(feature = "debug", derive(Debug))]
21545#[cfg_attr(feature = "clone", derive(Clone))]
21546#[derive(Deserialize, PartialEq)]
21547pub enum Zigbee929003055201Poweronbehavior {
21548    #[serde(rename = "off")]
21549    Off,
21550    #[serde(rename = "on")]
21551    On,
21552    #[serde(rename = "previous")]
21553    Previous,
21554    #[serde(rename = "toggle")]
21555    Toggle,
21556}
21557#[cfg_attr(feature = "debug", derive(Debug))]
21558#[cfg_attr(feature = "clone", derive(Clone))]
21559#[derive(Deserialize, PartialEq)]
21560pub enum Zigbee929003055401Poweronbehavior {
21561    #[serde(rename = "off")]
21562    Off,
21563    #[serde(rename = "on")]
21564    On,
21565    #[serde(rename = "previous")]
21566    Previous,
21567    #[serde(rename = "toggle")]
21568    Toggle,
21569}
21570#[cfg_attr(feature = "debug", derive(Debug))]
21571#[cfg_attr(feature = "clone", derive(Clone))]
21572#[derive(Deserialize, PartialEq)]
21573pub enum Zigbee929003055501Poweronbehavior {
21574    #[serde(rename = "off")]
21575    Off,
21576    #[serde(rename = "on")]
21577    On,
21578    #[serde(rename = "previous")]
21579    Previous,
21580    #[serde(rename = "toggle")]
21581    Toggle,
21582}
21583#[cfg_attr(feature = "debug", derive(Debug))]
21584#[cfg_attr(feature = "clone", derive(Clone))]
21585#[derive(Deserialize, PartialEq)]
21586pub enum Zigbee929003055701Poweronbehavior {
21587    #[serde(rename = "off")]
21588    Off,
21589    #[serde(rename = "on")]
21590    On,
21591    #[serde(rename = "previous")]
21592    Previous,
21593    #[serde(rename = "toggle")]
21594    Toggle,
21595}
21596#[cfg_attr(feature = "debug", derive(Debug))]
21597#[cfg_attr(feature = "clone", derive(Clone))]
21598#[derive(Deserialize, PartialEq)]
21599pub enum Zigbee929003055801Poweronbehavior {
21600    #[serde(rename = "off")]
21601    Off,
21602    #[serde(rename = "on")]
21603    On,
21604    #[serde(rename = "previous")]
21605    Previous,
21606    #[serde(rename = "toggle")]
21607    Toggle,
21608}
21609#[cfg_attr(feature = "debug", derive(Debug))]
21610#[cfg_attr(feature = "clone", derive(Clone))]
21611#[derive(Deserialize, PartialEq)]
21612pub enum Zigbee929003055901Poweronbehavior {
21613    #[serde(rename = "off")]
21614    Off,
21615    #[serde(rename = "on")]
21616    On,
21617    #[serde(rename = "previous")]
21618    Previous,
21619    #[serde(rename = "toggle")]
21620    Toggle,
21621}
21622#[cfg_attr(feature = "debug", derive(Debug))]
21623#[cfg_attr(feature = "clone", derive(Clone))]
21624#[derive(Deserialize, PartialEq)]
21625pub enum Zigbee929003056001Poweronbehavior {
21626    #[serde(rename = "off")]
21627    Off,
21628    #[serde(rename = "on")]
21629    On,
21630    #[serde(rename = "previous")]
21631    Previous,
21632    #[serde(rename = "toggle")]
21633    Toggle,
21634}
21635#[cfg_attr(feature = "debug", derive(Debug))]
21636#[cfg_attr(feature = "clone", derive(Clone))]
21637#[derive(Deserialize, PartialEq)]
21638pub enum Zigbee929003056701Poweronbehavior {
21639    #[serde(rename = "off")]
21640    Off,
21641    #[serde(rename = "on")]
21642    On,
21643    #[serde(rename = "previous")]
21644    Previous,
21645    #[serde(rename = "toggle")]
21646    Toggle,
21647}
21648#[cfg_attr(feature = "debug", derive(Debug))]
21649#[cfg_attr(feature = "clone", derive(Clone))]
21650#[derive(Deserialize, PartialEq)]
21651pub enum Zigbee929003056901Poweronbehavior {
21652    #[serde(rename = "off")]
21653    Off,
21654    #[serde(rename = "on")]
21655    On,
21656    #[serde(rename = "previous")]
21657    Previous,
21658    #[serde(rename = "toggle")]
21659    Toggle,
21660}
21661#[cfg_attr(feature = "debug", derive(Debug))]
21662#[cfg_attr(feature = "clone", derive(Clone))]
21663#[derive(Deserialize, PartialEq)]
21664pub enum Zigbee9290030674Motionsensitivity {
21665    #[serde(rename = "high")]
21666    High,
21667    #[serde(rename = "low")]
21668    Low,
21669    #[serde(rename = "max")]
21670    Max,
21671    #[serde(rename = "medium")]
21672    Medium,
21673    #[serde(rename = "very_high")]
21674    VeryHigh,
21675}
21676#[cfg_attr(feature = "debug", derive(Debug))]
21677#[cfg_attr(feature = "clone", derive(Clone))]
21678#[derive(Deserialize, PartialEq)]
21679pub enum Zigbee9290030675Motionsensitivity {
21680    #[serde(rename = "high")]
21681    High,
21682    #[serde(rename = "low")]
21683    Low,
21684    #[serde(rename = "max")]
21685    Max,
21686    #[serde(rename = "medium")]
21687    Medium,
21688    #[serde(rename = "very_high")]
21689    VeryHigh,
21690}
21691#[cfg_attr(feature = "debug", derive(Debug))]
21692#[cfg_attr(feature = "clone", derive(Clone))]
21693#[derive(Deserialize, PartialEq)]
21694pub enum Zigbee929003074701Poweronbehavior {
21695    #[serde(rename = "off")]
21696    Off,
21697    #[serde(rename = "on")]
21698    On,
21699    #[serde(rename = "previous")]
21700    Previous,
21701    #[serde(rename = "toggle")]
21702    Toggle,
21703}
21704#[cfg_attr(feature = "debug", derive(Debug))]
21705#[cfg_attr(feature = "clone", derive(Clone))]
21706#[derive(Deserialize, PartialEq)]
21707pub enum Zigbee929003074801Poweronbehavior {
21708    #[serde(rename = "off")]
21709    Off,
21710    #[serde(rename = "on")]
21711    On,
21712    #[serde(rename = "previous")]
21713    Previous,
21714    #[serde(rename = "toggle")]
21715    Toggle,
21716}
21717#[cfg_attr(feature = "debug", derive(Debug))]
21718#[cfg_attr(feature = "clone", derive(Clone))]
21719#[derive(Deserialize, PartialEq)]
21720pub enum Zigbee929003089301Poweronbehavior {
21721    #[serde(rename = "off")]
21722    Off,
21723    #[serde(rename = "on")]
21724    On,
21725    #[serde(rename = "previous")]
21726    Previous,
21727    #[serde(rename = "toggle")]
21728    Toggle,
21729}
21730#[cfg_attr(feature = "debug", derive(Debug))]
21731#[cfg_attr(feature = "clone", derive(Clone))]
21732#[derive(Deserialize, PartialEq)]
21733pub enum Zigbee929003098601Poweronbehavior {
21734    #[serde(rename = "off")]
21735    Off,
21736    #[serde(rename = "on")]
21737    On,
21738    #[serde(rename = "previous")]
21739    Previous,
21740    #[serde(rename = "toggle")]
21741    Toggle,
21742}
21743#[cfg_attr(feature = "debug", derive(Debug))]
21744#[cfg_attr(feature = "clone", derive(Clone))]
21745#[derive(Deserialize, PartialEq)]
21746pub enum Zigbee929003098901Poweronbehavior {
21747    #[serde(rename = "off")]
21748    Off,
21749    #[serde(rename = "on")]
21750    On,
21751    #[serde(rename = "previous")]
21752    Previous,
21753    #[serde(rename = "toggle")]
21754    Toggle,
21755}
21756#[cfg_attr(feature = "debug", derive(Debug))]
21757#[cfg_attr(feature = "clone", derive(Clone))]
21758#[derive(Deserialize, PartialEq)]
21759pub enum Zigbee929003099001Poweronbehavior {
21760    #[serde(rename = "off")]
21761    Off,
21762    #[serde(rename = "on")]
21763    On,
21764    #[serde(rename = "previous")]
21765    Previous,
21766    #[serde(rename = "toggle")]
21767    Toggle,
21768}
21769#[cfg_attr(feature = "debug", derive(Debug))]
21770#[cfg_attr(feature = "clone", derive(Clone))]
21771#[derive(Deserialize, PartialEq)]
21772pub enum Zigbee929003099101Poweronbehavior {
21773    #[serde(rename = "off")]
21774    Off,
21775    #[serde(rename = "on")]
21776    On,
21777    #[serde(rename = "previous")]
21778    Previous,
21779    #[serde(rename = "toggle")]
21780    Toggle,
21781}
21782#[cfg_attr(feature = "debug", derive(Debug))]
21783#[cfg_attr(feature = "clone", derive(Clone))]
21784#[derive(Deserialize, PartialEq)]
21785pub enum Zigbee929003099301Poweronbehavior {
21786    #[serde(rename = "off")]
21787    Off,
21788    #[serde(rename = "on")]
21789    On,
21790    #[serde(rename = "previous")]
21791    Previous,
21792    #[serde(rename = "toggle")]
21793    Toggle,
21794}
21795#[cfg_attr(feature = "debug", derive(Debug))]
21796#[cfg_attr(feature = "clone", derive(Clone))]
21797#[derive(Deserialize, PartialEq)]
21798pub enum Zigbee929003115801Poweronbehavior {
21799    #[serde(rename = "off")]
21800    Off,
21801    #[serde(rename = "on")]
21802    On,
21803    #[serde(rename = "previous")]
21804    Previous,
21805    #[serde(rename = "toggle")]
21806    Toggle,
21807}
21808#[cfg_attr(feature = "debug", derive(Debug))]
21809#[cfg_attr(feature = "clone", derive(Clone))]
21810#[derive(Deserialize, PartialEq)]
21811pub enum Zigbee929003116201Poweronbehavior {
21812    #[serde(rename = "off")]
21813    Off,
21814    #[serde(rename = "on")]
21815    On,
21816    #[serde(rename = "previous")]
21817    Previous,
21818    #[serde(rename = "toggle")]
21819    Toggle,
21820}
21821#[cfg_attr(feature = "debug", derive(Debug))]
21822#[cfg_attr(feature = "clone", derive(Clone))]
21823#[derive(Deserialize, PartialEq)]
21824pub enum Zigbee929003117101Poweronbehavior {
21825    #[serde(rename = "off")]
21826    Off,
21827    #[serde(rename = "on")]
21828    On,
21829    #[serde(rename = "previous")]
21830    Previous,
21831    #[serde(rename = "toggle")]
21832    Toggle,
21833}
21834#[cfg_attr(feature = "debug", derive(Debug))]
21835#[cfg_attr(feature = "clone", derive(Clone))]
21836#[derive(Deserialize, PartialEq)]
21837pub enum Zigbee929003117201Poweronbehavior {
21838    #[serde(rename = "off")]
21839    Off,
21840    #[serde(rename = "on")]
21841    On,
21842    #[serde(rename = "previous")]
21843    Previous,
21844    #[serde(rename = "toggle")]
21845    Toggle,
21846}
21847#[cfg_attr(feature = "debug", derive(Debug))]
21848#[cfg_attr(feature = "clone", derive(Clone))]
21849#[derive(Deserialize, PartialEq)]
21850pub enum Zigbee929003117301Poweronbehavior {
21851    #[serde(rename = "off")]
21852    Off,
21853    #[serde(rename = "on")]
21854    On,
21855    #[serde(rename = "previous")]
21856    Previous,
21857    #[serde(rename = "toggle")]
21858    Toggle,
21859}
21860#[cfg_attr(feature = "debug", derive(Debug))]
21861#[cfg_attr(feature = "clone", derive(Clone))]
21862#[derive(Deserialize, PartialEq)]
21863pub enum Zigbee929003117401Poweronbehavior {
21864    #[serde(rename = "off")]
21865    Off,
21866    #[serde(rename = "on")]
21867    On,
21868    #[serde(rename = "previous")]
21869    Previous,
21870    #[serde(rename = "toggle")]
21871    Toggle,
21872}
21873#[cfg_attr(feature = "debug", derive(Debug))]
21874#[cfg_attr(feature = "clone", derive(Clone))]
21875#[derive(Deserialize, PartialEq)]
21876pub enum Zigbee929003117701Poweronbehavior {
21877    #[serde(rename = "off")]
21878    Off,
21879    #[serde(rename = "on")]
21880    On,
21881    #[serde(rename = "previous")]
21882    Previous,
21883    #[serde(rename = "toggle")]
21884    Toggle,
21885}
21886#[cfg_attr(feature = "debug", derive(Debug))]
21887#[cfg_attr(feature = "clone", derive(Clone))]
21888#[derive(Deserialize, PartialEq)]
21889pub enum Zigbee929003117801Poweronbehavior {
21890    #[serde(rename = "off")]
21891    Off,
21892    #[serde(rename = "on")]
21893    On,
21894    #[serde(rename = "previous")]
21895    Previous,
21896    #[serde(rename = "toggle")]
21897    Toggle,
21898}
21899#[cfg_attr(feature = "debug", derive(Debug))]
21900#[cfg_attr(feature = "clone", derive(Clone))]
21901#[derive(Deserialize, PartialEq)]
21902pub enum Zigbee929003128501Poweronbehavior {
21903    #[serde(rename = "off")]
21904    Off,
21905    #[serde(rename = "on")]
21906    On,
21907    #[serde(rename = "previous")]
21908    Previous,
21909    #[serde(rename = "toggle")]
21910    Toggle,
21911}
21912#[cfg_attr(feature = "debug", derive(Debug))]
21913#[cfg_attr(feature = "clone", derive(Clone))]
21914#[derive(Deserialize, PartialEq)]
21915pub enum Zigbee9290031345Poweronbehavior {
21916    #[serde(rename = "off")]
21917    Off,
21918    #[serde(rename = "on")]
21919    On,
21920    #[serde(rename = "previous")]
21921    Previous,
21922    #[serde(rename = "toggle")]
21923    Toggle,
21924}
21925#[cfg_attr(feature = "debug", derive(Debug))]
21926#[cfg_attr(feature = "clone", derive(Clone))]
21927#[derive(Deserialize, PartialEq)]
21928pub enum Zigbee9290031346Poweronbehavior {
21929    #[serde(rename = "off")]
21930    Off,
21931    #[serde(rename = "on")]
21932    On,
21933    #[serde(rename = "previous")]
21934    Previous,
21935    #[serde(rename = "toggle")]
21936    Toggle,
21937}
21938#[cfg_attr(feature = "debug", derive(Debug))]
21939#[cfg_attr(feature = "clone", derive(Clone))]
21940#[derive(Deserialize, PartialEq)]
21941pub enum Zigbee9290031451Poweronbehavior {
21942    #[serde(rename = "off")]
21943    Off,
21944    #[serde(rename = "on")]
21945    On,
21946    #[serde(rename = "previous")]
21947    Previous,
21948    #[serde(rename = "toggle")]
21949    Toggle,
21950}
21951#[cfg_attr(feature = "debug", derive(Debug))]
21952#[cfg_attr(feature = "clone", derive(Clone))]
21953#[derive(Deserialize, PartialEq)]
21954pub enum Zigbee9290031452Poweronbehavior {
21955    #[serde(rename = "off")]
21956    Off,
21957    #[serde(rename = "on")]
21958    On,
21959    #[serde(rename = "previous")]
21960    Previous,
21961    #[serde(rename = "toggle")]
21962    Toggle,
21963}
21964#[cfg_attr(feature = "debug", derive(Debug))]
21965#[cfg_attr(feature = "clone", derive(Clone))]
21966#[derive(Deserialize, PartialEq)]
21967pub enum Zigbee929003516101Poweronbehavior {
21968    #[serde(rename = "off")]
21969    Off,
21970    #[serde(rename = "on")]
21971    On,
21972    #[serde(rename = "previous")]
21973    Previous,
21974    #[serde(rename = "toggle")]
21975    Toggle,
21976}
21977#[cfg_attr(feature = "debug", derive(Debug))]
21978#[cfg_attr(feature = "clone", derive(Clone))]
21979#[derive(Deserialize, PartialEq)]
21980pub enum Zigbee929003526301Poweronbehavior {
21981    #[serde(rename = "off")]
21982    Off,
21983    #[serde(rename = "on")]
21984    On,
21985    #[serde(rename = "previous")]
21986    Previous,
21987    #[serde(rename = "toggle")]
21988    Toggle,
21989}
21990#[cfg_attr(feature = "debug", derive(Debug))]
21991#[cfg_attr(feature = "clone", derive(Clone))]
21992#[derive(Deserialize, PartialEq)]
21993pub enum Zigbee929003531702Poweronbehavior {
21994    #[serde(rename = "off")]
21995    Off,
21996    #[serde(rename = "on")]
21997    On,
21998    #[serde(rename = "previous")]
21999    Previous,
22000    #[serde(rename = "toggle")]
22001    Toggle,
22002}
22003#[cfg_attr(feature = "debug", derive(Debug))]
22004#[cfg_attr(feature = "clone", derive(Clone))]
22005#[derive(Deserialize, PartialEq)]
22006pub enum Zigbee929003535301Poweronbehavior {
22007    #[serde(rename = "off")]
22008    Off,
22009    #[serde(rename = "on")]
22010    On,
22011    #[serde(rename = "previous")]
22012    Previous,
22013    #[serde(rename = "toggle")]
22014    Toggle,
22015}
22016#[cfg_attr(feature = "debug", derive(Debug))]
22017#[cfg_attr(feature = "clone", derive(Clone))]
22018#[derive(Deserialize, PartialEq)]
22019pub enum Zigbee929003553001Poweronbehavior {
22020    #[serde(rename = "off")]
22021    Off,
22022    #[serde(rename = "on")]
22023    On,
22024    #[serde(rename = "previous")]
22025    Previous,
22026    #[serde(rename = "toggle")]
22027    Toggle,
22028}
22029#[cfg_attr(feature = "debug", derive(Debug))]
22030#[cfg_attr(feature = "clone", derive(Clone))]
22031#[derive(Deserialize, PartialEq)]
22032pub enum ZigbeeLwg004Poweronbehavior {
22033    #[serde(rename = "off")]
22034    Off,
22035    #[serde(rename = "on")]
22036    On,
22037    #[serde(rename = "previous")]
22038    Previous,
22039    #[serde(rename = "toggle")]
22040    Toggle,
22041}
22042#[cfg(all(feature = "last_seen_epoch", feature = "last_seen_iso_8601"))]
22043compile_error!{"Feature last_seen epoch and iso_8601 are mutually exclusive and cannot be enabled together.
22044This was done because it is a global setting in zigbee2mqtt and therefor can't see a reason both would be enabled.
22045If you have a any reason to have both ways enabled please submit an issue to https://gitlab.com/seam345/zigbee2mqtt-types/-/issues"}