esphome_native_api/proto/
_.rs

1// This file is @generated by prost-build.
2#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3pub struct Void {}
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5#[repr(i32)]
6pub enum ApiSourceType {
7    SourceBoth = 0,
8    SourceServer = 1,
9    SourceClient = 2,
10}
11impl ApiSourceType {
12    /// String value of the enum field names used in the ProtoBuf definition.
13    ///
14    /// The values are not transformed in any way and thus are considered stable
15    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16    pub fn as_str_name(&self) -> &'static str {
17        match self {
18            Self::SourceBoth => "SOURCE_BOTH",
19            Self::SourceServer => "SOURCE_SERVER",
20            Self::SourceClient => "SOURCE_CLIENT",
21        }
22    }
23    /// Creates an enum from field names used in the ProtoBuf definition.
24    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25        match value {
26            "SOURCE_BOTH" => Some(Self::SourceBoth),
27            "SOURCE_SERVER" => Some(Self::SourceServer),
28            "SOURCE_CLIENT" => Some(Self::SourceClient),
29            _ => None,
30        }
31    }
32}
33/// Message sent at the beginning of each connection
34/// Can only be sent by the client and only at the beginning of the connection
35#[derive(Clone, PartialEq, ::prost::Message)]
36pub struct HelloRequest {
37    /// Description of client (like User Agent)
38    /// For example "Home Assistant"
39    /// Not strictly necessary to send but nice for debugging
40    /// purposes.
41    #[prost(string, tag = "1")]
42    pub client_info: ::prost::alloc::string::String,
43    #[prost(uint32, tag = "2")]
44    pub api_version_major: u32,
45    #[prost(uint32, tag = "3")]
46    pub api_version_minor: u32,
47}
48/// Confirmation of successful connection request.
49/// Can only be sent by the server and only at the beginning of the connection
50#[derive(Clone, PartialEq, ::prost::Message)]
51pub struct HelloResponse {
52    /// The version of the API to use. The _client_ (for example Home Assistant) needs to check
53    /// for compatibility and if necessary adopt to an older API.
54    /// Major is for breaking changes in the base protocol - a mismatch will lead to immediate disconnect_client_
55    /// Minor is for breaking changes in individual messages - a mismatch will lead to a warning message
56    #[prost(uint32, tag = "1")]
57    pub api_version_major: u32,
58    #[prost(uint32, tag = "2")]
59    pub api_version_minor: u32,
60    /// A string identifying the server (ESP); like client info this may be empty
61    /// and only exists for debugging/logging purposes.
62    /// For example "ESPHome v1.10.0 on ESP8266"
63    #[prost(string, tag = "3")]
64    pub server_info: ::prost::alloc::string::String,
65    /// The name of the server (App.get_name())
66    #[prost(string, tag = "4")]
67    pub name: ::prost::alloc::string::String,
68}
69/// Message sent at the beginning of each connection to authenticate the client
70/// Can only be sent by the client and only at the beginning of the connection
71#[derive(Clone, PartialEq, ::prost::Message)]
72pub struct ConnectRequest {
73    /// The password to log in with
74    #[prost(string, tag = "1")]
75    pub password: ::prost::alloc::string::String,
76}
77/// Confirmation of successful connection. After this the connection is available for all traffic.
78/// Can only be sent by the server and only at the beginning of the connection
79#[derive(Clone, Copy, PartialEq, ::prost::Message)]
80pub struct ConnectResponse {
81    #[prost(bool, tag = "1")]
82    pub invalid_password: bool,
83}
84/// Request to close the connection.
85/// Can be sent by both the client and server
86#[derive(Clone, Copy, PartialEq, ::prost::Message)]
87pub struct DisconnectRequest {}
88#[derive(Clone, Copy, PartialEq, ::prost::Message)]
89pub struct DisconnectResponse {}
90#[derive(Clone, Copy, PartialEq, ::prost::Message)]
91pub struct PingRequest {}
92#[derive(Clone, Copy, PartialEq, ::prost::Message)]
93pub struct PingResponse {}
94#[derive(Clone, Copy, PartialEq, ::prost::Message)]
95pub struct DeviceInfoRequest {}
96#[derive(Clone, PartialEq, ::prost::Message)]
97pub struct DeviceInfoResponse {
98    #[prost(bool, tag = "1")]
99    pub uses_password: bool,
100    /// The name of the node, given by "App.set_name()"
101    #[prost(string, tag = "2")]
102    pub name: ::prost::alloc::string::String,
103    /// The mac address of the device. For example "AC:BC:32:89:0E:A9"
104    #[prost(string, tag = "3")]
105    pub mac_address: ::prost::alloc::string::String,
106    /// A string describing the ESPHome version. For example "1.10.0"
107    #[prost(string, tag = "4")]
108    pub esphome_version: ::prost::alloc::string::String,
109    /// A string describing the date of compilation, this is generated by the compiler
110    /// and therefore may not be in the same format all the time.
111    /// If the user isn't using ESPHome, this will also not be set.
112    #[prost(string, tag = "5")]
113    pub compilation_time: ::prost::alloc::string::String,
114    /// The model of the board. For example NodeMCU
115    #[prost(string, tag = "6")]
116    pub model: ::prost::alloc::string::String,
117    #[prost(bool, tag = "7")]
118    pub has_deep_sleep: bool,
119    /// The esphome project details if set
120    #[prost(string, tag = "8")]
121    pub project_name: ::prost::alloc::string::String,
122    #[prost(string, tag = "9")]
123    pub project_version: ::prost::alloc::string::String,
124    #[prost(uint32, tag = "10")]
125    pub webserver_port: u32,
126    #[prost(uint32, tag = "11")]
127    pub legacy_bluetooth_proxy_version: u32,
128    #[prost(uint32, tag = "15")]
129    pub bluetooth_proxy_feature_flags: u32,
130    #[prost(string, tag = "12")]
131    pub manufacturer: ::prost::alloc::string::String,
132    #[prost(string, tag = "13")]
133    pub friendly_name: ::prost::alloc::string::String,
134    #[prost(uint32, tag = "14")]
135    pub legacy_voice_assistant_version: u32,
136    #[prost(uint32, tag = "17")]
137    pub voice_assistant_feature_flags: u32,
138    #[prost(string, tag = "16")]
139    pub suggested_area: ::prost::alloc::string::String,
140    /// The Bluetooth mac address of the device. For example "AC:BC:32:89:0E:AA"
141    #[prost(string, tag = "18")]
142    pub bluetooth_mac_address: ::prost::alloc::string::String,
143}
144#[derive(Clone, Copy, PartialEq, ::prost::Message)]
145pub struct ListEntitiesRequest {}
146#[derive(Clone, Copy, PartialEq, ::prost::Message)]
147pub struct ListEntitiesDoneResponse {}
148#[derive(Clone, Copy, PartialEq, ::prost::Message)]
149pub struct SubscribeStatesRequest {}
150/// ==================== BINARY SENSOR ====================
151#[derive(Clone, PartialEq, ::prost::Message)]
152pub struct ListEntitiesBinarySensorResponse {
153    #[prost(string, tag = "1")]
154    pub object_id: ::prost::alloc::string::String,
155    #[prost(fixed32, tag = "2")]
156    pub key: u32,
157    #[prost(string, tag = "3")]
158    pub name: ::prost::alloc::string::String,
159    #[prost(string, tag = "4")]
160    pub unique_id: ::prost::alloc::string::String,
161    #[prost(string, tag = "5")]
162    pub device_class: ::prost::alloc::string::String,
163    #[prost(bool, tag = "6")]
164    pub is_status_binary_sensor: bool,
165    #[prost(bool, tag = "7")]
166    pub disabled_by_default: bool,
167    #[prost(string, tag = "8")]
168    pub icon: ::prost::alloc::string::String,
169    #[prost(enumeration = "EntityCategory", tag = "9")]
170    pub entity_category: i32,
171}
172#[derive(Clone, Copy, PartialEq, ::prost::Message)]
173pub struct BinarySensorStateResponse {
174    #[prost(fixed32, tag = "1")]
175    pub key: u32,
176    #[prost(bool, tag = "2")]
177    pub state: bool,
178    /// If the binary sensor does not have a valid state yet.
179    /// Equivalent to `!obj->has_state()` - inverse logic to make state packets smaller
180    #[prost(bool, tag = "3")]
181    pub missing_state: bool,
182}
183/// ==================== COVER ====================
184#[derive(Clone, PartialEq, ::prost::Message)]
185pub struct ListEntitiesCoverResponse {
186    #[prost(string, tag = "1")]
187    pub object_id: ::prost::alloc::string::String,
188    #[prost(fixed32, tag = "2")]
189    pub key: u32,
190    #[prost(string, tag = "3")]
191    pub name: ::prost::alloc::string::String,
192    #[prost(string, tag = "4")]
193    pub unique_id: ::prost::alloc::string::String,
194    #[prost(bool, tag = "5")]
195    pub assumed_state: bool,
196    #[prost(bool, tag = "6")]
197    pub supports_position: bool,
198    #[prost(bool, tag = "7")]
199    pub supports_tilt: bool,
200    #[prost(string, tag = "8")]
201    pub device_class: ::prost::alloc::string::String,
202    #[prost(bool, tag = "9")]
203    pub disabled_by_default: bool,
204    #[prost(string, tag = "10")]
205    pub icon: ::prost::alloc::string::String,
206    #[prost(enumeration = "EntityCategory", tag = "11")]
207    pub entity_category: i32,
208    #[prost(bool, tag = "12")]
209    pub supports_stop: bool,
210}
211#[derive(Clone, Copy, PartialEq, ::prost::Message)]
212pub struct CoverStateResponse {
213    #[prost(fixed32, tag = "1")]
214    pub key: u32,
215    /// legacy: state has been removed in 1.13
216    /// clients/servers must still send/accept it until the next protocol change
217    #[prost(enumeration = "LegacyCoverState", tag = "2")]
218    pub legacy_state: i32,
219    #[prost(float, tag = "3")]
220    pub position: f32,
221    #[prost(float, tag = "4")]
222    pub tilt: f32,
223    #[prost(enumeration = "CoverOperation", tag = "5")]
224    pub current_operation: i32,
225}
226#[derive(Clone, Copy, PartialEq, ::prost::Message)]
227pub struct CoverCommandRequest {
228    #[prost(fixed32, tag = "1")]
229    pub key: u32,
230    /// legacy: command has been removed in 1.13
231    /// clients/servers must still send/accept it until the next protocol change
232    #[prost(bool, tag = "2")]
233    pub has_legacy_command: bool,
234    #[prost(enumeration = "LegacyCoverCommand", tag = "3")]
235    pub legacy_command: i32,
236    #[prost(bool, tag = "4")]
237    pub has_position: bool,
238    #[prost(float, tag = "5")]
239    pub position: f32,
240    #[prost(bool, tag = "6")]
241    pub has_tilt: bool,
242    #[prost(float, tag = "7")]
243    pub tilt: f32,
244    #[prost(bool, tag = "8")]
245    pub stop: bool,
246}
247/// ==================== FAN ====================
248#[derive(Clone, PartialEq, ::prost::Message)]
249pub struct ListEntitiesFanResponse {
250    #[prost(string, tag = "1")]
251    pub object_id: ::prost::alloc::string::String,
252    #[prost(fixed32, tag = "2")]
253    pub key: u32,
254    #[prost(string, tag = "3")]
255    pub name: ::prost::alloc::string::String,
256    #[prost(string, tag = "4")]
257    pub unique_id: ::prost::alloc::string::String,
258    #[prost(bool, tag = "5")]
259    pub supports_oscillation: bool,
260    #[prost(bool, tag = "6")]
261    pub supports_speed: bool,
262    #[prost(bool, tag = "7")]
263    pub supports_direction: bool,
264    #[prost(int32, tag = "8")]
265    pub supported_speed_levels: i32,
266    #[prost(bool, tag = "9")]
267    pub disabled_by_default: bool,
268    #[prost(string, tag = "10")]
269    pub icon: ::prost::alloc::string::String,
270    #[prost(enumeration = "EntityCategory", tag = "11")]
271    pub entity_category: i32,
272    #[prost(string, repeated, tag = "12")]
273    pub supported_preset_modes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
274}
275#[derive(Clone, PartialEq, ::prost::Message)]
276pub struct FanStateResponse {
277    #[prost(fixed32, tag = "1")]
278    pub key: u32,
279    #[prost(bool, tag = "2")]
280    pub state: bool,
281    #[prost(bool, tag = "3")]
282    pub oscillating: bool,
283    #[deprecated]
284    #[prost(enumeration = "FanSpeed", tag = "4")]
285    pub speed: i32,
286    #[prost(enumeration = "FanDirection", tag = "5")]
287    pub direction: i32,
288    #[prost(int32, tag = "6")]
289    pub speed_level: i32,
290    #[prost(string, tag = "7")]
291    pub preset_mode: ::prost::alloc::string::String,
292}
293#[derive(Clone, PartialEq, ::prost::Message)]
294pub struct FanCommandRequest {
295    #[prost(fixed32, tag = "1")]
296    pub key: u32,
297    #[prost(bool, tag = "2")]
298    pub has_state: bool,
299    #[prost(bool, tag = "3")]
300    pub state: bool,
301    #[deprecated]
302    #[prost(bool, tag = "4")]
303    pub has_speed: bool,
304    #[deprecated]
305    #[prost(enumeration = "FanSpeed", tag = "5")]
306    pub speed: i32,
307    #[prost(bool, tag = "6")]
308    pub has_oscillating: bool,
309    #[prost(bool, tag = "7")]
310    pub oscillating: bool,
311    #[prost(bool, tag = "8")]
312    pub has_direction: bool,
313    #[prost(enumeration = "FanDirection", tag = "9")]
314    pub direction: i32,
315    #[prost(bool, tag = "10")]
316    pub has_speed_level: bool,
317    #[prost(int32, tag = "11")]
318    pub speed_level: i32,
319    #[prost(bool, tag = "12")]
320    pub has_preset_mode: bool,
321    #[prost(string, tag = "13")]
322    pub preset_mode: ::prost::alloc::string::String,
323}
324/// ==================== LIGHT ====================
325#[derive(Clone, PartialEq, ::prost::Message)]
326pub struct ListEntitiesLightResponse {
327    #[prost(string, tag = "1")]
328    pub object_id: ::prost::alloc::string::String,
329    #[prost(fixed32, tag = "2")]
330    pub key: u32,
331    #[prost(string, tag = "3")]
332    pub name: ::prost::alloc::string::String,
333    #[prost(string, tag = "4")]
334    pub unique_id: ::prost::alloc::string::String,
335    #[prost(int32, repeated, tag = "12")]
336    pub supported_color_modes: ::prost::alloc::vec::Vec<i32>,
337    /// next four supports_* are for legacy clients, newer clients should use color modes
338    #[deprecated]
339    #[prost(bool, tag = "5")]
340    pub legacy_supports_brightness: bool,
341    #[deprecated]
342    #[prost(bool, tag = "6")]
343    pub legacy_supports_rgb: bool,
344    #[deprecated]
345    #[prost(bool, tag = "7")]
346    pub legacy_supports_white_value: bool,
347    #[deprecated]
348    #[prost(bool, tag = "8")]
349    pub legacy_supports_color_temperature: bool,
350    #[prost(float, tag = "9")]
351    pub min_mireds: f32,
352    #[prost(float, tag = "10")]
353    pub max_mireds: f32,
354    #[prost(string, repeated, tag = "11")]
355    pub effects: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
356    #[prost(bool, tag = "13")]
357    pub disabled_by_default: bool,
358    #[prost(string, tag = "14")]
359    pub icon: ::prost::alloc::string::String,
360    #[prost(enumeration = "EntityCategory", tag = "15")]
361    pub entity_category: i32,
362}
363#[derive(Clone, PartialEq, ::prost::Message)]
364pub struct LightStateResponse {
365    #[prost(fixed32, tag = "1")]
366    pub key: u32,
367    #[prost(bool, tag = "2")]
368    pub state: bool,
369    #[prost(float, tag = "3")]
370    pub brightness: f32,
371    #[prost(int32, tag = "11")]
372    pub color_mode: i32,
373    #[prost(float, tag = "10")]
374    pub color_brightness: f32,
375    #[prost(float, tag = "4")]
376    pub red: f32,
377    #[prost(float, tag = "5")]
378    pub green: f32,
379    #[prost(float, tag = "6")]
380    pub blue: f32,
381    #[prost(float, tag = "7")]
382    pub white: f32,
383    #[prost(float, tag = "8")]
384    pub color_temperature: f32,
385    #[prost(float, tag = "12")]
386    pub cold_white: f32,
387    #[prost(float, tag = "13")]
388    pub warm_white: f32,
389    #[prost(string, tag = "9")]
390    pub effect: ::prost::alloc::string::String,
391}
392#[derive(Clone, PartialEq, ::prost::Message)]
393pub struct LightCommandRequest {
394    #[prost(fixed32, tag = "1")]
395    pub key: u32,
396    #[prost(bool, tag = "2")]
397    pub has_state: bool,
398    #[prost(bool, tag = "3")]
399    pub state: bool,
400    #[prost(bool, tag = "4")]
401    pub has_brightness: bool,
402    #[prost(float, tag = "5")]
403    pub brightness: f32,
404    #[prost(bool, tag = "22")]
405    pub has_color_mode: bool,
406    #[prost(int32, tag = "23")]
407    pub color_mode: i32,
408    #[prost(bool, tag = "20")]
409    pub has_color_brightness: bool,
410    #[prost(float, tag = "21")]
411    pub color_brightness: f32,
412    #[prost(bool, tag = "6")]
413    pub has_rgb: bool,
414    #[prost(float, tag = "7")]
415    pub red: f32,
416    #[prost(float, tag = "8")]
417    pub green: f32,
418    #[prost(float, tag = "9")]
419    pub blue: f32,
420    #[prost(bool, tag = "10")]
421    pub has_white: bool,
422    #[prost(float, tag = "11")]
423    pub white: f32,
424    #[prost(bool, tag = "12")]
425    pub has_color_temperature: bool,
426    #[prost(float, tag = "13")]
427    pub color_temperature: f32,
428    #[prost(bool, tag = "24")]
429    pub has_cold_white: bool,
430    #[prost(float, tag = "25")]
431    pub cold_white: f32,
432    #[prost(bool, tag = "26")]
433    pub has_warm_white: bool,
434    #[prost(float, tag = "27")]
435    pub warm_white: f32,
436    #[prost(bool, tag = "14")]
437    pub has_transition_length: bool,
438    #[prost(uint32, tag = "15")]
439    pub transition_length: u32,
440    #[prost(bool, tag = "16")]
441    pub has_flash_length: bool,
442    #[prost(uint32, tag = "17")]
443    pub flash_length: u32,
444    #[prost(bool, tag = "18")]
445    pub has_effect: bool,
446    #[prost(string, tag = "19")]
447    pub effect: ::prost::alloc::string::String,
448}
449#[derive(Clone, PartialEq, ::prost::Message)]
450pub struct ListEntitiesSensorResponse {
451    #[prost(string, tag = "1")]
452    pub object_id: ::prost::alloc::string::String,
453    #[prost(fixed32, tag = "2")]
454    pub key: u32,
455    #[prost(string, tag = "3")]
456    pub name: ::prost::alloc::string::String,
457    #[prost(string, tag = "4")]
458    pub unique_id: ::prost::alloc::string::String,
459    #[prost(string, tag = "5")]
460    pub icon: ::prost::alloc::string::String,
461    #[prost(string, tag = "6")]
462    pub unit_of_measurement: ::prost::alloc::string::String,
463    #[prost(int32, tag = "7")]
464    pub accuracy_decimals: i32,
465    #[prost(bool, tag = "8")]
466    pub force_update: bool,
467    #[prost(string, tag = "9")]
468    pub device_class: ::prost::alloc::string::String,
469    #[prost(enumeration = "SensorStateClass", tag = "10")]
470    pub state_class: i32,
471    #[prost(enumeration = "SensorLastResetType", tag = "11")]
472    pub last_reset_type: i32,
473    #[prost(bool, tag = "12")]
474    pub disabled_by_default: bool,
475    #[prost(enumeration = "EntityCategory", tag = "13")]
476    pub entity_category: i32,
477}
478#[derive(Clone, Copy, PartialEq, ::prost::Message)]
479pub struct SensorStateResponse {
480    #[prost(fixed32, tag = "1")]
481    pub key: u32,
482    #[prost(float, tag = "2")]
483    pub state: f32,
484    /// If the sensor does not have a valid state yet.
485    /// Equivalent to `!obj->has_state()` - inverse logic to make state packets smaller
486    #[prost(bool, tag = "3")]
487    pub missing_state: bool,
488}
489/// ==================== SWITCH ====================
490#[derive(Clone, PartialEq, ::prost::Message)]
491pub struct ListEntitiesSwitchResponse {
492    #[prost(string, tag = "1")]
493    pub object_id: ::prost::alloc::string::String,
494    #[prost(fixed32, tag = "2")]
495    pub key: u32,
496    #[prost(string, tag = "3")]
497    pub name: ::prost::alloc::string::String,
498    #[prost(string, tag = "4")]
499    pub unique_id: ::prost::alloc::string::String,
500    #[prost(string, tag = "5")]
501    pub icon: ::prost::alloc::string::String,
502    #[prost(bool, tag = "6")]
503    pub assumed_state: bool,
504    #[prost(bool, tag = "7")]
505    pub disabled_by_default: bool,
506    #[prost(enumeration = "EntityCategory", tag = "8")]
507    pub entity_category: i32,
508    #[prost(string, tag = "9")]
509    pub device_class: ::prost::alloc::string::String,
510}
511#[derive(Clone, Copy, PartialEq, ::prost::Message)]
512pub struct SwitchStateResponse {
513    #[prost(fixed32, tag = "1")]
514    pub key: u32,
515    #[prost(bool, tag = "2")]
516    pub state: bool,
517}
518#[derive(Clone, Copy, PartialEq, ::prost::Message)]
519pub struct SwitchCommandRequest {
520    #[prost(fixed32, tag = "1")]
521    pub key: u32,
522    #[prost(bool, tag = "2")]
523    pub state: bool,
524}
525/// ==================== TEXT SENSOR ====================
526#[derive(Clone, PartialEq, ::prost::Message)]
527pub struct ListEntitiesTextSensorResponse {
528    #[prost(string, tag = "1")]
529    pub object_id: ::prost::alloc::string::String,
530    #[prost(fixed32, tag = "2")]
531    pub key: u32,
532    #[prost(string, tag = "3")]
533    pub name: ::prost::alloc::string::String,
534    #[prost(string, tag = "4")]
535    pub unique_id: ::prost::alloc::string::String,
536    #[prost(string, tag = "5")]
537    pub icon: ::prost::alloc::string::String,
538    #[prost(bool, tag = "6")]
539    pub disabled_by_default: bool,
540    #[prost(enumeration = "EntityCategory", tag = "7")]
541    pub entity_category: i32,
542    #[prost(string, tag = "8")]
543    pub device_class: ::prost::alloc::string::String,
544}
545#[derive(Clone, PartialEq, ::prost::Message)]
546pub struct TextSensorStateResponse {
547    #[prost(fixed32, tag = "1")]
548    pub key: u32,
549    #[prost(string, tag = "2")]
550    pub state: ::prost::alloc::string::String,
551    /// If the text sensor does not have a valid state yet.
552    /// Equivalent to `!obj->has_state()` - inverse logic to make state packets smaller
553    #[prost(bool, tag = "3")]
554    pub missing_state: bool,
555}
556#[derive(Clone, Copy, PartialEq, ::prost::Message)]
557pub struct SubscribeLogsRequest {
558    #[prost(enumeration = "LogLevel", tag = "1")]
559    pub level: i32,
560    #[prost(bool, tag = "2")]
561    pub dump_config: bool,
562}
563#[derive(Clone, PartialEq, ::prost::Message)]
564pub struct SubscribeLogsResponse {
565    #[prost(enumeration = "LogLevel", tag = "1")]
566    pub level: i32,
567    #[prost(bytes = "vec", tag = "3")]
568    pub message: ::prost::alloc::vec::Vec<u8>,
569    #[prost(bool, tag = "4")]
570    pub send_failed: bool,
571}
572/// ==================== HOMEASSISTANT.SERVICE ====================
573#[derive(Clone, Copy, PartialEq, ::prost::Message)]
574pub struct SubscribeHomeassistantServicesRequest {}
575#[derive(Clone, PartialEq, ::prost::Message)]
576pub struct HomeassistantServiceMap {
577    #[prost(string, tag = "1")]
578    pub key: ::prost::alloc::string::String,
579    #[prost(string, tag = "2")]
580    pub value: ::prost::alloc::string::String,
581}
582#[derive(Clone, PartialEq, ::prost::Message)]
583pub struct HomeassistantServiceResponse {
584    #[prost(string, tag = "1")]
585    pub service: ::prost::alloc::string::String,
586    #[prost(message, repeated, tag = "2")]
587    pub data: ::prost::alloc::vec::Vec<HomeassistantServiceMap>,
588    #[prost(message, repeated, tag = "3")]
589    pub data_template: ::prost::alloc::vec::Vec<HomeassistantServiceMap>,
590    #[prost(message, repeated, tag = "4")]
591    pub variables: ::prost::alloc::vec::Vec<HomeassistantServiceMap>,
592    #[prost(bool, tag = "5")]
593    pub is_event: bool,
594}
595/// ==================== IMPORT HOME ASSISTANT STATES ====================
596/// 1. Client sends SubscribeHomeAssistantStatesRequest
597/// 2. Server responds with zero or more SubscribeHomeAssistantStateResponse (async)
598/// 3. Client sends HomeAssistantStateResponse for state changes.
599#[derive(Clone, Copy, PartialEq, ::prost::Message)]
600pub struct SubscribeHomeAssistantStatesRequest {}
601#[derive(Clone, PartialEq, ::prost::Message)]
602pub struct SubscribeHomeAssistantStateResponse {
603    #[prost(string, tag = "1")]
604    pub entity_id: ::prost::alloc::string::String,
605    #[prost(string, tag = "2")]
606    pub attribute: ::prost::alloc::string::String,
607    #[prost(bool, tag = "3")]
608    pub once: bool,
609}
610#[derive(Clone, PartialEq, ::prost::Message)]
611pub struct HomeAssistantStateResponse {
612    #[prost(string, tag = "1")]
613    pub entity_id: ::prost::alloc::string::String,
614    #[prost(string, tag = "2")]
615    pub state: ::prost::alloc::string::String,
616    #[prost(string, tag = "3")]
617    pub attribute: ::prost::alloc::string::String,
618}
619/// ==================== IMPORT TIME ====================
620#[derive(Clone, Copy, PartialEq, ::prost::Message)]
621pub struct GetTimeRequest {}
622#[derive(Clone, Copy, PartialEq, ::prost::Message)]
623pub struct GetTimeResponse {
624    #[prost(fixed32, tag = "1")]
625    pub epoch_seconds: u32,
626}
627#[derive(Clone, PartialEq, ::prost::Message)]
628pub struct ListEntitiesServicesArgument {
629    #[prost(string, tag = "1")]
630    pub name: ::prost::alloc::string::String,
631    #[prost(enumeration = "ServiceArgType", tag = "2")]
632    pub r#type: i32,
633}
634#[derive(Clone, PartialEq, ::prost::Message)]
635pub struct ListEntitiesServicesResponse {
636    #[prost(string, tag = "1")]
637    pub name: ::prost::alloc::string::String,
638    #[prost(fixed32, tag = "2")]
639    pub key: u32,
640    #[prost(message, repeated, tag = "3")]
641    pub args: ::prost::alloc::vec::Vec<ListEntitiesServicesArgument>,
642}
643#[derive(Clone, PartialEq, ::prost::Message)]
644pub struct ExecuteServiceArgument {
645    #[prost(bool, tag = "1")]
646    pub bool: bool,
647    #[prost(int32, tag = "2")]
648    pub legacy_int: i32,
649    #[prost(float, tag = "3")]
650    pub float: f32,
651    #[prost(string, tag = "4")]
652    pub string: ::prost::alloc::string::String,
653    /// ESPHome 1.14 (api v1.3) make int a signed value
654    #[prost(sint32, tag = "5")]
655    pub int: i32,
656    #[prost(bool, repeated, packed = "false", tag = "6")]
657    pub bool_array: ::prost::alloc::vec::Vec<bool>,
658    #[prost(sint32, repeated, packed = "false", tag = "7")]
659    pub int_array: ::prost::alloc::vec::Vec<i32>,
660    #[prost(float, repeated, packed = "false", tag = "8")]
661    pub float_array: ::prost::alloc::vec::Vec<f32>,
662    #[prost(string, repeated, tag = "9")]
663    pub string_array: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
664}
665#[derive(Clone, PartialEq, ::prost::Message)]
666pub struct ExecuteServiceRequest {
667    #[prost(fixed32, tag = "1")]
668    pub key: u32,
669    #[prost(message, repeated, tag = "2")]
670    pub args: ::prost::alloc::vec::Vec<ExecuteServiceArgument>,
671}
672/// ==================== CAMERA ====================
673#[derive(Clone, PartialEq, ::prost::Message)]
674pub struct ListEntitiesCameraResponse {
675    #[prost(string, tag = "1")]
676    pub object_id: ::prost::alloc::string::String,
677    #[prost(fixed32, tag = "2")]
678    pub key: u32,
679    #[prost(string, tag = "3")]
680    pub name: ::prost::alloc::string::String,
681    #[prost(string, tag = "4")]
682    pub unique_id: ::prost::alloc::string::String,
683    #[prost(bool, tag = "5")]
684    pub disabled_by_default: bool,
685    #[prost(string, tag = "6")]
686    pub icon: ::prost::alloc::string::String,
687    #[prost(enumeration = "EntityCategory", tag = "7")]
688    pub entity_category: i32,
689}
690#[derive(Clone, PartialEq, ::prost::Message)]
691pub struct CameraImageResponse {
692    #[prost(fixed32, tag = "1")]
693    pub key: u32,
694    #[prost(bytes = "vec", tag = "2")]
695    pub data: ::prost::alloc::vec::Vec<u8>,
696    #[prost(bool, tag = "3")]
697    pub done: bool,
698}
699#[derive(Clone, Copy, PartialEq, ::prost::Message)]
700pub struct CameraImageRequest {
701    #[prost(bool, tag = "1")]
702    pub single: bool,
703    #[prost(bool, tag = "2")]
704    pub stream: bool,
705}
706#[derive(Clone, PartialEq, ::prost::Message)]
707pub struct ListEntitiesClimateResponse {
708    #[prost(string, tag = "1")]
709    pub object_id: ::prost::alloc::string::String,
710    #[prost(fixed32, tag = "2")]
711    pub key: u32,
712    #[prost(string, tag = "3")]
713    pub name: ::prost::alloc::string::String,
714    #[prost(string, tag = "4")]
715    pub unique_id: ::prost::alloc::string::String,
716    #[prost(bool, tag = "5")]
717    pub supports_current_temperature: bool,
718    #[prost(bool, tag = "6")]
719    pub supports_two_point_target_temperature: bool,
720    #[prost(enumeration = "ClimateMode", repeated, tag = "7")]
721    pub supported_modes: ::prost::alloc::vec::Vec<i32>,
722    #[prost(float, tag = "8")]
723    pub visual_min_temperature: f32,
724    #[prost(float, tag = "9")]
725    pub visual_max_temperature: f32,
726    #[prost(float, tag = "10")]
727    pub visual_target_temperature_step: f32,
728    /// for older peer versions - in new system this
729    /// is if CLIMATE_PRESET_AWAY exists is supported_presets
730    #[prost(bool, tag = "11")]
731    pub legacy_supports_away: bool,
732    #[prost(bool, tag = "12")]
733    pub supports_action: bool,
734    #[prost(enumeration = "ClimateFanMode", repeated, tag = "13")]
735    pub supported_fan_modes: ::prost::alloc::vec::Vec<i32>,
736    #[prost(enumeration = "ClimateSwingMode", repeated, tag = "14")]
737    pub supported_swing_modes: ::prost::alloc::vec::Vec<i32>,
738    #[prost(string, repeated, tag = "15")]
739    pub supported_custom_fan_modes: ::prost::alloc::vec::Vec<
740        ::prost::alloc::string::String,
741    >,
742    #[prost(enumeration = "ClimatePreset", repeated, tag = "16")]
743    pub supported_presets: ::prost::alloc::vec::Vec<i32>,
744    #[prost(string, repeated, tag = "17")]
745    pub supported_custom_presets: ::prost::alloc::vec::Vec<
746        ::prost::alloc::string::String,
747    >,
748    #[prost(bool, tag = "18")]
749    pub disabled_by_default: bool,
750    #[prost(string, tag = "19")]
751    pub icon: ::prost::alloc::string::String,
752    #[prost(enumeration = "EntityCategory", tag = "20")]
753    pub entity_category: i32,
754    #[prost(float, tag = "21")]
755    pub visual_current_temperature_step: f32,
756    #[prost(bool, tag = "22")]
757    pub supports_current_humidity: bool,
758    #[prost(bool, tag = "23")]
759    pub supports_target_humidity: bool,
760    #[prost(float, tag = "24")]
761    pub visual_min_humidity: f32,
762    #[prost(float, tag = "25")]
763    pub visual_max_humidity: f32,
764}
765#[derive(Clone, PartialEq, ::prost::Message)]
766pub struct ClimateStateResponse {
767    #[prost(fixed32, tag = "1")]
768    pub key: u32,
769    #[prost(enumeration = "ClimateMode", tag = "2")]
770    pub mode: i32,
771    #[prost(float, tag = "3")]
772    pub current_temperature: f32,
773    #[prost(float, tag = "4")]
774    pub target_temperature: f32,
775    #[prost(float, tag = "5")]
776    pub target_temperature_low: f32,
777    #[prost(float, tag = "6")]
778    pub target_temperature_high: f32,
779    /// For older peers, equal to preset == CLIMATE_PRESET_AWAY
780    #[prost(bool, tag = "7")]
781    pub legacy_away: bool,
782    #[prost(enumeration = "ClimateAction", tag = "8")]
783    pub action: i32,
784    #[prost(enumeration = "ClimateFanMode", tag = "9")]
785    pub fan_mode: i32,
786    #[prost(enumeration = "ClimateSwingMode", tag = "10")]
787    pub swing_mode: i32,
788    #[prost(string, tag = "11")]
789    pub custom_fan_mode: ::prost::alloc::string::String,
790    #[prost(enumeration = "ClimatePreset", tag = "12")]
791    pub preset: i32,
792    #[prost(string, tag = "13")]
793    pub custom_preset: ::prost::alloc::string::String,
794    #[prost(float, tag = "14")]
795    pub current_humidity: f32,
796    #[prost(float, tag = "15")]
797    pub target_humidity: f32,
798}
799#[derive(Clone, PartialEq, ::prost::Message)]
800pub struct ClimateCommandRequest {
801    #[prost(fixed32, tag = "1")]
802    pub key: u32,
803    #[prost(bool, tag = "2")]
804    pub has_mode: bool,
805    #[prost(enumeration = "ClimateMode", tag = "3")]
806    pub mode: i32,
807    #[prost(bool, tag = "4")]
808    pub has_target_temperature: bool,
809    #[prost(float, tag = "5")]
810    pub target_temperature: f32,
811    #[prost(bool, tag = "6")]
812    pub has_target_temperature_low: bool,
813    #[prost(float, tag = "7")]
814    pub target_temperature_low: f32,
815    #[prost(bool, tag = "8")]
816    pub has_target_temperature_high: bool,
817    #[prost(float, tag = "9")]
818    pub target_temperature_high: f32,
819    /// legacy, for older peers, newer ones should use CLIMATE_PRESET_AWAY in preset
820    #[prost(bool, tag = "10")]
821    pub has_legacy_away: bool,
822    #[prost(bool, tag = "11")]
823    pub legacy_away: bool,
824    #[prost(bool, tag = "12")]
825    pub has_fan_mode: bool,
826    #[prost(enumeration = "ClimateFanMode", tag = "13")]
827    pub fan_mode: i32,
828    #[prost(bool, tag = "14")]
829    pub has_swing_mode: bool,
830    #[prost(enumeration = "ClimateSwingMode", tag = "15")]
831    pub swing_mode: i32,
832    #[prost(bool, tag = "16")]
833    pub has_custom_fan_mode: bool,
834    #[prost(string, tag = "17")]
835    pub custom_fan_mode: ::prost::alloc::string::String,
836    #[prost(bool, tag = "18")]
837    pub has_preset: bool,
838    #[prost(enumeration = "ClimatePreset", tag = "19")]
839    pub preset: i32,
840    #[prost(bool, tag = "20")]
841    pub has_custom_preset: bool,
842    #[prost(string, tag = "21")]
843    pub custom_preset: ::prost::alloc::string::String,
844    #[prost(bool, tag = "22")]
845    pub has_target_humidity: bool,
846    #[prost(float, tag = "23")]
847    pub target_humidity: f32,
848}
849#[derive(Clone, PartialEq, ::prost::Message)]
850pub struct ListEntitiesNumberResponse {
851    #[prost(string, tag = "1")]
852    pub object_id: ::prost::alloc::string::String,
853    #[prost(fixed32, tag = "2")]
854    pub key: u32,
855    #[prost(string, tag = "3")]
856    pub name: ::prost::alloc::string::String,
857    #[prost(string, tag = "4")]
858    pub unique_id: ::prost::alloc::string::String,
859    #[prost(string, tag = "5")]
860    pub icon: ::prost::alloc::string::String,
861    #[prost(float, tag = "6")]
862    pub min_value: f32,
863    #[prost(float, tag = "7")]
864    pub max_value: f32,
865    #[prost(float, tag = "8")]
866    pub step: f32,
867    #[prost(bool, tag = "9")]
868    pub disabled_by_default: bool,
869    #[prost(enumeration = "EntityCategory", tag = "10")]
870    pub entity_category: i32,
871    #[prost(string, tag = "11")]
872    pub unit_of_measurement: ::prost::alloc::string::String,
873    #[prost(enumeration = "NumberMode", tag = "12")]
874    pub mode: i32,
875    #[prost(string, tag = "13")]
876    pub device_class: ::prost::alloc::string::String,
877}
878#[derive(Clone, Copy, PartialEq, ::prost::Message)]
879pub struct NumberStateResponse {
880    #[prost(fixed32, tag = "1")]
881    pub key: u32,
882    #[prost(float, tag = "2")]
883    pub state: f32,
884    /// If the number does not have a valid state yet.
885    /// Equivalent to `!obj->has_state()` - inverse logic to make state packets smaller
886    #[prost(bool, tag = "3")]
887    pub missing_state: bool,
888}
889#[derive(Clone, Copy, PartialEq, ::prost::Message)]
890pub struct NumberCommandRequest {
891    #[prost(fixed32, tag = "1")]
892    pub key: u32,
893    #[prost(float, tag = "2")]
894    pub state: f32,
895}
896/// ==================== SELECT ====================
897#[derive(Clone, PartialEq, ::prost::Message)]
898pub struct ListEntitiesSelectResponse {
899    #[prost(string, tag = "1")]
900    pub object_id: ::prost::alloc::string::String,
901    #[prost(fixed32, tag = "2")]
902    pub key: u32,
903    #[prost(string, tag = "3")]
904    pub name: ::prost::alloc::string::String,
905    #[prost(string, tag = "4")]
906    pub unique_id: ::prost::alloc::string::String,
907    #[prost(string, tag = "5")]
908    pub icon: ::prost::alloc::string::String,
909    #[prost(string, repeated, tag = "6")]
910    pub options: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
911    #[prost(bool, tag = "7")]
912    pub disabled_by_default: bool,
913    #[prost(enumeration = "EntityCategory", tag = "8")]
914    pub entity_category: i32,
915}
916#[derive(Clone, PartialEq, ::prost::Message)]
917pub struct SelectStateResponse {
918    #[prost(fixed32, tag = "1")]
919    pub key: u32,
920    #[prost(string, tag = "2")]
921    pub state: ::prost::alloc::string::String,
922    /// If the select does not have a valid state yet.
923    /// Equivalent to `!obj->has_state()` - inverse logic to make state packets smaller
924    #[prost(bool, tag = "3")]
925    pub missing_state: bool,
926}
927#[derive(Clone, PartialEq, ::prost::Message)]
928pub struct SelectCommandRequest {
929    #[prost(fixed32, tag = "1")]
930    pub key: u32,
931    #[prost(string, tag = "2")]
932    pub state: ::prost::alloc::string::String,
933}
934/// ==================== SIREN ====================
935#[derive(Clone, PartialEq, ::prost::Message)]
936pub struct ListEntitiesSirenResponse {
937    #[prost(string, tag = "1")]
938    pub object_id: ::prost::alloc::string::String,
939    #[prost(fixed32, tag = "2")]
940    pub key: u32,
941    #[prost(string, tag = "3")]
942    pub name: ::prost::alloc::string::String,
943    #[prost(string, tag = "4")]
944    pub unique_id: ::prost::alloc::string::String,
945    #[prost(string, tag = "5")]
946    pub icon: ::prost::alloc::string::String,
947    #[prost(bool, tag = "6")]
948    pub disabled_by_default: bool,
949    #[prost(string, repeated, tag = "7")]
950    pub tones: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
951    #[prost(bool, tag = "8")]
952    pub supports_duration: bool,
953    #[prost(bool, tag = "9")]
954    pub supports_volume: bool,
955    #[prost(enumeration = "EntityCategory", tag = "10")]
956    pub entity_category: i32,
957}
958#[derive(Clone, Copy, PartialEq, ::prost::Message)]
959pub struct SirenStateResponse {
960    #[prost(fixed32, tag = "1")]
961    pub key: u32,
962    #[prost(bool, tag = "2")]
963    pub state: bool,
964}
965#[derive(Clone, PartialEq, ::prost::Message)]
966pub struct SirenCommandRequest {
967    #[prost(fixed32, tag = "1")]
968    pub key: u32,
969    #[prost(bool, tag = "2")]
970    pub has_state: bool,
971    #[prost(bool, tag = "3")]
972    pub state: bool,
973    #[prost(bool, tag = "4")]
974    pub has_tone: bool,
975    #[prost(string, tag = "5")]
976    pub tone: ::prost::alloc::string::String,
977    #[prost(bool, tag = "6")]
978    pub has_duration: bool,
979    #[prost(uint32, tag = "7")]
980    pub duration: u32,
981    #[prost(bool, tag = "8")]
982    pub has_volume: bool,
983    #[prost(float, tag = "9")]
984    pub volume: f32,
985}
986#[derive(Clone, PartialEq, ::prost::Message)]
987pub struct ListEntitiesLockResponse {
988    #[prost(string, tag = "1")]
989    pub object_id: ::prost::alloc::string::String,
990    #[prost(fixed32, tag = "2")]
991    pub key: u32,
992    #[prost(string, tag = "3")]
993    pub name: ::prost::alloc::string::String,
994    #[prost(string, tag = "4")]
995    pub unique_id: ::prost::alloc::string::String,
996    #[prost(string, tag = "5")]
997    pub icon: ::prost::alloc::string::String,
998    #[prost(bool, tag = "6")]
999    pub disabled_by_default: bool,
1000    #[prost(enumeration = "EntityCategory", tag = "7")]
1001    pub entity_category: i32,
1002    #[prost(bool, tag = "8")]
1003    pub assumed_state: bool,
1004    #[prost(bool, tag = "9")]
1005    pub supports_open: bool,
1006    #[prost(bool, tag = "10")]
1007    pub requires_code: bool,
1008    #[prost(string, tag = "11")]
1009    pub code_format: ::prost::alloc::string::String,
1010}
1011#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1012pub struct LockStateResponse {
1013    #[prost(fixed32, tag = "1")]
1014    pub key: u32,
1015    #[prost(enumeration = "LockState", tag = "2")]
1016    pub state: i32,
1017}
1018#[derive(Clone, PartialEq, ::prost::Message)]
1019pub struct LockCommandRequest {
1020    #[prost(fixed32, tag = "1")]
1021    pub key: u32,
1022    #[prost(enumeration = "LockCommand", tag = "2")]
1023    pub command: i32,
1024    #[prost(bool, tag = "3")]
1025    pub has_code: bool,
1026    #[prost(string, tag = "4")]
1027    pub code: ::prost::alloc::string::String,
1028}
1029/// ==================== BUTTON ====================
1030#[derive(Clone, PartialEq, ::prost::Message)]
1031pub struct ListEntitiesButtonResponse {
1032    #[prost(string, tag = "1")]
1033    pub object_id: ::prost::alloc::string::String,
1034    #[prost(fixed32, tag = "2")]
1035    pub key: u32,
1036    #[prost(string, tag = "3")]
1037    pub name: ::prost::alloc::string::String,
1038    #[prost(string, tag = "4")]
1039    pub unique_id: ::prost::alloc::string::String,
1040    #[prost(string, tag = "5")]
1041    pub icon: ::prost::alloc::string::String,
1042    #[prost(bool, tag = "6")]
1043    pub disabled_by_default: bool,
1044    #[prost(enumeration = "EntityCategory", tag = "7")]
1045    pub entity_category: i32,
1046    #[prost(string, tag = "8")]
1047    pub device_class: ::prost::alloc::string::String,
1048}
1049#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1050pub struct ButtonCommandRequest {
1051    #[prost(fixed32, tag = "1")]
1052    pub key: u32,
1053}
1054#[derive(Clone, PartialEq, ::prost::Message)]
1055pub struct MediaPlayerSupportedFormat {
1056    #[prost(string, tag = "1")]
1057    pub format: ::prost::alloc::string::String,
1058    #[prost(uint32, tag = "2")]
1059    pub sample_rate: u32,
1060    #[prost(uint32, tag = "3")]
1061    pub num_channels: u32,
1062    #[prost(enumeration = "MediaPlayerFormatPurpose", tag = "4")]
1063    pub purpose: i32,
1064    #[prost(uint32, tag = "5")]
1065    pub sample_bytes: u32,
1066}
1067#[derive(Clone, PartialEq, ::prost::Message)]
1068pub struct ListEntitiesMediaPlayerResponse {
1069    #[prost(string, tag = "1")]
1070    pub object_id: ::prost::alloc::string::String,
1071    #[prost(fixed32, tag = "2")]
1072    pub key: u32,
1073    #[prost(string, tag = "3")]
1074    pub name: ::prost::alloc::string::String,
1075    #[prost(string, tag = "4")]
1076    pub unique_id: ::prost::alloc::string::String,
1077    #[prost(string, tag = "5")]
1078    pub icon: ::prost::alloc::string::String,
1079    #[prost(bool, tag = "6")]
1080    pub disabled_by_default: bool,
1081    #[prost(enumeration = "EntityCategory", tag = "7")]
1082    pub entity_category: i32,
1083    #[prost(bool, tag = "8")]
1084    pub supports_pause: bool,
1085    #[prost(message, repeated, tag = "9")]
1086    pub supported_formats: ::prost::alloc::vec::Vec<MediaPlayerSupportedFormat>,
1087}
1088#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1089pub struct MediaPlayerStateResponse {
1090    #[prost(fixed32, tag = "1")]
1091    pub key: u32,
1092    #[prost(enumeration = "MediaPlayerState", tag = "2")]
1093    pub state: i32,
1094    #[prost(float, tag = "3")]
1095    pub volume: f32,
1096    #[prost(bool, tag = "4")]
1097    pub muted: bool,
1098}
1099#[derive(Clone, PartialEq, ::prost::Message)]
1100pub struct MediaPlayerCommandRequest {
1101    #[prost(fixed32, tag = "1")]
1102    pub key: u32,
1103    #[prost(bool, tag = "2")]
1104    pub has_command: bool,
1105    #[prost(enumeration = "MediaPlayerCommand", tag = "3")]
1106    pub command: i32,
1107    #[prost(bool, tag = "4")]
1108    pub has_volume: bool,
1109    #[prost(float, tag = "5")]
1110    pub volume: f32,
1111    #[prost(bool, tag = "6")]
1112    pub has_media_url: bool,
1113    #[prost(string, tag = "7")]
1114    pub media_url: ::prost::alloc::string::String,
1115    #[prost(bool, tag = "8")]
1116    pub has_announcement: bool,
1117    #[prost(bool, tag = "9")]
1118    pub announcement: bool,
1119}
1120/// ==================== BLUETOOTH ====================
1121#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1122pub struct SubscribeBluetoothLeAdvertisementsRequest {
1123    #[prost(int32, tag = "1")]
1124    pub flags: i32,
1125}
1126#[derive(Clone, PartialEq, ::prost::Message)]
1127pub struct BluetoothServiceData {
1128    #[prost(string, tag = "1")]
1129    pub uuid: ::prost::alloc::string::String,
1130    /// Removed in api version 1.7
1131    #[prost(uint32, repeated, tag = "2")]
1132    pub legacy_data: ::prost::alloc::vec::Vec<u32>,
1133    /// Added in api version 1.7
1134    #[prost(bytes = "vec", tag = "3")]
1135    pub data: ::prost::alloc::vec::Vec<u8>,
1136}
1137#[derive(Clone, PartialEq, ::prost::Message)]
1138pub struct BluetoothLeAdvertisementResponse {
1139    #[prost(uint64, tag = "1")]
1140    pub address: u64,
1141    #[prost(bytes = "vec", tag = "2")]
1142    pub name: ::prost::alloc::vec::Vec<u8>,
1143    #[prost(sint32, tag = "3")]
1144    pub rssi: i32,
1145    #[prost(string, repeated, tag = "4")]
1146    pub service_uuids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1147    #[prost(message, repeated, tag = "5")]
1148    pub service_data: ::prost::alloc::vec::Vec<BluetoothServiceData>,
1149    #[prost(message, repeated, tag = "6")]
1150    pub manufacturer_data: ::prost::alloc::vec::Vec<BluetoothServiceData>,
1151    #[prost(uint32, tag = "7")]
1152    pub address_type: u32,
1153}
1154#[derive(Clone, PartialEq, ::prost::Message)]
1155pub struct BluetoothLeRawAdvertisement {
1156    #[prost(uint64, tag = "1")]
1157    pub address: u64,
1158    #[prost(sint32, tag = "2")]
1159    pub rssi: i32,
1160    #[prost(uint32, tag = "3")]
1161    pub address_type: u32,
1162    #[prost(bytes = "vec", tag = "4")]
1163    pub data: ::prost::alloc::vec::Vec<u8>,
1164}
1165#[derive(Clone, PartialEq, ::prost::Message)]
1166pub struct BluetoothLeRawAdvertisementsResponse {
1167    #[prost(message, repeated, tag = "1")]
1168    pub advertisements: ::prost::alloc::vec::Vec<BluetoothLeRawAdvertisement>,
1169}
1170#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1171pub struct BluetoothDeviceRequest {
1172    #[prost(uint64, tag = "1")]
1173    pub address: u64,
1174    #[prost(enumeration = "BluetoothDeviceRequestType", tag = "2")]
1175    pub request_type: i32,
1176    #[prost(bool, tag = "3")]
1177    pub has_address_type: bool,
1178    #[prost(uint32, tag = "4")]
1179    pub address_type: u32,
1180}
1181#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1182pub struct BluetoothDeviceConnectionResponse {
1183    #[prost(uint64, tag = "1")]
1184    pub address: u64,
1185    #[prost(bool, tag = "2")]
1186    pub connected: bool,
1187    #[prost(uint32, tag = "3")]
1188    pub mtu: u32,
1189    #[prost(int32, tag = "4")]
1190    pub error: i32,
1191}
1192#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1193pub struct BluetoothGattGetServicesRequest {
1194    #[prost(uint64, tag = "1")]
1195    pub address: u64,
1196}
1197#[derive(Clone, PartialEq, ::prost::Message)]
1198pub struct BluetoothGattDescriptor {
1199    #[prost(uint64, repeated, tag = "1")]
1200    pub uuid: ::prost::alloc::vec::Vec<u64>,
1201    #[prost(uint32, tag = "2")]
1202    pub handle: u32,
1203}
1204#[derive(Clone, PartialEq, ::prost::Message)]
1205pub struct BluetoothGattCharacteristic {
1206    #[prost(uint64, repeated, tag = "1")]
1207    pub uuid: ::prost::alloc::vec::Vec<u64>,
1208    #[prost(uint32, tag = "2")]
1209    pub handle: u32,
1210    #[prost(uint32, tag = "3")]
1211    pub properties: u32,
1212    #[prost(message, repeated, tag = "4")]
1213    pub descriptors: ::prost::alloc::vec::Vec<BluetoothGattDescriptor>,
1214}
1215#[derive(Clone, PartialEq, ::prost::Message)]
1216pub struct BluetoothGattService {
1217    #[prost(uint64, repeated, tag = "1")]
1218    pub uuid: ::prost::alloc::vec::Vec<u64>,
1219    #[prost(uint32, tag = "2")]
1220    pub handle: u32,
1221    #[prost(message, repeated, tag = "3")]
1222    pub characteristics: ::prost::alloc::vec::Vec<BluetoothGattCharacteristic>,
1223}
1224#[derive(Clone, PartialEq, ::prost::Message)]
1225pub struct BluetoothGattGetServicesResponse {
1226    #[prost(uint64, tag = "1")]
1227    pub address: u64,
1228    #[prost(message, repeated, tag = "2")]
1229    pub services: ::prost::alloc::vec::Vec<BluetoothGattService>,
1230}
1231#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1232pub struct BluetoothGattGetServicesDoneResponse {
1233    #[prost(uint64, tag = "1")]
1234    pub address: u64,
1235}
1236#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1237pub struct BluetoothGattReadRequest {
1238    #[prost(uint64, tag = "1")]
1239    pub address: u64,
1240    #[prost(uint32, tag = "2")]
1241    pub handle: u32,
1242}
1243#[derive(Clone, PartialEq, ::prost::Message)]
1244pub struct BluetoothGattReadResponse {
1245    #[prost(uint64, tag = "1")]
1246    pub address: u64,
1247    #[prost(uint32, tag = "2")]
1248    pub handle: u32,
1249    #[prost(bytes = "vec", tag = "3")]
1250    pub data: ::prost::alloc::vec::Vec<u8>,
1251}
1252#[derive(Clone, PartialEq, ::prost::Message)]
1253pub struct BluetoothGattWriteRequest {
1254    #[prost(uint64, tag = "1")]
1255    pub address: u64,
1256    #[prost(uint32, tag = "2")]
1257    pub handle: u32,
1258    #[prost(bool, tag = "3")]
1259    pub response: bool,
1260    #[prost(bytes = "vec", tag = "4")]
1261    pub data: ::prost::alloc::vec::Vec<u8>,
1262}
1263#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1264pub struct BluetoothGattReadDescriptorRequest {
1265    #[prost(uint64, tag = "1")]
1266    pub address: u64,
1267    #[prost(uint32, tag = "2")]
1268    pub handle: u32,
1269}
1270#[derive(Clone, PartialEq, ::prost::Message)]
1271pub struct BluetoothGattWriteDescriptorRequest {
1272    #[prost(uint64, tag = "1")]
1273    pub address: u64,
1274    #[prost(uint32, tag = "2")]
1275    pub handle: u32,
1276    #[prost(bytes = "vec", tag = "3")]
1277    pub data: ::prost::alloc::vec::Vec<u8>,
1278}
1279#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1280pub struct BluetoothGattNotifyRequest {
1281    #[prost(uint64, tag = "1")]
1282    pub address: u64,
1283    #[prost(uint32, tag = "2")]
1284    pub handle: u32,
1285    #[prost(bool, tag = "3")]
1286    pub enable: bool,
1287}
1288#[derive(Clone, PartialEq, ::prost::Message)]
1289pub struct BluetoothGattNotifyDataResponse {
1290    #[prost(uint64, tag = "1")]
1291    pub address: u64,
1292    #[prost(uint32, tag = "2")]
1293    pub handle: u32,
1294    #[prost(bytes = "vec", tag = "3")]
1295    pub data: ::prost::alloc::vec::Vec<u8>,
1296}
1297#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1298pub struct SubscribeBluetoothConnectionsFreeRequest {}
1299#[derive(Clone, PartialEq, ::prost::Message)]
1300pub struct BluetoothConnectionsFreeResponse {
1301    #[prost(uint32, tag = "1")]
1302    pub free: u32,
1303    #[prost(uint32, tag = "2")]
1304    pub limit: u32,
1305    #[prost(uint64, repeated, tag = "3")]
1306    pub allocated: ::prost::alloc::vec::Vec<u64>,
1307}
1308#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1309pub struct BluetoothGattErrorResponse {
1310    #[prost(uint64, tag = "1")]
1311    pub address: u64,
1312    #[prost(uint32, tag = "2")]
1313    pub handle: u32,
1314    #[prost(int32, tag = "3")]
1315    pub error: i32,
1316}
1317#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1318pub struct BluetoothGattWriteResponse {
1319    #[prost(uint64, tag = "1")]
1320    pub address: u64,
1321    #[prost(uint32, tag = "2")]
1322    pub handle: u32,
1323}
1324#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1325pub struct BluetoothGattNotifyResponse {
1326    #[prost(uint64, tag = "1")]
1327    pub address: u64,
1328    #[prost(uint32, tag = "2")]
1329    pub handle: u32,
1330}
1331#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1332pub struct BluetoothDevicePairingResponse {
1333    #[prost(uint64, tag = "1")]
1334    pub address: u64,
1335    #[prost(bool, tag = "2")]
1336    pub paired: bool,
1337    #[prost(int32, tag = "3")]
1338    pub error: i32,
1339}
1340#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1341pub struct BluetoothDeviceUnpairingResponse {
1342    #[prost(uint64, tag = "1")]
1343    pub address: u64,
1344    #[prost(bool, tag = "2")]
1345    pub success: bool,
1346    #[prost(int32, tag = "3")]
1347    pub error: i32,
1348}
1349#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1350pub struct UnsubscribeBluetoothLeAdvertisementsRequest {}
1351#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1352pub struct BluetoothDeviceClearCacheResponse {
1353    #[prost(uint64, tag = "1")]
1354    pub address: u64,
1355    #[prost(bool, tag = "2")]
1356    pub success: bool,
1357    #[prost(int32, tag = "3")]
1358    pub error: i32,
1359}
1360#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1361pub struct SubscribeVoiceAssistantRequest {
1362    #[prost(bool, tag = "1")]
1363    pub subscribe: bool,
1364    #[prost(uint32, tag = "2")]
1365    pub flags: u32,
1366}
1367#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1368pub struct VoiceAssistantAudioSettings {
1369    #[prost(uint32, tag = "1")]
1370    pub noise_suppression_level: u32,
1371    #[prost(uint32, tag = "2")]
1372    pub auto_gain: u32,
1373    #[prost(float, tag = "3")]
1374    pub volume_multiplier: f32,
1375}
1376#[derive(Clone, PartialEq, ::prost::Message)]
1377pub struct VoiceAssistantRequest {
1378    #[prost(bool, tag = "1")]
1379    pub start: bool,
1380    #[prost(string, tag = "2")]
1381    pub conversation_id: ::prost::alloc::string::String,
1382    #[prost(uint32, tag = "3")]
1383    pub flags: u32,
1384    #[prost(message, optional, tag = "4")]
1385    pub audio_settings: ::core::option::Option<VoiceAssistantAudioSettings>,
1386    #[prost(string, tag = "5")]
1387    pub wake_word_phrase: ::prost::alloc::string::String,
1388}
1389#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1390pub struct VoiceAssistantResponse {
1391    #[prost(uint32, tag = "1")]
1392    pub port: u32,
1393    #[prost(bool, tag = "2")]
1394    pub error: bool,
1395}
1396#[derive(Clone, PartialEq, ::prost::Message)]
1397pub struct VoiceAssistantEventData {
1398    #[prost(string, tag = "1")]
1399    pub name: ::prost::alloc::string::String,
1400    #[prost(string, tag = "2")]
1401    pub value: ::prost::alloc::string::String,
1402}
1403#[derive(Clone, PartialEq, ::prost::Message)]
1404pub struct VoiceAssistantEventResponse {
1405    #[prost(enumeration = "VoiceAssistantEvent", tag = "1")]
1406    pub event_type: i32,
1407    #[prost(message, repeated, tag = "2")]
1408    pub data: ::prost::alloc::vec::Vec<VoiceAssistantEventData>,
1409}
1410#[derive(Clone, PartialEq, ::prost::Message)]
1411pub struct VoiceAssistantAudio {
1412    #[prost(bytes = "vec", tag = "1")]
1413    pub data: ::prost::alloc::vec::Vec<u8>,
1414    #[prost(bool, tag = "2")]
1415    pub end: bool,
1416}
1417#[derive(Clone, PartialEq, ::prost::Message)]
1418pub struct VoiceAssistantTimerEventResponse {
1419    #[prost(enumeration = "VoiceAssistantTimerEvent", tag = "1")]
1420    pub event_type: i32,
1421    #[prost(string, tag = "2")]
1422    pub timer_id: ::prost::alloc::string::String,
1423    #[prost(string, tag = "3")]
1424    pub name: ::prost::alloc::string::String,
1425    #[prost(uint32, tag = "4")]
1426    pub total_seconds: u32,
1427    #[prost(uint32, tag = "5")]
1428    pub seconds_left: u32,
1429    #[prost(bool, tag = "6")]
1430    pub is_active: bool,
1431}
1432#[derive(Clone, PartialEq, ::prost::Message)]
1433pub struct VoiceAssistantAnnounceRequest {
1434    #[prost(string, tag = "1")]
1435    pub media_id: ::prost::alloc::string::String,
1436    #[prost(string, tag = "2")]
1437    pub text: ::prost::alloc::string::String,
1438    #[prost(string, tag = "3")]
1439    pub preannounce_media_id: ::prost::alloc::string::String,
1440    #[prost(bool, tag = "4")]
1441    pub start_conversation: bool,
1442}
1443#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1444pub struct VoiceAssistantAnnounceFinished {
1445    #[prost(bool, tag = "1")]
1446    pub success: bool,
1447}
1448#[derive(Clone, PartialEq, ::prost::Message)]
1449pub struct VoiceAssistantWakeWord {
1450    #[prost(string, tag = "1")]
1451    pub id: ::prost::alloc::string::String,
1452    #[prost(string, tag = "2")]
1453    pub wake_word: ::prost::alloc::string::String,
1454    #[prost(string, repeated, tag = "3")]
1455    pub trained_languages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1456}
1457#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1458pub struct VoiceAssistantConfigurationRequest {}
1459#[derive(Clone, PartialEq, ::prost::Message)]
1460pub struct VoiceAssistantConfigurationResponse {
1461    #[prost(message, repeated, tag = "1")]
1462    pub available_wake_words: ::prost::alloc::vec::Vec<VoiceAssistantWakeWord>,
1463    #[prost(string, repeated, tag = "2")]
1464    pub active_wake_words: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1465    #[prost(uint32, tag = "3")]
1466    pub max_active_wake_words: u32,
1467}
1468#[derive(Clone, PartialEq, ::prost::Message)]
1469pub struct VoiceAssistantSetConfiguration {
1470    #[prost(string, repeated, tag = "1")]
1471    pub active_wake_words: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1472}
1473#[derive(Clone, PartialEq, ::prost::Message)]
1474pub struct ListEntitiesAlarmControlPanelResponse {
1475    #[prost(string, tag = "1")]
1476    pub object_id: ::prost::alloc::string::String,
1477    #[prost(fixed32, tag = "2")]
1478    pub key: u32,
1479    #[prost(string, tag = "3")]
1480    pub name: ::prost::alloc::string::String,
1481    #[prost(string, tag = "4")]
1482    pub unique_id: ::prost::alloc::string::String,
1483    #[prost(string, tag = "5")]
1484    pub icon: ::prost::alloc::string::String,
1485    #[prost(bool, tag = "6")]
1486    pub disabled_by_default: bool,
1487    #[prost(enumeration = "EntityCategory", tag = "7")]
1488    pub entity_category: i32,
1489    #[prost(uint32, tag = "8")]
1490    pub supported_features: u32,
1491    #[prost(bool, tag = "9")]
1492    pub requires_code: bool,
1493    #[prost(bool, tag = "10")]
1494    pub requires_code_to_arm: bool,
1495}
1496#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1497pub struct AlarmControlPanelStateResponse {
1498    #[prost(fixed32, tag = "1")]
1499    pub key: u32,
1500    #[prost(enumeration = "AlarmControlPanelState", tag = "2")]
1501    pub state: i32,
1502}
1503#[derive(Clone, PartialEq, ::prost::Message)]
1504pub struct AlarmControlPanelCommandRequest {
1505    #[prost(fixed32, tag = "1")]
1506    pub key: u32,
1507    #[prost(enumeration = "AlarmControlPanelStateCommand", tag = "2")]
1508    pub command: i32,
1509    #[prost(string, tag = "3")]
1510    pub code: ::prost::alloc::string::String,
1511}
1512#[derive(Clone, PartialEq, ::prost::Message)]
1513pub struct ListEntitiesTextResponse {
1514    #[prost(string, tag = "1")]
1515    pub object_id: ::prost::alloc::string::String,
1516    #[prost(fixed32, tag = "2")]
1517    pub key: u32,
1518    #[prost(string, tag = "3")]
1519    pub name: ::prost::alloc::string::String,
1520    #[prost(string, tag = "4")]
1521    pub unique_id: ::prost::alloc::string::String,
1522    #[prost(string, tag = "5")]
1523    pub icon: ::prost::alloc::string::String,
1524    #[prost(bool, tag = "6")]
1525    pub disabled_by_default: bool,
1526    #[prost(enumeration = "EntityCategory", tag = "7")]
1527    pub entity_category: i32,
1528    #[prost(uint32, tag = "8")]
1529    pub min_length: u32,
1530    #[prost(uint32, tag = "9")]
1531    pub max_length: u32,
1532    #[prost(string, tag = "10")]
1533    pub pattern: ::prost::alloc::string::String,
1534    #[prost(enumeration = "TextMode", tag = "11")]
1535    pub mode: i32,
1536}
1537#[derive(Clone, PartialEq, ::prost::Message)]
1538pub struct TextStateResponse {
1539    #[prost(fixed32, tag = "1")]
1540    pub key: u32,
1541    #[prost(string, tag = "2")]
1542    pub state: ::prost::alloc::string::String,
1543    /// If the Text does not have a valid state yet.
1544    /// Equivalent to `!obj->has_state()` - inverse logic to make state packets smaller
1545    #[prost(bool, tag = "3")]
1546    pub missing_state: bool,
1547}
1548#[derive(Clone, PartialEq, ::prost::Message)]
1549pub struct TextCommandRequest {
1550    #[prost(fixed32, tag = "1")]
1551    pub key: u32,
1552    #[prost(string, tag = "2")]
1553    pub state: ::prost::alloc::string::String,
1554}
1555/// ==================== DATETIME DATE ====================
1556#[derive(Clone, PartialEq, ::prost::Message)]
1557pub struct ListEntitiesDateResponse {
1558    #[prost(string, tag = "1")]
1559    pub object_id: ::prost::alloc::string::String,
1560    #[prost(fixed32, tag = "2")]
1561    pub key: u32,
1562    #[prost(string, tag = "3")]
1563    pub name: ::prost::alloc::string::String,
1564    #[prost(string, tag = "4")]
1565    pub unique_id: ::prost::alloc::string::String,
1566    #[prost(string, tag = "5")]
1567    pub icon: ::prost::alloc::string::String,
1568    #[prost(bool, tag = "6")]
1569    pub disabled_by_default: bool,
1570    #[prost(enumeration = "EntityCategory", tag = "7")]
1571    pub entity_category: i32,
1572}
1573#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1574pub struct DateStateResponse {
1575    #[prost(fixed32, tag = "1")]
1576    pub key: u32,
1577    /// If the date does not have a valid state yet.
1578    /// Equivalent to `!obj->has_state()` - inverse logic to make state packets smaller
1579    #[prost(bool, tag = "2")]
1580    pub missing_state: bool,
1581    #[prost(uint32, tag = "3")]
1582    pub year: u32,
1583    #[prost(uint32, tag = "4")]
1584    pub month: u32,
1585    #[prost(uint32, tag = "5")]
1586    pub day: u32,
1587}
1588#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1589pub struct DateCommandRequest {
1590    #[prost(fixed32, tag = "1")]
1591    pub key: u32,
1592    #[prost(uint32, tag = "2")]
1593    pub year: u32,
1594    #[prost(uint32, tag = "3")]
1595    pub month: u32,
1596    #[prost(uint32, tag = "4")]
1597    pub day: u32,
1598}
1599/// ==================== DATETIME TIME ====================
1600#[derive(Clone, PartialEq, ::prost::Message)]
1601pub struct ListEntitiesTimeResponse {
1602    #[prost(string, tag = "1")]
1603    pub object_id: ::prost::alloc::string::String,
1604    #[prost(fixed32, tag = "2")]
1605    pub key: u32,
1606    #[prost(string, tag = "3")]
1607    pub name: ::prost::alloc::string::String,
1608    #[prost(string, tag = "4")]
1609    pub unique_id: ::prost::alloc::string::String,
1610    #[prost(string, tag = "5")]
1611    pub icon: ::prost::alloc::string::String,
1612    #[prost(bool, tag = "6")]
1613    pub disabled_by_default: bool,
1614    #[prost(enumeration = "EntityCategory", tag = "7")]
1615    pub entity_category: i32,
1616}
1617#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1618pub struct TimeStateResponse {
1619    #[prost(fixed32, tag = "1")]
1620    pub key: u32,
1621    /// If the time does not have a valid state yet.
1622    /// Equivalent to `!obj->has_state()` - inverse logic to make state packets smaller
1623    #[prost(bool, tag = "2")]
1624    pub missing_state: bool,
1625    #[prost(uint32, tag = "3")]
1626    pub hour: u32,
1627    #[prost(uint32, tag = "4")]
1628    pub minute: u32,
1629    #[prost(uint32, tag = "5")]
1630    pub second: u32,
1631}
1632#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1633pub struct TimeCommandRequest {
1634    #[prost(fixed32, tag = "1")]
1635    pub key: u32,
1636    #[prost(uint32, tag = "2")]
1637    pub hour: u32,
1638    #[prost(uint32, tag = "3")]
1639    pub minute: u32,
1640    #[prost(uint32, tag = "4")]
1641    pub second: u32,
1642}
1643/// ==================== EVENT ====================
1644#[derive(Clone, PartialEq, ::prost::Message)]
1645pub struct ListEntitiesEventResponse {
1646    #[prost(string, tag = "1")]
1647    pub object_id: ::prost::alloc::string::String,
1648    #[prost(fixed32, tag = "2")]
1649    pub key: u32,
1650    #[prost(string, tag = "3")]
1651    pub name: ::prost::alloc::string::String,
1652    #[prost(string, tag = "4")]
1653    pub unique_id: ::prost::alloc::string::String,
1654    #[prost(string, tag = "5")]
1655    pub icon: ::prost::alloc::string::String,
1656    #[prost(bool, tag = "6")]
1657    pub disabled_by_default: bool,
1658    #[prost(enumeration = "EntityCategory", tag = "7")]
1659    pub entity_category: i32,
1660    #[prost(string, tag = "8")]
1661    pub device_class: ::prost::alloc::string::String,
1662    #[prost(string, repeated, tag = "9")]
1663    pub event_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1664}
1665#[derive(Clone, PartialEq, ::prost::Message)]
1666pub struct EventResponse {
1667    #[prost(fixed32, tag = "1")]
1668    pub key: u32,
1669    #[prost(string, tag = "2")]
1670    pub event_type: ::prost::alloc::string::String,
1671}
1672/// ==================== VALVE ====================
1673#[derive(Clone, PartialEq, ::prost::Message)]
1674pub struct ListEntitiesValveResponse {
1675    #[prost(string, tag = "1")]
1676    pub object_id: ::prost::alloc::string::String,
1677    #[prost(fixed32, tag = "2")]
1678    pub key: u32,
1679    #[prost(string, tag = "3")]
1680    pub name: ::prost::alloc::string::String,
1681    #[prost(string, tag = "4")]
1682    pub unique_id: ::prost::alloc::string::String,
1683    #[prost(string, tag = "5")]
1684    pub icon: ::prost::alloc::string::String,
1685    #[prost(bool, tag = "6")]
1686    pub disabled_by_default: bool,
1687    #[prost(enumeration = "EntityCategory", tag = "7")]
1688    pub entity_category: i32,
1689    #[prost(string, tag = "8")]
1690    pub device_class: ::prost::alloc::string::String,
1691    #[prost(bool, tag = "9")]
1692    pub assumed_state: bool,
1693    #[prost(bool, tag = "10")]
1694    pub supports_position: bool,
1695    #[prost(bool, tag = "11")]
1696    pub supports_stop: bool,
1697}
1698#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1699pub struct ValveStateResponse {
1700    #[prost(fixed32, tag = "1")]
1701    pub key: u32,
1702    #[prost(float, tag = "2")]
1703    pub position: f32,
1704    #[prost(enumeration = "ValveOperation", tag = "3")]
1705    pub current_operation: i32,
1706}
1707#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1708pub struct ValveCommandRequest {
1709    #[prost(fixed32, tag = "1")]
1710    pub key: u32,
1711    #[prost(bool, tag = "2")]
1712    pub has_position: bool,
1713    #[prost(float, tag = "3")]
1714    pub position: f32,
1715    #[prost(bool, tag = "4")]
1716    pub stop: bool,
1717}
1718/// ==================== DATETIME DATETIME ====================
1719#[derive(Clone, PartialEq, ::prost::Message)]
1720pub struct ListEntitiesDateTimeResponse {
1721    #[prost(string, tag = "1")]
1722    pub object_id: ::prost::alloc::string::String,
1723    #[prost(fixed32, tag = "2")]
1724    pub key: u32,
1725    #[prost(string, tag = "3")]
1726    pub name: ::prost::alloc::string::String,
1727    #[prost(string, tag = "4")]
1728    pub unique_id: ::prost::alloc::string::String,
1729    #[prost(string, tag = "5")]
1730    pub icon: ::prost::alloc::string::String,
1731    #[prost(bool, tag = "6")]
1732    pub disabled_by_default: bool,
1733    #[prost(enumeration = "EntityCategory", tag = "7")]
1734    pub entity_category: i32,
1735}
1736#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1737pub struct DateTimeStateResponse {
1738    #[prost(fixed32, tag = "1")]
1739    pub key: u32,
1740    /// If the datetime does not have a valid state yet.
1741    /// Equivalent to `!obj->has_state()` - inverse logic to make state packets smaller
1742    #[prost(bool, tag = "2")]
1743    pub missing_state: bool,
1744    #[prost(fixed32, tag = "3")]
1745    pub epoch_seconds: u32,
1746}
1747#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1748pub struct DateTimeCommandRequest {
1749    #[prost(fixed32, tag = "1")]
1750    pub key: u32,
1751    #[prost(fixed32, tag = "2")]
1752    pub epoch_seconds: u32,
1753}
1754/// ==================== UPDATE ====================
1755#[derive(Clone, PartialEq, ::prost::Message)]
1756pub struct ListEntitiesUpdateResponse {
1757    #[prost(string, tag = "1")]
1758    pub object_id: ::prost::alloc::string::String,
1759    #[prost(fixed32, tag = "2")]
1760    pub key: u32,
1761    #[prost(string, tag = "3")]
1762    pub name: ::prost::alloc::string::String,
1763    #[prost(string, tag = "4")]
1764    pub unique_id: ::prost::alloc::string::String,
1765    #[prost(string, tag = "5")]
1766    pub icon: ::prost::alloc::string::String,
1767    #[prost(bool, tag = "6")]
1768    pub disabled_by_default: bool,
1769    #[prost(enumeration = "EntityCategory", tag = "7")]
1770    pub entity_category: i32,
1771    #[prost(string, tag = "8")]
1772    pub device_class: ::prost::alloc::string::String,
1773}
1774#[derive(Clone, PartialEq, ::prost::Message)]
1775pub struct UpdateStateResponse {
1776    #[prost(fixed32, tag = "1")]
1777    pub key: u32,
1778    #[prost(bool, tag = "2")]
1779    pub missing_state: bool,
1780    #[prost(bool, tag = "3")]
1781    pub in_progress: bool,
1782    #[prost(bool, tag = "4")]
1783    pub has_progress: bool,
1784    #[prost(float, tag = "5")]
1785    pub progress: f32,
1786    #[prost(string, tag = "6")]
1787    pub current_version: ::prost::alloc::string::String,
1788    #[prost(string, tag = "7")]
1789    pub latest_version: ::prost::alloc::string::String,
1790    #[prost(string, tag = "8")]
1791    pub title: ::prost::alloc::string::String,
1792    #[prost(string, tag = "9")]
1793    pub release_summary: ::prost::alloc::string::String,
1794    #[prost(string, tag = "10")]
1795    pub release_url: ::prost::alloc::string::String,
1796}
1797#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1798pub struct UpdateCommandRequest {
1799    #[prost(fixed32, tag = "1")]
1800    pub key: u32,
1801    #[prost(enumeration = "UpdateCommand", tag = "2")]
1802    pub command: i32,
1803}
1804#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1805#[repr(i32)]
1806pub enum EntityCategory {
1807    None = 0,
1808    Config = 1,
1809    Diagnostic = 2,
1810}
1811impl EntityCategory {
1812    /// String value of the enum field names used in the ProtoBuf definition.
1813    ///
1814    /// The values are not transformed in any way and thus are considered stable
1815    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1816    pub fn as_str_name(&self) -> &'static str {
1817        match self {
1818            Self::None => "ENTITY_CATEGORY_NONE",
1819            Self::Config => "ENTITY_CATEGORY_CONFIG",
1820            Self::Diagnostic => "ENTITY_CATEGORY_DIAGNOSTIC",
1821        }
1822    }
1823    /// Creates an enum from field names used in the ProtoBuf definition.
1824    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1825        match value {
1826            "ENTITY_CATEGORY_NONE" => Some(Self::None),
1827            "ENTITY_CATEGORY_CONFIG" => Some(Self::Config),
1828            "ENTITY_CATEGORY_DIAGNOSTIC" => Some(Self::Diagnostic),
1829            _ => None,
1830        }
1831    }
1832}
1833#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1834#[repr(i32)]
1835pub enum LegacyCoverState {
1836    Open = 0,
1837    Closed = 1,
1838}
1839impl LegacyCoverState {
1840    /// String value of the enum field names used in the ProtoBuf definition.
1841    ///
1842    /// The values are not transformed in any way and thus are considered stable
1843    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1844    pub fn as_str_name(&self) -> &'static str {
1845        match self {
1846            Self::Open => "LEGACY_COVER_STATE_OPEN",
1847            Self::Closed => "LEGACY_COVER_STATE_CLOSED",
1848        }
1849    }
1850    /// Creates an enum from field names used in the ProtoBuf definition.
1851    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1852        match value {
1853            "LEGACY_COVER_STATE_OPEN" => Some(Self::Open),
1854            "LEGACY_COVER_STATE_CLOSED" => Some(Self::Closed),
1855            _ => None,
1856        }
1857    }
1858}
1859#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1860#[repr(i32)]
1861pub enum CoverOperation {
1862    Idle = 0,
1863    IsOpening = 1,
1864    IsClosing = 2,
1865}
1866impl CoverOperation {
1867    /// String value of the enum field names used in the ProtoBuf definition.
1868    ///
1869    /// The values are not transformed in any way and thus are considered stable
1870    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1871    pub fn as_str_name(&self) -> &'static str {
1872        match self {
1873            Self::Idle => "COVER_OPERATION_IDLE",
1874            Self::IsOpening => "COVER_OPERATION_IS_OPENING",
1875            Self::IsClosing => "COVER_OPERATION_IS_CLOSING",
1876        }
1877    }
1878    /// Creates an enum from field names used in the ProtoBuf definition.
1879    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1880        match value {
1881            "COVER_OPERATION_IDLE" => Some(Self::Idle),
1882            "COVER_OPERATION_IS_OPENING" => Some(Self::IsOpening),
1883            "COVER_OPERATION_IS_CLOSING" => Some(Self::IsClosing),
1884            _ => None,
1885        }
1886    }
1887}
1888#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1889#[repr(i32)]
1890pub enum LegacyCoverCommand {
1891    Open = 0,
1892    Close = 1,
1893    Stop = 2,
1894}
1895impl LegacyCoverCommand {
1896    /// String value of the enum field names used in the ProtoBuf definition.
1897    ///
1898    /// The values are not transformed in any way and thus are considered stable
1899    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1900    pub fn as_str_name(&self) -> &'static str {
1901        match self {
1902            Self::Open => "LEGACY_COVER_COMMAND_OPEN",
1903            Self::Close => "LEGACY_COVER_COMMAND_CLOSE",
1904            Self::Stop => "LEGACY_COVER_COMMAND_STOP",
1905        }
1906    }
1907    /// Creates an enum from field names used in the ProtoBuf definition.
1908    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1909        match value {
1910            "LEGACY_COVER_COMMAND_OPEN" => Some(Self::Open),
1911            "LEGACY_COVER_COMMAND_CLOSE" => Some(Self::Close),
1912            "LEGACY_COVER_COMMAND_STOP" => Some(Self::Stop),
1913            _ => None,
1914        }
1915    }
1916}
1917#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1918#[repr(i32)]
1919pub enum FanSpeed {
1920    Low = 0,
1921    Medium = 1,
1922    High = 2,
1923}
1924impl FanSpeed {
1925    /// String value of the enum field names used in the ProtoBuf definition.
1926    ///
1927    /// The values are not transformed in any way and thus are considered stable
1928    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1929    pub fn as_str_name(&self) -> &'static str {
1930        match self {
1931            Self::Low => "FAN_SPEED_LOW",
1932            Self::Medium => "FAN_SPEED_MEDIUM",
1933            Self::High => "FAN_SPEED_HIGH",
1934        }
1935    }
1936    /// Creates an enum from field names used in the ProtoBuf definition.
1937    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1938        match value {
1939            "FAN_SPEED_LOW" => Some(Self::Low),
1940            "FAN_SPEED_MEDIUM" => Some(Self::Medium),
1941            "FAN_SPEED_HIGH" => Some(Self::High),
1942            _ => None,
1943        }
1944    }
1945}
1946#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1947#[repr(i32)]
1948pub enum FanDirection {
1949    Forward = 0,
1950    Reverse = 1,
1951}
1952impl FanDirection {
1953    /// String value of the enum field names used in the ProtoBuf definition.
1954    ///
1955    /// The values are not transformed in any way and thus are considered stable
1956    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1957    pub fn as_str_name(&self) -> &'static str {
1958        match self {
1959            Self::Forward => "FAN_DIRECTION_FORWARD",
1960            Self::Reverse => "FAN_DIRECTION_REVERSE",
1961        }
1962    }
1963    /// Creates an enum from field names used in the ProtoBuf definition.
1964    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1965        match value {
1966            "FAN_DIRECTION_FORWARD" => Some(Self::Forward),
1967            "FAN_DIRECTION_REVERSE" => Some(Self::Reverse),
1968            _ => None,
1969        }
1970    }
1971}
1972/// ==================== SENSOR ====================
1973#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1974#[repr(i32)]
1975pub enum SensorStateClass {
1976    StateClassNone = 0,
1977    StateClassMeasurement = 1,
1978    StateClassTotalIncreasing = 2,
1979    StateClassTotal = 3,
1980}
1981impl SensorStateClass {
1982    /// String value of the enum field names used in the ProtoBuf definition.
1983    ///
1984    /// The values are not transformed in any way and thus are considered stable
1985    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1986    pub fn as_str_name(&self) -> &'static str {
1987        match self {
1988            Self::StateClassNone => "STATE_CLASS_NONE",
1989            Self::StateClassMeasurement => "STATE_CLASS_MEASUREMENT",
1990            Self::StateClassTotalIncreasing => "STATE_CLASS_TOTAL_INCREASING",
1991            Self::StateClassTotal => "STATE_CLASS_TOTAL",
1992        }
1993    }
1994    /// Creates an enum from field names used in the ProtoBuf definition.
1995    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1996        match value {
1997            "STATE_CLASS_NONE" => Some(Self::StateClassNone),
1998            "STATE_CLASS_MEASUREMENT" => Some(Self::StateClassMeasurement),
1999            "STATE_CLASS_TOTAL_INCREASING" => Some(Self::StateClassTotalIncreasing),
2000            "STATE_CLASS_TOTAL" => Some(Self::StateClassTotal),
2001            _ => None,
2002        }
2003    }
2004}
2005#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2006#[repr(i32)]
2007pub enum SensorLastResetType {
2008    LastResetNone = 0,
2009    LastResetNever = 1,
2010    LastResetAuto = 2,
2011}
2012impl SensorLastResetType {
2013    /// String value of the enum field names used in the ProtoBuf definition.
2014    ///
2015    /// The values are not transformed in any way and thus are considered stable
2016    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2017    pub fn as_str_name(&self) -> &'static str {
2018        match self {
2019            Self::LastResetNone => "LAST_RESET_NONE",
2020            Self::LastResetNever => "LAST_RESET_NEVER",
2021            Self::LastResetAuto => "LAST_RESET_AUTO",
2022        }
2023    }
2024    /// Creates an enum from field names used in the ProtoBuf definition.
2025    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2026        match value {
2027            "LAST_RESET_NONE" => Some(Self::LastResetNone),
2028            "LAST_RESET_NEVER" => Some(Self::LastResetNever),
2029            "LAST_RESET_AUTO" => Some(Self::LastResetAuto),
2030            _ => None,
2031        }
2032    }
2033}
2034/// ==================== SUBSCRIBE LOGS ====================
2035#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2036#[repr(i32)]
2037pub enum LogLevel {
2038    None = 0,
2039    Error = 1,
2040    Warn = 2,
2041    Info = 3,
2042    Config = 4,
2043    Debug = 5,
2044    Verbose = 6,
2045    VeryVerbose = 7,
2046}
2047impl LogLevel {
2048    /// String value of the enum field names used in the ProtoBuf definition.
2049    ///
2050    /// The values are not transformed in any way and thus are considered stable
2051    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2052    pub fn as_str_name(&self) -> &'static str {
2053        match self {
2054            Self::None => "LOG_LEVEL_NONE",
2055            Self::Error => "LOG_LEVEL_ERROR",
2056            Self::Warn => "LOG_LEVEL_WARN",
2057            Self::Info => "LOG_LEVEL_INFO",
2058            Self::Config => "LOG_LEVEL_CONFIG",
2059            Self::Debug => "LOG_LEVEL_DEBUG",
2060            Self::Verbose => "LOG_LEVEL_VERBOSE",
2061            Self::VeryVerbose => "LOG_LEVEL_VERY_VERBOSE",
2062        }
2063    }
2064    /// Creates an enum from field names used in the ProtoBuf definition.
2065    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2066        match value {
2067            "LOG_LEVEL_NONE" => Some(Self::None),
2068            "LOG_LEVEL_ERROR" => Some(Self::Error),
2069            "LOG_LEVEL_WARN" => Some(Self::Warn),
2070            "LOG_LEVEL_INFO" => Some(Self::Info),
2071            "LOG_LEVEL_CONFIG" => Some(Self::Config),
2072            "LOG_LEVEL_DEBUG" => Some(Self::Debug),
2073            "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
2074            "LOG_LEVEL_VERY_VERBOSE" => Some(Self::VeryVerbose),
2075            _ => None,
2076        }
2077    }
2078}
2079/// ==================== USER-DEFINES SERVICES ====================
2080#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2081#[repr(i32)]
2082pub enum ServiceArgType {
2083    Bool = 0,
2084    Int = 1,
2085    Float = 2,
2086    String = 3,
2087    BoolArray = 4,
2088    IntArray = 5,
2089    FloatArray = 6,
2090    StringArray = 7,
2091}
2092impl ServiceArgType {
2093    /// String value of the enum field names used in the ProtoBuf definition.
2094    ///
2095    /// The values are not transformed in any way and thus are considered stable
2096    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2097    pub fn as_str_name(&self) -> &'static str {
2098        match self {
2099            Self::Bool => "SERVICE_ARG_TYPE_BOOL",
2100            Self::Int => "SERVICE_ARG_TYPE_INT",
2101            Self::Float => "SERVICE_ARG_TYPE_FLOAT",
2102            Self::String => "SERVICE_ARG_TYPE_STRING",
2103            Self::BoolArray => "SERVICE_ARG_TYPE_BOOL_ARRAY",
2104            Self::IntArray => "SERVICE_ARG_TYPE_INT_ARRAY",
2105            Self::FloatArray => "SERVICE_ARG_TYPE_FLOAT_ARRAY",
2106            Self::StringArray => "SERVICE_ARG_TYPE_STRING_ARRAY",
2107        }
2108    }
2109    /// Creates an enum from field names used in the ProtoBuf definition.
2110    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2111        match value {
2112            "SERVICE_ARG_TYPE_BOOL" => Some(Self::Bool),
2113            "SERVICE_ARG_TYPE_INT" => Some(Self::Int),
2114            "SERVICE_ARG_TYPE_FLOAT" => Some(Self::Float),
2115            "SERVICE_ARG_TYPE_STRING" => Some(Self::String),
2116            "SERVICE_ARG_TYPE_BOOL_ARRAY" => Some(Self::BoolArray),
2117            "SERVICE_ARG_TYPE_INT_ARRAY" => Some(Self::IntArray),
2118            "SERVICE_ARG_TYPE_FLOAT_ARRAY" => Some(Self::FloatArray),
2119            "SERVICE_ARG_TYPE_STRING_ARRAY" => Some(Self::StringArray),
2120            _ => None,
2121        }
2122    }
2123}
2124/// ==================== CLIMATE ====================
2125#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2126#[repr(i32)]
2127pub enum ClimateMode {
2128    Off = 0,
2129    HeatCool = 1,
2130    Cool = 2,
2131    Heat = 3,
2132    FanOnly = 4,
2133    Dry = 5,
2134    Auto = 6,
2135}
2136impl ClimateMode {
2137    /// String value of the enum field names used in the ProtoBuf definition.
2138    ///
2139    /// The values are not transformed in any way and thus are considered stable
2140    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2141    pub fn as_str_name(&self) -> &'static str {
2142        match self {
2143            Self::Off => "CLIMATE_MODE_OFF",
2144            Self::HeatCool => "CLIMATE_MODE_HEAT_COOL",
2145            Self::Cool => "CLIMATE_MODE_COOL",
2146            Self::Heat => "CLIMATE_MODE_HEAT",
2147            Self::FanOnly => "CLIMATE_MODE_FAN_ONLY",
2148            Self::Dry => "CLIMATE_MODE_DRY",
2149            Self::Auto => "CLIMATE_MODE_AUTO",
2150        }
2151    }
2152    /// Creates an enum from field names used in the ProtoBuf definition.
2153    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2154        match value {
2155            "CLIMATE_MODE_OFF" => Some(Self::Off),
2156            "CLIMATE_MODE_HEAT_COOL" => Some(Self::HeatCool),
2157            "CLIMATE_MODE_COOL" => Some(Self::Cool),
2158            "CLIMATE_MODE_HEAT" => Some(Self::Heat),
2159            "CLIMATE_MODE_FAN_ONLY" => Some(Self::FanOnly),
2160            "CLIMATE_MODE_DRY" => Some(Self::Dry),
2161            "CLIMATE_MODE_AUTO" => Some(Self::Auto),
2162            _ => None,
2163        }
2164    }
2165}
2166#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2167#[repr(i32)]
2168pub enum ClimateFanMode {
2169    ClimateFanOn = 0,
2170    ClimateFanOff = 1,
2171    ClimateFanAuto = 2,
2172    ClimateFanLow = 3,
2173    ClimateFanMedium = 4,
2174    ClimateFanHigh = 5,
2175    ClimateFanMiddle = 6,
2176    ClimateFanFocus = 7,
2177    ClimateFanDiffuse = 8,
2178    ClimateFanQuiet = 9,
2179}
2180impl ClimateFanMode {
2181    /// String value of the enum field names used in the ProtoBuf definition.
2182    ///
2183    /// The values are not transformed in any way and thus are considered stable
2184    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2185    pub fn as_str_name(&self) -> &'static str {
2186        match self {
2187            Self::ClimateFanOn => "CLIMATE_FAN_ON",
2188            Self::ClimateFanOff => "CLIMATE_FAN_OFF",
2189            Self::ClimateFanAuto => "CLIMATE_FAN_AUTO",
2190            Self::ClimateFanLow => "CLIMATE_FAN_LOW",
2191            Self::ClimateFanMedium => "CLIMATE_FAN_MEDIUM",
2192            Self::ClimateFanHigh => "CLIMATE_FAN_HIGH",
2193            Self::ClimateFanMiddle => "CLIMATE_FAN_MIDDLE",
2194            Self::ClimateFanFocus => "CLIMATE_FAN_FOCUS",
2195            Self::ClimateFanDiffuse => "CLIMATE_FAN_DIFFUSE",
2196            Self::ClimateFanQuiet => "CLIMATE_FAN_QUIET",
2197        }
2198    }
2199    /// Creates an enum from field names used in the ProtoBuf definition.
2200    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2201        match value {
2202            "CLIMATE_FAN_ON" => Some(Self::ClimateFanOn),
2203            "CLIMATE_FAN_OFF" => Some(Self::ClimateFanOff),
2204            "CLIMATE_FAN_AUTO" => Some(Self::ClimateFanAuto),
2205            "CLIMATE_FAN_LOW" => Some(Self::ClimateFanLow),
2206            "CLIMATE_FAN_MEDIUM" => Some(Self::ClimateFanMedium),
2207            "CLIMATE_FAN_HIGH" => Some(Self::ClimateFanHigh),
2208            "CLIMATE_FAN_MIDDLE" => Some(Self::ClimateFanMiddle),
2209            "CLIMATE_FAN_FOCUS" => Some(Self::ClimateFanFocus),
2210            "CLIMATE_FAN_DIFFUSE" => Some(Self::ClimateFanDiffuse),
2211            "CLIMATE_FAN_QUIET" => Some(Self::ClimateFanQuiet),
2212            _ => None,
2213        }
2214    }
2215}
2216#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2217#[repr(i32)]
2218pub enum ClimateSwingMode {
2219    ClimateSwingOff = 0,
2220    ClimateSwingBoth = 1,
2221    ClimateSwingVertical = 2,
2222    ClimateSwingHorizontal = 3,
2223}
2224impl ClimateSwingMode {
2225    /// String value of the enum field names used in the ProtoBuf definition.
2226    ///
2227    /// The values are not transformed in any way and thus are considered stable
2228    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2229    pub fn as_str_name(&self) -> &'static str {
2230        match self {
2231            Self::ClimateSwingOff => "CLIMATE_SWING_OFF",
2232            Self::ClimateSwingBoth => "CLIMATE_SWING_BOTH",
2233            Self::ClimateSwingVertical => "CLIMATE_SWING_VERTICAL",
2234            Self::ClimateSwingHorizontal => "CLIMATE_SWING_HORIZONTAL",
2235        }
2236    }
2237    /// Creates an enum from field names used in the ProtoBuf definition.
2238    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2239        match value {
2240            "CLIMATE_SWING_OFF" => Some(Self::ClimateSwingOff),
2241            "CLIMATE_SWING_BOTH" => Some(Self::ClimateSwingBoth),
2242            "CLIMATE_SWING_VERTICAL" => Some(Self::ClimateSwingVertical),
2243            "CLIMATE_SWING_HORIZONTAL" => Some(Self::ClimateSwingHorizontal),
2244            _ => None,
2245        }
2246    }
2247}
2248#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2249#[repr(i32)]
2250pub enum ClimateAction {
2251    Off = 0,
2252    /// values same as mode for readability
2253    Cooling = 2,
2254    Heating = 3,
2255    Idle = 4,
2256    Drying = 5,
2257    Fan = 6,
2258}
2259impl ClimateAction {
2260    /// String value of the enum field names used in the ProtoBuf definition.
2261    ///
2262    /// The values are not transformed in any way and thus are considered stable
2263    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2264    pub fn as_str_name(&self) -> &'static str {
2265        match self {
2266            Self::Off => "CLIMATE_ACTION_OFF",
2267            Self::Cooling => "CLIMATE_ACTION_COOLING",
2268            Self::Heating => "CLIMATE_ACTION_HEATING",
2269            Self::Idle => "CLIMATE_ACTION_IDLE",
2270            Self::Drying => "CLIMATE_ACTION_DRYING",
2271            Self::Fan => "CLIMATE_ACTION_FAN",
2272        }
2273    }
2274    /// Creates an enum from field names used in the ProtoBuf definition.
2275    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2276        match value {
2277            "CLIMATE_ACTION_OFF" => Some(Self::Off),
2278            "CLIMATE_ACTION_COOLING" => Some(Self::Cooling),
2279            "CLIMATE_ACTION_HEATING" => Some(Self::Heating),
2280            "CLIMATE_ACTION_IDLE" => Some(Self::Idle),
2281            "CLIMATE_ACTION_DRYING" => Some(Self::Drying),
2282            "CLIMATE_ACTION_FAN" => Some(Self::Fan),
2283            _ => None,
2284        }
2285    }
2286}
2287#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2288#[repr(i32)]
2289pub enum ClimatePreset {
2290    None = 0,
2291    Home = 1,
2292    Away = 2,
2293    Boost = 3,
2294    Comfort = 4,
2295    Eco = 5,
2296    Sleep = 6,
2297    Activity = 7,
2298}
2299impl ClimatePreset {
2300    /// String value of the enum field names used in the ProtoBuf definition.
2301    ///
2302    /// The values are not transformed in any way and thus are considered stable
2303    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2304    pub fn as_str_name(&self) -> &'static str {
2305        match self {
2306            Self::None => "CLIMATE_PRESET_NONE",
2307            Self::Home => "CLIMATE_PRESET_HOME",
2308            Self::Away => "CLIMATE_PRESET_AWAY",
2309            Self::Boost => "CLIMATE_PRESET_BOOST",
2310            Self::Comfort => "CLIMATE_PRESET_COMFORT",
2311            Self::Eco => "CLIMATE_PRESET_ECO",
2312            Self::Sleep => "CLIMATE_PRESET_SLEEP",
2313            Self::Activity => "CLIMATE_PRESET_ACTIVITY",
2314        }
2315    }
2316    /// Creates an enum from field names used in the ProtoBuf definition.
2317    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2318        match value {
2319            "CLIMATE_PRESET_NONE" => Some(Self::None),
2320            "CLIMATE_PRESET_HOME" => Some(Self::Home),
2321            "CLIMATE_PRESET_AWAY" => Some(Self::Away),
2322            "CLIMATE_PRESET_BOOST" => Some(Self::Boost),
2323            "CLIMATE_PRESET_COMFORT" => Some(Self::Comfort),
2324            "CLIMATE_PRESET_ECO" => Some(Self::Eco),
2325            "CLIMATE_PRESET_SLEEP" => Some(Self::Sleep),
2326            "CLIMATE_PRESET_ACTIVITY" => Some(Self::Activity),
2327            _ => None,
2328        }
2329    }
2330}
2331/// ==================== NUMBER ====================
2332#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2333#[repr(i32)]
2334pub enum NumberMode {
2335    Auto = 0,
2336    Box = 1,
2337    Slider = 2,
2338}
2339impl NumberMode {
2340    /// String value of the enum field names used in the ProtoBuf definition.
2341    ///
2342    /// The values are not transformed in any way and thus are considered stable
2343    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2344    pub fn as_str_name(&self) -> &'static str {
2345        match self {
2346            Self::Auto => "NUMBER_MODE_AUTO",
2347            Self::Box => "NUMBER_MODE_BOX",
2348            Self::Slider => "NUMBER_MODE_SLIDER",
2349        }
2350    }
2351    /// Creates an enum from field names used in the ProtoBuf definition.
2352    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2353        match value {
2354            "NUMBER_MODE_AUTO" => Some(Self::Auto),
2355            "NUMBER_MODE_BOX" => Some(Self::Box),
2356            "NUMBER_MODE_SLIDER" => Some(Self::Slider),
2357            _ => None,
2358        }
2359    }
2360}
2361/// ==================== LOCK ====================
2362#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2363#[repr(i32)]
2364pub enum LockState {
2365    None = 0,
2366    Locked = 1,
2367    Unlocked = 2,
2368    Jammed = 3,
2369    Locking = 4,
2370    Unlocking = 5,
2371}
2372impl LockState {
2373    /// String value of the enum field names used in the ProtoBuf definition.
2374    ///
2375    /// The values are not transformed in any way and thus are considered stable
2376    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2377    pub fn as_str_name(&self) -> &'static str {
2378        match self {
2379            Self::None => "LOCK_STATE_NONE",
2380            Self::Locked => "LOCK_STATE_LOCKED",
2381            Self::Unlocked => "LOCK_STATE_UNLOCKED",
2382            Self::Jammed => "LOCK_STATE_JAMMED",
2383            Self::Locking => "LOCK_STATE_LOCKING",
2384            Self::Unlocking => "LOCK_STATE_UNLOCKING",
2385        }
2386    }
2387    /// Creates an enum from field names used in the ProtoBuf definition.
2388    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2389        match value {
2390            "LOCK_STATE_NONE" => Some(Self::None),
2391            "LOCK_STATE_LOCKED" => Some(Self::Locked),
2392            "LOCK_STATE_UNLOCKED" => Some(Self::Unlocked),
2393            "LOCK_STATE_JAMMED" => Some(Self::Jammed),
2394            "LOCK_STATE_LOCKING" => Some(Self::Locking),
2395            "LOCK_STATE_UNLOCKING" => Some(Self::Unlocking),
2396            _ => None,
2397        }
2398    }
2399}
2400#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2401#[repr(i32)]
2402pub enum LockCommand {
2403    LockUnlock = 0,
2404    LockLock = 1,
2405    LockOpen = 2,
2406}
2407impl LockCommand {
2408    /// String value of the enum field names used in the ProtoBuf definition.
2409    ///
2410    /// The values are not transformed in any way and thus are considered stable
2411    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2412    pub fn as_str_name(&self) -> &'static str {
2413        match self {
2414            Self::LockUnlock => "LOCK_UNLOCK",
2415            Self::LockLock => "LOCK_LOCK",
2416            Self::LockOpen => "LOCK_OPEN",
2417        }
2418    }
2419    /// Creates an enum from field names used in the ProtoBuf definition.
2420    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2421        match value {
2422            "LOCK_UNLOCK" => Some(Self::LockUnlock),
2423            "LOCK_LOCK" => Some(Self::LockLock),
2424            "LOCK_OPEN" => Some(Self::LockOpen),
2425            _ => None,
2426        }
2427    }
2428}
2429/// ==================== MEDIA PLAYER ====================
2430#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2431#[repr(i32)]
2432pub enum MediaPlayerState {
2433    None = 0,
2434    Idle = 1,
2435    Playing = 2,
2436    Paused = 3,
2437}
2438impl MediaPlayerState {
2439    /// String value of the enum field names used in the ProtoBuf definition.
2440    ///
2441    /// The values are not transformed in any way and thus are considered stable
2442    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2443    pub fn as_str_name(&self) -> &'static str {
2444        match self {
2445            Self::None => "MEDIA_PLAYER_STATE_NONE",
2446            Self::Idle => "MEDIA_PLAYER_STATE_IDLE",
2447            Self::Playing => "MEDIA_PLAYER_STATE_PLAYING",
2448            Self::Paused => "MEDIA_PLAYER_STATE_PAUSED",
2449        }
2450    }
2451    /// Creates an enum from field names used in the ProtoBuf definition.
2452    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2453        match value {
2454            "MEDIA_PLAYER_STATE_NONE" => Some(Self::None),
2455            "MEDIA_PLAYER_STATE_IDLE" => Some(Self::Idle),
2456            "MEDIA_PLAYER_STATE_PLAYING" => Some(Self::Playing),
2457            "MEDIA_PLAYER_STATE_PAUSED" => Some(Self::Paused),
2458            _ => None,
2459        }
2460    }
2461}
2462#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2463#[repr(i32)]
2464pub enum MediaPlayerCommand {
2465    Play = 0,
2466    Pause = 1,
2467    Stop = 2,
2468    Mute = 3,
2469    Unmute = 4,
2470}
2471impl MediaPlayerCommand {
2472    /// String value of the enum field names used in the ProtoBuf definition.
2473    ///
2474    /// The values are not transformed in any way and thus are considered stable
2475    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2476    pub fn as_str_name(&self) -> &'static str {
2477        match self {
2478            Self::Play => "MEDIA_PLAYER_COMMAND_PLAY",
2479            Self::Pause => "MEDIA_PLAYER_COMMAND_PAUSE",
2480            Self::Stop => "MEDIA_PLAYER_COMMAND_STOP",
2481            Self::Mute => "MEDIA_PLAYER_COMMAND_MUTE",
2482            Self::Unmute => "MEDIA_PLAYER_COMMAND_UNMUTE",
2483        }
2484    }
2485    /// Creates an enum from field names used in the ProtoBuf definition.
2486    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2487        match value {
2488            "MEDIA_PLAYER_COMMAND_PLAY" => Some(Self::Play),
2489            "MEDIA_PLAYER_COMMAND_PAUSE" => Some(Self::Pause),
2490            "MEDIA_PLAYER_COMMAND_STOP" => Some(Self::Stop),
2491            "MEDIA_PLAYER_COMMAND_MUTE" => Some(Self::Mute),
2492            "MEDIA_PLAYER_COMMAND_UNMUTE" => Some(Self::Unmute),
2493            _ => None,
2494        }
2495    }
2496}
2497#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2498#[repr(i32)]
2499pub enum MediaPlayerFormatPurpose {
2500    Default = 0,
2501    Announcement = 1,
2502}
2503impl MediaPlayerFormatPurpose {
2504    /// String value of the enum field names used in the ProtoBuf definition.
2505    ///
2506    /// The values are not transformed in any way and thus are considered stable
2507    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2508    pub fn as_str_name(&self) -> &'static str {
2509        match self {
2510            Self::Default => "MEDIA_PLAYER_FORMAT_PURPOSE_DEFAULT",
2511            Self::Announcement => "MEDIA_PLAYER_FORMAT_PURPOSE_ANNOUNCEMENT",
2512        }
2513    }
2514    /// Creates an enum from field names used in the ProtoBuf definition.
2515    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2516        match value {
2517            "MEDIA_PLAYER_FORMAT_PURPOSE_DEFAULT" => Some(Self::Default),
2518            "MEDIA_PLAYER_FORMAT_PURPOSE_ANNOUNCEMENT" => Some(Self::Announcement),
2519            _ => None,
2520        }
2521    }
2522}
2523#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2524#[repr(i32)]
2525pub enum BluetoothDeviceRequestType {
2526    Connect = 0,
2527    Disconnect = 1,
2528    Pair = 2,
2529    Unpair = 3,
2530    ConnectV3WithCache = 4,
2531    ConnectV3WithoutCache = 5,
2532    ClearCache = 6,
2533}
2534impl BluetoothDeviceRequestType {
2535    /// String value of the enum field names used in the ProtoBuf definition.
2536    ///
2537    /// The values are not transformed in any way and thus are considered stable
2538    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2539    pub fn as_str_name(&self) -> &'static str {
2540        match self {
2541            Self::Connect => "BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT",
2542            Self::Disconnect => "BLUETOOTH_DEVICE_REQUEST_TYPE_DISCONNECT",
2543            Self::Pair => "BLUETOOTH_DEVICE_REQUEST_TYPE_PAIR",
2544            Self::Unpair => "BLUETOOTH_DEVICE_REQUEST_TYPE_UNPAIR",
2545            Self::ConnectV3WithCache => {
2546                "BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT_V3_WITH_CACHE"
2547            }
2548            Self::ConnectV3WithoutCache => {
2549                "BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT_V3_WITHOUT_CACHE"
2550            }
2551            Self::ClearCache => "BLUETOOTH_DEVICE_REQUEST_TYPE_CLEAR_CACHE",
2552        }
2553    }
2554    /// Creates an enum from field names used in the ProtoBuf definition.
2555    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2556        match value {
2557            "BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT" => Some(Self::Connect),
2558            "BLUETOOTH_DEVICE_REQUEST_TYPE_DISCONNECT" => Some(Self::Disconnect),
2559            "BLUETOOTH_DEVICE_REQUEST_TYPE_PAIR" => Some(Self::Pair),
2560            "BLUETOOTH_DEVICE_REQUEST_TYPE_UNPAIR" => Some(Self::Unpair),
2561            "BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT_V3_WITH_CACHE" => {
2562                Some(Self::ConnectV3WithCache)
2563            }
2564            "BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT_V3_WITHOUT_CACHE" => {
2565                Some(Self::ConnectV3WithoutCache)
2566            }
2567            "BLUETOOTH_DEVICE_REQUEST_TYPE_CLEAR_CACHE" => Some(Self::ClearCache),
2568            _ => None,
2569        }
2570    }
2571}
2572/// ==================== VOICE ASSISTANT ====================
2573#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2574#[repr(i32)]
2575pub enum VoiceAssistantSubscribeFlag {
2576    VoiceAssistantSubscribeNone = 0,
2577    VoiceAssistantSubscribeApiAudio = 1,
2578}
2579impl VoiceAssistantSubscribeFlag {
2580    /// String value of the enum field names used in the ProtoBuf definition.
2581    ///
2582    /// The values are not transformed in any way and thus are considered stable
2583    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2584    pub fn as_str_name(&self) -> &'static str {
2585        match self {
2586            Self::VoiceAssistantSubscribeNone => "VOICE_ASSISTANT_SUBSCRIBE_NONE",
2587            Self::VoiceAssistantSubscribeApiAudio => {
2588                "VOICE_ASSISTANT_SUBSCRIBE_API_AUDIO"
2589            }
2590        }
2591    }
2592    /// Creates an enum from field names used in the ProtoBuf definition.
2593    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2594        match value {
2595            "VOICE_ASSISTANT_SUBSCRIBE_NONE" => Some(Self::VoiceAssistantSubscribeNone),
2596            "VOICE_ASSISTANT_SUBSCRIBE_API_AUDIO" => {
2597                Some(Self::VoiceAssistantSubscribeApiAudio)
2598            }
2599            _ => None,
2600        }
2601    }
2602}
2603#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2604#[repr(i32)]
2605pub enum VoiceAssistantEvent {
2606    VoiceAssistantError = 0,
2607    VoiceAssistantRunStart = 1,
2608    VoiceAssistantRunEnd = 2,
2609    VoiceAssistantSttStart = 3,
2610    VoiceAssistantSttEnd = 4,
2611    VoiceAssistantIntentStart = 5,
2612    VoiceAssistantIntentEnd = 6,
2613    VoiceAssistantTtsStart = 7,
2614    VoiceAssistantTtsEnd = 8,
2615    VoiceAssistantWakeWordStart = 9,
2616    VoiceAssistantWakeWordEnd = 10,
2617    VoiceAssistantSttVadStart = 11,
2618    VoiceAssistantSttVadEnd = 12,
2619    VoiceAssistantTtsStreamStart = 98,
2620    VoiceAssistantTtsStreamEnd = 99,
2621}
2622impl VoiceAssistantEvent {
2623    /// String value of the enum field names used in the ProtoBuf definition.
2624    ///
2625    /// The values are not transformed in any way and thus are considered stable
2626    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2627    pub fn as_str_name(&self) -> &'static str {
2628        match self {
2629            Self::VoiceAssistantError => "VOICE_ASSISTANT_ERROR",
2630            Self::VoiceAssistantRunStart => "VOICE_ASSISTANT_RUN_START",
2631            Self::VoiceAssistantRunEnd => "VOICE_ASSISTANT_RUN_END",
2632            Self::VoiceAssistantSttStart => "VOICE_ASSISTANT_STT_START",
2633            Self::VoiceAssistantSttEnd => "VOICE_ASSISTANT_STT_END",
2634            Self::VoiceAssistantIntentStart => "VOICE_ASSISTANT_INTENT_START",
2635            Self::VoiceAssistantIntentEnd => "VOICE_ASSISTANT_INTENT_END",
2636            Self::VoiceAssistantTtsStart => "VOICE_ASSISTANT_TTS_START",
2637            Self::VoiceAssistantTtsEnd => "VOICE_ASSISTANT_TTS_END",
2638            Self::VoiceAssistantWakeWordStart => "VOICE_ASSISTANT_WAKE_WORD_START",
2639            Self::VoiceAssistantWakeWordEnd => "VOICE_ASSISTANT_WAKE_WORD_END",
2640            Self::VoiceAssistantSttVadStart => "VOICE_ASSISTANT_STT_VAD_START",
2641            Self::VoiceAssistantSttVadEnd => "VOICE_ASSISTANT_STT_VAD_END",
2642            Self::VoiceAssistantTtsStreamStart => "VOICE_ASSISTANT_TTS_STREAM_START",
2643            Self::VoiceAssistantTtsStreamEnd => "VOICE_ASSISTANT_TTS_STREAM_END",
2644        }
2645    }
2646    /// Creates an enum from field names used in the ProtoBuf definition.
2647    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2648        match value {
2649            "VOICE_ASSISTANT_ERROR" => Some(Self::VoiceAssistantError),
2650            "VOICE_ASSISTANT_RUN_START" => Some(Self::VoiceAssistantRunStart),
2651            "VOICE_ASSISTANT_RUN_END" => Some(Self::VoiceAssistantRunEnd),
2652            "VOICE_ASSISTANT_STT_START" => Some(Self::VoiceAssistantSttStart),
2653            "VOICE_ASSISTANT_STT_END" => Some(Self::VoiceAssistantSttEnd),
2654            "VOICE_ASSISTANT_INTENT_START" => Some(Self::VoiceAssistantIntentStart),
2655            "VOICE_ASSISTANT_INTENT_END" => Some(Self::VoiceAssistantIntentEnd),
2656            "VOICE_ASSISTANT_TTS_START" => Some(Self::VoiceAssistantTtsStart),
2657            "VOICE_ASSISTANT_TTS_END" => Some(Self::VoiceAssistantTtsEnd),
2658            "VOICE_ASSISTANT_WAKE_WORD_START" => Some(Self::VoiceAssistantWakeWordStart),
2659            "VOICE_ASSISTANT_WAKE_WORD_END" => Some(Self::VoiceAssistantWakeWordEnd),
2660            "VOICE_ASSISTANT_STT_VAD_START" => Some(Self::VoiceAssistantSttVadStart),
2661            "VOICE_ASSISTANT_STT_VAD_END" => Some(Self::VoiceAssistantSttVadEnd),
2662            "VOICE_ASSISTANT_TTS_STREAM_START" => {
2663                Some(Self::VoiceAssistantTtsStreamStart)
2664            }
2665            "VOICE_ASSISTANT_TTS_STREAM_END" => Some(Self::VoiceAssistantTtsStreamEnd),
2666            _ => None,
2667        }
2668    }
2669}
2670#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2671#[repr(i32)]
2672pub enum VoiceAssistantTimerEvent {
2673    VoiceAssistantTimerStarted = 0,
2674    VoiceAssistantTimerUpdated = 1,
2675    VoiceAssistantTimerCancelled = 2,
2676    VoiceAssistantTimerFinished = 3,
2677}
2678impl VoiceAssistantTimerEvent {
2679    /// String value of the enum field names used in the ProtoBuf definition.
2680    ///
2681    /// The values are not transformed in any way and thus are considered stable
2682    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2683    pub fn as_str_name(&self) -> &'static str {
2684        match self {
2685            Self::VoiceAssistantTimerStarted => "VOICE_ASSISTANT_TIMER_STARTED",
2686            Self::VoiceAssistantTimerUpdated => "VOICE_ASSISTANT_TIMER_UPDATED",
2687            Self::VoiceAssistantTimerCancelled => "VOICE_ASSISTANT_TIMER_CANCELLED",
2688            Self::VoiceAssistantTimerFinished => "VOICE_ASSISTANT_TIMER_FINISHED",
2689        }
2690    }
2691    /// Creates an enum from field names used in the ProtoBuf definition.
2692    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2693        match value {
2694            "VOICE_ASSISTANT_TIMER_STARTED" => Some(Self::VoiceAssistantTimerStarted),
2695            "VOICE_ASSISTANT_TIMER_UPDATED" => Some(Self::VoiceAssistantTimerUpdated),
2696            "VOICE_ASSISTANT_TIMER_CANCELLED" => Some(Self::VoiceAssistantTimerCancelled),
2697            "VOICE_ASSISTANT_TIMER_FINISHED" => Some(Self::VoiceAssistantTimerFinished),
2698            _ => None,
2699        }
2700    }
2701}
2702/// ==================== ALARM CONTROL PANEL ====================
2703#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2704#[repr(i32)]
2705pub enum AlarmControlPanelState {
2706    AlarmStateDisarmed = 0,
2707    AlarmStateArmedHome = 1,
2708    AlarmStateArmedAway = 2,
2709    AlarmStateArmedNight = 3,
2710    AlarmStateArmedVacation = 4,
2711    AlarmStateArmedCustomBypass = 5,
2712    AlarmStatePending = 6,
2713    AlarmStateArming = 7,
2714    AlarmStateDisarming = 8,
2715    AlarmStateTriggered = 9,
2716}
2717impl AlarmControlPanelState {
2718    /// String value of the enum field names used in the ProtoBuf definition.
2719    ///
2720    /// The values are not transformed in any way and thus are considered stable
2721    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2722    pub fn as_str_name(&self) -> &'static str {
2723        match self {
2724            Self::AlarmStateDisarmed => "ALARM_STATE_DISARMED",
2725            Self::AlarmStateArmedHome => "ALARM_STATE_ARMED_HOME",
2726            Self::AlarmStateArmedAway => "ALARM_STATE_ARMED_AWAY",
2727            Self::AlarmStateArmedNight => "ALARM_STATE_ARMED_NIGHT",
2728            Self::AlarmStateArmedVacation => "ALARM_STATE_ARMED_VACATION",
2729            Self::AlarmStateArmedCustomBypass => "ALARM_STATE_ARMED_CUSTOM_BYPASS",
2730            Self::AlarmStatePending => "ALARM_STATE_PENDING",
2731            Self::AlarmStateArming => "ALARM_STATE_ARMING",
2732            Self::AlarmStateDisarming => "ALARM_STATE_DISARMING",
2733            Self::AlarmStateTriggered => "ALARM_STATE_TRIGGERED",
2734        }
2735    }
2736    /// Creates an enum from field names used in the ProtoBuf definition.
2737    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2738        match value {
2739            "ALARM_STATE_DISARMED" => Some(Self::AlarmStateDisarmed),
2740            "ALARM_STATE_ARMED_HOME" => Some(Self::AlarmStateArmedHome),
2741            "ALARM_STATE_ARMED_AWAY" => Some(Self::AlarmStateArmedAway),
2742            "ALARM_STATE_ARMED_NIGHT" => Some(Self::AlarmStateArmedNight),
2743            "ALARM_STATE_ARMED_VACATION" => Some(Self::AlarmStateArmedVacation),
2744            "ALARM_STATE_ARMED_CUSTOM_BYPASS" => Some(Self::AlarmStateArmedCustomBypass),
2745            "ALARM_STATE_PENDING" => Some(Self::AlarmStatePending),
2746            "ALARM_STATE_ARMING" => Some(Self::AlarmStateArming),
2747            "ALARM_STATE_DISARMING" => Some(Self::AlarmStateDisarming),
2748            "ALARM_STATE_TRIGGERED" => Some(Self::AlarmStateTriggered),
2749            _ => None,
2750        }
2751    }
2752}
2753#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2754#[repr(i32)]
2755pub enum AlarmControlPanelStateCommand {
2756    AlarmControlPanelDisarm = 0,
2757    AlarmControlPanelArmAway = 1,
2758    AlarmControlPanelArmHome = 2,
2759    AlarmControlPanelArmNight = 3,
2760    AlarmControlPanelArmVacation = 4,
2761    AlarmControlPanelArmCustomBypass = 5,
2762    AlarmControlPanelTrigger = 6,
2763}
2764impl AlarmControlPanelStateCommand {
2765    /// String value of the enum field names used in the ProtoBuf definition.
2766    ///
2767    /// The values are not transformed in any way and thus are considered stable
2768    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2769    pub fn as_str_name(&self) -> &'static str {
2770        match self {
2771            Self::AlarmControlPanelDisarm => "ALARM_CONTROL_PANEL_DISARM",
2772            Self::AlarmControlPanelArmAway => "ALARM_CONTROL_PANEL_ARM_AWAY",
2773            Self::AlarmControlPanelArmHome => "ALARM_CONTROL_PANEL_ARM_HOME",
2774            Self::AlarmControlPanelArmNight => "ALARM_CONTROL_PANEL_ARM_NIGHT",
2775            Self::AlarmControlPanelArmVacation => "ALARM_CONTROL_PANEL_ARM_VACATION",
2776            Self::AlarmControlPanelArmCustomBypass => {
2777                "ALARM_CONTROL_PANEL_ARM_CUSTOM_BYPASS"
2778            }
2779            Self::AlarmControlPanelTrigger => "ALARM_CONTROL_PANEL_TRIGGER",
2780        }
2781    }
2782    /// Creates an enum from field names used in the ProtoBuf definition.
2783    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2784        match value {
2785            "ALARM_CONTROL_PANEL_DISARM" => Some(Self::AlarmControlPanelDisarm),
2786            "ALARM_CONTROL_PANEL_ARM_AWAY" => Some(Self::AlarmControlPanelArmAway),
2787            "ALARM_CONTROL_PANEL_ARM_HOME" => Some(Self::AlarmControlPanelArmHome),
2788            "ALARM_CONTROL_PANEL_ARM_NIGHT" => Some(Self::AlarmControlPanelArmNight),
2789            "ALARM_CONTROL_PANEL_ARM_VACATION" => {
2790                Some(Self::AlarmControlPanelArmVacation)
2791            }
2792            "ALARM_CONTROL_PANEL_ARM_CUSTOM_BYPASS" => {
2793                Some(Self::AlarmControlPanelArmCustomBypass)
2794            }
2795            "ALARM_CONTROL_PANEL_TRIGGER" => Some(Self::AlarmControlPanelTrigger),
2796            _ => None,
2797        }
2798    }
2799}
2800/// ===================== TEXT =====================
2801#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2802#[repr(i32)]
2803pub enum TextMode {
2804    Text = 0,
2805    Password = 1,
2806}
2807impl TextMode {
2808    /// String value of the enum field names used in the ProtoBuf definition.
2809    ///
2810    /// The values are not transformed in any way and thus are considered stable
2811    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2812    pub fn as_str_name(&self) -> &'static str {
2813        match self {
2814            Self::Text => "TEXT_MODE_TEXT",
2815            Self::Password => "TEXT_MODE_PASSWORD",
2816        }
2817    }
2818    /// Creates an enum from field names used in the ProtoBuf definition.
2819    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2820        match value {
2821            "TEXT_MODE_TEXT" => Some(Self::Text),
2822            "TEXT_MODE_PASSWORD" => Some(Self::Password),
2823            _ => None,
2824        }
2825    }
2826}
2827#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2828#[repr(i32)]
2829pub enum ValveOperation {
2830    Idle = 0,
2831    IsOpening = 1,
2832    IsClosing = 2,
2833}
2834impl ValveOperation {
2835    /// String value of the enum field names used in the ProtoBuf definition.
2836    ///
2837    /// The values are not transformed in any way and thus are considered stable
2838    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2839    pub fn as_str_name(&self) -> &'static str {
2840        match self {
2841            Self::Idle => "VALVE_OPERATION_IDLE",
2842            Self::IsOpening => "VALVE_OPERATION_IS_OPENING",
2843            Self::IsClosing => "VALVE_OPERATION_IS_CLOSING",
2844        }
2845    }
2846    /// Creates an enum from field names used in the ProtoBuf definition.
2847    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2848        match value {
2849            "VALVE_OPERATION_IDLE" => Some(Self::Idle),
2850            "VALVE_OPERATION_IS_OPENING" => Some(Self::IsOpening),
2851            "VALVE_OPERATION_IS_CLOSING" => Some(Self::IsClosing),
2852            _ => None,
2853        }
2854    }
2855}
2856#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2857#[repr(i32)]
2858pub enum UpdateCommand {
2859    None = 0,
2860    Update = 1,
2861    Check = 2,
2862}
2863impl UpdateCommand {
2864    /// String value of the enum field names used in the ProtoBuf definition.
2865    ///
2866    /// The values are not transformed in any way and thus are considered stable
2867    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2868    pub fn as_str_name(&self) -> &'static str {
2869        match self {
2870            Self::None => "UPDATE_COMMAND_NONE",
2871            Self::Update => "UPDATE_COMMAND_UPDATE",
2872            Self::Check => "UPDATE_COMMAND_CHECK",
2873        }
2874    }
2875    /// Creates an enum from field names used in the ProtoBuf definition.
2876    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2877        match value {
2878            "UPDATE_COMMAND_NONE" => Some(Self::None),
2879            "UPDATE_COMMAND_UPDATE" => Some(Self::Update),
2880            "UPDATE_COMMAND_CHECK" => Some(Self::Check),
2881            _ => None,
2882        }
2883    }
2884}