1use crate::{
15    byte_converter::*, converting_callback_receiver::ConvertingCallbackReceiver, converting_receiver::ConvertingReceiver, device::*,
16    ip_connection::GetRequestSender,
17};
18pub enum HumidityV2BrickletFunction {
19    GetHumidity,
20    SetHumidityCallbackConfiguration,
21    GetHumidityCallbackConfiguration,
22    GetTemperature,
23    SetTemperatureCallbackConfiguration,
24    GetTemperatureCallbackConfiguration,
25    SetHeaterConfiguration,
26    GetHeaterConfiguration,
27    SetMovingAverageConfiguration,
28    GetMovingAverageConfiguration,
29    SetSamplesPerSecond,
30    GetSamplesPerSecond,
31    GetSpitfpErrorCount,
32    SetBootloaderMode,
33    GetBootloaderMode,
34    SetWriteFirmwarePointer,
35    WriteFirmware,
36    SetStatusLedConfig,
37    GetStatusLedConfig,
38    GetChipTemperature,
39    Reset,
40    WriteUid,
41    ReadUid,
42    GetIdentity,
43    CallbackHumidity,
44    CallbackTemperature,
45}
46impl From<HumidityV2BrickletFunction> for u8 {
47    fn from(fun: HumidityV2BrickletFunction) -> Self {
48        match fun {
49            HumidityV2BrickletFunction::GetHumidity => 1,
50            HumidityV2BrickletFunction::SetHumidityCallbackConfiguration => 2,
51            HumidityV2BrickletFunction::GetHumidityCallbackConfiguration => 3,
52            HumidityV2BrickletFunction::GetTemperature => 5,
53            HumidityV2BrickletFunction::SetTemperatureCallbackConfiguration => 6,
54            HumidityV2BrickletFunction::GetTemperatureCallbackConfiguration => 7,
55            HumidityV2BrickletFunction::SetHeaterConfiguration => 9,
56            HumidityV2BrickletFunction::GetHeaterConfiguration => 10,
57            HumidityV2BrickletFunction::SetMovingAverageConfiguration => 11,
58            HumidityV2BrickletFunction::GetMovingAverageConfiguration => 12,
59            HumidityV2BrickletFunction::SetSamplesPerSecond => 13,
60            HumidityV2BrickletFunction::GetSamplesPerSecond => 14,
61            HumidityV2BrickletFunction::GetSpitfpErrorCount => 234,
62            HumidityV2BrickletFunction::SetBootloaderMode => 235,
63            HumidityV2BrickletFunction::GetBootloaderMode => 236,
64            HumidityV2BrickletFunction::SetWriteFirmwarePointer => 237,
65            HumidityV2BrickletFunction::WriteFirmware => 238,
66            HumidityV2BrickletFunction::SetStatusLedConfig => 239,
67            HumidityV2BrickletFunction::GetStatusLedConfig => 240,
68            HumidityV2BrickletFunction::GetChipTemperature => 242,
69            HumidityV2BrickletFunction::Reset => 243,
70            HumidityV2BrickletFunction::WriteUid => 248,
71            HumidityV2BrickletFunction::ReadUid => 249,
72            HumidityV2BrickletFunction::GetIdentity => 255,
73            HumidityV2BrickletFunction::CallbackHumidity => 4,
74            HumidityV2BrickletFunction::CallbackTemperature => 8,
75        }
76    }
77}
78pub const HUMIDITY_V2_BRICKLET_THRESHOLD_OPTION_OFF: char = 'x';
79pub const HUMIDITY_V2_BRICKLET_THRESHOLD_OPTION_OUTSIDE: char = 'o';
80pub const HUMIDITY_V2_BRICKLET_THRESHOLD_OPTION_INSIDE: char = 'i';
81pub const HUMIDITY_V2_BRICKLET_THRESHOLD_OPTION_SMALLER: char = '<';
82pub const HUMIDITY_V2_BRICKLET_THRESHOLD_OPTION_GREATER: char = '>';
83pub const HUMIDITY_V2_BRICKLET_HEATER_CONFIG_DISABLED: u8 = 0;
84pub const HUMIDITY_V2_BRICKLET_HEATER_CONFIG_ENABLED: u8 = 1;
85pub const HUMIDITY_V2_BRICKLET_SPS_20: u8 = 0;
86pub const HUMIDITY_V2_BRICKLET_SPS_10: u8 = 1;
87pub const HUMIDITY_V2_BRICKLET_SPS_5: u8 = 2;
88pub const HUMIDITY_V2_BRICKLET_SPS_1: u8 = 3;
89pub const HUMIDITY_V2_BRICKLET_SPS_02: u8 = 4;
90pub const HUMIDITY_V2_BRICKLET_SPS_01: u8 = 5;
91pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_MODE_BOOTLOADER: u8 = 0;
92pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_MODE_FIRMWARE: u8 = 1;
93pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_MODE_BOOTLOADER_WAIT_FOR_REBOOT: u8 = 2;
94pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_MODE_FIRMWARE_WAIT_FOR_REBOOT: u8 = 3;
95pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_MODE_FIRMWARE_WAIT_FOR_ERASE_AND_REBOOT: u8 = 4;
96pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_STATUS_OK: u8 = 0;
97pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_STATUS_INVALID_MODE: u8 = 1;
98pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_STATUS_NO_CHANGE: u8 = 2;
99pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_STATUS_ENTRY_FUNCTION_NOT_PRESENT: u8 = 3;
100pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_STATUS_DEVICE_IDENTIFIER_INCORRECT: u8 = 4;
101pub const HUMIDITY_V2_BRICKLET_BOOTLOADER_STATUS_CRC_MISMATCH: u8 = 5;
102pub const HUMIDITY_V2_BRICKLET_STATUS_LED_CONFIG_OFF: u8 = 0;
103pub const HUMIDITY_V2_BRICKLET_STATUS_LED_CONFIG_ON: u8 = 1;
104pub const HUMIDITY_V2_BRICKLET_STATUS_LED_CONFIG_SHOW_HEARTBEAT: u8 = 2;
105pub const HUMIDITY_V2_BRICKLET_STATUS_LED_CONFIG_SHOW_STATUS: u8 = 3;
106
107#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
108pub struct HumidityCallbackConfiguration {
109    pub period: u32,
110    pub value_has_to_change: bool,
111    pub option: char,
112    pub min: u16,
113    pub max: u16,
114}
115impl FromByteSlice for HumidityCallbackConfiguration {
116    fn bytes_expected() -> usize { 10 }
117    fn from_le_byte_slice(bytes: &[u8]) -> HumidityCallbackConfiguration {
118        HumidityCallbackConfiguration {
119            period: <u32>::from_le_byte_slice(&bytes[0..4]),
120            value_has_to_change: <bool>::from_le_byte_slice(&bytes[4..5]),
121            option: <char>::from_le_byte_slice(&bytes[5..6]),
122            min: <u16>::from_le_byte_slice(&bytes[6..8]),
123            max: <u16>::from_le_byte_slice(&bytes[8..10]),
124        }
125    }
126}
127
128#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
129pub struct TemperatureCallbackConfiguration {
130    pub period: u32,
131    pub value_has_to_change: bool,
132    pub option: char,
133    pub min: i16,
134    pub max: i16,
135}
136impl FromByteSlice for TemperatureCallbackConfiguration {
137    fn bytes_expected() -> usize { 10 }
138    fn from_le_byte_slice(bytes: &[u8]) -> TemperatureCallbackConfiguration {
139        TemperatureCallbackConfiguration {
140            period: <u32>::from_le_byte_slice(&bytes[0..4]),
141            value_has_to_change: <bool>::from_le_byte_slice(&bytes[4..5]),
142            option: <char>::from_le_byte_slice(&bytes[5..6]),
143            min: <i16>::from_le_byte_slice(&bytes[6..8]),
144            max: <i16>::from_le_byte_slice(&bytes[8..10]),
145        }
146    }
147}
148
149#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
150pub struct MovingAverageConfiguration {
151    pub moving_average_length_humidity: u16,
152    pub moving_average_length_temperature: u16,
153}
154impl FromByteSlice for MovingAverageConfiguration {
155    fn bytes_expected() -> usize { 4 }
156    fn from_le_byte_slice(bytes: &[u8]) -> MovingAverageConfiguration {
157        MovingAverageConfiguration {
158            moving_average_length_humidity: <u16>::from_le_byte_slice(&bytes[0..2]),
159            moving_average_length_temperature: <u16>::from_le_byte_slice(&bytes[2..4]),
160        }
161    }
162}
163
164#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
165pub struct SpitfpErrorCount {
166    pub error_count_ack_checksum: u32,
167    pub error_count_message_checksum: u32,
168    pub error_count_frame: u32,
169    pub error_count_overflow: u32,
170}
171impl FromByteSlice for SpitfpErrorCount {
172    fn bytes_expected() -> usize { 16 }
173    fn from_le_byte_slice(bytes: &[u8]) -> SpitfpErrorCount {
174        SpitfpErrorCount {
175            error_count_ack_checksum: <u32>::from_le_byte_slice(&bytes[0..4]),
176            error_count_message_checksum: <u32>::from_le_byte_slice(&bytes[4..8]),
177            error_count_frame: <u32>::from_le_byte_slice(&bytes[8..12]),
178            error_count_overflow: <u32>::from_le_byte_slice(&bytes[12..16]),
179        }
180    }
181}
182
183#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
184pub struct Identity {
185    pub uid: String,
186    pub connected_uid: String,
187    pub position: char,
188    pub hardware_version: [u8; 3],
189    pub firmware_version: [u8; 3],
190    pub device_identifier: u16,
191}
192impl FromByteSlice for Identity {
193    fn bytes_expected() -> usize { 25 }
194    fn from_le_byte_slice(bytes: &[u8]) -> Identity {
195        Identity {
196            uid: <String>::from_le_byte_slice(&bytes[0..8]),
197            connected_uid: <String>::from_le_byte_slice(&bytes[8..16]),
198            position: <char>::from_le_byte_slice(&bytes[16..17]),
199            hardware_version: <[u8; 3]>::from_le_byte_slice(&bytes[17..20]),
200            firmware_version: <[u8; 3]>::from_le_byte_slice(&bytes[20..23]),
201            device_identifier: <u16>::from_le_byte_slice(&bytes[23..25]),
202        }
203    }
204}
205
206#[derive(Clone)]
208pub struct HumidityV2Bricklet {
209    device: Device,
210}
211impl HumidityV2Bricklet {
212    pub const DEVICE_IDENTIFIER: u16 = 283;
213    pub const DEVICE_DISPLAY_NAME: &'static str = "Humidity Bricklet 2.0";
214    pub fn new<T: GetRequestSender>(uid: &str, req_sender: T) -> HumidityV2Bricklet {
216        let mut result = HumidityV2Bricklet { device: Device::new([2, 0, 2], uid, req_sender, 0) };
217        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetHumidity) as usize] = ResponseExpectedFlag::AlwaysTrue;
218        result.device.response_expected[u8::from(HumidityV2BrickletFunction::SetHumidityCallbackConfiguration) as usize] =
219            ResponseExpectedFlag::True;
220        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetHumidityCallbackConfiguration) as usize] =
221            ResponseExpectedFlag::AlwaysTrue;
222        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetTemperature) as usize] = ResponseExpectedFlag::AlwaysTrue;
223        result.device.response_expected[u8::from(HumidityV2BrickletFunction::SetTemperatureCallbackConfiguration) as usize] =
224            ResponseExpectedFlag::True;
225        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetTemperatureCallbackConfiguration) as usize] =
226            ResponseExpectedFlag::AlwaysTrue;
227        result.device.response_expected[u8::from(HumidityV2BrickletFunction::SetHeaterConfiguration) as usize] =
228            ResponseExpectedFlag::False;
229        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetHeaterConfiguration) as usize] =
230            ResponseExpectedFlag::AlwaysTrue;
231        result.device.response_expected[u8::from(HumidityV2BrickletFunction::SetMovingAverageConfiguration) as usize] =
232            ResponseExpectedFlag::False;
233        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetMovingAverageConfiguration) as usize] =
234            ResponseExpectedFlag::AlwaysTrue;
235        result.device.response_expected[u8::from(HumidityV2BrickletFunction::SetSamplesPerSecond) as usize] = ResponseExpectedFlag::False;
236        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetSamplesPerSecond) as usize] =
237            ResponseExpectedFlag::AlwaysTrue;
238        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetSpitfpErrorCount) as usize] =
239            ResponseExpectedFlag::AlwaysTrue;
240        result.device.response_expected[u8::from(HumidityV2BrickletFunction::SetBootloaderMode) as usize] =
241            ResponseExpectedFlag::AlwaysTrue;
242        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetBootloaderMode) as usize] =
243            ResponseExpectedFlag::AlwaysTrue;
244        result.device.response_expected[u8::from(HumidityV2BrickletFunction::SetWriteFirmwarePointer) as usize] =
245            ResponseExpectedFlag::False;
246        result.device.response_expected[u8::from(HumidityV2BrickletFunction::WriteFirmware) as usize] = ResponseExpectedFlag::AlwaysTrue;
247        result.device.response_expected[u8::from(HumidityV2BrickletFunction::SetStatusLedConfig) as usize] = ResponseExpectedFlag::False;
248        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetStatusLedConfig) as usize] =
249            ResponseExpectedFlag::AlwaysTrue;
250        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetChipTemperature) as usize] =
251            ResponseExpectedFlag::AlwaysTrue;
252        result.device.response_expected[u8::from(HumidityV2BrickletFunction::Reset) as usize] = ResponseExpectedFlag::False;
253        result.device.response_expected[u8::from(HumidityV2BrickletFunction::WriteUid) as usize] = ResponseExpectedFlag::False;
254        result.device.response_expected[u8::from(HumidityV2BrickletFunction::ReadUid) as usize] = ResponseExpectedFlag::AlwaysTrue;
255        result.device.response_expected[u8::from(HumidityV2BrickletFunction::GetIdentity) as usize] = ResponseExpectedFlag::AlwaysTrue;
256        result
257    }
258
259    pub fn get_response_expected(&mut self, fun: HumidityV2BrickletFunction) -> Result<bool, GetResponseExpectedError> {
274        self.device.get_response_expected(u8::from(fun))
275    }
276
277    pub fn set_response_expected(
286        &mut self,
287        fun: HumidityV2BrickletFunction,
288        response_expected: bool,
289    ) -> Result<(), SetResponseExpectedError> {
290        self.device.set_response_expected(u8::from(fun), response_expected)
291    }
292
293    pub fn set_response_expected_all(&mut self, response_expected: bool) { self.device.set_response_expected_all(response_expected) }
295
296    pub fn get_api_version(&self) -> [u8; 3] { self.device.api_version }
299
300    pub fn get_humidity_callback_receiver(&self) -> ConvertingCallbackReceiver<u16> {
308        self.device.get_callback_receiver(u8::from(HumidityV2BrickletFunction::CallbackHumidity))
309    }
310
311    pub fn get_temperature_callback_receiver(&self) -> ConvertingCallbackReceiver<i16> {
316        self.device.get_callback_receiver(u8::from(HumidityV2BrickletFunction::CallbackTemperature))
317    }
318
319    pub fn get_humidity(&self) -> ConvertingReceiver<u16> {
326        let payload = vec![0; 0];
327
328        self.device.get(u8::from(HumidityV2BrickletFunction::GetHumidity), payload)
329    }
330
331    pub fn set_humidity_callback_configuration(
364        &self,
365        period: u32,
366        value_has_to_change: bool,
367        option: char,
368        min: u16,
369        max: u16,
370    ) -> ConvertingReceiver<()> {
371        let mut payload = vec![0; 10];
372        payload[0..4].copy_from_slice(&<u32>::to_le_byte_vec(period));
373        payload[4..5].copy_from_slice(&<bool>::to_le_byte_vec(value_has_to_change));
374        payload[5..6].copy_from_slice(&<char>::to_le_byte_vec(option));
375        payload[6..8].copy_from_slice(&<u16>::to_le_byte_vec(min));
376        payload[8..10].copy_from_slice(&<u16>::to_le_byte_vec(max));
377
378        self.device.set(u8::from(HumidityV2BrickletFunction::SetHumidityCallbackConfiguration), payload)
379    }
380
381    pub fn get_humidity_callback_configuration(&self) -> ConvertingReceiver<HumidityCallbackConfiguration> {
390        let payload = vec![0; 0];
391
392        self.device.get(u8::from(HumidityV2BrickletFunction::GetHumidityCallbackConfiguration), payload)
393    }
394
395    pub fn get_temperature(&self) -> ConvertingReceiver<i16> {
402        let payload = vec![0; 0];
403
404        self.device.get(u8::from(HumidityV2BrickletFunction::GetTemperature), payload)
405    }
406
407    pub fn set_temperature_callback_configuration(
440        &self,
441        period: u32,
442        value_has_to_change: bool,
443        option: char,
444        min: i16,
445        max: i16,
446    ) -> ConvertingReceiver<()> {
447        let mut payload = vec![0; 10];
448        payload[0..4].copy_from_slice(&<u32>::to_le_byte_vec(period));
449        payload[4..5].copy_from_slice(&<bool>::to_le_byte_vec(value_has_to_change));
450        payload[5..6].copy_from_slice(&<char>::to_le_byte_vec(option));
451        payload[6..8].copy_from_slice(&<i16>::to_le_byte_vec(min));
452        payload[8..10].copy_from_slice(&<i16>::to_le_byte_vec(max));
453
454        self.device.set(u8::from(HumidityV2BrickletFunction::SetTemperatureCallbackConfiguration), payload)
455    }
456
457    pub fn get_temperature_callback_configuration(&self) -> ConvertingReceiver<TemperatureCallbackConfiguration> {
466        let payload = vec![0; 0];
467
468        self.device.get(u8::from(HumidityV2BrickletFunction::GetTemperatureCallbackConfiguration), payload)
469    }
470
471    pub fn set_heater_configuration(&self, heater_config: u8) -> ConvertingReceiver<()> {
478        let mut payload = vec![0; 1];
479        payload[0..1].copy_from_slice(&<u8>::to_le_byte_vec(heater_config));
480
481        self.device.set(u8::from(HumidityV2BrickletFunction::SetHeaterConfiguration), payload)
482    }
483
484    pub fn get_heater_configuration(&self) -> ConvertingReceiver<u8> {
490        let payload = vec![0; 0];
491
492        self.device.get(u8::from(HumidityV2BrickletFunction::GetHeaterConfiguration), payload)
493    }
494
495    pub fn set_moving_average_configuration(
510        &self,
511        moving_average_length_humidity: u16,
512        moving_average_length_temperature: u16,
513    ) -> ConvertingReceiver<()> {
514        let mut payload = vec![0; 4];
515        payload[0..2].copy_from_slice(&<u16>::to_le_byte_vec(moving_average_length_humidity));
516        payload[2..4].copy_from_slice(&<u16>::to_le_byte_vec(moving_average_length_temperature));
517
518        self.device.set(u8::from(HumidityV2BrickletFunction::SetMovingAverageConfiguration), payload)
519    }
520
521    pub fn get_moving_average_configuration(&self) -> ConvertingReceiver<MovingAverageConfiguration> {
523        let payload = vec![0; 0];
524
525        self.device.get(u8::from(HumidityV2BrickletFunction::GetMovingAverageConfiguration), payload)
526    }
527
528    pub fn set_samples_per_second(&self, sps: u8) -> ConvertingReceiver<()> {
549        let mut payload = vec![0; 1];
550        payload[0..1].copy_from_slice(&<u8>::to_le_byte_vec(sps));
551
552        self.device.set(u8::from(HumidityV2BrickletFunction::SetSamplesPerSecond), payload)
553    }
554
555    pub fn get_samples_per_second(&self) -> ConvertingReceiver<u8> {
568        let payload = vec![0; 0];
569
570        self.device.get(u8::from(HumidityV2BrickletFunction::GetSamplesPerSecond), payload)
571    }
572
573    pub fn get_spitfp_error_count(&self) -> ConvertingReceiver<SpitfpErrorCount> {
585        let payload = vec![0; 0];
586
587        self.device.get(u8::from(HumidityV2BrickletFunction::GetSpitfpErrorCount), payload)
588    }
589
590    pub fn set_bootloader_mode(&self, mode: u8) -> ConvertingReceiver<u8> {
613        let mut payload = vec![0; 1];
614        payload[0..1].copy_from_slice(&<u8>::to_le_byte_vec(mode));
615
616        self.device.get(u8::from(HumidityV2BrickletFunction::SetBootloaderMode), payload)
617    }
618
619    pub fn get_bootloader_mode(&self) -> ConvertingReceiver<u8> {
628        let payload = vec![0; 0];
629
630        self.device.get(u8::from(HumidityV2BrickletFunction::GetBootloaderMode), payload)
631    }
632
633    pub fn set_write_firmware_pointer(&self, pointer: u32) -> ConvertingReceiver<()> {
640        let mut payload = vec![0; 4];
641        payload[0..4].copy_from_slice(&<u32>::to_le_byte_vec(pointer));
642
643        self.device.set(u8::from(HumidityV2BrickletFunction::SetWriteFirmwarePointer), payload)
644    }
645
646    pub fn write_firmware(&self, data: [u8; 64]) -> ConvertingReceiver<u8> {
655        let mut payload = vec![0; 64];
656        payload[0..64].copy_from_slice(&<[u8; 64]>::to_le_byte_vec(data));
657
658        self.device.get(u8::from(HumidityV2BrickletFunction::WriteFirmware), payload)
659    }
660
661    pub fn set_status_led_config(&self, config: u8) -> ConvertingReceiver<()> {
675        let mut payload = vec![0; 1];
676        payload[0..1].copy_from_slice(&<u8>::to_le_byte_vec(config));
677
678        self.device.set(u8::from(HumidityV2BrickletFunction::SetStatusLedConfig), payload)
679    }
680
681    pub fn get_status_led_config(&self) -> ConvertingReceiver<u8> {
689        let payload = vec![0; 0];
690
691        self.device.get(u8::from(HumidityV2BrickletFunction::GetStatusLedConfig), payload)
692    }
693
694    pub fn get_chip_temperature(&self) -> ConvertingReceiver<i16> {
701        let payload = vec![0; 0];
702
703        self.device.get(u8::from(HumidityV2BrickletFunction::GetChipTemperature), payload)
704    }
705
706    pub fn reset(&self) -> ConvertingReceiver<()> {
713        let payload = vec![0; 0];
714
715        self.device.set(u8::from(HumidityV2BrickletFunction::Reset), payload)
716    }
717
718    pub fn write_uid(&self, uid: u32) -> ConvertingReceiver<()> {
724        let mut payload = vec![0; 4];
725        payload[0..4].copy_from_slice(&<u32>::to_le_byte_vec(uid));
726
727        self.device.set(u8::from(HumidityV2BrickletFunction::WriteUid), payload)
728    }
729
730    pub fn read_uid(&self) -> ConvertingReceiver<u32> {
733        let payload = vec![0; 0];
734
735        self.device.get(u8::from(HumidityV2BrickletFunction::ReadUid), payload)
736    }
737
738    pub fn get_identity(&self) -> ConvertingReceiver<Identity> {
749        let payload = vec![0; 0];
750
751        self.device.get(u8::from(HumidityV2BrickletFunction::GetIdentity), payload)
752    }
753}