zigbee2mqtt_types_vendor_prolight/
lib.rs

1use serde::Deserialize;
2use serde::de::Unexpected;
3use serde::de;
4use serde::Deserializer;
5use zigbee2mqtt_types_base_types::LastSeen;
6/// prolight:5412748727364 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5412748727364.html)
7///
8/// 
9#[cfg_attr(feature = "debug", derive(Debug))]
10#[cfg_attr(feature = "clone", derive(Clone))]
11#[derive(Deserialize)]
12pub struct Zigbee5412748727364 {
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: Zigbee5412748727364Poweronbehavior,
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 = "zigbee5412748727364_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 zigbee5412748727364_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
30where
31    D: Deserializer<'de>,
32{
33    match String::deserialize(deserializer)?.as_ref() {
34        "ON" => Ok(true),
35        "OFF" => Ok(false),
36        other => Err(de::Error::invalid_value(
37            Unexpected::Str(other),
38            &"Value expected was either ON or OFF",
39        )),
40    }
41}
42
43/// prolight:5412748727371 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5412748727371.html)
44///
45/// 
46#[cfg_attr(feature = "debug", derive(Debug))]
47#[cfg_attr(feature = "clone", derive(Clone))]
48#[derive(Deserialize)]
49pub struct Zigbee5412748727371 {
50    ///Brightness of this light
51    pub brightness: f64,
52    ///Color temperature of this light
53    pub color_temp: f64,
54    ///Color temperature after cold power on of this light
55    pub color_temp_startup: f64,
56    ///Link quality (signal strength)
57    pub linkquality: f64,
58    ///Controls the behavior when the device is powered on after power loss
59    pub power_on_behavior: Zigbee5412748727371Poweronbehavior,
60    ///Zigbee herdsman description: "On/off state of this light"
61    ///The string values get converted into boolean with: ON = true and OFF = false
62    #[serde(deserialize_with = "zigbee5412748727371_state_deserializer")]
63    pub state: bool,
64    /// Optional last_seen type, set as a global zigbee2mqtt setting
65    pub last_seen: Option<LastSeen>,
66    /// Optional elapsed type
67    pub elapsed: Option<u64>,
68}
69/// Deserialize bool from String with custom value mapping
70fn zigbee5412748727371_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
71where
72    D: Deserializer<'de>,
73{
74    match String::deserialize(deserializer)?.as_ref() {
75        "ON" => Ok(true),
76        "OFF" => Ok(false),
77        other => Err(de::Error::invalid_value(
78            Unexpected::Str(other),
79            &"Value expected was either ON or OFF",
80        )),
81    }
82}
83
84/// prolight:5412748727388 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5412748727388.html)
85///
86/// 
87#[cfg_attr(feature = "debug", derive(Debug))]
88#[cfg_attr(feature = "clone", derive(Clone))]
89#[derive(Deserialize)]
90pub struct Zigbee5412748727388 {
91    ///Triggered action (e.g. a button click)
92    pub action: Zigbee5412748727388Action,
93    ///Remaining battery in %, can take up to 24 hours before reported.
94    pub battery: f64,
95    ///Link quality (signal strength)
96    pub linkquality: f64,
97    /// Optional last_seen type, set as a global zigbee2mqtt setting
98    pub last_seen: Option<LastSeen>,
99    /// Optional elapsed type
100    pub elapsed: Option<u64>,
101}/// prolight:5412748727395 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5412748727395.html)
102///
103/// 
104#[cfg_attr(feature = "debug", derive(Debug))]
105#[cfg_attr(feature = "clone", derive(Clone))]
106#[derive(Deserialize)]
107pub struct Zigbee5412748727395 {
108    ///Brightness of this light
109    pub brightness: f64,
110    ///Link quality (signal strength)
111    pub linkquality: f64,
112    ///Controls the behavior when the device is powered on after power loss
113    pub power_on_behavior: Zigbee5412748727395Poweronbehavior,
114    ///Zigbee herdsman description: "On/off state of this light"
115    ///The string values get converted into boolean with: ON = true and OFF = false
116    #[serde(deserialize_with = "zigbee5412748727395_state_deserializer")]
117    pub state: bool,
118    /// Optional last_seen type, set as a global zigbee2mqtt setting
119    pub last_seen: Option<LastSeen>,
120    /// Optional elapsed type
121    pub elapsed: Option<u64>,
122}
123/// Deserialize bool from String with custom value mapping
124fn zigbee5412748727395_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
125where
126    D: Deserializer<'de>,
127{
128    match String::deserialize(deserializer)?.as_ref() {
129        "ON" => Ok(true),
130        "OFF" => Ok(false),
131        other => Err(de::Error::invalid_value(
132            Unexpected::Str(other),
133            &"Value expected was either ON or OFF",
134        )),
135    }
136}
137
138/// prolight:5412748727401 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5412748727401.html)
139///
140/// 
141#[cfg_attr(feature = "debug", derive(Debug))]
142#[cfg_attr(feature = "clone", derive(Clone))]
143#[derive(Deserialize)]
144pub struct Zigbee5412748727401 {
145    ///Brightness of this light
146    pub brightness: f64,
147    ///Color temperature of this light
148    pub color_temp: f64,
149    ///Color temperature after cold power on of this light
150    pub color_temp_startup: f64,
151    ///Link quality (signal strength)
152    pub linkquality: f64,
153    ///Controls the behavior when the device is powered on after power loss
154    pub power_on_behavior: Zigbee5412748727401Poweronbehavior,
155    ///Zigbee herdsman description: "On/off state of this light"
156    ///The string values get converted into boolean with: ON = true and OFF = false
157    #[serde(deserialize_with = "zigbee5412748727401_state_deserializer")]
158    pub state: bool,
159    /// Optional last_seen type, set as a global zigbee2mqtt setting
160    pub last_seen: Option<LastSeen>,
161    /// Optional elapsed type
162    pub elapsed: Option<u64>,
163}
164/// Deserialize bool from String with custom value mapping
165fn zigbee5412748727401_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
166where
167    D: Deserializer<'de>,
168{
169    match String::deserialize(deserializer)?.as_ref() {
170        "ON" => Ok(true),
171        "OFF" => Ok(false),
172        other => Err(de::Error::invalid_value(
173            Unexpected::Str(other),
174            &"Value expected was either ON or OFF",
175        )),
176    }
177}
178
179/// prolight:5412748727432 [zigbee2mqtt link](https://www.zigbee2mqtt.io/devices/5412748727432.html)
180///
181/// 
182#[cfg_attr(feature = "debug", derive(Debug))]
183#[cfg_attr(feature = "clone", derive(Clone))]
184#[derive(Deserialize)]
185pub struct Zigbee5412748727432 {
186    ///Brightness of this light
187    pub brightness: f64,
188    ///Link quality (signal strength)
189    pub linkquality: f64,
190    ///Controls the behavior when the device is powered on after power loss
191    pub power_on_behavior: Zigbee5412748727432Poweronbehavior,
192    ///Zigbee herdsman description: "On/off state of this light"
193    ///The string values get converted into boolean with: ON = true and OFF = false
194    #[serde(deserialize_with = "zigbee5412748727432_state_deserializer")]
195    pub state: bool,
196    /// Optional last_seen type, set as a global zigbee2mqtt setting
197    pub last_seen: Option<LastSeen>,
198    /// Optional elapsed type
199    pub elapsed: Option<u64>,
200}
201/// Deserialize bool from String with custom value mapping
202fn zigbee5412748727432_state_deserializer<'de, D>(deserializer: D) -> Result<bool, D::Error>
203where
204    D: Deserializer<'de>,
205{
206    match String::deserialize(deserializer)?.as_ref() {
207        "ON" => Ok(true),
208        "OFF" => Ok(false),
209        other => Err(de::Error::invalid_value(
210            Unexpected::Str(other),
211            &"Value expected was either ON or OFF",
212        )),
213    }
214}
215
216
217#[cfg_attr(feature = "debug", derive(Debug))]
218#[cfg_attr(feature = "clone", derive(Clone))]
219#[derive(Deserialize, PartialEq)]
220pub enum Zigbee5412748727364Poweronbehavior {
221    #[serde(rename = "off")]
222    Off,
223    #[serde(rename = "on")]
224    On,
225    #[serde(rename = "previous")]
226    Previous,
227    #[serde(rename = "toggle")]
228    Toggle,
229}
230#[cfg_attr(feature = "debug", derive(Debug))]
231#[cfg_attr(feature = "clone", derive(Clone))]
232#[derive(Deserialize, PartialEq)]
233pub enum Zigbee5412748727371Poweronbehavior {
234    #[serde(rename = "off")]
235    Off,
236    #[serde(rename = "on")]
237    On,
238    #[serde(rename = "previous")]
239    Previous,
240    #[serde(rename = "toggle")]
241    Toggle,
242}
243#[cfg_attr(feature = "debug", derive(Debug))]
244#[cfg_attr(feature = "clone", derive(Clone))]
245#[derive(Deserialize, PartialEq)]
246pub enum Zigbee5412748727388Action {
247    #[serde(rename = "brightness_move_down")]
248    BrightnessMoveDown,
249    #[serde(rename = "brightness_move_to_level")]
250    BrightnessMoveToLevel,
251    #[serde(rename = "brightness_move_up")]
252    BrightnessMoveUp,
253    #[serde(rename = "brightness_stop")]
254    BrightnessStop,
255    #[serde(rename = "color_move")]
256    ColorMove,
257    #[serde(rename = "color_temperature_move")]
258    ColorTemperatureMove,
259    #[serde(rename = "color_temperature_move_down")]
260    ColorTemperatureMoveDown,
261    #[serde(rename = "color_temperature_move_up")]
262    ColorTemperatureMoveUp,
263    #[serde(rename = "off")]
264    Off,
265    #[serde(rename = "on")]
266    On,
267}
268#[cfg_attr(feature = "debug", derive(Debug))]
269#[cfg_attr(feature = "clone", derive(Clone))]
270#[derive(Deserialize, PartialEq)]
271pub enum Zigbee5412748727395Poweronbehavior {
272    #[serde(rename = "off")]
273    Off,
274    #[serde(rename = "on")]
275    On,
276    #[serde(rename = "previous")]
277    Previous,
278    #[serde(rename = "toggle")]
279    Toggle,
280}
281#[cfg_attr(feature = "debug", derive(Debug))]
282#[cfg_attr(feature = "clone", derive(Clone))]
283#[derive(Deserialize, PartialEq)]
284pub enum Zigbee5412748727401Poweronbehavior {
285    #[serde(rename = "off")]
286    Off,
287    #[serde(rename = "on")]
288    On,
289    #[serde(rename = "previous")]
290    Previous,
291    #[serde(rename = "toggle")]
292    Toggle,
293}
294#[cfg_attr(feature = "debug", derive(Debug))]
295#[cfg_attr(feature = "clone", derive(Clone))]
296#[derive(Deserialize, PartialEq)]
297pub enum Zigbee5412748727432Poweronbehavior {
298    #[serde(rename = "off")]
299    Off,
300    #[serde(rename = "on")]
301    On,
302    #[serde(rename = "previous")]
303    Previous,
304    #[serde(rename = "toggle")]
305    Toggle,
306}
307#[cfg(all(feature = "last_seen_epoch", feature = "last_seen_iso_8601"))]
308compile_error!{"Feature last_seen epoch and iso_8601 are mutually exclusive and cannot be enabled together.
309This was done because it is a global setting in zigbee2mqtt and therefor can't see a reason both would be enabled.
310If you have a any reason to have both ways enabled please submit an issue to https://gitlab.com/seam345/zigbee2mqtt-types/-/issues"}