diff --git a/aioesphomeapi/api.proto b/aioesphomeapi/api.proto index 5450c253..3fc2e1fe 100644 --- a/aioesphomeapi/api.proto +++ b/aioesphomeapi/api.proto @@ -855,6 +855,14 @@ enum ServiceArgType { SERVICE_ARG_TYPE_FLOAT_ARRAY = 6; SERVICE_ARG_TYPE_STRING_ARRAY = 7; } +enum SupportsResponseType { + SUPPORTS_RESPONSE_NONE = 0; + SUPPORTS_RESPONSE_OPTIONAL = 1; + SUPPORTS_RESPONSE_ONLY = 2; + // Status-only response - reports success/error without data payload + // Value is higher to avoid conflicts with future Home Assistant values + SUPPORTS_RESPONSE_STATUS = 100; +} message ListEntitiesServicesArgument { option (ifdef) = "USE_API_USER_DEFINED_ACTIONS"; string name = 1; @@ -868,6 +876,7 @@ message ListEntitiesServicesResponse { string name = 1; fixed32 key = 2; repeated ListEntitiesServicesArgument args = 3 [(fixed_vector) = true]; + SupportsResponseType supports_response = 4; } message ExecuteServiceArgument { option (ifdef) = "USE_API_USER_DEFINED_ACTIONS"; @@ -890,6 +899,21 @@ message ExecuteServiceRequest { fixed32 key = 1; repeated ExecuteServiceArgument args = 2 [(fixed_vector) = true]; + uint32 call_id = 3 [(field_ifdef) = "USE_API_USER_DEFINED_ACTION_RESPONSES"]; + bool return_response = 4 [(field_ifdef) = "USE_API_USER_DEFINED_ACTION_RESPONSES"]; +} + +// Message sent by ESPHome to Home Assistant with service execution response data +message ExecuteServiceResponse { + option (id) = 131; + option (source) = SOURCE_SERVER; + option (no_delay) = true; + option (ifdef) = "USE_API_USER_DEFINED_ACTION_RESPONSES"; + + uint32 call_id = 1; // Matches the call_id from ExecuteServiceRequest + bool success = 2; // Whether the service execution succeeded + string error_message = 3; // Error message if success = false + bytes response_data = 4 [(pointer_to_buffer) = true, (field_ifdef) = "USE_API_USER_DEFINED_ACTION_RESPONSES_JSON"]; } // ==================== CAMERA ==================== diff --git a/aioesphomeapi/api_pb2.py b/aioesphomeapi/api_pb2.py index 9dc9b649..178e0d14 100644 --- a/aioesphomeapi/api_pb2.py +++ b/aioesphomeapi/api_pb2.py @@ -26,7 +26,7 @@ from . import api_options_pb2 as api__options__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tapi.proto\x1a\x11\x61pi_options.proto\"j\n\x0cHelloRequest\x12\x19\n\x0b\x63lient_info\x18\x01 \x01(\tB\x04\xe0\xb5\x18\x01\x12\x19\n\x11\x61pi_version_major\x18\x02 \x01(\r\x12\x19\n\x11\x61pi_version_minor\x18\x03 \x01(\r:\t\xe0@\x01\xe8@\x02\x80\x41\x01\"s\n\rHelloResponse\x12\x19\n\x11\x61pi_version_major\x18\x01 \x01(\r\x12\x19\n\x11\x61pi_version_minor\x18\x02 \x01(\r\x12\x13\n\x0bserver_info\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t:\t\xe0@\x02\xe8@\x01\x80\x41\x01\"M\n\x15\x41uthenticationRequest\x12\x16\n\x08password\x18\x01 \x01(\tB\x04\xe0\xb5\x18\x01:\x1c\xe0@\x03\xe8@\x02\xf2@\x10USE_API_PASSWORD\x80\x41\x01\"P\n\x16\x41uthenticationResponse\x12\x18\n\x10invalid_password\x18\x01 \x01(\x08:\x1c\xe0@\x04\xe8@\x01\xf2@\x10USE_API_PASSWORD\x80\x41\x01\"\x1e\n\x11\x44isconnectRequest:\t\xe0@\x05\xe8@\x00\x80\x41\x01\"\x1f\n\x12\x44isconnectResponse:\t\xe0@\x06\xe8@\x00\x80\x41\x01\"\x15\n\x0bPingRequest:\x06\xe0@\x07\xe8@\x00\"\x16\n\x0cPingResponse:\x06\xe0@\x08\xe8@\x00\"\x1b\n\x11\x44\x65viceInfoRequest:\x06\xe0@\t\xe8@\x02\")\n\x08\x41reaInfo\x12\x0f\n\x07\x61rea_id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\">\n\nDeviceInfo\x12\x11\n\tdevice_id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07\x61rea_id\x18\x03 \x01(\r\"\xb0\x08\n\x12\x44\x65viceInfoResponse\x12*\n\ruses_password\x18\x01 \x01(\x08\x42\x13\x92\x41\x10USE_API_PASSWORD\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0bmac_address\x18\x03 \x01(\t\x12\x17\n\x0f\x65sphome_version\x18\x04 \x01(\t\x12\x18\n\x10\x63ompilation_time\x18\x05 \x01(\t\x12\r\n\x05model\x18\x06 \x01(\t\x12)\n\x0ehas_deep_sleep\x18\x07 \x01(\x08\x42\x11\x92\x41\x0eUSE_DEEP_SLEEP\x12-\n\x0cproject_name\x18\x08 \x01(\tB\x17\x92\x41\x14\x45SPHOME_PROJECT_NAME\x12\x30\n\x0fproject_version\x18\t \x01(\tB\x17\x92\x41\x14\x45SPHOME_PROJECT_NAME\x12(\n\x0ewebserver_port\x18\n \x01(\rB\x10\x92\x41\rUSE_WEBSERVER\x12@\n\x1elegacy_bluetooth_proxy_version\x18\x0b \x01(\rB\x18\x18\x01\x92\x41\x13USE_BLUETOOTH_PROXY\x12=\n\x1d\x62luetooth_proxy_feature_flags\x18\x0f \x01(\rB\x16\x92\x41\x13USE_BLUETOOTH_PROXY\x12\x14\n\x0cmanufacturer\x18\x0c \x01(\t\x12\x15\n\rfriendly_name\x18\r \x01(\t\x12@\n\x1elegacy_voice_assistant_version\x18\x0e \x01(\rB\x18\x18\x01\x92\x41\x13USE_VOICE_ASSISTANT\x12=\n\x1dvoice_assistant_feature_flags\x18\x11 \x01(\rB\x16\x92\x41\x13USE_VOICE_ASSISTANT\x12$\n\x0esuggested_area\x18\x10 \x01(\tB\x0c\x92\x41\tUSE_AREAS\x12\x35\n\x15\x62luetooth_mac_address\x18\x12 \x01(\tB\x16\x92\x41\x13USE_BLUETOOTH_PROXY\x12\x32\n\x18\x61pi_encryption_supported\x18\x13 \x01(\x08\x42\x10\x92\x41\rUSE_API_NOISE\x12\x44\n\x07\x64\x65vices\x18\x14 \x03(\x0b\x32\x0b.DeviceInfoB&\x92\x41\x0bUSE_DEVICES\xd2\xb5\x18\x14\x45SPHOME_DEVICE_COUNT\x12<\n\x05\x61reas\x18\x15 \x03(\x0b\x32\t.AreaInfoB\"\x92\x41\tUSE_AREAS\xd2\xb5\x18\x12\x45SPHOME_AREA_COUNT\x12%\n\x04\x61rea\x18\x16 \x01(\x0b\x32\t.AreaInfoB\x0c\x92\x41\tUSE_AREAS\x12\x35\n\x19zwave_proxy_feature_flags\x18\x17 \x01(\rB\x12\x92\x41\x0fUSE_ZWAVE_PROXY\x12)\n\rzwave_home_id\x18\x18 \x01(\rB\x12\x92\x41\x0fUSE_ZWAVE_PROXY:\x06\xe0@\n\xe8@\x01\"\x1d\n\x13ListEntitiesRequest:\x06\xe0@\x0b\xe8@\x02\"%\n\x18ListEntitiesDoneResponse:\t\xe0@\x13\xe8@\x01\x80\x41\x01\" \n\x16SubscribeStatesRequest:\x06\xe0@\x14\xe8@\x02\"\xd0\x02\n ListEntitiesBinarySensorResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x14\n\x0c\x64\x65vice_class\x18\x05 \x01(\t\x12\x1f\n\x17is_status_binary_sensor\x18\x06 \x01(\x08\x12\x1b\n\x13\x64isabled_by_default\x18\x07 \x01(\x08\x12 \n\x04icon\x18\x08 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\t \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:5\xe0@\x0c\xe8@\x01\xf2@\x11USE_BINARY_SENSOR\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xac\x01\n\x19\x42inarySensorStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@\x15\xe8@\x01\xf2@\x11USE_BINARY_SENSOR\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x80\x03\n\x19ListEntitiesCoverResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x15\n\rassumed_state\x18\x05 \x01(\x08\x12\x19\n\x11supports_position\x18\x06 \x01(\x08\x12\x15\n\rsupports_tilt\x18\x07 \x01(\x08\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12\x1b\n\x13\x64isabled_by_default\x18\t \x01(\x08\x12 \n\x04icon\x18\n \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x0b \x01(\x0e\x32\x0f.EntityCategory\x12\x15\n\rsupports_stop\x18\x0c \x01(\x08\x12!\n\tdevice_id\x18\r \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@\r\xe8@\x01\xf2@\tUSE_COVER\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xf0\x01\n\x12\x43overStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12+\n\x0clegacy_state\x18\x02 \x01(\x0e\x32\x11.LegacyCoverStateB\x02\x18\x01\x12\x10\n\x08position\x18\x03 \x01(\x02\x12\x0c\n\x04tilt\x18\x04 \x01(\x02\x12*\n\x11\x63urrent_operation\x18\x05 \x01(\x0e\x32\x0f.CoverOperation\x12!\n\tdevice_id\x18\x06 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:1\xe0@\x16\xe8@\x01\xf2@\tUSE_COVER\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x99\x02\n\x13\x43overCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x1e\n\x12has_legacy_command\x18\x02 \x01(\x08\x42\x02\x18\x01\x12/\n\x0elegacy_command\x18\x03 \x01(\x0e\x32\x13.LegacyCoverCommandB\x02\x18\x01\x12\x14\n\x0chas_position\x18\x04 \x01(\x08\x12\x10\n\x08position\x18\x05 \x01(\x02\x12\x10\n\x08has_tilt\x18\x06 \x01(\x08\x12\x0c\n\x04tilt\x18\x07 \x01(\x02\x12\x0c\n\x04stop\x18\x08 \x01(\x08\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@\x1e\xe8@\x02\xf2@\tUSE_COVER\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xb6\x03\n\x17ListEntitiesFanResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1c\n\x14supports_oscillation\x18\x05 \x01(\x08\x12\x16\n\x0esupports_speed\x18\x06 \x01(\x08\x12\x1a\n\x12supports_direction\x18\x07 \x01(\x08\x12\x1d\n\x15supported_speed_count\x18\x08 \x01(\x05\x12\x1b\n\x13\x64isabled_by_default\x18\t \x01(\x08\x12 \n\x04icon\x18\n \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x0b \x01(\x0e\x32\x0f.EntityCategory\x12=\n\x16supported_preset_modes\x18\x0c \x03(\tB\x1d\xf2\xb5\x18\x19std::vector\x12!\n\tdevice_id\x18\r \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@\x0e\xe8@\x01\xf2@\x07USE_FAN\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x81\x02\n\x10\x46\x61nStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12\x13\n\x0boscillating\x18\x03 \x01(\x08\x12\x1c\n\x05speed\x18\x04 \x01(\x0e\x32\t.FanSpeedB\x02\x18\x01\x12 \n\tdirection\x18\x05 \x01(\x0e\x32\r.FanDirection\x12\x13\n\x0bspeed_level\x18\x06 \x01(\x05\x12\x13\n\x0bpreset_mode\x18\x07 \x01(\t\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:/\xe0@\x17\xe8@\x01\xf2@\x07USE_FAN\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x88\x03\n\x11\x46\x61nCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x11\n\thas_state\x18\x02 \x01(\x08\x12\r\n\x05state\x18\x03 \x01(\x08\x12\x15\n\thas_speed\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x1c\n\x05speed\x18\x05 \x01(\x0e\x32\t.FanSpeedB\x02\x18\x01\x12\x17\n\x0fhas_oscillating\x18\x06 \x01(\x08\x12\x13\n\x0boscillating\x18\x07 \x01(\x08\x12\x15\n\rhas_direction\x18\x08 \x01(\x08\x12 \n\tdirection\x18\t \x01(\x0e\x32\r.FanDirection\x12\x17\n\x0fhas_speed_level\x18\n \x01(\x08\x12\x13\n\x0bspeed_level\x18\x0b \x01(\x05\x12\x17\n\x0fhas_preset_mode\x18\x0c \x01(\x08\x12\x13\n\x0bpreset_mode\x18\r \x01(\t\x12!\n\tdevice_id\x18\x0e \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:)\xe0@\x1f\xe8@\x02\xf2@\x07USE_FAN\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xc8\x04\n\x19ListEntitiesLightResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x43\n\x15supported_color_modes\x18\x0c \x03(\x0e\x32\n.ColorModeB\x18\xf2\xb5\x18\x14light::ColorModeMask\x12&\n\x1alegacy_supports_brightness\x18\x05 \x01(\x08\x42\x02\x18\x01\x12\x1f\n\x13legacy_supports_rgb\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\'\n\x1blegacy_supports_white_value\x18\x07 \x01(\x08\x42\x02\x18\x01\x12-\n!legacy_supports_color_temperature\x18\x08 \x01(\x08\x42\x02\x18\x01\x12\x12\n\nmin_mireds\x18\t \x01(\x02\x12\x12\n\nmax_mireds\x18\n \x01(\x02\x12.\n\x07\x65\x66\x66\x65\x63ts\x18\x0b \x03(\tB\x1d\xf2\xb5\x18\x19\x46ixedVector\x12\x1b\n\x13\x64isabled_by_default\x18\r \x01(\x08\x12 \n\x04icon\x18\x0e \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x0f \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x10 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@\x0f\xe8@\x01\xf2@\tUSE_LIGHT\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xe0\x02\n\x12LightStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12\x12\n\nbrightness\x18\x03 \x01(\x02\x12\x1e\n\ncolor_mode\x18\x0b \x01(\x0e\x32\n.ColorMode\x12\x18\n\x10\x63olor_brightness\x18\n \x01(\x02\x12\x0b\n\x03red\x18\x04 \x01(\x02\x12\r\n\x05green\x18\x05 \x01(\x02\x12\x0c\n\x04\x62lue\x18\x06 \x01(\x02\x12\r\n\x05white\x18\x07 \x01(\x02\x12\x19\n\x11\x63olor_temperature\x18\x08 \x01(\x02\x12\x12\n\ncold_white\x18\x0c \x01(\x02\x12\x12\n\nwarm_white\x18\r \x01(\x02\x12\x0e\n\x06\x65\x66\x66\x65\x63t\x18\t \x01(\t\x12!\n\tdevice_id\x18\x0e \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:1\xe0@\x18\xe8@\x01\xf2@\tUSE_LIGHT\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xad\x05\n\x13LightCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x11\n\thas_state\x18\x02 \x01(\x08\x12\r\n\x05state\x18\x03 \x01(\x08\x12\x16\n\x0ehas_brightness\x18\x04 \x01(\x08\x12\x12\n\nbrightness\x18\x05 \x01(\x02\x12\x16\n\x0ehas_color_mode\x18\x16 \x01(\x08\x12\x1e\n\ncolor_mode\x18\x17 \x01(\x0e\x32\n.ColorMode\x12\x1c\n\x14has_color_brightness\x18\x14 \x01(\x08\x12\x18\n\x10\x63olor_brightness\x18\x15 \x01(\x02\x12\x0f\n\x07has_rgb\x18\x06 \x01(\x08\x12\x0b\n\x03red\x18\x07 \x01(\x02\x12\r\n\x05green\x18\x08 \x01(\x02\x12\x0c\n\x04\x62lue\x18\t \x01(\x02\x12\x11\n\thas_white\x18\n \x01(\x08\x12\r\n\x05white\x18\x0b \x01(\x02\x12\x1d\n\x15has_color_temperature\x18\x0c \x01(\x08\x12\x19\n\x11\x63olor_temperature\x18\r \x01(\x02\x12\x16\n\x0ehas_cold_white\x18\x18 \x01(\x08\x12\x12\n\ncold_white\x18\x19 \x01(\x02\x12\x16\n\x0ehas_warm_white\x18\x1a \x01(\x08\x12\x12\n\nwarm_white\x18\x1b \x01(\x02\x12\x1d\n\x15has_transition_length\x18\x0e \x01(\x08\x12\x19\n\x11transition_length\x18\x0f \x01(\r\x12\x18\n\x10has_flash_length\x18\x10 \x01(\x08\x12\x14\n\x0c\x66lash_length\x18\x11 \x01(\r\x12\x12\n\nhas_effect\x18\x12 \x01(\x08\x12\x0e\n\x06\x65\x66\x66\x65\x63t\x18\x13 \x01(\t\x12!\n\tdevice_id\x18\x1c \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@ \xe8@\x02\xf2@\tUSE_LIGHT\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xd2\x03\n\x1aListEntitiesSensorResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13unit_of_measurement\x18\x06 \x01(\t\x12\x19\n\x11\x61\x63\x63uracy_decimals\x18\x07 \x01(\x05\x12\x14\n\x0c\x66orce_update\x18\x08 \x01(\x08\x12\x14\n\x0c\x64\x65vice_class\x18\t \x01(\t\x12&\n\x0bstate_class\x18\n \x01(\x0e\x32\x11.SensorStateClass\x12\x38\n\x16legacy_last_reset_type\x18\x0b \x01(\x0e\x32\x14.SensorLastResetTypeB\x02\x18\x01\x12\x1b\n\x13\x64isabled_by_default\x18\x0c \x01(\x08\x12(\n\x0f\x65ntity_category\x18\r \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x0e \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@\x10\xe8@\x01\xf2@\nUSE_SENSOR\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9f\x01\n\x13SensorStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x02\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@\x19\xe8@\x01\xf2@\nUSE_SENSOR\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xb9\x02\n\x1aListEntitiesSwitchResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x15\n\rassumed_state\x18\x06 \x01(\x08\x12\x1b\n\x13\x64isabled_by_default\x18\x07 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x08 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\t \x01(\t\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@\x11\xe8@\x01\xf2@\nUSE_SWITCH\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x88\x01\n\x13SwitchStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@\x1a\xe8@\x01\xf2@\nUSE_SWITCH\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x83\x01\n\x14SwitchCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@!\xe8@\x02\xf2@\nUSE_SWITCH\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xab\x02\n\x1eListEntitiesTextSensorResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:3\xe0@\x12\xe8@\x01\xf2@\x0fUSE_TEXT_SENSOR\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xa8\x01\n\x17TextSensorStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:7\xe0@\x1b\xe8@\x01\xf2@\x0fUSE_TEXT_SENSOR\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"M\n\x14SubscribeLogsRequest\x12\x18\n\x05level\x18\x01 \x01(\x0e\x32\t.LogLevel\x12\x13\n\x0b\x64ump_config\x18\x02 \x01(\x08:\x06\xe0@\x1c\xe8@\x02\"P\n\x15SubscribeLogsResponse\x12\x18\n\x05level\x18\x01 \x01(\x0e\x32\t.LogLevel\x12\x0f\n\x07message\x18\x03 \x01(\x0c:\x0c\xe0@\x1d\xe8@\x01\xf8@\x00\x80\x41\x00\"C\n\x1cNoiseEncryptionSetKeyRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c:\x16\xe0@|\xe8@\x02\xf2@\rUSE_API_NOISE\"H\n\x1dNoiseEncryptionSetKeyResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08:\x16\xe0@}\xe8@\x01\xf2@\rUSE_API_NOISE\"P\n%SubscribeHomeassistantServicesRequest:\'\xe0@\"\xe8@\x02\xf2@\x1eUSE_API_HOMEASSISTANT_SERVICES\";\n\x17HomeassistantServiceMap\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x13\n\x05value\x18\x02 \x01(\tB\x04\xc0\xb5\x18\x01\"\xd6\x03\n\x1aHomeassistantActionRequest\x12\x0f\n\x07service\x18\x01 \x01(\t\x12,\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x18.HomeassistantServiceMapB\x04\xe8\xb5\x18\x01\x12\x35\n\rdata_template\x18\x03 \x03(\x0b\x32\x18.HomeassistantServiceMapB\x04\xe8\xb5\x18\x01\x12\x31\n\tvariables\x18\x04 \x03(\x0b\x32\x18.HomeassistantServiceMapB\x04\xe8\xb5\x18\x01\x12\x10\n\x08is_event\x18\x05 \x01(\x08\x12:\n\x07\x63\x61ll_id\x18\x06 \x01(\rB)\x92\x41&USE_API_HOMEASSISTANT_ACTION_RESPONSES\x12\x46\n\x0ewants_response\x18\x07 \x01(\x08\x42.\x92\x41+USE_API_HOMEASSISTANT_ACTION_RESPONSES_JSON\x12M\n\x11response_template\x18\x08 \x01(\tB2\x92\x41+USE_API_HOMEASSISTANT_ACTION_RESPONSES_JSON\xc0\xb5\x18\x01:*\xe0@#\xe8@\x01\xf2@\x1eUSE_API_HOMEASSISTANT_SERVICES\x80\x41\x01\"\xd6\x01\n\x1bHomeassistantActionResponse\x12\x0f\n\x07\x63\x61ll_id\x18\x01 \x01(\r\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\x15\n\rerror_message\x18\x03 \x01(\t\x12I\n\rresponse_data\x18\x04 \x01(\x0c\x42\x32\x92\x41+USE_API_HOMEASSISTANT_ACTION_RESPONSES_JSON\xe0\xb5\x18\x01:3\xe0@\x82\x01\xe8@\x02\xf2@&USE_API_HOMEASSISTANT_ACTION_RESPONSES\x80\x41\x01\"L\n#SubscribeHomeAssistantStatesRequest:%\xe0@&\xe8@\x02\xf2@\x1cUSE_API_HOMEASSISTANT_STATES\"\x80\x01\n#SubscribeHomeAssistantStateResponse\x12\x11\n\tentity_id\x18\x01 \x01(\t\x12\x11\n\tattribute\x18\x02 \x01(\t\x12\x0c\n\x04once\x18\x03 \x01(\x08:%\xe0@\'\xe8@\x01\xf2@\x1cUSE_API_HOMEASSISTANT_STATES\"{\n\x1aHomeAssistantStateResponse\x12\x11\n\tentity_id\x18\x01 \x01(\t\x12\r\n\x05state\x18\x02 \x01(\t\x12\x11\n\tattribute\x18\x03 \x01(\t:(\xe0@(\xe8@\x02\xf2@\x1cUSE_API_HOMEASSISTANT_STATES\x80\x41\x01\"\x18\n\x0eGetTimeRequest:\x06\xe0@$\xe8@\x01\"K\n\x0fGetTimeResponse\x12\x15\n\repoch_seconds\x18\x01 \x01(\x07\x12\x16\n\x08timezone\x18\x02 \x01(\tB\x04\xe0\xb5\x18\x01:\t\xe0@%\xe8@\x02\x80\x41\x01\"l\n\x1cListEntitiesServicesArgument\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1d\n\x04type\x18\x02 \x01(\x0e\x32\x0f.ServiceArgType:\x1f\xf2@\x1cUSE_API_USER_DEFINED_ACTIONS\"\x93\x01\n\x1cListEntitiesServicesResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x31\n\x04\x61rgs\x18\x03 \x03(\x0b\x32\x1d.ListEntitiesServicesArgumentB\x04\xe8\xb5\x18\x01:%\xe0@)\xe8@\x01\xf2@\x1cUSE_API_USER_DEFINED_ACTIONS\"\xfb\x01\n\x16\x45xecuteServiceArgument\x12\r\n\x05\x62ool_\x18\x01 \x01(\x08\x12\x12\n\nlegacy_int\x18\x02 \x01(\x05\x12\x0e\n\x06\x66loat_\x18\x03 \x01(\x02\x12\x0f\n\x07string_\x18\x04 \x01(\t\x12\x0c\n\x04int_\x18\x05 \x01(\x11\x12\x1a\n\nbool_array\x18\x06 \x03(\x08\x42\x06\x10\x00\xe8\xb5\x18\x01\x12\x19\n\tint_array\x18\x07 \x03(\x11\x42\x06\x10\x00\xe8\xb5\x18\x01\x12\x1b\n\x0b\x66loat_array\x18\x08 \x03(\x02\x42\x06\x10\x00\xe8\xb5\x18\x01\x12\x1a\n\x0cstring_array\x18\t \x03(\tB\x04\xe8\xb5\x18\x01:\x1f\xf2@\x1cUSE_API_USER_DEFINED_ACTIONS\"{\n\x15\x45xecuteServiceRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12+\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x17.ExecuteServiceArgumentB\x04\xe8\xb5\x18\x01:(\xe0@*\xe8@\x02\xf2@\x1cUSE_API_USER_DEFINED_ACTIONS\x80\x41\x01\"\x8c\x02\n\x1aListEntitiesCameraResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1b\n\x13\x64isabled_by_default\x18\x05 \x01(\x08\x12 \n\x04icon\x18\x06 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@+\xe8@\x01\xf2@\nUSE_CAMERA\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x92\x01\n\x13\x43\x61meraImageResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x0c\n\x04\x64one\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:/\xe0@,\xe8@\x01\xf2@\nUSE_CAMERA\x8a\x41\x19StateResponseProtoMessage\"L\n\x12\x43\x61meraImageRequest\x12\x0e\n\x06single\x18\x01 \x01(\x08\x12\x0e\n\x06stream\x18\x02 \x01(\x08:\x16\xe0@-\xe8@\x02\xf2@\nUSE_CAMERA\x80\x41\x01\"\xfd\x08\n\x1bListEntitiesClimateResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12$\n\x1csupports_current_temperature\x18\x05 \x01(\x08\x12-\n%supports_two_point_target_temperature\x18\x06 \x01(\x08\x12\x43\n\x0fsupported_modes\x18\x07 \x03(\x0e\x32\x0c.ClimateModeB\x1c\xf2\xb5\x18\x18\x63limate::ClimateModeMask\x12\x1e\n\x16visual_min_temperature\x18\x08 \x01(\x02\x12\x1e\n\x16visual_max_temperature\x18\t \x01(\x02\x12&\n\x1evisual_target_temperature_step\x18\n \x01(\x02\x12 \n\x14legacy_supports_away\x18\x0b \x01(\x08\x42\x02\x18\x01\x12\x17\n\x0fsupports_action\x18\x0c \x01(\x08\x12M\n\x13supported_fan_modes\x18\r \x03(\x0e\x32\x0f.ClimateFanModeB\x1f\xf2\xb5\x18\x1b\x63limate::ClimateFanModeMask\x12S\n\x15supported_swing_modes\x18\x0e \x03(\x0e\x32\x11.ClimateSwingModeB!\xf2\xb5\x18\x1d\x63limate::ClimateSwingModeMask\x12\x41\n\x1asupported_custom_fan_modes\x18\x0f \x03(\tB\x1d\xf2\xb5\x18\x19std::vector\x12I\n\x11supported_presets\x18\x10 \x03(\x0e\x32\x0e.ClimatePresetB\x1e\xf2\xb5\x18\x1a\x63limate::ClimatePresetMask\x12?\n\x18supported_custom_presets\x18\x11 \x03(\tB\x1d\xf2\xb5\x18\x19std::vector\x12\x1b\n\x13\x64isabled_by_default\x18\x12 \x01(\x08\x12 \n\x04icon\x18\x13 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x14 \x01(\x0e\x32\x0f.EntityCategory\x12\'\n\x1fvisual_current_temperature_step\x18\x15 \x01(\x02\x12!\n\x19supports_current_humidity\x18\x16 \x01(\x08\x12 \n\x18supports_target_humidity\x18\x17 \x01(\x08\x12\x1b\n\x13visual_min_humidity\x18\x18 \x01(\x02\x12\x1b\n\x13visual_max_humidity\x18\x19 \x01(\x02\x12!\n\tdevice_id\x18\x1a \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES\x12\x15\n\rfeature_flags\x18\x1b \x01(\r:/\xe0@.\xe8@\x01\xf2@\x0bUSE_CLIMATE\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9e\x04\n\x14\x43limateStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x1a\n\x04mode\x18\x02 \x01(\x0e\x32\x0c.ClimateMode\x12\x1b\n\x13\x63urrent_temperature\x18\x03 \x01(\x02\x12\x1a\n\x12target_temperature\x18\x04 \x01(\x02\x12\x1e\n\x16target_temperature_low\x18\x05 \x01(\x02\x12\x1f\n\x17target_temperature_high\x18\x06 \x01(\x02\x12\x1e\n\x12unused_legacy_away\x18\x07 \x01(\x08\x42\x02\x18\x01\x12\x1e\n\x06\x61\x63tion\x18\x08 \x01(\x0e\x32\x0e.ClimateAction\x12!\n\x08\x66\x61n_mode\x18\t \x01(\x0e\x32\x0f.ClimateFanMode\x12%\n\nswing_mode\x18\n \x01(\x0e\x32\x11.ClimateSwingMode\x12\x17\n\x0f\x63ustom_fan_mode\x18\x0b \x01(\t\x12\x1e\n\x06preset\x18\x0c \x01(\x0e\x32\x0e.ClimatePreset\x12\x15\n\rcustom_preset\x18\r \x01(\t\x12\x18\n\x10\x63urrent_humidity\x18\x0e \x01(\x02\x12\x17\n\x0ftarget_humidity\x18\x0f \x01(\x02\x12!\n\tdevice_id\x18\x10 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:3\xe0@/\xe8@\x01\xf2@\x0bUSE_CLIMATE\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xf8\x05\n\x15\x43limateCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x10\n\x08has_mode\x18\x02 \x01(\x08\x12\x1a\n\x04mode\x18\x03 \x01(\x0e\x32\x0c.ClimateMode\x12\x1e\n\x16has_target_temperature\x18\x04 \x01(\x08\x12\x1a\n\x12target_temperature\x18\x05 \x01(\x02\x12\"\n\x1ahas_target_temperature_low\x18\x06 \x01(\x08\x12\x1e\n\x16target_temperature_low\x18\x07 \x01(\x02\x12#\n\x1bhas_target_temperature_high\x18\x08 \x01(\x08\x12\x1f\n\x17target_temperature_high\x18\t \x01(\x02\x12\"\n\x16unused_has_legacy_away\x18\n \x01(\x08\x42\x02\x18\x01\x12\x1e\n\x12unused_legacy_away\x18\x0b \x01(\x08\x42\x02\x18\x01\x12\x14\n\x0chas_fan_mode\x18\x0c \x01(\x08\x12!\n\x08\x66\x61n_mode\x18\r \x01(\x0e\x32\x0f.ClimateFanMode\x12\x16\n\x0ehas_swing_mode\x18\x0e \x01(\x08\x12%\n\nswing_mode\x18\x0f \x01(\x0e\x32\x11.ClimateSwingMode\x12\x1b\n\x13has_custom_fan_mode\x18\x10 \x01(\x08\x12\x17\n\x0f\x63ustom_fan_mode\x18\x11 \x01(\t\x12\x12\n\nhas_preset\x18\x12 \x01(\x08\x12\x1e\n\x06preset\x18\x13 \x01(\x0e\x32\x0e.ClimatePreset\x12\x19\n\x11has_custom_preset\x18\x14 \x01(\x08\x12\x15\n\rcustom_preset\x18\x15 \x01(\t\x12\x1b\n\x13has_target_humidity\x18\x16 \x01(\x08\x12\x17\n\x0ftarget_humidity\x18\x17 \x01(\x02\x12!\n\tdevice_id\x18\x18 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@0\xe8@\x02\xf2@\x0bUSE_CLIMATE\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\x8e\x03\n\x1aListEntitiesNumberResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x11\n\tmin_value\x18\x06 \x01(\x02\x12\x11\n\tmax_value\x18\x07 \x01(\x02\x12\x0c\n\x04step\x18\x08 \x01(\x02\x12\x1b\n\x13\x64isabled_by_default\x18\t \x01(\x08\x12(\n\x0f\x65ntity_category\x18\n \x01(\x0e\x32\x0f.EntityCategory\x12\x1b\n\x13unit_of_measurement\x18\x0b \x01(\t\x12\x19\n\x04mode\x18\x0c \x01(\x0e\x32\x0b.NumberMode\x12\x14\n\x0c\x64\x65vice_class\x18\r \x01(\t\x12!\n\tdevice_id\x18\x0e \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@1\xe8@\x01\xf2@\nUSE_NUMBER\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9f\x01\n\x13NumberStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x02\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@2\xe8@\x01\xf2@\nUSE_NUMBER\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x83\x01\n\x14NumberCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x02\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@3\xe8@\x02\xf2@\nUSE_NUMBER\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xbc\x02\n\x1aListEntitiesSelectResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12.\n\x07options\x18\x06 \x03(\tB\x1d\xf2\xb5\x18\x19\x46ixedVector\x12\x1b\n\x13\x64isabled_by_default\x18\x07 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x08 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@4\xe8@\x01\xf2@\nUSE_SELECT\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9f\x01\n\x13SelectStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@5\xe8@\x01\xf2@\nUSE_SELECT\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x83\x01\n\x14SelectCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@6\xe8@\x02\xf2@\nUSE_SELECT\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xcd\x02\n\x19ListEntitiesSirenResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12\r\n\x05tones\x18\x07 \x03(\t\x12\x19\n\x11supports_duration\x18\x08 \x01(\x08\x12\x17\n\x0fsupports_volume\x18\t \x01(\x08\x12(\n\x0f\x65ntity_category\x18\n \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x0b \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@7\xe8@\x01\xf2@\tUSE_SIREN\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x86\x01\n\x12SirenStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:1\xe0@8\xe8@\x01\xf2@\tUSE_SIREN\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x80\x02\n\x13SirenCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x11\n\thas_state\x18\x02 \x01(\x08\x12\r\n\x05state\x18\x03 \x01(\x08\x12\x10\n\x08has_tone\x18\x04 \x01(\x08\x12\x0c\n\x04tone\x18\x05 \x01(\t\x12\x14\n\x0chas_duration\x18\x06 \x01(\x08\x12\x10\n\x08\x64uration\x18\x07 \x01(\r\x12\x12\n\nhas_volume\x18\x08 \x01(\x08\x12\x0e\n\x06volume\x18\t \x01(\x02\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@9\xe8@\x02\xf2@\tUSE_SIREN\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xe2\x02\n\x18ListEntitiesLockResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x15\n\rassumed_state\x18\x08 \x01(\x08\x12\x15\n\rsupports_open\x18\t \x01(\x08\x12\x15\n\rrequires_code\x18\n \x01(\x08\x12\x13\n\x0b\x63ode_format\x18\x0b \x01(\t\x12!\n\tdevice_id\x18\x0c \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@:\xe8@\x01\xf2@\x08USE_LOCK\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x90\x01\n\x11LockStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x19\n\x05state\x18\x02 \x01(\x0e\x32\n.LockState\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:0\xe0@;\xe8@\x01\xf2@\x08USE_LOCK\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xaf\x01\n\x12LockCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x1d\n\x07\x63ommand\x18\x02 \x01(\x0e\x32\x0c.LockCommand\x12\x10\n\x08has_code\x18\x03 \x01(\x08\x12\x0c\n\x04\x63ode\x18\x04 \x01(\t\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:*\xe0@<\xe8@\x02\xf2@\x08USE_LOCK\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xa2\x02\n\x1aListEntitiesButtonResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@=\xe8@\x01\xf2@\nUSE_BUTTON\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"t\n\x14\x42uttonCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12!\n\tdevice_id\x18\x02 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@>\xe8@\x02\xf2@\nUSE_BUTTON\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xae\x01\n\x1aMediaPlayerSupportedFormat\x12\x0e\n\x06\x66ormat\x18\x01 \x01(\t\x12\x13\n\x0bsample_rate\x18\x02 \x01(\r\x12\x14\n\x0cnum_channels\x18\x03 \x01(\r\x12*\n\x07purpose\x18\x04 \x01(\x0e\x32\x19.MediaPlayerFormatPurpose\x12\x14\n\x0csample_bytes\x18\x05 \x01(\r:\x13\xf2@\x10USE_MEDIA_PLAYER\"\xfe\x02\n\x1fListEntitiesMediaPlayerResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x16\n\x0esupports_pause\x18\x08 \x01(\x08\x12\x36\n\x11supported_formats\x18\t \x03(\x0b\x32\x1b.MediaPlayerSupportedFormat\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES\x12\x15\n\rfeature_flags\x18\x0b \x01(\r:4\xe0@?\xe8@\x01\xf2@\x10USE_MEDIA_PLAYER\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xc5\x01\n\x18MediaPlayerStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12 \n\x05state\x18\x02 \x01(\x0e\x32\x11.MediaPlayerState\x12\x0e\n\x06volume\x18\x03 \x01(\x02\x12\r\n\x05muted\x18\x04 \x01(\x08\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:8\xe0@@\xe8@\x01\xf2@\x10USE_MEDIA_PLAYER\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xb8\x02\n\x19MediaPlayerCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x13\n\x0bhas_command\x18\x02 \x01(\x08\x12$\n\x07\x63ommand\x18\x03 \x01(\x0e\x32\x13.MediaPlayerCommand\x12\x12\n\nhas_volume\x18\x04 \x01(\x08\x12\x0e\n\x06volume\x18\x05 \x01(\x02\x12\x15\n\rhas_media_url\x18\x06 \x01(\x08\x12\x11\n\tmedia_url\x18\x07 \x01(\t\x12\x18\n\x10has_announcement\x18\x08 \x01(\x08\x12\x14\n\x0c\x61nnouncement\x18\t \x01(\x08\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@A\xe8@\x02\xf2@\x10USE_MEDIA_PLAYER\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"X\n)SubscribeBluetoothLEAdvertisementsRequest\x12\r\n\x05\x66lags\x18\x01 \x01(\r:\x1c\xe0@B\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"O\n\x14\x42luetoothServiceData\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x17\n\x0blegacy_data\x18\x02 \x03(\rB\x02\x18\x01\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c:\x02\x18\x01\"\xfe\x01\n BluetoothLEAdvertisementResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\x0c\x12\x0c\n\x04rssi\x18\x03 \x01(\x11\x12\x15\n\rservice_uuids\x18\x04 \x03(\t\x12+\n\x0cservice_data\x18\x05 \x03(\x0b\x32\x15.BluetoothServiceData\x12\x30\n\x11manufacturer_data\x18\x06 \x03(\x0b\x32\x15.BluetoothServiceData\x12\x14\n\x0c\x61\x64\x64ress_type\x18\x07 \x01(\r:!\x18\x01\xe0@C\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\x80\x41\x01\"f\n\x1b\x42luetoothLERawAdvertisement\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0c\n\x04rssi\x18\x02 \x01(\x11\x12\x14\n\x0c\x61\x64\x64ress_type\x18\x03 \x01(\r\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x42\x04\xb8\xb5\x18>\"\xab\x01\n$BluetoothLERawAdvertisementsResponse\x12\x62\n\x0e\x61\x64vertisements\x18\x01 \x03(\x0b\x32\x1c.BluetoothLERawAdvertisementB,\xda\xb5\x18(BLUETOOTH_PROXY_ADVERTISEMENT_BATCH_SIZE:\x1f\xe0@]\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\x80\x41\x01\"\xaa\x01\n\x16\x42luetoothDeviceRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x31\n\x0crequest_type\x18\x02 \x01(\x0e\x32\x1b.BluetoothDeviceRequestType\x12\x18\n\x10has_address_type\x18\x03 \x01(\x08\x12\x14\n\x0c\x61\x64\x64ress_type\x18\x04 \x01(\r:\x1c\xe0@D\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"\x81\x01\n!BluetoothDeviceConnectionResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x11\n\tconnected\x18\x02 \x01(\x08\x12\x0b\n\x03mtu\x18\x03 \x01(\r\x12\r\n\x05\x65rror\x18\x04 \x01(\x05:\x1c\xe0@E\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"P\n\x1f\x42luetoothGATTGetServicesRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04:\x1c\xe0@F\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"U\n\x17\x42luetoothGATTDescriptor\x12\x16\n\x04uuid\x18\x01 \x03(\x04\x42\x08\xb8\xb5\x18\x02\xc8\xb5\x18\x01\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x12\n\nshort_uuid\x18\x03 \x01(\r\"\xa2\x01\n\x1b\x42luetoothGATTCharacteristic\x12\x16\n\x04uuid\x18\x01 \x03(\x04\x42\x08\xb8\xb5\x18\x02\xc8\xb5\x18\x01\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x12\n\nproperties\x18\x03 \x01(\r\x12\x33\n\x0b\x64\x65scriptors\x18\x04 \x03(\x0b\x32\x18.BluetoothGATTDescriptorB\x04\xe8\xb5\x18\x01\x12\x12\n\nshort_uuid\x18\x05 \x01(\r\"\x8f\x01\n\x14\x42luetoothGATTService\x12\x16\n\x04uuid\x18\x01 \x03(\x04\x42\x08\xb8\xb5\x18\x02\xc8\xb5\x18\x01\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12;\n\x0f\x63haracteristics\x18\x03 \x03(\x0b\x32\x1c.BluetoothGATTCharacteristicB\x04\xe8\xb5\x18\x01\x12\x12\n\nshort_uuid\x18\x04 \x01(\r\"z\n BluetoothGATTGetServicesResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\'\n\x08services\x18\x02 \x03(\x0b\x32\x15.BluetoothGATTService:\x1c\xe0@G\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"U\n$BluetoothGATTGetServicesDoneResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04:\x1c\xe0@H\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"Y\n\x18\x42luetoothGATTReadRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r:\x1c\xe0@I\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"h\n\x19\x42luetoothGATTReadResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c:\x1c\xe0@J\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"\x80\x01\n\x19\x42luetoothGATTWriteRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x10\n\x08response\x18\x03 \x01(\x08\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x42\x04\xe0\xb5\x18\x01:\x1c\xe0@K\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"c\n\"BluetoothGATTReadDescriptorRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r:\x1c\xe0@L\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"x\n#BluetoothGATTWriteDescriptorRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x12\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x42\x04\xe0\xb5\x18\x01:\x1c\xe0@M\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"k\n\x1a\x42luetoothGATTNotifyRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x0e\n\x06\x65nable\x18\x03 \x01(\x08:\x1c\xe0@N\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"n\n\x1f\x42luetoothGATTNotifyDataResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c:\x1c\xe0@O\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"H\n(SubscribeBluetoothConnectionsFreeRequest:\x1c\xe0@P\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"\x99\x01\n BluetoothConnectionsFreeResponse\x12\x0c\n\x04\x66ree\x18\x01 \x01(\r\x12\r\n\x05limit\x18\x02 \x01(\r\x12:\n\tallocated\x18\x03 \x03(\x04\x42\'\xc8\xb5\x18\x01\xd2\xb5\x18\x1f\x42LUETOOTH_PROXY_MAX_CONNECTIONS:\x1c\xe0@Q\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"j\n\x1a\x42luetoothGATTErrorResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\r\n\x05\x65rror\x18\x03 \x01(\x05:\x1c\xe0@R\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"[\n\x1a\x42luetoothGATTWriteResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r:\x1c\xe0@S\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"\\\n\x1b\x42luetoothGATTNotifyResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r:\x1c\xe0@T\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"n\n\x1e\x42luetoothDevicePairingResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06paired\x18\x02 \x01(\x08\x12\r\n\x05\x65rror\x18\x03 \x01(\x05:\x1c\xe0@U\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"q\n BluetoothDeviceUnpairingResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\r\n\x05\x65rror\x18\x03 \x01(\x05:\x1c\xe0@V\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"K\n+UnsubscribeBluetoothLEAdvertisementsRequest:\x1c\xe0@W\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"r\n!BluetoothDeviceClearCacheResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\r\n\x05\x65rror\x18\x03 \x01(\x05:\x1c\xe0@X\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"\xb9\x01\n\x1d\x42luetoothScannerStateResponse\x12%\n\x05state\x18\x01 \x01(\x0e\x32\x16.BluetoothScannerState\x12#\n\x04mode\x18\x02 \x01(\x0e\x32\x15.BluetoothScannerMode\x12.\n\x0f\x63onfigured_mode\x18\x03 \x01(\x0e\x32\x15.BluetoothScannerMode:\x1c\xe0@~\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"c\n\x1e\x42luetoothScannerSetModeRequest\x12#\n\x04mode\x18\x01 \x01(\x0e\x32\x15.BluetoothScannerMode:\x1c\xe0@\x7f\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"`\n\x1eSubscribeVoiceAssistantRequest\x12\x11\n\tsubscribe\x18\x01 \x01(\x08\x12\r\n\x05\x66lags\x18\x02 \x01(\r:\x1c\xe0@Y\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"l\n\x1bVoiceAssistantAudioSettings\x12\x1f\n\x17noise_suppression_level\x18\x01 \x01(\r\x12\x11\n\tauto_gain\x18\x02 \x01(\r\x12\x19\n\x11volume_multiplier\x18\x03 \x01(\x02\"\xbc\x01\n\x15VoiceAssistantRequest\x12\r\n\x05start\x18\x01 \x01(\x08\x12\x17\n\x0f\x63onversation_id\x18\x02 \x01(\t\x12\r\n\x05\x66lags\x18\x03 \x01(\r\x12\x34\n\x0e\x61udio_settings\x18\x04 \x01(\x0b\x32\x1c.VoiceAssistantAudioSettings\x12\x18\n\x10wake_word_phrase\x18\x05 \x01(\t:\x1c\xe0@Z\xe8@\x01\xf2@\x13USE_VOICE_ASSISTANT\"S\n\x16VoiceAssistantResponse\x12\x0c\n\x04port\x18\x01 \x01(\r\x12\r\n\x05\x65rror\x18\x02 \x01(\x08:\x1c\xe0@[\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"6\n\x17VoiceAssistantEventData\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8d\x01\n\x1bVoiceAssistantEventResponse\x12(\n\nevent_type\x18\x01 \x01(\x0e\x32\x14.VoiceAssistantEvent\x12&\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x18.VoiceAssistantEventData:\x1c\xe0@\\\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"N\n\x13VoiceAssistantAudio\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x08:\x1c\xe0@j\xe8@\x00\xf2@\x13USE_VOICE_ASSISTANT\"\xcf\x01\n VoiceAssistantTimerEventResponse\x12-\n\nevent_type\x18\x01 \x01(\x0e\x32\x19.VoiceAssistantTimerEvent\x12\x10\n\x08timer_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x15\n\rtotal_seconds\x18\x04 \x01(\r\x12\x14\n\x0cseconds_left\x18\x05 \x01(\r\x12\x11\n\tis_active\x18\x06 \x01(\x08:\x1c\xe0@s\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"\x97\x01\n\x1dVoiceAssistantAnnounceRequest\x12\x10\n\x08media_id\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x1c\n\x14preannounce_media_id\x18\x03 \x01(\t\x12\x1a\n\x12start_conversation\x18\x04 \x01(\x08:\x1c\xe0@w\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"O\n\x1eVoiceAssistantAnnounceFinished\x12\x0f\n\x07success\x18\x01 \x01(\x08:\x1c\xe0@x\xe8@\x01\xf2@\x13USE_VOICE_ASSISTANT\"R\n\x16VoiceAssistantWakeWord\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\twake_word\x18\x02 \x01(\t\x12\x19\n\x11trained_languages\x18\x03 \x03(\t\"\xa3\x01\n\x1eVoiceAssistantExternalWakeWord\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\twake_word\x18\x02 \x01(\t\x12\x19\n\x11trained_languages\x18\x03 \x03(\t\x12\x12\n\nmodel_type\x18\x04 \x01(\t\x12\x12\n\nmodel_size\x18\x05 \x01(\r\x12\x12\n\nmodel_hash\x18\x06 \x01(\t\x12\x0b\n\x03url\x18\x07 \x01(\t\"\x80\x01\n\"VoiceAssistantConfigurationRequest\x12<\n\x13\x65xternal_wake_words\x18\x01 \x03(\x0b\x32\x1f.VoiceAssistantExternalWakeWord:\x1c\xe0@y\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"\xc5\x01\n#VoiceAssistantConfigurationResponse\x12\x35\n\x14\x61vailable_wake_words\x18\x01 \x03(\x0b\x32\x17.VoiceAssistantWakeWord\x12*\n\x11\x61\x63tive_wake_words\x18\x02 \x03(\tB\x0f\x8a\xb5\x18\x0bstd::vector\x12\x1d\n\x15max_active_wake_words\x18\x03 \x01(\r:\x1c\xe0@z\xe8@\x01\xf2@\x13USE_VOICE_ASSISTANT\"Y\n\x1eVoiceAssistantSetConfiguration\x12\x19\n\x11\x61\x63tive_wake_words\x18\x01 \x03(\t:\x1c\xe0@{\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"\xf5\x02\n%ListEntitiesAlarmControlPanelResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x1a\n\x12supported_features\x18\x08 \x01(\r\x12\x15\n\rrequires_code\x18\t \x01(\x08\x12\x1c\n\x14requires_code_to_arm\x18\n \x01(\x08\x12!\n\tdevice_id\x18\x0b \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:;\xe0@^\xe8@\x01\xf2@\x17USE_ALARM_CONTROL_PANEL\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xb9\x01\n\x1e\x41larmControlPanelStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12&\n\x05state\x18\x02 \x01(\x0e\x32\x17.AlarmControlPanelState\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:?\xe0@_\xe8@\x01\xf2@\x17USE_ALARM_CONTROL_PANEL\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xcb\x01\n\x1f\x41larmControlPanelCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12/\n\x07\x63ommand\x18\x02 \x01(\x0e\x32\x1e.AlarmControlPanelStateCommand\x12\x0c\n\x04\x63ode\x18\x03 \x01(\t\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@`\xe8@\x02\xf2@\x17USE_ALARM_CONTROL_PANEL\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xda\x02\n\x18ListEntitiesTextResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x12\n\nmin_length\x18\x08 \x01(\r\x12\x12\n\nmax_length\x18\t \x01(\r\x12\x0f\n\x07pattern\x18\n \x01(\t\x12\x17\n\x04mode\x18\x0b \x01(\x0e\x32\t.TextMode\x12!\n\tdevice_id\x18\x0c \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@a\xe8@\x01\xf2@\x08USE_TEXT\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9b\x01\n\x11TextStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:0\xe0@b\xe8@\x01\xf2@\x08USE_TEXT\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x7f\n\x12TextCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:*\xe0@c\xe8@\x02\xf2@\x08USE_TEXT\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\x91\x02\n\x18ListEntitiesDateResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:5\xe0@d\xe8@\x01\xf2@\x11USE_DATETIME_DATE\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xbf\x01\n\x11\x44\x61teStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\rmissing_state\x18\x02 \x01(\x08\x12\x0c\n\x04year\x18\x03 \x01(\r\x12\r\n\x05month\x18\x04 \x01(\r\x12\x0b\n\x03\x64\x61y\x18\x05 \x01(\r\x12!\n\tdevice_id\x18\x06 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@e\xe8@\x01\xf2@\x11USE_DATETIME_DATE\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xa3\x01\n\x12\x44\x61teCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x0c\n\x04year\x18\x02 \x01(\r\x12\r\n\x05month\x18\x03 \x01(\r\x12\x0b\n\x03\x64\x61y\x18\x04 \x01(\r\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:3\xe0@f\xe8@\x02\xf2@\x11USE_DATETIME_DATE\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\x91\x02\n\x18ListEntitiesTimeResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:5\xe0@g\xe8@\x01\xf2@\x11USE_DATETIME_TIME\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xc3\x01\n\x11TimeStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\rmissing_state\x18\x02 \x01(\x08\x12\x0c\n\x04hour\x18\x03 \x01(\r\x12\x0e\n\x06minute\x18\x04 \x01(\r\x12\x0e\n\x06second\x18\x05 \x01(\r\x12!\n\tdevice_id\x18\x06 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@h\xe8@\x01\xf2@\x11USE_DATETIME_TIME\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xa7\x01\n\x12TimeCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x0c\n\x04hour\x18\x02 \x01(\r\x12\x0e\n\x06minute\x18\x03 \x01(\r\x12\x0e\n\x06second\x18\x04 \x01(\r\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:3\xe0@i\xe8@\x02\xf2@\x11USE_DATETIME_TIME\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xd4\x02\n\x19ListEntitiesEventResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12\x32\n\x0b\x65vent_types\x18\t \x03(\tB\x1d\xf2\xb5\x18\x19\x46ixedVector\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@k\xe8@\x01\xf2@\tUSE_EVENT\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x83\x01\n\rEventResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x12\n\nevent_type\x18\x02 \x01(\t\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@l\xe8@\x01\xf2@\tUSE_EVENT\x8a\x41\x19StateResponseProtoMessage\"\xe9\x02\n\x19ListEntitiesValveResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12\x15\n\rassumed_state\x18\t \x01(\x08\x12\x19\n\x11supports_position\x18\n \x01(\x08\x12\x15\n\rsupports_stop\x18\x0b \x01(\x08\x12!\n\tdevice_id\x18\x0c \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@m\xe8@\x01\xf2@\tUSE_VALVE\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xb5\x01\n\x12ValveStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x10\n\x08position\x18\x02 \x01(\x02\x12*\n\x11\x63urrent_operation\x18\x03 \x01(\x0e\x32\x0f.ValveOperation\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:1\xe0@n\xe8@\x01\xf2@\tUSE_VALVE\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xa8\x01\n\x13ValveCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x14\n\x0chas_position\x18\x02 \x01(\x08\x12\x10\n\x08position\x18\x03 \x01(\x02\x12\x0c\n\x04stop\x18\x04 \x01(\x08\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@o\xe8@\x02\xf2@\tUSE_VALVE\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\x99\x02\n\x1cListEntitiesDateTimeResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@p\xe8@\x01\xf2@\x15USE_DATETIME_DATETIME\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xb4\x01\n\x15\x44\x61teTimeStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\rmissing_state\x18\x02 \x01(\x08\x12\x15\n\repoch_seconds\x18\x03 \x01(\x07\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:=\xe0@q\xe8@\x01\xf2@\x15USE_DATETIME_DATETIME\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x98\x01\n\x16\x44\x61teTimeCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\repoch_seconds\x18\x02 \x01(\x07\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:7\xe0@r\xe8@\x02\xf2@\x15USE_DATETIME_DATETIME\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xa2\x02\n\x1aListEntitiesUpdateResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@t\xe8@\x01\xf2@\nUSE_UPDATE\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xbb\x02\n\x13UpdateStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\rmissing_state\x18\x02 \x01(\x08\x12\x13\n\x0bin_progress\x18\x03 \x01(\x08\x12\x14\n\x0chas_progress\x18\x04 \x01(\x08\x12\x10\n\x08progress\x18\x05 \x01(\x02\x12\x17\n\x0f\x63urrent_version\x18\x06 \x01(\t\x12\x16\n\x0elatest_version\x18\x07 \x01(\t\x12\r\n\x05title\x18\x08 \x01(\t\x12\x17\n\x0frelease_summary\x18\t \x01(\t\x12\x13\n\x0brelease_url\x18\n \x01(\t\x12!\n\tdevice_id\x18\x0b \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@u\xe8@\x01\xf2@\nUSE_UPDATE\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x95\x01\n\x14UpdateCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x1f\n\x07\x63ommand\x18\x02 \x01(\x0e\x32\x0e.UpdateCommand\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@v\xe8@\x02\xf2@\nUSE_UPDATE\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"C\n\x0fZWaveProxyFrame\x12\x12\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x42\x04\xe0\xb5\x18\x01:\x1c\xe0@\x80\x01\xe8@\x00\xf2@\x0fUSE_ZWAVE_PROXY\x80\x41\x01\"h\n\x11ZWaveProxyRequest\x12$\n\x04type\x18\x01 \x01(\x0e\x32\x16.ZWaveProxyRequestType\x12\x12\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x42\x04\xe0\xb5\x18\x01:\x19\xe0@\x81\x01\xe8@\x00\xf2@\x0fUSE_ZWAVE_PROXY*f\n\x0e\x45ntityCategory\x12\x18\n\x14\x45NTITY_CATEGORY_NONE\x10\x00\x12\x1a\n\x16\x45NTITY_CATEGORY_CONFIG\x10\x01\x12\x1e\n\x1a\x45NTITY_CATEGORY_DIAGNOSTIC\x10\x02*R\n\x10LegacyCoverState\x12\x1b\n\x17LEGACY_COVER_STATE_OPEN\x10\x00\x12\x1d\n\x19LEGACY_COVER_STATE_CLOSED\x10\x01\x1a\x02\x18\x01*j\n\x0e\x43overOperation\x12\x18\n\x14\x43OVER_OPERATION_IDLE\x10\x00\x12\x1e\n\x1a\x43OVER_OPERATION_IS_OPENING\x10\x01\x12\x1e\n\x1a\x43OVER_OPERATION_IS_CLOSING\x10\x02*v\n\x12LegacyCoverCommand\x12\x1d\n\x19LEGACY_COVER_COMMAND_OPEN\x10\x00\x12\x1e\n\x1aLEGACY_COVER_COMMAND_CLOSE\x10\x01\x12\x1d\n\x19LEGACY_COVER_COMMAND_STOP\x10\x02\x1a\x02\x18\x01*K\n\x08\x46\x61nSpeed\x12\x11\n\rFAN_SPEED_LOW\x10\x00\x12\x14\n\x10\x46\x41N_SPEED_MEDIUM\x10\x01\x12\x12\n\x0e\x46\x41N_SPEED_HIGH\x10\x02\x1a\x02\x18\x01*D\n\x0c\x46\x61nDirection\x12\x19\n\x15\x46\x41N_DIRECTION_FORWARD\x10\x00\x12\x19\n\x15\x46\x41N_DIRECTION_REVERSE\x10\x01*\xc7\x02\n\tColorMode\x12\x16\n\x12\x43OLOR_MODE_UNKNOWN\x10\x00\x12\x15\n\x11\x43OLOR_MODE_ON_OFF\x10\x01\x12 \n\x1c\x43OLOR_MODE_LEGACY_BRIGHTNESS\x10\x02\x12\x19\n\x15\x43OLOR_MODE_BRIGHTNESS\x10\x03\x12\x14\n\x10\x43OLOR_MODE_WHITE\x10\x07\x12 \n\x1c\x43OLOR_MODE_COLOR_TEMPERATURE\x10\x0b\x12\x1e\n\x1a\x43OLOR_MODE_COLD_WARM_WHITE\x10\x13\x12\x12\n\x0e\x43OLOR_MODE_RGB\x10#\x12\x18\n\x14\x43OLOR_MODE_RGB_WHITE\x10\'\x12$\n COLOR_MODE_RGB_COLOR_TEMPERATURE\x10/\x12\"\n\x1e\x43OLOR_MODE_RGB_COLD_WARM_WHITE\x10\x33*\xa1\x01\n\x10SensorStateClass\x12\x14\n\x10STATE_CLASS_NONE\x10\x00\x12\x1b\n\x17STATE_CLASS_MEASUREMENT\x10\x01\x12 \n\x1cSTATE_CLASS_TOTAL_INCREASING\x10\x02\x12\x15\n\x11STATE_CLASS_TOTAL\x10\x03\x12!\n\x1dSTATE_CLASS_MEASUREMENT_ANGLE\x10\x04*Y\n\x13SensorLastResetType\x12\x13\n\x0fLAST_RESET_NONE\x10\x00\x12\x14\n\x10LAST_RESET_NEVER\x10\x01\x12\x13\n\x0fLAST_RESET_AUTO\x10\x02\x1a\x02\x18\x01*\xb9\x01\n\x08LogLevel\x12\x12\n\x0eLOG_LEVEL_NONE\x10\x00\x12\x13\n\x0fLOG_LEVEL_ERROR\x10\x01\x12\x12\n\x0eLOG_LEVEL_WARN\x10\x02\x12\x12\n\x0eLOG_LEVEL_INFO\x10\x03\x12\x14\n\x10LOG_LEVEL_CONFIG\x10\x04\x12\x13\n\x0fLOG_LEVEL_DEBUG\x10\x05\x12\x15\n\x11LOG_LEVEL_VERBOSE\x10\x06\x12\x1a\n\x16LOG_LEVEL_VERY_VERBOSE\x10\x07*\x84\x02\n\x0eServiceArgType\x12\x19\n\x15SERVICE_ARG_TYPE_BOOL\x10\x00\x12\x18\n\x14SERVICE_ARG_TYPE_INT\x10\x01\x12\x1a\n\x16SERVICE_ARG_TYPE_FLOAT\x10\x02\x12\x1b\n\x17SERVICE_ARG_TYPE_STRING\x10\x03\x12\x1f\n\x1bSERVICE_ARG_TYPE_BOOL_ARRAY\x10\x04\x12\x1e\n\x1aSERVICE_ARG_TYPE_INT_ARRAY\x10\x05\x12 \n\x1cSERVICE_ARG_TYPE_FLOAT_ARRAY\x10\x06\x12!\n\x1dSERVICE_ARG_TYPE_STRING_ARRAY\x10\x07*\xb5\x01\n\x0b\x43limateMode\x12\x14\n\x10\x43LIMATE_MODE_OFF\x10\x00\x12\x1a\n\x16\x43LIMATE_MODE_HEAT_COOL\x10\x01\x12\x15\n\x11\x43LIMATE_MODE_COOL\x10\x02\x12\x15\n\x11\x43LIMATE_MODE_HEAT\x10\x03\x12\x19\n\x15\x43LIMATE_MODE_FAN_ONLY\x10\x04\x12\x14\n\x10\x43LIMATE_MODE_DRY\x10\x05\x12\x15\n\x11\x43LIMATE_MODE_AUTO\x10\x06*\xf1\x01\n\x0e\x43limateFanMode\x12\x12\n\x0e\x43LIMATE_FAN_ON\x10\x00\x12\x13\n\x0f\x43LIMATE_FAN_OFF\x10\x01\x12\x14\n\x10\x43LIMATE_FAN_AUTO\x10\x02\x12\x13\n\x0f\x43LIMATE_FAN_LOW\x10\x03\x12\x16\n\x12\x43LIMATE_FAN_MEDIUM\x10\x04\x12\x14\n\x10\x43LIMATE_FAN_HIGH\x10\x05\x12\x16\n\x12\x43LIMATE_FAN_MIDDLE\x10\x06\x12\x15\n\x11\x43LIMATE_FAN_FOCUS\x10\x07\x12\x17\n\x13\x43LIMATE_FAN_DIFFUSE\x10\x08\x12\x15\n\x11\x43LIMATE_FAN_QUIET\x10\t*{\n\x10\x43limateSwingMode\x12\x15\n\x11\x43LIMATE_SWING_OFF\x10\x00\x12\x16\n\x12\x43LIMATE_SWING_BOTH\x10\x01\x12\x1a\n\x16\x43LIMATE_SWING_VERTICAL\x10\x02\x12\x1c\n\x18\x43LIMATE_SWING_HORIZONTAL\x10\x03*\xab\x01\n\rClimateAction\x12\x16\n\x12\x43LIMATE_ACTION_OFF\x10\x00\x12\x1a\n\x16\x43LIMATE_ACTION_COOLING\x10\x02\x12\x1a\n\x16\x43LIMATE_ACTION_HEATING\x10\x03\x12\x17\n\x13\x43LIMATE_ACTION_IDLE\x10\x04\x12\x19\n\x15\x43LIMATE_ACTION_DRYING\x10\x05\x12\x16\n\x12\x43LIMATE_ACTION_FAN\x10\x06*\xdf\x01\n\rClimatePreset\x12\x17\n\x13\x43LIMATE_PRESET_NONE\x10\x00\x12\x17\n\x13\x43LIMATE_PRESET_HOME\x10\x01\x12\x17\n\x13\x43LIMATE_PRESET_AWAY\x10\x02\x12\x18\n\x14\x43LIMATE_PRESET_BOOST\x10\x03\x12\x1a\n\x16\x43LIMATE_PRESET_COMFORT\x10\x04\x12\x16\n\x12\x43LIMATE_PRESET_ECO\x10\x05\x12\x18\n\x14\x43LIMATE_PRESET_SLEEP\x10\x06\x12\x1b\n\x17\x43LIMATE_PRESET_ACTIVITY\x10\x07*O\n\nNumberMode\x12\x14\n\x10NUMBER_MODE_AUTO\x10\x00\x12\x13\n\x0fNUMBER_MODE_BOX\x10\x01\x12\x16\n\x12NUMBER_MODE_SLIDER\x10\x02*\x99\x01\n\tLockState\x12\x13\n\x0fLOCK_STATE_NONE\x10\x00\x12\x15\n\x11LOCK_STATE_LOCKED\x10\x01\x12\x17\n\x13LOCK_STATE_UNLOCKED\x10\x02\x12\x15\n\x11LOCK_STATE_JAMMED\x10\x03\x12\x16\n\x12LOCK_STATE_LOCKING\x10\x04\x12\x18\n\x14LOCK_STATE_UNLOCKING\x10\x05*<\n\x0bLockCommand\x12\x0f\n\x0bLOCK_UNLOCK\x10\x00\x12\r\n\tLOCK_LOCK\x10\x01\x12\r\n\tLOCK_OPEN\x10\x02*\xe5\x01\n\x10MediaPlayerState\x12\x1b\n\x17MEDIA_PLAYER_STATE_NONE\x10\x00\x12\x1b\n\x17MEDIA_PLAYER_STATE_IDLE\x10\x01\x12\x1e\n\x1aMEDIA_PLAYER_STATE_PLAYING\x10\x02\x12\x1d\n\x19MEDIA_PLAYER_STATE_PAUSED\x10\x03\x12!\n\x1dMEDIA_PLAYER_STATE_ANNOUNCING\x10\x04\x12\x1a\n\x16MEDIA_PLAYER_STATE_OFF\x10\x05\x12\x19\n\x15MEDIA_PLAYER_STATE_ON\x10\x06*\xf7\x03\n\x12MediaPlayerCommand\x12\x1d\n\x19MEDIA_PLAYER_COMMAND_PLAY\x10\x00\x12\x1e\n\x1aMEDIA_PLAYER_COMMAND_PAUSE\x10\x01\x12\x1d\n\x19MEDIA_PLAYER_COMMAND_STOP\x10\x02\x12\x1d\n\x19MEDIA_PLAYER_COMMAND_MUTE\x10\x03\x12\x1f\n\x1bMEDIA_PLAYER_COMMAND_UNMUTE\x10\x04\x12\x1f\n\x1bMEDIA_PLAYER_COMMAND_TOGGLE\x10\x05\x12\"\n\x1eMEDIA_PLAYER_COMMAND_VOLUME_UP\x10\x06\x12$\n MEDIA_PLAYER_COMMAND_VOLUME_DOWN\x10\x07\x12 \n\x1cMEDIA_PLAYER_COMMAND_ENQUEUE\x10\x08\x12#\n\x1fMEDIA_PLAYER_COMMAND_REPEAT_ONE\x10\t\x12#\n\x1fMEDIA_PLAYER_COMMAND_REPEAT_OFF\x10\n\x12\'\n#MEDIA_PLAYER_COMMAND_CLEAR_PLAYLIST\x10\x0b\x12 \n\x1cMEDIA_PLAYER_COMMAND_TURN_ON\x10\x0c\x12!\n\x1dMEDIA_PLAYER_COMMAND_TURN_OFF\x10\r*q\n\x18MediaPlayerFormatPurpose\x12\'\n#MEDIA_PLAYER_FORMAT_PURPOSE_DEFAULT\x10\x00\x12,\n(MEDIA_PLAYER_FORMAT_PURPOSE_ANNOUNCEMENT\x10\x01*\xef\x02\n\x1a\x42luetoothDeviceRequestType\x12-\n%BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT\x10\x00\x1a\x02\x08\x01\x12,\n(BLUETOOTH_DEVICE_REQUEST_TYPE_DISCONNECT\x10\x01\x12&\n\"BLUETOOTH_DEVICE_REQUEST_TYPE_PAIR\x10\x02\x12(\n$BLUETOOTH_DEVICE_REQUEST_TYPE_UNPAIR\x10\x03\x12\x37\n3BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT_V3_WITH_CACHE\x10\x04\x12:\n6BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT_V3_WITHOUT_CACHE\x10\x05\x12-\n)BLUETOOTH_DEVICE_REQUEST_TYPE_CLEAR_CACHE\x10\x06*\xf3\x01\n\x15\x42luetoothScannerState\x12 \n\x1c\x42LUETOOTH_SCANNER_STATE_IDLE\x10\x00\x12$\n BLUETOOTH_SCANNER_STATE_STARTING\x10\x01\x12#\n\x1f\x42LUETOOTH_SCANNER_STATE_RUNNING\x10\x02\x12\"\n\x1e\x42LUETOOTH_SCANNER_STATE_FAILED\x10\x03\x12$\n BLUETOOTH_SCANNER_STATE_STOPPING\x10\x04\x12#\n\x1f\x42LUETOOTH_SCANNER_STATE_STOPPED\x10\x05*]\n\x14\x42luetoothScannerMode\x12\"\n\x1e\x42LUETOOTH_SCANNER_MODE_PASSIVE\x10\x00\x12!\n\x1d\x42LUETOOTH_SCANNER_MODE_ACTIVE\x10\x01*j\n\x1bVoiceAssistantSubscribeFlag\x12\"\n\x1eVOICE_ASSISTANT_SUBSCRIBE_NONE\x10\x00\x12\'\n#VOICE_ASSISTANT_SUBSCRIBE_API_AUDIO\x10\x01*\x8d\x01\n\x19VoiceAssistantRequestFlag\x12 \n\x1cVOICE_ASSISTANT_REQUEST_NONE\x10\x00\x12#\n\x1fVOICE_ASSISTANT_REQUEST_USE_VAD\x10\x01\x12)\n%VOICE_ASSISTANT_REQUEST_USE_WAKE_WORD\x10\x02*\xa1\x04\n\x13VoiceAssistantEvent\x12\x19\n\x15VOICE_ASSISTANT_ERROR\x10\x00\x12\x1d\n\x19VOICE_ASSISTANT_RUN_START\x10\x01\x12\x1b\n\x17VOICE_ASSISTANT_RUN_END\x10\x02\x12\x1d\n\x19VOICE_ASSISTANT_STT_START\x10\x03\x12\x1b\n\x17VOICE_ASSISTANT_STT_END\x10\x04\x12 \n\x1cVOICE_ASSISTANT_INTENT_START\x10\x05\x12\x1e\n\x1aVOICE_ASSISTANT_INTENT_END\x10\x06\x12\x1d\n\x19VOICE_ASSISTANT_TTS_START\x10\x07\x12\x1b\n\x17VOICE_ASSISTANT_TTS_END\x10\x08\x12#\n\x1fVOICE_ASSISTANT_WAKE_WORD_START\x10\t\x12!\n\x1dVOICE_ASSISTANT_WAKE_WORD_END\x10\n\x12!\n\x1dVOICE_ASSISTANT_STT_VAD_START\x10\x0b\x12\x1f\n\x1bVOICE_ASSISTANT_STT_VAD_END\x10\x0c\x12$\n VOICE_ASSISTANT_TTS_STREAM_START\x10\x62\x12\"\n\x1eVOICE_ASSISTANT_TTS_STREAM_END\x10\x63\x12#\n\x1fVOICE_ASSISTANT_INTENT_PROGRESS\x10\x64*\xa9\x01\n\x18VoiceAssistantTimerEvent\x12!\n\x1dVOICE_ASSISTANT_TIMER_STARTED\x10\x00\x12!\n\x1dVOICE_ASSISTANT_TIMER_UPDATED\x10\x01\x12#\n\x1fVOICE_ASSISTANT_TIMER_CANCELLED\x10\x02\x12\"\n\x1eVOICE_ASSISTANT_TIMER_FINISHED\x10\x03*\xb3\x02\n\x16\x41larmControlPanelState\x12\x18\n\x14\x41LARM_STATE_DISARMED\x10\x00\x12\x1a\n\x16\x41LARM_STATE_ARMED_HOME\x10\x01\x12\x1a\n\x16\x41LARM_STATE_ARMED_AWAY\x10\x02\x12\x1b\n\x17\x41LARM_STATE_ARMED_NIGHT\x10\x03\x12\x1e\n\x1a\x41LARM_STATE_ARMED_VACATION\x10\x04\x12#\n\x1f\x41LARM_STATE_ARMED_CUSTOM_BYPASS\x10\x05\x12\x17\n\x13\x41LARM_STATE_PENDING\x10\x06\x12\x16\n\x12\x41LARM_STATE_ARMING\x10\x07\x12\x19\n\x15\x41LARM_STATE_DISARMING\x10\x08\x12\x19\n\x15\x41LARM_STATE_TRIGGERED\x10\t*\x98\x02\n\x1d\x41larmControlPanelStateCommand\x12\x1e\n\x1a\x41LARM_CONTROL_PANEL_DISARM\x10\x00\x12 \n\x1c\x41LARM_CONTROL_PANEL_ARM_AWAY\x10\x01\x12 \n\x1c\x41LARM_CONTROL_PANEL_ARM_HOME\x10\x02\x12!\n\x1d\x41LARM_CONTROL_PANEL_ARM_NIGHT\x10\x03\x12$\n ALARM_CONTROL_PANEL_ARM_VACATION\x10\x04\x12)\n%ALARM_CONTROL_PANEL_ARM_CUSTOM_BYPASS\x10\x05\x12\x1f\n\x1b\x41LARM_CONTROL_PANEL_TRIGGER\x10\x06*6\n\x08TextMode\x12\x12\n\x0eTEXT_MODE_TEXT\x10\x00\x12\x16\n\x12TEXT_MODE_PASSWORD\x10\x01*j\n\x0eValveOperation\x12\x18\n\x14VALVE_OPERATION_IDLE\x10\x00\x12\x1e\n\x1aVALVE_OPERATION_IS_OPENING\x10\x01\x12\x1e\n\x1aVALVE_OPERATION_IS_CLOSING\x10\x02*]\n\rUpdateCommand\x12\x17\n\x13UPDATE_COMMAND_NONE\x10\x00\x12\x19\n\x15UPDATE_COMMAND_UPDATE\x10\x01\x12\x18\n\x14UPDATE_COMMAND_CHECK\x10\x02*\x96\x01\n\x15ZWaveProxyRequestType\x12&\n\"ZWAVE_PROXY_REQUEST_TYPE_SUBSCRIBE\x10\x00\x12(\n$ZWAVE_PROXY_REQUEST_TYPE_UNSUBSCRIBE\x10\x01\x12+\n\'ZWAVE_PROXY_REQUEST_TYPE_HOME_ID_CHANGE\x10\x02\x32\x8b\x17\n\rAPIConnection\x12.\n\x05hello\x12\r.HelloRequest\x1a\x0e.HelloResponse\"\x06\xf0@\x00\xf8@\x00\x12G\n\x0c\x61uthenticate\x12\x16.AuthenticationRequest\x1a\x17.AuthenticationResponse\"\x06\xf0@\x00\xf8@\x00\x12=\n\ndisconnect\x12\x12.DisconnectRequest\x1a\x13.DisconnectResponse\"\x06\xf0@\x00\xf8@\x00\x12+\n\x04ping\x12\x0c.PingRequest\x1a\r.PingResponse\"\x06\xf0@\x00\xf8@\x00\x12;\n\x0b\x64\x65vice_info\x12\x12.DeviceInfoRequest\x1a\x13.DeviceInfoResponse\"\x03\xf8@\x00\x12.\n\rlist_entities\x12\x14.ListEntitiesRequest\x1a\x05.void\"\x00\x12\x34\n\x10subscribe_states\x12\x17.SubscribeStatesRequest\x1a\x05.void\"\x00\x12\x30\n\x0esubscribe_logs\x12\x15.SubscribeLogsRequest\x1a\x05.void\"\x00\x12S\n subscribe_homeassistant_services\x12&.SubscribeHomeassistantServicesRequest\x1a\x05.void\"\x00\x12P\n\x1fsubscribe_home_assistant_states\x12$.SubscribeHomeAssistantStatesRequest\x1a\x05.void\"\x00\x12\x32\n\x0f\x65xecute_service\x12\x16.ExecuteServiceRequest\x1a\x05.void\"\x00\x12[\n\x18noise_encryption_set_key\x12\x1d.NoiseEncryptionSetKeyRequest\x1a\x1e.NoiseEncryptionSetKeyResponse\"\x00\x12\x30\n\x0e\x62utton_command\x12\x15.ButtonCommandRequest\x1a\x05.void\"\x00\x12,\n\x0c\x63\x61mera_image\x12\x13.CameraImageRequest\x1a\x05.void\"\x00\x12\x32\n\x0f\x63limate_command\x12\x16.ClimateCommandRequest\x1a\x05.void\"\x00\x12.\n\rcover_command\x12\x14.CoverCommandRequest\x1a\x05.void\"\x00\x12,\n\x0c\x64\x61te_command\x12\x13.DateCommandRequest\x1a\x05.void\"\x00\x12\x34\n\x10\x64\x61tetime_command\x12\x17.DateTimeCommandRequest\x1a\x05.void\"\x00\x12*\n\x0b\x66\x61n_command\x12\x12.FanCommandRequest\x1a\x05.void\"\x00\x12.\n\rlight_command\x12\x14.LightCommandRequest\x1a\x05.void\"\x00\x12,\n\x0clock_command\x12\x13.LockCommandRequest\x1a\x05.void\"\x00\x12;\n\x14media_player_command\x12\x1a.MediaPlayerCommandRequest\x1a\x05.void\"\x00\x12\x30\n\x0enumber_command\x12\x15.NumberCommandRequest\x1a\x05.void\"\x00\x12\x30\n\x0eselect_command\x12\x15.SelectCommandRequest\x1a\x05.void\"\x00\x12.\n\rsiren_command\x12\x14.SirenCommandRequest\x1a\x05.void\"\x00\x12\x30\n\x0eswitch_command\x12\x15.SwitchCommandRequest\x1a\x05.void\"\x00\x12,\n\x0ctext_command\x12\x13.TextCommandRequest\x1a\x05.void\"\x00\x12,\n\x0ctime_command\x12\x13.TimeCommandRequest\x1a\x05.void\"\x00\x12\x30\n\x0eupdate_command\x12\x15.UpdateCommandRequest\x1a\x05.void\"\x00\x12.\n\rvalve_command\x12\x14.ValveCommandRequest\x1a\x05.void\"\x00\x12\\\n%subscribe_bluetooth_le_advertisements\x12*.SubscribeBluetoothLEAdvertisementsRequest\x1a\x05.void\"\x00\x12<\n\x18\x62luetooth_device_request\x12\x17.BluetoothDeviceRequest\x1a\x05.void\"\x00\x12H\n\x1b\x62luetooth_gatt_get_services\x12 .BluetoothGATTGetServicesRequest\x1a\x05.void\"\x00\x12\x39\n\x13\x62luetooth_gatt_read\x12\x19.BluetoothGATTReadRequest\x1a\x05.void\"\x00\x12;\n\x14\x62luetooth_gatt_write\x12\x1a.BluetoothGATTWriteRequest\x1a\x05.void\"\x00\x12N\n\x1e\x62luetooth_gatt_read_descriptor\x12#.BluetoothGATTReadDescriptorRequest\x1a\x05.void\"\x00\x12P\n\x1f\x62luetooth_gatt_write_descriptor\x12$.BluetoothGATTWriteDescriptorRequest\x1a\x05.void\"\x00\x12=\n\x15\x62luetooth_gatt_notify\x12\x1b.BluetoothGATTNotifyRequest\x1a\x05.void\"\x00\x12v\n$subscribe_bluetooth_connections_free\x12).SubscribeBluetoothConnectionsFreeRequest\x1a!.BluetoothConnectionsFreeResponse\"\x00\x12`\n\'unsubscribe_bluetooth_le_advertisements\x12,.UnsubscribeBluetoothLEAdvertisementsRequest\x1a\x05.void\"\x00\x12\x46\n\x1a\x62luetooth_scanner_set_mode\x12\x1f.BluetoothScannerSetModeRequest\x1a\x05.void\"\x00\x12\x45\n\x19subscribe_voice_assistant\x12\x1f.SubscribeVoiceAssistantRequest\x1a\x05.void\"\x00\x12p\n!voice_assistant_get_configuration\x12#.VoiceAssistantConfigurationRequest\x1a$.VoiceAssistantConfigurationResponse\"\x00\x12M\n!voice_assistant_set_configuration\x12\x1f.VoiceAssistantSetConfiguration\x1a\x05.void\"\x00\x12H\n\x1b\x61larm_control_panel_command\x12 .AlarmControlPanelCommandRequest\x1a\x05.void\"\x00\x12.\n\x11zwave_proxy_frame\x12\x10.ZWaveProxyFrame\x1a\x05.void\"\x00\x12\x32\n\x13zwave_proxy_request\x12\x12.ZWaveProxyRequest\x1a\x05.void\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tapi.proto\x1a\x11\x61pi_options.proto\"j\n\x0cHelloRequest\x12\x19\n\x0b\x63lient_info\x18\x01 \x01(\tB\x04\xe0\xb5\x18\x01\x12\x19\n\x11\x61pi_version_major\x18\x02 \x01(\r\x12\x19\n\x11\x61pi_version_minor\x18\x03 \x01(\r:\t\xe0@\x01\xe8@\x02\x80\x41\x01\"s\n\rHelloResponse\x12\x19\n\x11\x61pi_version_major\x18\x01 \x01(\r\x12\x19\n\x11\x61pi_version_minor\x18\x02 \x01(\r\x12\x13\n\x0bserver_info\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t:\t\xe0@\x02\xe8@\x01\x80\x41\x01\"M\n\x15\x41uthenticationRequest\x12\x16\n\x08password\x18\x01 \x01(\tB\x04\xe0\xb5\x18\x01:\x1c\xe0@\x03\xe8@\x02\xf2@\x10USE_API_PASSWORD\x80\x41\x01\"P\n\x16\x41uthenticationResponse\x12\x18\n\x10invalid_password\x18\x01 \x01(\x08:\x1c\xe0@\x04\xe8@\x01\xf2@\x10USE_API_PASSWORD\x80\x41\x01\"\x1e\n\x11\x44isconnectRequest:\t\xe0@\x05\xe8@\x00\x80\x41\x01\"\x1f\n\x12\x44isconnectResponse:\t\xe0@\x06\xe8@\x00\x80\x41\x01\"\x15\n\x0bPingRequest:\x06\xe0@\x07\xe8@\x00\"\x16\n\x0cPingResponse:\x06\xe0@\x08\xe8@\x00\"\x1b\n\x11\x44\x65viceInfoRequest:\x06\xe0@\t\xe8@\x02\")\n\x08\x41reaInfo\x12\x0f\n\x07\x61rea_id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\">\n\nDeviceInfo\x12\x11\n\tdevice_id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07\x61rea_id\x18\x03 \x01(\r\"\xb0\x08\n\x12\x44\x65viceInfoResponse\x12*\n\ruses_password\x18\x01 \x01(\x08\x42\x13\x92\x41\x10USE_API_PASSWORD\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0bmac_address\x18\x03 \x01(\t\x12\x17\n\x0f\x65sphome_version\x18\x04 \x01(\t\x12\x18\n\x10\x63ompilation_time\x18\x05 \x01(\t\x12\r\n\x05model\x18\x06 \x01(\t\x12)\n\x0ehas_deep_sleep\x18\x07 \x01(\x08\x42\x11\x92\x41\x0eUSE_DEEP_SLEEP\x12-\n\x0cproject_name\x18\x08 \x01(\tB\x17\x92\x41\x14\x45SPHOME_PROJECT_NAME\x12\x30\n\x0fproject_version\x18\t \x01(\tB\x17\x92\x41\x14\x45SPHOME_PROJECT_NAME\x12(\n\x0ewebserver_port\x18\n \x01(\rB\x10\x92\x41\rUSE_WEBSERVER\x12@\n\x1elegacy_bluetooth_proxy_version\x18\x0b \x01(\rB\x18\x18\x01\x92\x41\x13USE_BLUETOOTH_PROXY\x12=\n\x1d\x62luetooth_proxy_feature_flags\x18\x0f \x01(\rB\x16\x92\x41\x13USE_BLUETOOTH_PROXY\x12\x14\n\x0cmanufacturer\x18\x0c \x01(\t\x12\x15\n\rfriendly_name\x18\r \x01(\t\x12@\n\x1elegacy_voice_assistant_version\x18\x0e \x01(\rB\x18\x18\x01\x92\x41\x13USE_VOICE_ASSISTANT\x12=\n\x1dvoice_assistant_feature_flags\x18\x11 \x01(\rB\x16\x92\x41\x13USE_VOICE_ASSISTANT\x12$\n\x0esuggested_area\x18\x10 \x01(\tB\x0c\x92\x41\tUSE_AREAS\x12\x35\n\x15\x62luetooth_mac_address\x18\x12 \x01(\tB\x16\x92\x41\x13USE_BLUETOOTH_PROXY\x12\x32\n\x18\x61pi_encryption_supported\x18\x13 \x01(\x08\x42\x10\x92\x41\rUSE_API_NOISE\x12\x44\n\x07\x64\x65vices\x18\x14 \x03(\x0b\x32\x0b.DeviceInfoB&\x92\x41\x0bUSE_DEVICES\xd2\xb5\x18\x14\x45SPHOME_DEVICE_COUNT\x12<\n\x05\x61reas\x18\x15 \x03(\x0b\x32\t.AreaInfoB\"\x92\x41\tUSE_AREAS\xd2\xb5\x18\x12\x45SPHOME_AREA_COUNT\x12%\n\x04\x61rea\x18\x16 \x01(\x0b\x32\t.AreaInfoB\x0c\x92\x41\tUSE_AREAS\x12\x35\n\x19zwave_proxy_feature_flags\x18\x17 \x01(\rB\x12\x92\x41\x0fUSE_ZWAVE_PROXY\x12)\n\rzwave_home_id\x18\x18 \x01(\rB\x12\x92\x41\x0fUSE_ZWAVE_PROXY:\x06\xe0@\n\xe8@\x01\"\x1d\n\x13ListEntitiesRequest:\x06\xe0@\x0b\xe8@\x02\"%\n\x18ListEntitiesDoneResponse:\t\xe0@\x13\xe8@\x01\x80\x41\x01\" \n\x16SubscribeStatesRequest:\x06\xe0@\x14\xe8@\x02\"\xd0\x02\n ListEntitiesBinarySensorResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x14\n\x0c\x64\x65vice_class\x18\x05 \x01(\t\x12\x1f\n\x17is_status_binary_sensor\x18\x06 \x01(\x08\x12\x1b\n\x13\x64isabled_by_default\x18\x07 \x01(\x08\x12 \n\x04icon\x18\x08 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\t \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:5\xe0@\x0c\xe8@\x01\xf2@\x11USE_BINARY_SENSOR\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xac\x01\n\x19\x42inarySensorStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@\x15\xe8@\x01\xf2@\x11USE_BINARY_SENSOR\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x80\x03\n\x19ListEntitiesCoverResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x15\n\rassumed_state\x18\x05 \x01(\x08\x12\x19\n\x11supports_position\x18\x06 \x01(\x08\x12\x15\n\rsupports_tilt\x18\x07 \x01(\x08\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12\x1b\n\x13\x64isabled_by_default\x18\t \x01(\x08\x12 \n\x04icon\x18\n \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x0b \x01(\x0e\x32\x0f.EntityCategory\x12\x15\n\rsupports_stop\x18\x0c \x01(\x08\x12!\n\tdevice_id\x18\r \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@\r\xe8@\x01\xf2@\tUSE_COVER\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xf0\x01\n\x12\x43overStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12+\n\x0clegacy_state\x18\x02 \x01(\x0e\x32\x11.LegacyCoverStateB\x02\x18\x01\x12\x10\n\x08position\x18\x03 \x01(\x02\x12\x0c\n\x04tilt\x18\x04 \x01(\x02\x12*\n\x11\x63urrent_operation\x18\x05 \x01(\x0e\x32\x0f.CoverOperation\x12!\n\tdevice_id\x18\x06 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:1\xe0@\x16\xe8@\x01\xf2@\tUSE_COVER\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x99\x02\n\x13\x43overCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x1e\n\x12has_legacy_command\x18\x02 \x01(\x08\x42\x02\x18\x01\x12/\n\x0elegacy_command\x18\x03 \x01(\x0e\x32\x13.LegacyCoverCommandB\x02\x18\x01\x12\x14\n\x0chas_position\x18\x04 \x01(\x08\x12\x10\n\x08position\x18\x05 \x01(\x02\x12\x10\n\x08has_tilt\x18\x06 \x01(\x08\x12\x0c\n\x04tilt\x18\x07 \x01(\x02\x12\x0c\n\x04stop\x18\x08 \x01(\x08\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@\x1e\xe8@\x02\xf2@\tUSE_COVER\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xb6\x03\n\x17ListEntitiesFanResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1c\n\x14supports_oscillation\x18\x05 \x01(\x08\x12\x16\n\x0esupports_speed\x18\x06 \x01(\x08\x12\x1a\n\x12supports_direction\x18\x07 \x01(\x08\x12\x1d\n\x15supported_speed_count\x18\x08 \x01(\x05\x12\x1b\n\x13\x64isabled_by_default\x18\t \x01(\x08\x12 \n\x04icon\x18\n \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x0b \x01(\x0e\x32\x0f.EntityCategory\x12=\n\x16supported_preset_modes\x18\x0c \x03(\tB\x1d\xf2\xb5\x18\x19std::vector\x12!\n\tdevice_id\x18\r \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@\x0e\xe8@\x01\xf2@\x07USE_FAN\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x81\x02\n\x10\x46\x61nStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12\x13\n\x0boscillating\x18\x03 \x01(\x08\x12\x1c\n\x05speed\x18\x04 \x01(\x0e\x32\t.FanSpeedB\x02\x18\x01\x12 \n\tdirection\x18\x05 \x01(\x0e\x32\r.FanDirection\x12\x13\n\x0bspeed_level\x18\x06 \x01(\x05\x12\x13\n\x0bpreset_mode\x18\x07 \x01(\t\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:/\xe0@\x17\xe8@\x01\xf2@\x07USE_FAN\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x88\x03\n\x11\x46\x61nCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x11\n\thas_state\x18\x02 \x01(\x08\x12\r\n\x05state\x18\x03 \x01(\x08\x12\x15\n\thas_speed\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x1c\n\x05speed\x18\x05 \x01(\x0e\x32\t.FanSpeedB\x02\x18\x01\x12\x17\n\x0fhas_oscillating\x18\x06 \x01(\x08\x12\x13\n\x0boscillating\x18\x07 \x01(\x08\x12\x15\n\rhas_direction\x18\x08 \x01(\x08\x12 \n\tdirection\x18\t \x01(\x0e\x32\r.FanDirection\x12\x17\n\x0fhas_speed_level\x18\n \x01(\x08\x12\x13\n\x0bspeed_level\x18\x0b \x01(\x05\x12\x17\n\x0fhas_preset_mode\x18\x0c \x01(\x08\x12\x13\n\x0bpreset_mode\x18\r \x01(\t\x12!\n\tdevice_id\x18\x0e \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:)\xe0@\x1f\xe8@\x02\xf2@\x07USE_FAN\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xc8\x04\n\x19ListEntitiesLightResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x43\n\x15supported_color_modes\x18\x0c \x03(\x0e\x32\n.ColorModeB\x18\xf2\xb5\x18\x14light::ColorModeMask\x12&\n\x1alegacy_supports_brightness\x18\x05 \x01(\x08\x42\x02\x18\x01\x12\x1f\n\x13legacy_supports_rgb\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\'\n\x1blegacy_supports_white_value\x18\x07 \x01(\x08\x42\x02\x18\x01\x12-\n!legacy_supports_color_temperature\x18\x08 \x01(\x08\x42\x02\x18\x01\x12\x12\n\nmin_mireds\x18\t \x01(\x02\x12\x12\n\nmax_mireds\x18\n \x01(\x02\x12.\n\x07\x65\x66\x66\x65\x63ts\x18\x0b \x03(\tB\x1d\xf2\xb5\x18\x19\x46ixedVector\x12\x1b\n\x13\x64isabled_by_default\x18\r \x01(\x08\x12 \n\x04icon\x18\x0e \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x0f \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x10 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@\x0f\xe8@\x01\xf2@\tUSE_LIGHT\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xe0\x02\n\x12LightStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12\x12\n\nbrightness\x18\x03 \x01(\x02\x12\x1e\n\ncolor_mode\x18\x0b \x01(\x0e\x32\n.ColorMode\x12\x18\n\x10\x63olor_brightness\x18\n \x01(\x02\x12\x0b\n\x03red\x18\x04 \x01(\x02\x12\r\n\x05green\x18\x05 \x01(\x02\x12\x0c\n\x04\x62lue\x18\x06 \x01(\x02\x12\r\n\x05white\x18\x07 \x01(\x02\x12\x19\n\x11\x63olor_temperature\x18\x08 \x01(\x02\x12\x12\n\ncold_white\x18\x0c \x01(\x02\x12\x12\n\nwarm_white\x18\r \x01(\x02\x12\x0e\n\x06\x65\x66\x66\x65\x63t\x18\t \x01(\t\x12!\n\tdevice_id\x18\x0e \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:1\xe0@\x18\xe8@\x01\xf2@\tUSE_LIGHT\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xad\x05\n\x13LightCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x11\n\thas_state\x18\x02 \x01(\x08\x12\r\n\x05state\x18\x03 \x01(\x08\x12\x16\n\x0ehas_brightness\x18\x04 \x01(\x08\x12\x12\n\nbrightness\x18\x05 \x01(\x02\x12\x16\n\x0ehas_color_mode\x18\x16 \x01(\x08\x12\x1e\n\ncolor_mode\x18\x17 \x01(\x0e\x32\n.ColorMode\x12\x1c\n\x14has_color_brightness\x18\x14 \x01(\x08\x12\x18\n\x10\x63olor_brightness\x18\x15 \x01(\x02\x12\x0f\n\x07has_rgb\x18\x06 \x01(\x08\x12\x0b\n\x03red\x18\x07 \x01(\x02\x12\r\n\x05green\x18\x08 \x01(\x02\x12\x0c\n\x04\x62lue\x18\t \x01(\x02\x12\x11\n\thas_white\x18\n \x01(\x08\x12\r\n\x05white\x18\x0b \x01(\x02\x12\x1d\n\x15has_color_temperature\x18\x0c \x01(\x08\x12\x19\n\x11\x63olor_temperature\x18\r \x01(\x02\x12\x16\n\x0ehas_cold_white\x18\x18 \x01(\x08\x12\x12\n\ncold_white\x18\x19 \x01(\x02\x12\x16\n\x0ehas_warm_white\x18\x1a \x01(\x08\x12\x12\n\nwarm_white\x18\x1b \x01(\x02\x12\x1d\n\x15has_transition_length\x18\x0e \x01(\x08\x12\x19\n\x11transition_length\x18\x0f \x01(\r\x12\x18\n\x10has_flash_length\x18\x10 \x01(\x08\x12\x14\n\x0c\x66lash_length\x18\x11 \x01(\r\x12\x12\n\nhas_effect\x18\x12 \x01(\x08\x12\x0e\n\x06\x65\x66\x66\x65\x63t\x18\x13 \x01(\t\x12!\n\tdevice_id\x18\x1c \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@ \xe8@\x02\xf2@\tUSE_LIGHT\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xd2\x03\n\x1aListEntitiesSensorResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13unit_of_measurement\x18\x06 \x01(\t\x12\x19\n\x11\x61\x63\x63uracy_decimals\x18\x07 \x01(\x05\x12\x14\n\x0c\x66orce_update\x18\x08 \x01(\x08\x12\x14\n\x0c\x64\x65vice_class\x18\t \x01(\t\x12&\n\x0bstate_class\x18\n \x01(\x0e\x32\x11.SensorStateClass\x12\x38\n\x16legacy_last_reset_type\x18\x0b \x01(\x0e\x32\x14.SensorLastResetTypeB\x02\x18\x01\x12\x1b\n\x13\x64isabled_by_default\x18\x0c \x01(\x08\x12(\n\x0f\x65ntity_category\x18\r \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x0e \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@\x10\xe8@\x01\xf2@\nUSE_SENSOR\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9f\x01\n\x13SensorStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x02\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@\x19\xe8@\x01\xf2@\nUSE_SENSOR\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xb9\x02\n\x1aListEntitiesSwitchResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x15\n\rassumed_state\x18\x06 \x01(\x08\x12\x1b\n\x13\x64isabled_by_default\x18\x07 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x08 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\t \x01(\t\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@\x11\xe8@\x01\xf2@\nUSE_SWITCH\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x88\x01\n\x13SwitchStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@\x1a\xe8@\x01\xf2@\nUSE_SWITCH\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x83\x01\n\x14SwitchCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@!\xe8@\x02\xf2@\nUSE_SWITCH\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xab\x02\n\x1eListEntitiesTextSensorResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:3\xe0@\x12\xe8@\x01\xf2@\x0fUSE_TEXT_SENSOR\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xa8\x01\n\x17TextSensorStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:7\xe0@\x1b\xe8@\x01\xf2@\x0fUSE_TEXT_SENSOR\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"M\n\x14SubscribeLogsRequest\x12\x18\n\x05level\x18\x01 \x01(\x0e\x32\t.LogLevel\x12\x13\n\x0b\x64ump_config\x18\x02 \x01(\x08:\x06\xe0@\x1c\xe8@\x02\"P\n\x15SubscribeLogsResponse\x12\x18\n\x05level\x18\x01 \x01(\x0e\x32\t.LogLevel\x12\x0f\n\x07message\x18\x03 \x01(\x0c:\x0c\xe0@\x1d\xe8@\x01\xf8@\x00\x80\x41\x00\"C\n\x1cNoiseEncryptionSetKeyRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c:\x16\xe0@|\xe8@\x02\xf2@\rUSE_API_NOISE\"H\n\x1dNoiseEncryptionSetKeyResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08:\x16\xe0@}\xe8@\x01\xf2@\rUSE_API_NOISE\"P\n%SubscribeHomeassistantServicesRequest:\'\xe0@\"\xe8@\x02\xf2@\x1eUSE_API_HOMEASSISTANT_SERVICES\";\n\x17HomeassistantServiceMap\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x13\n\x05value\x18\x02 \x01(\tB\x04\xc0\xb5\x18\x01\"\xd6\x03\n\x1aHomeassistantActionRequest\x12\x0f\n\x07service\x18\x01 \x01(\t\x12,\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x18.HomeassistantServiceMapB\x04\xe8\xb5\x18\x01\x12\x35\n\rdata_template\x18\x03 \x03(\x0b\x32\x18.HomeassistantServiceMapB\x04\xe8\xb5\x18\x01\x12\x31\n\tvariables\x18\x04 \x03(\x0b\x32\x18.HomeassistantServiceMapB\x04\xe8\xb5\x18\x01\x12\x10\n\x08is_event\x18\x05 \x01(\x08\x12:\n\x07\x63\x61ll_id\x18\x06 \x01(\rB)\x92\x41&USE_API_HOMEASSISTANT_ACTION_RESPONSES\x12\x46\n\x0ewants_response\x18\x07 \x01(\x08\x42.\x92\x41+USE_API_HOMEASSISTANT_ACTION_RESPONSES_JSON\x12M\n\x11response_template\x18\x08 \x01(\tB2\x92\x41+USE_API_HOMEASSISTANT_ACTION_RESPONSES_JSON\xc0\xb5\x18\x01:*\xe0@#\xe8@\x01\xf2@\x1eUSE_API_HOMEASSISTANT_SERVICES\x80\x41\x01\"\xd6\x01\n\x1bHomeassistantActionResponse\x12\x0f\n\x07\x63\x61ll_id\x18\x01 \x01(\r\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\x15\n\rerror_message\x18\x03 \x01(\t\x12I\n\rresponse_data\x18\x04 \x01(\x0c\x42\x32\x92\x41+USE_API_HOMEASSISTANT_ACTION_RESPONSES_JSON\xe0\xb5\x18\x01:3\xe0@\x82\x01\xe8@\x02\xf2@&USE_API_HOMEASSISTANT_ACTION_RESPONSES\x80\x41\x01\"L\n#SubscribeHomeAssistantStatesRequest:%\xe0@&\xe8@\x02\xf2@\x1cUSE_API_HOMEASSISTANT_STATES\"\x80\x01\n#SubscribeHomeAssistantStateResponse\x12\x11\n\tentity_id\x18\x01 \x01(\t\x12\x11\n\tattribute\x18\x02 \x01(\t\x12\x0c\n\x04once\x18\x03 \x01(\x08:%\xe0@\'\xe8@\x01\xf2@\x1cUSE_API_HOMEASSISTANT_STATES\"{\n\x1aHomeAssistantStateResponse\x12\x11\n\tentity_id\x18\x01 \x01(\t\x12\r\n\x05state\x18\x02 \x01(\t\x12\x11\n\tattribute\x18\x03 \x01(\t:(\xe0@(\xe8@\x02\xf2@\x1cUSE_API_HOMEASSISTANT_STATES\x80\x41\x01\"\x18\n\x0eGetTimeRequest:\x06\xe0@$\xe8@\x01\"K\n\x0fGetTimeResponse\x12\x15\n\repoch_seconds\x18\x01 \x01(\x07\x12\x16\n\x08timezone\x18\x02 \x01(\tB\x04\xe0\xb5\x18\x01:\t\xe0@%\xe8@\x02\x80\x41\x01\"l\n\x1cListEntitiesServicesArgument\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1d\n\x04type\x18\x02 \x01(\x0e\x32\x0f.ServiceArgType:\x1f\xf2@\x1cUSE_API_USER_DEFINED_ACTIONS\"\xc5\x01\n\x1cListEntitiesServicesResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x31\n\x04\x61rgs\x18\x03 \x03(\x0b\x32\x1d.ListEntitiesServicesArgumentB\x04\xe8\xb5\x18\x01\x12\x30\n\x11supports_response\x18\x04 \x01(\x0e\x32\x15.SupportsResponseType:%\xe0@)\xe8@\x01\xf2@\x1cUSE_API_USER_DEFINED_ACTIONS\"\xfb\x01\n\x16\x45xecuteServiceArgument\x12\r\n\x05\x62ool_\x18\x01 \x01(\x08\x12\x12\n\nlegacy_int\x18\x02 \x01(\x05\x12\x0e\n\x06\x66loat_\x18\x03 \x01(\x02\x12\x0f\n\x07string_\x18\x04 \x01(\t\x12\x0c\n\x04int_\x18\x05 \x01(\x11\x12\x1a\n\nbool_array\x18\x06 \x03(\x08\x42\x06\x10\x00\xe8\xb5\x18\x01\x12\x19\n\tint_array\x18\x07 \x03(\x11\x42\x06\x10\x00\xe8\xb5\x18\x01\x12\x1b\n\x0b\x66loat_array\x18\x08 \x03(\x02\x42\x06\x10\x00\xe8\xb5\x18\x01\x12\x1a\n\x0cstring_array\x18\t \x03(\tB\x04\xe8\xb5\x18\x01:\x1f\xf2@\x1cUSE_API_USER_DEFINED_ACTIONS\"\xf9\x01\n\x15\x45xecuteServiceRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12+\n\x04\x61rgs\x18\x02 \x03(\x0b\x32\x17.ExecuteServiceArgumentB\x04\xe8\xb5\x18\x01\x12\x39\n\x07\x63\x61ll_id\x18\x03 \x01(\rB(\x92\x41%USE_API_USER_DEFINED_ACTION_RESPONSES\x12\x41\n\x0freturn_response\x18\x04 \x01(\x08\x42(\x92\x41%USE_API_USER_DEFINED_ACTION_RESPONSES:(\xe0@*\xe8@\x02\xf2@\x1cUSE_API_USER_DEFINED_ACTIONS\x80\x41\x01\"\xcf\x01\n\x16\x45xecuteServiceResponse\x12\x0f\n\x07\x63\x61ll_id\x18\x01 \x01(\r\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\x15\n\rerror_message\x18\x03 \x01(\t\x12H\n\rresponse_data\x18\x04 \x01(\x0c\x42\x31\x92\x41*USE_API_USER_DEFINED_ACTION_RESPONSES_JSON\xe0\xb5\x18\x01:2\xe0@\x83\x01\xe8@\x01\xf2@%USE_API_USER_DEFINED_ACTION_RESPONSES\x80\x41\x01\"\x8c\x02\n\x1aListEntitiesCameraResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x1b\n\x13\x64isabled_by_default\x18\x05 \x01(\x08\x12 \n\x04icon\x18\x06 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@+\xe8@\x01\xf2@\nUSE_CAMERA\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x92\x01\n\x13\x43\x61meraImageResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x0c\n\x04\x64one\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:/\xe0@,\xe8@\x01\xf2@\nUSE_CAMERA\x8a\x41\x19StateResponseProtoMessage\"L\n\x12\x43\x61meraImageRequest\x12\x0e\n\x06single\x18\x01 \x01(\x08\x12\x0e\n\x06stream\x18\x02 \x01(\x08:\x16\xe0@-\xe8@\x02\xf2@\nUSE_CAMERA\x80\x41\x01\"\xfd\x08\n\x1bListEntitiesClimateResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12$\n\x1csupports_current_temperature\x18\x05 \x01(\x08\x12-\n%supports_two_point_target_temperature\x18\x06 \x01(\x08\x12\x43\n\x0fsupported_modes\x18\x07 \x03(\x0e\x32\x0c.ClimateModeB\x1c\xf2\xb5\x18\x18\x63limate::ClimateModeMask\x12\x1e\n\x16visual_min_temperature\x18\x08 \x01(\x02\x12\x1e\n\x16visual_max_temperature\x18\t \x01(\x02\x12&\n\x1evisual_target_temperature_step\x18\n \x01(\x02\x12 \n\x14legacy_supports_away\x18\x0b \x01(\x08\x42\x02\x18\x01\x12\x17\n\x0fsupports_action\x18\x0c \x01(\x08\x12M\n\x13supported_fan_modes\x18\r \x03(\x0e\x32\x0f.ClimateFanModeB\x1f\xf2\xb5\x18\x1b\x63limate::ClimateFanModeMask\x12S\n\x15supported_swing_modes\x18\x0e \x03(\x0e\x32\x11.ClimateSwingModeB!\xf2\xb5\x18\x1d\x63limate::ClimateSwingModeMask\x12\x41\n\x1asupported_custom_fan_modes\x18\x0f \x03(\tB\x1d\xf2\xb5\x18\x19std::vector\x12I\n\x11supported_presets\x18\x10 \x03(\x0e\x32\x0e.ClimatePresetB\x1e\xf2\xb5\x18\x1a\x63limate::ClimatePresetMask\x12?\n\x18supported_custom_presets\x18\x11 \x03(\tB\x1d\xf2\xb5\x18\x19std::vector\x12\x1b\n\x13\x64isabled_by_default\x18\x12 \x01(\x08\x12 \n\x04icon\x18\x13 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12(\n\x0f\x65ntity_category\x18\x14 \x01(\x0e\x32\x0f.EntityCategory\x12\'\n\x1fvisual_current_temperature_step\x18\x15 \x01(\x02\x12!\n\x19supports_current_humidity\x18\x16 \x01(\x08\x12 \n\x18supports_target_humidity\x18\x17 \x01(\x08\x12\x1b\n\x13visual_min_humidity\x18\x18 \x01(\x02\x12\x1b\n\x13visual_max_humidity\x18\x19 \x01(\x02\x12!\n\tdevice_id\x18\x1a \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES\x12\x15\n\rfeature_flags\x18\x1b \x01(\r:/\xe0@.\xe8@\x01\xf2@\x0bUSE_CLIMATE\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9e\x04\n\x14\x43limateStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x1a\n\x04mode\x18\x02 \x01(\x0e\x32\x0c.ClimateMode\x12\x1b\n\x13\x63urrent_temperature\x18\x03 \x01(\x02\x12\x1a\n\x12target_temperature\x18\x04 \x01(\x02\x12\x1e\n\x16target_temperature_low\x18\x05 \x01(\x02\x12\x1f\n\x17target_temperature_high\x18\x06 \x01(\x02\x12\x1e\n\x12unused_legacy_away\x18\x07 \x01(\x08\x42\x02\x18\x01\x12\x1e\n\x06\x61\x63tion\x18\x08 \x01(\x0e\x32\x0e.ClimateAction\x12!\n\x08\x66\x61n_mode\x18\t \x01(\x0e\x32\x0f.ClimateFanMode\x12%\n\nswing_mode\x18\n \x01(\x0e\x32\x11.ClimateSwingMode\x12\x17\n\x0f\x63ustom_fan_mode\x18\x0b \x01(\t\x12\x1e\n\x06preset\x18\x0c \x01(\x0e\x32\x0e.ClimatePreset\x12\x15\n\rcustom_preset\x18\r \x01(\t\x12\x18\n\x10\x63urrent_humidity\x18\x0e \x01(\x02\x12\x17\n\x0ftarget_humidity\x18\x0f \x01(\x02\x12!\n\tdevice_id\x18\x10 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:3\xe0@/\xe8@\x01\xf2@\x0bUSE_CLIMATE\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xf8\x05\n\x15\x43limateCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x10\n\x08has_mode\x18\x02 \x01(\x08\x12\x1a\n\x04mode\x18\x03 \x01(\x0e\x32\x0c.ClimateMode\x12\x1e\n\x16has_target_temperature\x18\x04 \x01(\x08\x12\x1a\n\x12target_temperature\x18\x05 \x01(\x02\x12\"\n\x1ahas_target_temperature_low\x18\x06 \x01(\x08\x12\x1e\n\x16target_temperature_low\x18\x07 \x01(\x02\x12#\n\x1bhas_target_temperature_high\x18\x08 \x01(\x08\x12\x1f\n\x17target_temperature_high\x18\t \x01(\x02\x12\"\n\x16unused_has_legacy_away\x18\n \x01(\x08\x42\x02\x18\x01\x12\x1e\n\x12unused_legacy_away\x18\x0b \x01(\x08\x42\x02\x18\x01\x12\x14\n\x0chas_fan_mode\x18\x0c \x01(\x08\x12!\n\x08\x66\x61n_mode\x18\r \x01(\x0e\x32\x0f.ClimateFanMode\x12\x16\n\x0ehas_swing_mode\x18\x0e \x01(\x08\x12%\n\nswing_mode\x18\x0f \x01(\x0e\x32\x11.ClimateSwingMode\x12\x1b\n\x13has_custom_fan_mode\x18\x10 \x01(\x08\x12\x17\n\x0f\x63ustom_fan_mode\x18\x11 \x01(\t\x12\x12\n\nhas_preset\x18\x12 \x01(\x08\x12\x1e\n\x06preset\x18\x13 \x01(\x0e\x32\x0e.ClimatePreset\x12\x19\n\x11has_custom_preset\x18\x14 \x01(\x08\x12\x15\n\rcustom_preset\x18\x15 \x01(\t\x12\x1b\n\x13has_target_humidity\x18\x16 \x01(\x08\x12\x17\n\x0ftarget_humidity\x18\x17 \x01(\x02\x12!\n\tdevice_id\x18\x18 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@0\xe8@\x02\xf2@\x0bUSE_CLIMATE\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\x8e\x03\n\x1aListEntitiesNumberResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x11\n\tmin_value\x18\x06 \x01(\x02\x12\x11\n\tmax_value\x18\x07 \x01(\x02\x12\x0c\n\x04step\x18\x08 \x01(\x02\x12\x1b\n\x13\x64isabled_by_default\x18\t \x01(\x08\x12(\n\x0f\x65ntity_category\x18\n \x01(\x0e\x32\x0f.EntityCategory\x12\x1b\n\x13unit_of_measurement\x18\x0b \x01(\t\x12\x19\n\x04mode\x18\x0c \x01(\x0e\x32\x0b.NumberMode\x12\x14\n\x0c\x64\x65vice_class\x18\r \x01(\t\x12!\n\tdevice_id\x18\x0e \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@1\xe8@\x01\xf2@\nUSE_NUMBER\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9f\x01\n\x13NumberStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x02\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@2\xe8@\x01\xf2@\nUSE_NUMBER\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x83\x01\n\x14NumberCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x02\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@3\xe8@\x02\xf2@\nUSE_NUMBER\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xbc\x02\n\x1aListEntitiesSelectResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12.\n\x07options\x18\x06 \x03(\tB\x1d\xf2\xb5\x18\x19\x46ixedVector\x12\x1b\n\x13\x64isabled_by_default\x18\x07 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x08 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@4\xe8@\x01\xf2@\nUSE_SELECT\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9f\x01\n\x13SelectStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@5\xe8@\x01\xf2@\nUSE_SELECT\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x83\x01\n\x14SelectCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@6\xe8@\x02\xf2@\nUSE_SELECT\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xcd\x02\n\x19ListEntitiesSirenResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12\r\n\x05tones\x18\x07 \x03(\t\x12\x19\n\x11supports_duration\x18\x08 \x01(\x08\x12\x17\n\x0fsupports_volume\x18\t \x01(\x08\x12(\n\x0f\x65ntity_category\x18\n \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x0b \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@7\xe8@\x01\xf2@\tUSE_SIREN\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x86\x01\n\x12SirenStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\x08\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:1\xe0@8\xe8@\x01\xf2@\tUSE_SIREN\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x80\x02\n\x13SirenCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x11\n\thas_state\x18\x02 \x01(\x08\x12\r\n\x05state\x18\x03 \x01(\x08\x12\x10\n\x08has_tone\x18\x04 \x01(\x08\x12\x0c\n\x04tone\x18\x05 \x01(\t\x12\x14\n\x0chas_duration\x18\x06 \x01(\x08\x12\x10\n\x08\x64uration\x18\x07 \x01(\r\x12\x12\n\nhas_volume\x18\x08 \x01(\x08\x12\x0e\n\x06volume\x18\t \x01(\x02\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@9\xe8@\x02\xf2@\tUSE_SIREN\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xe2\x02\n\x18ListEntitiesLockResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x15\n\rassumed_state\x18\x08 \x01(\x08\x12\x15\n\rsupports_open\x18\t \x01(\x08\x12\x15\n\rrequires_code\x18\n \x01(\x08\x12\x13\n\x0b\x63ode_format\x18\x0b \x01(\t\x12!\n\tdevice_id\x18\x0c \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@:\xe8@\x01\xf2@\x08USE_LOCK\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x90\x01\n\x11LockStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x19\n\x05state\x18\x02 \x01(\x0e\x32\n.LockState\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:0\xe0@;\xe8@\x01\xf2@\x08USE_LOCK\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xaf\x01\n\x12LockCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x1d\n\x07\x63ommand\x18\x02 \x01(\x0e\x32\x0c.LockCommand\x12\x10\n\x08has_code\x18\x03 \x01(\x08\x12\x0c\n\x04\x63ode\x18\x04 \x01(\t\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:*\xe0@<\xe8@\x02\xf2@\x08USE_LOCK\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xa2\x02\n\x1aListEntitiesButtonResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@=\xe8@\x01\xf2@\nUSE_BUTTON\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"t\n\x14\x42uttonCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12!\n\tdevice_id\x18\x02 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@>\xe8@\x02\xf2@\nUSE_BUTTON\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xae\x01\n\x1aMediaPlayerSupportedFormat\x12\x0e\n\x06\x66ormat\x18\x01 \x01(\t\x12\x13\n\x0bsample_rate\x18\x02 \x01(\r\x12\x14\n\x0cnum_channels\x18\x03 \x01(\r\x12*\n\x07purpose\x18\x04 \x01(\x0e\x32\x19.MediaPlayerFormatPurpose\x12\x14\n\x0csample_bytes\x18\x05 \x01(\r:\x13\xf2@\x10USE_MEDIA_PLAYER\"\xfe\x02\n\x1fListEntitiesMediaPlayerResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x16\n\x0esupports_pause\x18\x08 \x01(\x08\x12\x36\n\x11supported_formats\x18\t \x03(\x0b\x32\x1b.MediaPlayerSupportedFormat\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES\x12\x15\n\rfeature_flags\x18\x0b \x01(\r:4\xe0@?\xe8@\x01\xf2@\x10USE_MEDIA_PLAYER\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xc5\x01\n\x18MediaPlayerStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12 \n\x05state\x18\x02 \x01(\x0e\x32\x11.MediaPlayerState\x12\x0e\n\x06volume\x18\x03 \x01(\x02\x12\r\n\x05muted\x18\x04 \x01(\x08\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:8\xe0@@\xe8@\x01\xf2@\x10USE_MEDIA_PLAYER\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xb8\x02\n\x19MediaPlayerCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x13\n\x0bhas_command\x18\x02 \x01(\x08\x12$\n\x07\x63ommand\x18\x03 \x01(\x0e\x32\x13.MediaPlayerCommand\x12\x12\n\nhas_volume\x18\x04 \x01(\x08\x12\x0e\n\x06volume\x18\x05 \x01(\x02\x12\x15\n\rhas_media_url\x18\x06 \x01(\x08\x12\x11\n\tmedia_url\x18\x07 \x01(\t\x12\x18\n\x10has_announcement\x18\x08 \x01(\x08\x12\x14\n\x0c\x61nnouncement\x18\t \x01(\x08\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@A\xe8@\x02\xf2@\x10USE_MEDIA_PLAYER\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"X\n)SubscribeBluetoothLEAdvertisementsRequest\x12\r\n\x05\x66lags\x18\x01 \x01(\r:\x1c\xe0@B\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"O\n\x14\x42luetoothServiceData\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x17\n\x0blegacy_data\x18\x02 \x03(\rB\x02\x18\x01\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c:\x02\x18\x01\"\xfe\x01\n BluetoothLEAdvertisementResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\x0c\x12\x0c\n\x04rssi\x18\x03 \x01(\x11\x12\x15\n\rservice_uuids\x18\x04 \x03(\t\x12+\n\x0cservice_data\x18\x05 \x03(\x0b\x32\x15.BluetoothServiceData\x12\x30\n\x11manufacturer_data\x18\x06 \x03(\x0b\x32\x15.BluetoothServiceData\x12\x14\n\x0c\x61\x64\x64ress_type\x18\x07 \x01(\r:!\x18\x01\xe0@C\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\x80\x41\x01\"f\n\x1b\x42luetoothLERawAdvertisement\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0c\n\x04rssi\x18\x02 \x01(\x11\x12\x14\n\x0c\x61\x64\x64ress_type\x18\x03 \x01(\r\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x42\x04\xb8\xb5\x18>\"\xab\x01\n$BluetoothLERawAdvertisementsResponse\x12\x62\n\x0e\x61\x64vertisements\x18\x01 \x03(\x0b\x32\x1c.BluetoothLERawAdvertisementB,\xda\xb5\x18(BLUETOOTH_PROXY_ADVERTISEMENT_BATCH_SIZE:\x1f\xe0@]\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\x80\x41\x01\"\xaa\x01\n\x16\x42luetoothDeviceRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x31\n\x0crequest_type\x18\x02 \x01(\x0e\x32\x1b.BluetoothDeviceRequestType\x12\x18\n\x10has_address_type\x18\x03 \x01(\x08\x12\x14\n\x0c\x61\x64\x64ress_type\x18\x04 \x01(\r:\x1c\xe0@D\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"\x81\x01\n!BluetoothDeviceConnectionResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x11\n\tconnected\x18\x02 \x01(\x08\x12\x0b\n\x03mtu\x18\x03 \x01(\r\x12\r\n\x05\x65rror\x18\x04 \x01(\x05:\x1c\xe0@E\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"P\n\x1f\x42luetoothGATTGetServicesRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04:\x1c\xe0@F\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"U\n\x17\x42luetoothGATTDescriptor\x12\x16\n\x04uuid\x18\x01 \x03(\x04\x42\x08\xb8\xb5\x18\x02\xc8\xb5\x18\x01\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x12\n\nshort_uuid\x18\x03 \x01(\r\"\xa2\x01\n\x1b\x42luetoothGATTCharacteristic\x12\x16\n\x04uuid\x18\x01 \x03(\x04\x42\x08\xb8\xb5\x18\x02\xc8\xb5\x18\x01\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x12\n\nproperties\x18\x03 \x01(\r\x12\x33\n\x0b\x64\x65scriptors\x18\x04 \x03(\x0b\x32\x18.BluetoothGATTDescriptorB\x04\xe8\xb5\x18\x01\x12\x12\n\nshort_uuid\x18\x05 \x01(\r\"\x8f\x01\n\x14\x42luetoothGATTService\x12\x16\n\x04uuid\x18\x01 \x03(\x04\x42\x08\xb8\xb5\x18\x02\xc8\xb5\x18\x01\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12;\n\x0f\x63haracteristics\x18\x03 \x03(\x0b\x32\x1c.BluetoothGATTCharacteristicB\x04\xe8\xb5\x18\x01\x12\x12\n\nshort_uuid\x18\x04 \x01(\r\"z\n BluetoothGATTGetServicesResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\'\n\x08services\x18\x02 \x03(\x0b\x32\x15.BluetoothGATTService:\x1c\xe0@G\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"U\n$BluetoothGATTGetServicesDoneResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04:\x1c\xe0@H\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"Y\n\x18\x42luetoothGATTReadRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r:\x1c\xe0@I\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"h\n\x19\x42luetoothGATTReadResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c:\x1c\xe0@J\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"\x80\x01\n\x19\x42luetoothGATTWriteRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x10\n\x08response\x18\x03 \x01(\x08\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x42\x04\xe0\xb5\x18\x01:\x1c\xe0@K\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"c\n\"BluetoothGATTReadDescriptorRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r:\x1c\xe0@L\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"x\n#BluetoothGATTWriteDescriptorRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x12\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x42\x04\xe0\xb5\x18\x01:\x1c\xe0@M\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"k\n\x1a\x42luetoothGATTNotifyRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x0e\n\x06\x65nable\x18\x03 \x01(\x08:\x1c\xe0@N\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"n\n\x1f\x42luetoothGATTNotifyDataResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c:\x1c\xe0@O\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"H\n(SubscribeBluetoothConnectionsFreeRequest:\x1c\xe0@P\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"\x99\x01\n BluetoothConnectionsFreeResponse\x12\x0c\n\x04\x66ree\x18\x01 \x01(\r\x12\r\n\x05limit\x18\x02 \x01(\r\x12:\n\tallocated\x18\x03 \x03(\x04\x42\'\xc8\xb5\x18\x01\xd2\xb5\x18\x1f\x42LUETOOTH_PROXY_MAX_CONNECTIONS:\x1c\xe0@Q\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"j\n\x1a\x42luetoothGATTErrorResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r\x12\r\n\x05\x65rror\x18\x03 \x01(\x05:\x1c\xe0@R\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"[\n\x1a\x42luetoothGATTWriteResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r:\x1c\xe0@S\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"\\\n\x1b\x42luetoothGATTNotifyResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06handle\x18\x02 \x01(\r:\x1c\xe0@T\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"n\n\x1e\x42luetoothDevicePairingResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0e\n\x06paired\x18\x02 \x01(\x08\x12\r\n\x05\x65rror\x18\x03 \x01(\x05:\x1c\xe0@U\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"q\n BluetoothDeviceUnpairingResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\r\n\x05\x65rror\x18\x03 \x01(\x05:\x1c\xe0@V\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"K\n+UnsubscribeBluetoothLEAdvertisementsRequest:\x1c\xe0@W\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"r\n!BluetoothDeviceClearCacheResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x04\x12\x0f\n\x07success\x18\x02 \x01(\x08\x12\r\n\x05\x65rror\x18\x03 \x01(\x05:\x1c\xe0@X\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"\xb9\x01\n\x1d\x42luetoothScannerStateResponse\x12%\n\x05state\x18\x01 \x01(\x0e\x32\x16.BluetoothScannerState\x12#\n\x04mode\x18\x02 \x01(\x0e\x32\x15.BluetoothScannerMode\x12.\n\x0f\x63onfigured_mode\x18\x03 \x01(\x0e\x32\x15.BluetoothScannerMode:\x1c\xe0@~\xe8@\x01\xf2@\x13USE_BLUETOOTH_PROXY\"c\n\x1e\x42luetoothScannerSetModeRequest\x12#\n\x04mode\x18\x01 \x01(\x0e\x32\x15.BluetoothScannerMode:\x1c\xe0@\x7f\xe8@\x02\xf2@\x13USE_BLUETOOTH_PROXY\"`\n\x1eSubscribeVoiceAssistantRequest\x12\x11\n\tsubscribe\x18\x01 \x01(\x08\x12\r\n\x05\x66lags\x18\x02 \x01(\r:\x1c\xe0@Y\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"l\n\x1bVoiceAssistantAudioSettings\x12\x1f\n\x17noise_suppression_level\x18\x01 \x01(\r\x12\x11\n\tauto_gain\x18\x02 \x01(\r\x12\x19\n\x11volume_multiplier\x18\x03 \x01(\x02\"\xbc\x01\n\x15VoiceAssistantRequest\x12\r\n\x05start\x18\x01 \x01(\x08\x12\x17\n\x0f\x63onversation_id\x18\x02 \x01(\t\x12\r\n\x05\x66lags\x18\x03 \x01(\r\x12\x34\n\x0e\x61udio_settings\x18\x04 \x01(\x0b\x32\x1c.VoiceAssistantAudioSettings\x12\x18\n\x10wake_word_phrase\x18\x05 \x01(\t:\x1c\xe0@Z\xe8@\x01\xf2@\x13USE_VOICE_ASSISTANT\"S\n\x16VoiceAssistantResponse\x12\x0c\n\x04port\x18\x01 \x01(\r\x12\r\n\x05\x65rror\x18\x02 \x01(\x08:\x1c\xe0@[\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"6\n\x17VoiceAssistantEventData\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8d\x01\n\x1bVoiceAssistantEventResponse\x12(\n\nevent_type\x18\x01 \x01(\x0e\x32\x14.VoiceAssistantEvent\x12&\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x18.VoiceAssistantEventData:\x1c\xe0@\\\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"N\n\x13VoiceAssistantAudio\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x08:\x1c\xe0@j\xe8@\x00\xf2@\x13USE_VOICE_ASSISTANT\"\xcf\x01\n VoiceAssistantTimerEventResponse\x12-\n\nevent_type\x18\x01 \x01(\x0e\x32\x19.VoiceAssistantTimerEvent\x12\x10\n\x08timer_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x15\n\rtotal_seconds\x18\x04 \x01(\r\x12\x14\n\x0cseconds_left\x18\x05 \x01(\r\x12\x11\n\tis_active\x18\x06 \x01(\x08:\x1c\xe0@s\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"\x97\x01\n\x1dVoiceAssistantAnnounceRequest\x12\x10\n\x08media_id\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x1c\n\x14preannounce_media_id\x18\x03 \x01(\t\x12\x1a\n\x12start_conversation\x18\x04 \x01(\x08:\x1c\xe0@w\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"O\n\x1eVoiceAssistantAnnounceFinished\x12\x0f\n\x07success\x18\x01 \x01(\x08:\x1c\xe0@x\xe8@\x01\xf2@\x13USE_VOICE_ASSISTANT\"R\n\x16VoiceAssistantWakeWord\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\twake_word\x18\x02 \x01(\t\x12\x19\n\x11trained_languages\x18\x03 \x03(\t\"\xa3\x01\n\x1eVoiceAssistantExternalWakeWord\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\twake_word\x18\x02 \x01(\t\x12\x19\n\x11trained_languages\x18\x03 \x03(\t\x12\x12\n\nmodel_type\x18\x04 \x01(\t\x12\x12\n\nmodel_size\x18\x05 \x01(\r\x12\x12\n\nmodel_hash\x18\x06 \x01(\t\x12\x0b\n\x03url\x18\x07 \x01(\t\"\x80\x01\n\"VoiceAssistantConfigurationRequest\x12<\n\x13\x65xternal_wake_words\x18\x01 \x03(\x0b\x32\x1f.VoiceAssistantExternalWakeWord:\x1c\xe0@y\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"\xc5\x01\n#VoiceAssistantConfigurationResponse\x12\x35\n\x14\x61vailable_wake_words\x18\x01 \x03(\x0b\x32\x17.VoiceAssistantWakeWord\x12*\n\x11\x61\x63tive_wake_words\x18\x02 \x03(\tB\x0f\x8a\xb5\x18\x0bstd::vector\x12\x1d\n\x15max_active_wake_words\x18\x03 \x01(\r:\x1c\xe0@z\xe8@\x01\xf2@\x13USE_VOICE_ASSISTANT\"Y\n\x1eVoiceAssistantSetConfiguration\x12\x19\n\x11\x61\x63tive_wake_words\x18\x01 \x03(\t:\x1c\xe0@{\xe8@\x02\xf2@\x13USE_VOICE_ASSISTANT\"\xf5\x02\n%ListEntitiesAlarmControlPanelResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x1a\n\x12supported_features\x18\x08 \x01(\r\x12\x15\n\rrequires_code\x18\t \x01(\x08\x12\x1c\n\x14requires_code_to_arm\x18\n \x01(\x08\x12!\n\tdevice_id\x18\x0b \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:;\xe0@^\xe8@\x01\xf2@\x17USE_ALARM_CONTROL_PANEL\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xb9\x01\n\x1e\x41larmControlPanelStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12&\n\x05state\x18\x02 \x01(\x0e\x32\x17.AlarmControlPanelState\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:?\xe0@_\xe8@\x01\xf2@\x17USE_ALARM_CONTROL_PANEL\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xcb\x01\n\x1f\x41larmControlPanelCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12/\n\x07\x63ommand\x18\x02 \x01(\x0e\x32\x1e.AlarmControlPanelStateCommand\x12\x0c\n\x04\x63ode\x18\x03 \x01(\t\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@`\xe8@\x02\xf2@\x17USE_ALARM_CONTROL_PANEL\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xda\x02\n\x18ListEntitiesTextResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x12\n\nmin_length\x18\x08 \x01(\r\x12\x12\n\nmax_length\x18\t \x01(\r\x12\x0f\n\x07pattern\x18\n \x01(\t\x12\x17\n\x04mode\x18\x0b \x01(\x0e\x32\t.TextMode\x12!\n\tdevice_id\x18\x0c \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@a\xe8@\x01\xf2@\x08USE_TEXT\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x9b\x01\n\x11TextStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12\x15\n\rmissing_state\x18\x03 \x01(\x08\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:0\xe0@b\xe8@\x01\xf2@\x08USE_TEXT\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x7f\n\x12TextCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\r\n\x05state\x18\x02 \x01(\t\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:*\xe0@c\xe8@\x02\xf2@\x08USE_TEXT\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\x91\x02\n\x18ListEntitiesDateResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:5\xe0@d\xe8@\x01\xf2@\x11USE_DATETIME_DATE\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xbf\x01\n\x11\x44\x61teStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\rmissing_state\x18\x02 \x01(\x08\x12\x0c\n\x04year\x18\x03 \x01(\r\x12\r\n\x05month\x18\x04 \x01(\r\x12\x0b\n\x03\x64\x61y\x18\x05 \x01(\r\x12!\n\tdevice_id\x18\x06 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@e\xe8@\x01\xf2@\x11USE_DATETIME_DATE\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xa3\x01\n\x12\x44\x61teCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x0c\n\x04year\x18\x02 \x01(\r\x12\r\n\x05month\x18\x03 \x01(\r\x12\x0b\n\x03\x64\x61y\x18\x04 \x01(\r\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:3\xe0@f\xe8@\x02\xf2@\x11USE_DATETIME_DATE\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\x91\x02\n\x18ListEntitiesTimeResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:5\xe0@g\xe8@\x01\xf2@\x11USE_DATETIME_TIME\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xc3\x01\n\x11TimeStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\rmissing_state\x18\x02 \x01(\x08\x12\x0c\n\x04hour\x18\x03 \x01(\r\x12\x0e\n\x06minute\x18\x04 \x01(\r\x12\x0e\n\x06second\x18\x05 \x01(\r\x12!\n\tdevice_id\x18\x06 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@h\xe8@\x01\xf2@\x11USE_DATETIME_TIME\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xa7\x01\n\x12TimeCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x0c\n\x04hour\x18\x02 \x01(\r\x12\x0e\n\x06minute\x18\x03 \x01(\r\x12\x0e\n\x06second\x18\x04 \x01(\r\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:3\xe0@i\xe8@\x02\xf2@\x11USE_DATETIME_TIME\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xd4\x02\n\x19ListEntitiesEventResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12\x32\n\x0b\x65vent_types\x18\t \x03(\tB\x1d\xf2\xb5\x18\x19\x46ixedVector\x12!\n\tdevice_id\x18\n \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@k\xe8@\x01\xf2@\tUSE_EVENT\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\x83\x01\n\rEventResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x12\n\nevent_type\x18\x02 \x01(\t\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@l\xe8@\x01\xf2@\tUSE_EVENT\x8a\x41\x19StateResponseProtoMessage\"\xe9\x02\n\x19ListEntitiesValveResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12\x15\n\rassumed_state\x18\t \x01(\x08\x12\x19\n\x11supports_position\x18\n \x01(\x08\x12\x15\n\rsupports_stop\x18\x0b \x01(\x08\x12!\n\tdevice_id\x18\x0c \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:-\xe0@m\xe8@\x01\xf2@\tUSE_VALVE\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xb5\x01\n\x12ValveStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x10\n\x08position\x18\x02 \x01(\x02\x12*\n\x11\x63urrent_operation\x18\x03 \x01(\x0e\x32\x0f.ValveOperation\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:1\xe0@n\xe8@\x01\xf2@\tUSE_VALVE\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\xa8\x01\n\x13ValveCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x14\n\x0chas_position\x18\x02 \x01(\x08\x12\x10\n\x08position\x18\x03 \x01(\x02\x12\x0c\n\x04stop\x18\x04 \x01(\x08\x12!\n\tdevice_id\x18\x05 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:+\xe0@o\xe8@\x02\xf2@\tUSE_VALVE\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\x99\x02\n\x1cListEntitiesDateTimeResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12!\n\tdevice_id\x18\x08 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:9\xe0@p\xe8@\x01\xf2@\x15USE_DATETIME_DATETIME\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xb4\x01\n\x15\x44\x61teTimeStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\rmissing_state\x18\x02 \x01(\x08\x12\x15\n\repoch_seconds\x18\x03 \x01(\x07\x12!\n\tdevice_id\x18\x04 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:=\xe0@q\xe8@\x01\xf2@\x15USE_DATETIME_DATETIME\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x98\x01\n\x16\x44\x61teTimeCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\repoch_seconds\x18\x02 \x01(\x07\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:7\xe0@r\xe8@\x02\xf2@\x15USE_DATETIME_DATETIME\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"\xa2\x02\n\x1aListEntitiesUpdateResponse\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\x07\x12\x0c\n\x04name\x18\x03 \x01(\t\x12 \n\x04icon\x18\x05 \x01(\tB\x12\x92\x41\x0fUSE_ENTITY_ICON\x12\x1b\n\x13\x64isabled_by_default\x18\x06 \x01(\x08\x12(\n\x0f\x65ntity_category\x18\x07 \x01(\x0e\x32\x0f.EntityCategory\x12\x14\n\x0c\x64\x65vice_class\x18\x08 \x01(\t\x12!\n\tdevice_id\x18\t \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:.\xe0@t\xe8@\x01\xf2@\nUSE_UPDATE\x8a\x41\x18InfoResponseProtoMessageJ\x04\x08\x04\x10\x05\"\xbb\x02\n\x13UpdateStateResponse\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x15\n\rmissing_state\x18\x02 \x01(\x08\x12\x13\n\x0bin_progress\x18\x03 \x01(\x08\x12\x14\n\x0chas_progress\x18\x04 \x01(\x08\x12\x10\n\x08progress\x18\x05 \x01(\x02\x12\x17\n\x0f\x63urrent_version\x18\x06 \x01(\t\x12\x16\n\x0elatest_version\x18\x07 \x01(\t\x12\r\n\x05title\x18\x08 \x01(\t\x12\x17\n\x0frelease_summary\x18\t \x01(\t\x12\x13\n\x0brelease_url\x18\n \x01(\t\x12!\n\tdevice_id\x18\x0b \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:2\xe0@u\xe8@\x01\xf2@\nUSE_UPDATE\x80\x41\x01\x8a\x41\x19StateResponseProtoMessage\"\x95\x01\n\x14UpdateCommandRequest\x12\x0b\n\x03key\x18\x01 \x01(\x07\x12\x1f\n\x07\x63ommand\x18\x02 \x01(\x0e\x32\x0e.UpdateCommand\x12!\n\tdevice_id\x18\x03 \x01(\rB\x0e\x92\x41\x0bUSE_DEVICES:,\xe0@v\xe8@\x02\xf2@\nUSE_UPDATE\x80\x41\x01\x8a\x41\x13\x43ommandProtoMessage\"C\n\x0fZWaveProxyFrame\x12\x12\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x42\x04\xe0\xb5\x18\x01:\x1c\xe0@\x80\x01\xe8@\x00\xf2@\x0fUSE_ZWAVE_PROXY\x80\x41\x01\"h\n\x11ZWaveProxyRequest\x12$\n\x04type\x18\x01 \x01(\x0e\x32\x16.ZWaveProxyRequestType\x12\x12\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x42\x04\xe0\xb5\x18\x01:\x19\xe0@\x81\x01\xe8@\x00\xf2@\x0fUSE_ZWAVE_PROXY*f\n\x0e\x45ntityCategory\x12\x18\n\x14\x45NTITY_CATEGORY_NONE\x10\x00\x12\x1a\n\x16\x45NTITY_CATEGORY_CONFIG\x10\x01\x12\x1e\n\x1a\x45NTITY_CATEGORY_DIAGNOSTIC\x10\x02*R\n\x10LegacyCoverState\x12\x1b\n\x17LEGACY_COVER_STATE_OPEN\x10\x00\x12\x1d\n\x19LEGACY_COVER_STATE_CLOSED\x10\x01\x1a\x02\x18\x01*j\n\x0e\x43overOperation\x12\x18\n\x14\x43OVER_OPERATION_IDLE\x10\x00\x12\x1e\n\x1a\x43OVER_OPERATION_IS_OPENING\x10\x01\x12\x1e\n\x1a\x43OVER_OPERATION_IS_CLOSING\x10\x02*v\n\x12LegacyCoverCommand\x12\x1d\n\x19LEGACY_COVER_COMMAND_OPEN\x10\x00\x12\x1e\n\x1aLEGACY_COVER_COMMAND_CLOSE\x10\x01\x12\x1d\n\x19LEGACY_COVER_COMMAND_STOP\x10\x02\x1a\x02\x18\x01*K\n\x08\x46\x61nSpeed\x12\x11\n\rFAN_SPEED_LOW\x10\x00\x12\x14\n\x10\x46\x41N_SPEED_MEDIUM\x10\x01\x12\x12\n\x0e\x46\x41N_SPEED_HIGH\x10\x02\x1a\x02\x18\x01*D\n\x0c\x46\x61nDirection\x12\x19\n\x15\x46\x41N_DIRECTION_FORWARD\x10\x00\x12\x19\n\x15\x46\x41N_DIRECTION_REVERSE\x10\x01*\xc7\x02\n\tColorMode\x12\x16\n\x12\x43OLOR_MODE_UNKNOWN\x10\x00\x12\x15\n\x11\x43OLOR_MODE_ON_OFF\x10\x01\x12 \n\x1c\x43OLOR_MODE_LEGACY_BRIGHTNESS\x10\x02\x12\x19\n\x15\x43OLOR_MODE_BRIGHTNESS\x10\x03\x12\x14\n\x10\x43OLOR_MODE_WHITE\x10\x07\x12 \n\x1c\x43OLOR_MODE_COLOR_TEMPERATURE\x10\x0b\x12\x1e\n\x1a\x43OLOR_MODE_COLD_WARM_WHITE\x10\x13\x12\x12\n\x0e\x43OLOR_MODE_RGB\x10#\x12\x18\n\x14\x43OLOR_MODE_RGB_WHITE\x10\'\x12$\n COLOR_MODE_RGB_COLOR_TEMPERATURE\x10/\x12\"\n\x1e\x43OLOR_MODE_RGB_COLD_WARM_WHITE\x10\x33*\xa1\x01\n\x10SensorStateClass\x12\x14\n\x10STATE_CLASS_NONE\x10\x00\x12\x1b\n\x17STATE_CLASS_MEASUREMENT\x10\x01\x12 \n\x1cSTATE_CLASS_TOTAL_INCREASING\x10\x02\x12\x15\n\x11STATE_CLASS_TOTAL\x10\x03\x12!\n\x1dSTATE_CLASS_MEASUREMENT_ANGLE\x10\x04*Y\n\x13SensorLastResetType\x12\x13\n\x0fLAST_RESET_NONE\x10\x00\x12\x14\n\x10LAST_RESET_NEVER\x10\x01\x12\x13\n\x0fLAST_RESET_AUTO\x10\x02\x1a\x02\x18\x01*\xb9\x01\n\x08LogLevel\x12\x12\n\x0eLOG_LEVEL_NONE\x10\x00\x12\x13\n\x0fLOG_LEVEL_ERROR\x10\x01\x12\x12\n\x0eLOG_LEVEL_WARN\x10\x02\x12\x12\n\x0eLOG_LEVEL_INFO\x10\x03\x12\x14\n\x10LOG_LEVEL_CONFIG\x10\x04\x12\x13\n\x0fLOG_LEVEL_DEBUG\x10\x05\x12\x15\n\x11LOG_LEVEL_VERBOSE\x10\x06\x12\x1a\n\x16LOG_LEVEL_VERY_VERBOSE\x10\x07*\x84\x02\n\x0eServiceArgType\x12\x19\n\x15SERVICE_ARG_TYPE_BOOL\x10\x00\x12\x18\n\x14SERVICE_ARG_TYPE_INT\x10\x01\x12\x1a\n\x16SERVICE_ARG_TYPE_FLOAT\x10\x02\x12\x1b\n\x17SERVICE_ARG_TYPE_STRING\x10\x03\x12\x1f\n\x1bSERVICE_ARG_TYPE_BOOL_ARRAY\x10\x04\x12\x1e\n\x1aSERVICE_ARG_TYPE_INT_ARRAY\x10\x05\x12 \n\x1cSERVICE_ARG_TYPE_FLOAT_ARRAY\x10\x06\x12!\n\x1dSERVICE_ARG_TYPE_STRING_ARRAY\x10\x07*\x8c\x01\n\x14SupportsResponseType\x12\x1a\n\x16SUPPORTS_RESPONSE_NONE\x10\x00\x12\x1e\n\x1aSUPPORTS_RESPONSE_OPTIONAL\x10\x01\x12\x1a\n\x16SUPPORTS_RESPONSE_ONLY\x10\x02\x12\x1c\n\x18SUPPORTS_RESPONSE_STATUS\x10\x64*\xb5\x01\n\x0b\x43limateMode\x12\x14\n\x10\x43LIMATE_MODE_OFF\x10\x00\x12\x1a\n\x16\x43LIMATE_MODE_HEAT_COOL\x10\x01\x12\x15\n\x11\x43LIMATE_MODE_COOL\x10\x02\x12\x15\n\x11\x43LIMATE_MODE_HEAT\x10\x03\x12\x19\n\x15\x43LIMATE_MODE_FAN_ONLY\x10\x04\x12\x14\n\x10\x43LIMATE_MODE_DRY\x10\x05\x12\x15\n\x11\x43LIMATE_MODE_AUTO\x10\x06*\xf1\x01\n\x0e\x43limateFanMode\x12\x12\n\x0e\x43LIMATE_FAN_ON\x10\x00\x12\x13\n\x0f\x43LIMATE_FAN_OFF\x10\x01\x12\x14\n\x10\x43LIMATE_FAN_AUTO\x10\x02\x12\x13\n\x0f\x43LIMATE_FAN_LOW\x10\x03\x12\x16\n\x12\x43LIMATE_FAN_MEDIUM\x10\x04\x12\x14\n\x10\x43LIMATE_FAN_HIGH\x10\x05\x12\x16\n\x12\x43LIMATE_FAN_MIDDLE\x10\x06\x12\x15\n\x11\x43LIMATE_FAN_FOCUS\x10\x07\x12\x17\n\x13\x43LIMATE_FAN_DIFFUSE\x10\x08\x12\x15\n\x11\x43LIMATE_FAN_QUIET\x10\t*{\n\x10\x43limateSwingMode\x12\x15\n\x11\x43LIMATE_SWING_OFF\x10\x00\x12\x16\n\x12\x43LIMATE_SWING_BOTH\x10\x01\x12\x1a\n\x16\x43LIMATE_SWING_VERTICAL\x10\x02\x12\x1c\n\x18\x43LIMATE_SWING_HORIZONTAL\x10\x03*\xab\x01\n\rClimateAction\x12\x16\n\x12\x43LIMATE_ACTION_OFF\x10\x00\x12\x1a\n\x16\x43LIMATE_ACTION_COOLING\x10\x02\x12\x1a\n\x16\x43LIMATE_ACTION_HEATING\x10\x03\x12\x17\n\x13\x43LIMATE_ACTION_IDLE\x10\x04\x12\x19\n\x15\x43LIMATE_ACTION_DRYING\x10\x05\x12\x16\n\x12\x43LIMATE_ACTION_FAN\x10\x06*\xdf\x01\n\rClimatePreset\x12\x17\n\x13\x43LIMATE_PRESET_NONE\x10\x00\x12\x17\n\x13\x43LIMATE_PRESET_HOME\x10\x01\x12\x17\n\x13\x43LIMATE_PRESET_AWAY\x10\x02\x12\x18\n\x14\x43LIMATE_PRESET_BOOST\x10\x03\x12\x1a\n\x16\x43LIMATE_PRESET_COMFORT\x10\x04\x12\x16\n\x12\x43LIMATE_PRESET_ECO\x10\x05\x12\x18\n\x14\x43LIMATE_PRESET_SLEEP\x10\x06\x12\x1b\n\x17\x43LIMATE_PRESET_ACTIVITY\x10\x07*O\n\nNumberMode\x12\x14\n\x10NUMBER_MODE_AUTO\x10\x00\x12\x13\n\x0fNUMBER_MODE_BOX\x10\x01\x12\x16\n\x12NUMBER_MODE_SLIDER\x10\x02*\x99\x01\n\tLockState\x12\x13\n\x0fLOCK_STATE_NONE\x10\x00\x12\x15\n\x11LOCK_STATE_LOCKED\x10\x01\x12\x17\n\x13LOCK_STATE_UNLOCKED\x10\x02\x12\x15\n\x11LOCK_STATE_JAMMED\x10\x03\x12\x16\n\x12LOCK_STATE_LOCKING\x10\x04\x12\x18\n\x14LOCK_STATE_UNLOCKING\x10\x05*<\n\x0bLockCommand\x12\x0f\n\x0bLOCK_UNLOCK\x10\x00\x12\r\n\tLOCK_LOCK\x10\x01\x12\r\n\tLOCK_OPEN\x10\x02*\xe5\x01\n\x10MediaPlayerState\x12\x1b\n\x17MEDIA_PLAYER_STATE_NONE\x10\x00\x12\x1b\n\x17MEDIA_PLAYER_STATE_IDLE\x10\x01\x12\x1e\n\x1aMEDIA_PLAYER_STATE_PLAYING\x10\x02\x12\x1d\n\x19MEDIA_PLAYER_STATE_PAUSED\x10\x03\x12!\n\x1dMEDIA_PLAYER_STATE_ANNOUNCING\x10\x04\x12\x1a\n\x16MEDIA_PLAYER_STATE_OFF\x10\x05\x12\x19\n\x15MEDIA_PLAYER_STATE_ON\x10\x06*\xf7\x03\n\x12MediaPlayerCommand\x12\x1d\n\x19MEDIA_PLAYER_COMMAND_PLAY\x10\x00\x12\x1e\n\x1aMEDIA_PLAYER_COMMAND_PAUSE\x10\x01\x12\x1d\n\x19MEDIA_PLAYER_COMMAND_STOP\x10\x02\x12\x1d\n\x19MEDIA_PLAYER_COMMAND_MUTE\x10\x03\x12\x1f\n\x1bMEDIA_PLAYER_COMMAND_UNMUTE\x10\x04\x12\x1f\n\x1bMEDIA_PLAYER_COMMAND_TOGGLE\x10\x05\x12\"\n\x1eMEDIA_PLAYER_COMMAND_VOLUME_UP\x10\x06\x12$\n MEDIA_PLAYER_COMMAND_VOLUME_DOWN\x10\x07\x12 \n\x1cMEDIA_PLAYER_COMMAND_ENQUEUE\x10\x08\x12#\n\x1fMEDIA_PLAYER_COMMAND_REPEAT_ONE\x10\t\x12#\n\x1fMEDIA_PLAYER_COMMAND_REPEAT_OFF\x10\n\x12\'\n#MEDIA_PLAYER_COMMAND_CLEAR_PLAYLIST\x10\x0b\x12 \n\x1cMEDIA_PLAYER_COMMAND_TURN_ON\x10\x0c\x12!\n\x1dMEDIA_PLAYER_COMMAND_TURN_OFF\x10\r*q\n\x18MediaPlayerFormatPurpose\x12\'\n#MEDIA_PLAYER_FORMAT_PURPOSE_DEFAULT\x10\x00\x12,\n(MEDIA_PLAYER_FORMAT_PURPOSE_ANNOUNCEMENT\x10\x01*\xef\x02\n\x1a\x42luetoothDeviceRequestType\x12-\n%BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT\x10\x00\x1a\x02\x08\x01\x12,\n(BLUETOOTH_DEVICE_REQUEST_TYPE_DISCONNECT\x10\x01\x12&\n\"BLUETOOTH_DEVICE_REQUEST_TYPE_PAIR\x10\x02\x12(\n$BLUETOOTH_DEVICE_REQUEST_TYPE_UNPAIR\x10\x03\x12\x37\n3BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT_V3_WITH_CACHE\x10\x04\x12:\n6BLUETOOTH_DEVICE_REQUEST_TYPE_CONNECT_V3_WITHOUT_CACHE\x10\x05\x12-\n)BLUETOOTH_DEVICE_REQUEST_TYPE_CLEAR_CACHE\x10\x06*\xf3\x01\n\x15\x42luetoothScannerState\x12 \n\x1c\x42LUETOOTH_SCANNER_STATE_IDLE\x10\x00\x12$\n BLUETOOTH_SCANNER_STATE_STARTING\x10\x01\x12#\n\x1f\x42LUETOOTH_SCANNER_STATE_RUNNING\x10\x02\x12\"\n\x1e\x42LUETOOTH_SCANNER_STATE_FAILED\x10\x03\x12$\n BLUETOOTH_SCANNER_STATE_STOPPING\x10\x04\x12#\n\x1f\x42LUETOOTH_SCANNER_STATE_STOPPED\x10\x05*]\n\x14\x42luetoothScannerMode\x12\"\n\x1e\x42LUETOOTH_SCANNER_MODE_PASSIVE\x10\x00\x12!\n\x1d\x42LUETOOTH_SCANNER_MODE_ACTIVE\x10\x01*j\n\x1bVoiceAssistantSubscribeFlag\x12\"\n\x1eVOICE_ASSISTANT_SUBSCRIBE_NONE\x10\x00\x12\'\n#VOICE_ASSISTANT_SUBSCRIBE_API_AUDIO\x10\x01*\x8d\x01\n\x19VoiceAssistantRequestFlag\x12 \n\x1cVOICE_ASSISTANT_REQUEST_NONE\x10\x00\x12#\n\x1fVOICE_ASSISTANT_REQUEST_USE_VAD\x10\x01\x12)\n%VOICE_ASSISTANT_REQUEST_USE_WAKE_WORD\x10\x02*\xa1\x04\n\x13VoiceAssistantEvent\x12\x19\n\x15VOICE_ASSISTANT_ERROR\x10\x00\x12\x1d\n\x19VOICE_ASSISTANT_RUN_START\x10\x01\x12\x1b\n\x17VOICE_ASSISTANT_RUN_END\x10\x02\x12\x1d\n\x19VOICE_ASSISTANT_STT_START\x10\x03\x12\x1b\n\x17VOICE_ASSISTANT_STT_END\x10\x04\x12 \n\x1cVOICE_ASSISTANT_INTENT_START\x10\x05\x12\x1e\n\x1aVOICE_ASSISTANT_INTENT_END\x10\x06\x12\x1d\n\x19VOICE_ASSISTANT_TTS_START\x10\x07\x12\x1b\n\x17VOICE_ASSISTANT_TTS_END\x10\x08\x12#\n\x1fVOICE_ASSISTANT_WAKE_WORD_START\x10\t\x12!\n\x1dVOICE_ASSISTANT_WAKE_WORD_END\x10\n\x12!\n\x1dVOICE_ASSISTANT_STT_VAD_START\x10\x0b\x12\x1f\n\x1bVOICE_ASSISTANT_STT_VAD_END\x10\x0c\x12$\n VOICE_ASSISTANT_TTS_STREAM_START\x10\x62\x12\"\n\x1eVOICE_ASSISTANT_TTS_STREAM_END\x10\x63\x12#\n\x1fVOICE_ASSISTANT_INTENT_PROGRESS\x10\x64*\xa9\x01\n\x18VoiceAssistantTimerEvent\x12!\n\x1dVOICE_ASSISTANT_TIMER_STARTED\x10\x00\x12!\n\x1dVOICE_ASSISTANT_TIMER_UPDATED\x10\x01\x12#\n\x1fVOICE_ASSISTANT_TIMER_CANCELLED\x10\x02\x12\"\n\x1eVOICE_ASSISTANT_TIMER_FINISHED\x10\x03*\xb3\x02\n\x16\x41larmControlPanelState\x12\x18\n\x14\x41LARM_STATE_DISARMED\x10\x00\x12\x1a\n\x16\x41LARM_STATE_ARMED_HOME\x10\x01\x12\x1a\n\x16\x41LARM_STATE_ARMED_AWAY\x10\x02\x12\x1b\n\x17\x41LARM_STATE_ARMED_NIGHT\x10\x03\x12\x1e\n\x1a\x41LARM_STATE_ARMED_VACATION\x10\x04\x12#\n\x1f\x41LARM_STATE_ARMED_CUSTOM_BYPASS\x10\x05\x12\x17\n\x13\x41LARM_STATE_PENDING\x10\x06\x12\x16\n\x12\x41LARM_STATE_ARMING\x10\x07\x12\x19\n\x15\x41LARM_STATE_DISARMING\x10\x08\x12\x19\n\x15\x41LARM_STATE_TRIGGERED\x10\t*\x98\x02\n\x1d\x41larmControlPanelStateCommand\x12\x1e\n\x1a\x41LARM_CONTROL_PANEL_DISARM\x10\x00\x12 \n\x1c\x41LARM_CONTROL_PANEL_ARM_AWAY\x10\x01\x12 \n\x1c\x41LARM_CONTROL_PANEL_ARM_HOME\x10\x02\x12!\n\x1d\x41LARM_CONTROL_PANEL_ARM_NIGHT\x10\x03\x12$\n ALARM_CONTROL_PANEL_ARM_VACATION\x10\x04\x12)\n%ALARM_CONTROL_PANEL_ARM_CUSTOM_BYPASS\x10\x05\x12\x1f\n\x1b\x41LARM_CONTROL_PANEL_TRIGGER\x10\x06*6\n\x08TextMode\x12\x12\n\x0eTEXT_MODE_TEXT\x10\x00\x12\x16\n\x12TEXT_MODE_PASSWORD\x10\x01*j\n\x0eValveOperation\x12\x18\n\x14VALVE_OPERATION_IDLE\x10\x00\x12\x1e\n\x1aVALVE_OPERATION_IS_OPENING\x10\x01\x12\x1e\n\x1aVALVE_OPERATION_IS_CLOSING\x10\x02*]\n\rUpdateCommand\x12\x17\n\x13UPDATE_COMMAND_NONE\x10\x00\x12\x19\n\x15UPDATE_COMMAND_UPDATE\x10\x01\x12\x18\n\x14UPDATE_COMMAND_CHECK\x10\x02*\x96\x01\n\x15ZWaveProxyRequestType\x12&\n\"ZWAVE_PROXY_REQUEST_TYPE_SUBSCRIBE\x10\x00\x12(\n$ZWAVE_PROXY_REQUEST_TYPE_UNSUBSCRIBE\x10\x01\x12+\n\'ZWAVE_PROXY_REQUEST_TYPE_HOME_ID_CHANGE\x10\x02\x32\x8b\x17\n\rAPIConnection\x12.\n\x05hello\x12\r.HelloRequest\x1a\x0e.HelloResponse\"\x06\xf0@\x00\xf8@\x00\x12G\n\x0c\x61uthenticate\x12\x16.AuthenticationRequest\x1a\x17.AuthenticationResponse\"\x06\xf0@\x00\xf8@\x00\x12=\n\ndisconnect\x12\x12.DisconnectRequest\x1a\x13.DisconnectResponse\"\x06\xf0@\x00\xf8@\x00\x12+\n\x04ping\x12\x0c.PingRequest\x1a\r.PingResponse\"\x06\xf0@\x00\xf8@\x00\x12;\n\x0b\x64\x65vice_info\x12\x12.DeviceInfoRequest\x1a\x13.DeviceInfoResponse\"\x03\xf8@\x00\x12.\n\rlist_entities\x12\x14.ListEntitiesRequest\x1a\x05.void\"\x00\x12\x34\n\x10subscribe_states\x12\x17.SubscribeStatesRequest\x1a\x05.void\"\x00\x12\x30\n\x0esubscribe_logs\x12\x15.SubscribeLogsRequest\x1a\x05.void\"\x00\x12S\n subscribe_homeassistant_services\x12&.SubscribeHomeassistantServicesRequest\x1a\x05.void\"\x00\x12P\n\x1fsubscribe_home_assistant_states\x12$.SubscribeHomeAssistantStatesRequest\x1a\x05.void\"\x00\x12\x32\n\x0f\x65xecute_service\x12\x16.ExecuteServiceRequest\x1a\x05.void\"\x00\x12[\n\x18noise_encryption_set_key\x12\x1d.NoiseEncryptionSetKeyRequest\x1a\x1e.NoiseEncryptionSetKeyResponse\"\x00\x12\x30\n\x0e\x62utton_command\x12\x15.ButtonCommandRequest\x1a\x05.void\"\x00\x12,\n\x0c\x63\x61mera_image\x12\x13.CameraImageRequest\x1a\x05.void\"\x00\x12\x32\n\x0f\x63limate_command\x12\x16.ClimateCommandRequest\x1a\x05.void\"\x00\x12.\n\rcover_command\x12\x14.CoverCommandRequest\x1a\x05.void\"\x00\x12,\n\x0c\x64\x61te_command\x12\x13.DateCommandRequest\x1a\x05.void\"\x00\x12\x34\n\x10\x64\x61tetime_command\x12\x17.DateTimeCommandRequest\x1a\x05.void\"\x00\x12*\n\x0b\x66\x61n_command\x12\x12.FanCommandRequest\x1a\x05.void\"\x00\x12.\n\rlight_command\x12\x14.LightCommandRequest\x1a\x05.void\"\x00\x12,\n\x0clock_command\x12\x13.LockCommandRequest\x1a\x05.void\"\x00\x12;\n\x14media_player_command\x12\x1a.MediaPlayerCommandRequest\x1a\x05.void\"\x00\x12\x30\n\x0enumber_command\x12\x15.NumberCommandRequest\x1a\x05.void\"\x00\x12\x30\n\x0eselect_command\x12\x15.SelectCommandRequest\x1a\x05.void\"\x00\x12.\n\rsiren_command\x12\x14.SirenCommandRequest\x1a\x05.void\"\x00\x12\x30\n\x0eswitch_command\x12\x15.SwitchCommandRequest\x1a\x05.void\"\x00\x12,\n\x0ctext_command\x12\x13.TextCommandRequest\x1a\x05.void\"\x00\x12,\n\x0ctime_command\x12\x13.TimeCommandRequest\x1a\x05.void\"\x00\x12\x30\n\x0eupdate_command\x12\x15.UpdateCommandRequest\x1a\x05.void\"\x00\x12.\n\rvalve_command\x12\x14.ValveCommandRequest\x1a\x05.void\"\x00\x12\\\n%subscribe_bluetooth_le_advertisements\x12*.SubscribeBluetoothLEAdvertisementsRequest\x1a\x05.void\"\x00\x12<\n\x18\x62luetooth_device_request\x12\x17.BluetoothDeviceRequest\x1a\x05.void\"\x00\x12H\n\x1b\x62luetooth_gatt_get_services\x12 .BluetoothGATTGetServicesRequest\x1a\x05.void\"\x00\x12\x39\n\x13\x62luetooth_gatt_read\x12\x19.BluetoothGATTReadRequest\x1a\x05.void\"\x00\x12;\n\x14\x62luetooth_gatt_write\x12\x1a.BluetoothGATTWriteRequest\x1a\x05.void\"\x00\x12N\n\x1e\x62luetooth_gatt_read_descriptor\x12#.BluetoothGATTReadDescriptorRequest\x1a\x05.void\"\x00\x12P\n\x1f\x62luetooth_gatt_write_descriptor\x12$.BluetoothGATTWriteDescriptorRequest\x1a\x05.void\"\x00\x12=\n\x15\x62luetooth_gatt_notify\x12\x1b.BluetoothGATTNotifyRequest\x1a\x05.void\"\x00\x12v\n$subscribe_bluetooth_connections_free\x12).SubscribeBluetoothConnectionsFreeRequest\x1a!.BluetoothConnectionsFreeResponse\"\x00\x12`\n\'unsubscribe_bluetooth_le_advertisements\x12,.UnsubscribeBluetoothLEAdvertisementsRequest\x1a\x05.void\"\x00\x12\x46\n\x1a\x62luetooth_scanner_set_mode\x12\x1f.BluetoothScannerSetModeRequest\x1a\x05.void\"\x00\x12\x45\n\x19subscribe_voice_assistant\x12\x1f.SubscribeVoiceAssistantRequest\x1a\x05.void\"\x00\x12p\n!voice_assistant_get_configuration\x12#.VoiceAssistantConfigurationRequest\x1a$.VoiceAssistantConfigurationResponse\"\x00\x12M\n!voice_assistant_set_configuration\x12\x1f.VoiceAssistantSetConfiguration\x1a\x05.void\"\x00\x12H\n\x1b\x61larm_control_panel_command\x12 .AlarmControlPanelCommandRequest\x1a\x05.void\"\x00\x12.\n\x11zwave_proxy_frame\x12\x10.ZWaveProxyFrame\x1a\x05.void\"\x00\x12\x32\n\x13zwave_proxy_request\x12\x12.ZWaveProxyRequest\x1a\x05.void\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -281,8 +281,16 @@ _globals['_EXECUTESERVICEARGUMENT']._serialized_options = b'\362@\034USE_API_USER_DEFINED_ACTIONS' _globals['_EXECUTESERVICEREQUEST'].fields_by_name['args']._loaded_options = None _globals['_EXECUTESERVICEREQUEST'].fields_by_name['args']._serialized_options = b'\350\265\030\001' + _globals['_EXECUTESERVICEREQUEST'].fields_by_name['call_id']._loaded_options = None + _globals['_EXECUTESERVICEREQUEST'].fields_by_name['call_id']._serialized_options = b'\222A%USE_API_USER_DEFINED_ACTION_RESPONSES' + _globals['_EXECUTESERVICEREQUEST'].fields_by_name['return_response']._loaded_options = None + _globals['_EXECUTESERVICEREQUEST'].fields_by_name['return_response']._serialized_options = b'\222A%USE_API_USER_DEFINED_ACTION_RESPONSES' _globals['_EXECUTESERVICEREQUEST']._loaded_options = None _globals['_EXECUTESERVICEREQUEST']._serialized_options = b'\340@*\350@\002\362@\034USE_API_USER_DEFINED_ACTIONS\200A\001' + _globals['_EXECUTESERVICERESPONSE'].fields_by_name['response_data']._loaded_options = None + _globals['_EXECUTESERVICERESPONSE'].fields_by_name['response_data']._serialized_options = b'\222A*USE_API_USER_DEFINED_ACTION_RESPONSES_JSON\340\265\030\001' + _globals['_EXECUTESERVICERESPONSE']._loaded_options = None + _globals['_EXECUTESERVICERESPONSE']._serialized_options = b'\340@\203\001\350@\001\362@%USE_API_USER_DEFINED_ACTION_RESPONSES\200A\001' _globals['_LISTENTITIESCAMERARESPONSE'].fields_by_name['icon']._loaded_options = None _globals['_LISTENTITIESCAMERARESPONSE'].fields_by_name['icon']._serialized_options = b'\222A\017USE_ENTITY_ICON' _globals['_LISTENTITIESCAMERARESPONSE'].fields_by_name['device_id']._loaded_options = None @@ -641,76 +649,78 @@ _globals['_APICONNECTION'].methods_by_name['ping']._serialized_options = b'\360@\000\370@\000' _globals['_APICONNECTION'].methods_by_name['device_info']._loaded_options = None _globals['_APICONNECTION'].methods_by_name['device_info']._serialized_options = b'\370@\000' - _globals['_ENTITYCATEGORY']._serialized_start=28108 - _globals['_ENTITYCATEGORY']._serialized_end=28210 - _globals['_LEGACYCOVERSTATE']._serialized_start=28212 - _globals['_LEGACYCOVERSTATE']._serialized_end=28294 - _globals['_COVEROPERATION']._serialized_start=28296 - _globals['_COVEROPERATION']._serialized_end=28402 - _globals['_LEGACYCOVERCOMMAND']._serialized_start=28404 - _globals['_LEGACYCOVERCOMMAND']._serialized_end=28522 - _globals['_FANSPEED']._serialized_start=28524 - _globals['_FANSPEED']._serialized_end=28599 - _globals['_FANDIRECTION']._serialized_start=28601 - _globals['_FANDIRECTION']._serialized_end=28669 - _globals['_COLORMODE']._serialized_start=28672 - _globals['_COLORMODE']._serialized_end=28999 - _globals['_SENSORSTATECLASS']._serialized_start=29002 - _globals['_SENSORSTATECLASS']._serialized_end=29163 - _globals['_SENSORLASTRESETTYPE']._serialized_start=29165 - _globals['_SENSORLASTRESETTYPE']._serialized_end=29254 - _globals['_LOGLEVEL']._serialized_start=29257 - _globals['_LOGLEVEL']._serialized_end=29442 - _globals['_SERVICEARGTYPE']._serialized_start=29445 - _globals['_SERVICEARGTYPE']._serialized_end=29705 - _globals['_CLIMATEMODE']._serialized_start=29708 - _globals['_CLIMATEMODE']._serialized_end=29889 - _globals['_CLIMATEFANMODE']._serialized_start=29892 - _globals['_CLIMATEFANMODE']._serialized_end=30133 - _globals['_CLIMATESWINGMODE']._serialized_start=30135 - _globals['_CLIMATESWINGMODE']._serialized_end=30258 - _globals['_CLIMATEACTION']._serialized_start=30261 - _globals['_CLIMATEACTION']._serialized_end=30432 - _globals['_CLIMATEPRESET']._serialized_start=30435 - _globals['_CLIMATEPRESET']._serialized_end=30658 - _globals['_NUMBERMODE']._serialized_start=30660 - _globals['_NUMBERMODE']._serialized_end=30739 - _globals['_LOCKSTATE']._serialized_start=30742 - _globals['_LOCKSTATE']._serialized_end=30895 - _globals['_LOCKCOMMAND']._serialized_start=30897 - _globals['_LOCKCOMMAND']._serialized_end=30957 - _globals['_MEDIAPLAYERSTATE']._serialized_start=30960 - _globals['_MEDIAPLAYERSTATE']._serialized_end=31189 - _globals['_MEDIAPLAYERCOMMAND']._serialized_start=31192 - _globals['_MEDIAPLAYERCOMMAND']._serialized_end=31695 - _globals['_MEDIAPLAYERFORMATPURPOSE']._serialized_start=31697 - _globals['_MEDIAPLAYERFORMATPURPOSE']._serialized_end=31810 - _globals['_BLUETOOTHDEVICEREQUESTTYPE']._serialized_start=31813 - _globals['_BLUETOOTHDEVICEREQUESTTYPE']._serialized_end=32180 - _globals['_BLUETOOTHSCANNERSTATE']._serialized_start=32183 - _globals['_BLUETOOTHSCANNERSTATE']._serialized_end=32426 - _globals['_BLUETOOTHSCANNERMODE']._serialized_start=32428 - _globals['_BLUETOOTHSCANNERMODE']._serialized_end=32521 - _globals['_VOICEASSISTANTSUBSCRIBEFLAG']._serialized_start=32523 - _globals['_VOICEASSISTANTSUBSCRIBEFLAG']._serialized_end=32629 - _globals['_VOICEASSISTANTREQUESTFLAG']._serialized_start=32632 - _globals['_VOICEASSISTANTREQUESTFLAG']._serialized_end=32773 - _globals['_VOICEASSISTANTEVENT']._serialized_start=32776 - _globals['_VOICEASSISTANTEVENT']._serialized_end=33321 - _globals['_VOICEASSISTANTTIMEREVENT']._serialized_start=33324 - _globals['_VOICEASSISTANTTIMEREVENT']._serialized_end=33493 - _globals['_ALARMCONTROLPANELSTATE']._serialized_start=33496 - _globals['_ALARMCONTROLPANELSTATE']._serialized_end=33803 - _globals['_ALARMCONTROLPANELSTATECOMMAND']._serialized_start=33806 - _globals['_ALARMCONTROLPANELSTATECOMMAND']._serialized_end=34086 - _globals['_TEXTMODE']._serialized_start=34088 - _globals['_TEXTMODE']._serialized_end=34142 - _globals['_VALVEOPERATION']._serialized_start=34144 - _globals['_VALVEOPERATION']._serialized_end=34250 - _globals['_UPDATECOMMAND']._serialized_start=34252 - _globals['_UPDATECOMMAND']._serialized_end=34345 - _globals['_ZWAVEPROXYREQUESTTYPE']._serialized_start=34348 - _globals['_ZWAVEPROXYREQUESTTYPE']._serialized_end=34498 + _globals['_ENTITYCATEGORY']._serialized_start=28495 + _globals['_ENTITYCATEGORY']._serialized_end=28597 + _globals['_LEGACYCOVERSTATE']._serialized_start=28599 + _globals['_LEGACYCOVERSTATE']._serialized_end=28681 + _globals['_COVEROPERATION']._serialized_start=28683 + _globals['_COVEROPERATION']._serialized_end=28789 + _globals['_LEGACYCOVERCOMMAND']._serialized_start=28791 + _globals['_LEGACYCOVERCOMMAND']._serialized_end=28909 + _globals['_FANSPEED']._serialized_start=28911 + _globals['_FANSPEED']._serialized_end=28986 + _globals['_FANDIRECTION']._serialized_start=28988 + _globals['_FANDIRECTION']._serialized_end=29056 + _globals['_COLORMODE']._serialized_start=29059 + _globals['_COLORMODE']._serialized_end=29386 + _globals['_SENSORSTATECLASS']._serialized_start=29389 + _globals['_SENSORSTATECLASS']._serialized_end=29550 + _globals['_SENSORLASTRESETTYPE']._serialized_start=29552 + _globals['_SENSORLASTRESETTYPE']._serialized_end=29641 + _globals['_LOGLEVEL']._serialized_start=29644 + _globals['_LOGLEVEL']._serialized_end=29829 + _globals['_SERVICEARGTYPE']._serialized_start=29832 + _globals['_SERVICEARGTYPE']._serialized_end=30092 + _globals['_SUPPORTSRESPONSETYPE']._serialized_start=30095 + _globals['_SUPPORTSRESPONSETYPE']._serialized_end=30235 + _globals['_CLIMATEMODE']._serialized_start=30238 + _globals['_CLIMATEMODE']._serialized_end=30419 + _globals['_CLIMATEFANMODE']._serialized_start=30422 + _globals['_CLIMATEFANMODE']._serialized_end=30663 + _globals['_CLIMATESWINGMODE']._serialized_start=30665 + _globals['_CLIMATESWINGMODE']._serialized_end=30788 + _globals['_CLIMATEACTION']._serialized_start=30791 + _globals['_CLIMATEACTION']._serialized_end=30962 + _globals['_CLIMATEPRESET']._serialized_start=30965 + _globals['_CLIMATEPRESET']._serialized_end=31188 + _globals['_NUMBERMODE']._serialized_start=31190 + _globals['_NUMBERMODE']._serialized_end=31269 + _globals['_LOCKSTATE']._serialized_start=31272 + _globals['_LOCKSTATE']._serialized_end=31425 + _globals['_LOCKCOMMAND']._serialized_start=31427 + _globals['_LOCKCOMMAND']._serialized_end=31487 + _globals['_MEDIAPLAYERSTATE']._serialized_start=31490 + _globals['_MEDIAPLAYERSTATE']._serialized_end=31719 + _globals['_MEDIAPLAYERCOMMAND']._serialized_start=31722 + _globals['_MEDIAPLAYERCOMMAND']._serialized_end=32225 + _globals['_MEDIAPLAYERFORMATPURPOSE']._serialized_start=32227 + _globals['_MEDIAPLAYERFORMATPURPOSE']._serialized_end=32340 + _globals['_BLUETOOTHDEVICEREQUESTTYPE']._serialized_start=32343 + _globals['_BLUETOOTHDEVICEREQUESTTYPE']._serialized_end=32710 + _globals['_BLUETOOTHSCANNERSTATE']._serialized_start=32713 + _globals['_BLUETOOTHSCANNERSTATE']._serialized_end=32956 + _globals['_BLUETOOTHSCANNERMODE']._serialized_start=32958 + _globals['_BLUETOOTHSCANNERMODE']._serialized_end=33051 + _globals['_VOICEASSISTANTSUBSCRIBEFLAG']._serialized_start=33053 + _globals['_VOICEASSISTANTSUBSCRIBEFLAG']._serialized_end=33159 + _globals['_VOICEASSISTANTREQUESTFLAG']._serialized_start=33162 + _globals['_VOICEASSISTANTREQUESTFLAG']._serialized_end=33303 + _globals['_VOICEASSISTANTEVENT']._serialized_start=33306 + _globals['_VOICEASSISTANTEVENT']._serialized_end=33851 + _globals['_VOICEASSISTANTTIMEREVENT']._serialized_start=33854 + _globals['_VOICEASSISTANTTIMEREVENT']._serialized_end=34023 + _globals['_ALARMCONTROLPANELSTATE']._serialized_start=34026 + _globals['_ALARMCONTROLPANELSTATE']._serialized_end=34333 + _globals['_ALARMCONTROLPANELSTATECOMMAND']._serialized_start=34336 + _globals['_ALARMCONTROLPANELSTATECOMMAND']._serialized_end=34616 + _globals['_TEXTMODE']._serialized_start=34618 + _globals['_TEXTMODE']._serialized_end=34672 + _globals['_VALVEOPERATION']._serialized_start=34674 + _globals['_VALVEOPERATION']._serialized_end=34780 + _globals['_UPDATECOMMAND']._serialized_start=34782 + _globals['_UPDATECOMMAND']._serialized_end=34875 + _globals['_ZWAVEPROXYREQUESTTYPE']._serialized_start=34878 + _globals['_ZWAVEPROXYREQUESTTYPE']._serialized_end=35028 _globals['_HELLOREQUEST']._serialized_start=32 _globals['_HELLOREQUEST']._serialized_end=138 _globals['_HELLORESPONSE']._serialized_start=140 @@ -806,201 +816,203 @@ _globals['_LISTENTITIESSERVICESARGUMENT']._serialized_start=9266 _globals['_LISTENTITIESSERVICESARGUMENT']._serialized_end=9374 _globals['_LISTENTITIESSERVICESRESPONSE']._serialized_start=9377 - _globals['_LISTENTITIESSERVICESRESPONSE']._serialized_end=9524 - _globals['_EXECUTESERVICEARGUMENT']._serialized_start=9527 - _globals['_EXECUTESERVICEARGUMENT']._serialized_end=9778 - _globals['_EXECUTESERVICEREQUEST']._serialized_start=9780 - _globals['_EXECUTESERVICEREQUEST']._serialized_end=9903 - _globals['_LISTENTITIESCAMERARESPONSE']._serialized_start=9906 - _globals['_LISTENTITIESCAMERARESPONSE']._serialized_end=10174 - _globals['_CAMERAIMAGERESPONSE']._serialized_start=10177 - _globals['_CAMERAIMAGERESPONSE']._serialized_end=10323 - _globals['_CAMERAIMAGEREQUEST']._serialized_start=10325 - _globals['_CAMERAIMAGEREQUEST']._serialized_end=10401 - _globals['_LISTENTITIESCLIMATERESPONSE']._serialized_start=10404 - _globals['_LISTENTITIESCLIMATERESPONSE']._serialized_end=11553 - _globals['_CLIMATESTATERESPONSE']._serialized_start=11556 - _globals['_CLIMATESTATERESPONSE']._serialized_end=12098 - _globals['_CLIMATECOMMANDREQUEST']._serialized_start=12101 - _globals['_CLIMATECOMMANDREQUEST']._serialized_end=12861 - _globals['_LISTENTITIESNUMBERRESPONSE']._serialized_start=12864 - _globals['_LISTENTITIESNUMBERRESPONSE']._serialized_end=13262 - _globals['_NUMBERSTATERESPONSE']._serialized_start=13265 - _globals['_NUMBERSTATERESPONSE']._serialized_end=13424 - _globals['_NUMBERCOMMANDREQUEST']._serialized_start=13427 - _globals['_NUMBERCOMMANDREQUEST']._serialized_end=13558 - _globals['_LISTENTITIESSELECTRESPONSE']._serialized_start=13561 - _globals['_LISTENTITIESSELECTRESPONSE']._serialized_end=13877 - _globals['_SELECTSTATERESPONSE']._serialized_start=13880 - _globals['_SELECTSTATERESPONSE']._serialized_end=14039 - _globals['_SELECTCOMMANDREQUEST']._serialized_start=14042 - _globals['_SELECTCOMMANDREQUEST']._serialized_end=14173 - _globals['_LISTENTITIESSIRENRESPONSE']._serialized_start=14176 - _globals['_LISTENTITIESSIRENRESPONSE']._serialized_end=14509 - _globals['_SIRENSTATERESPONSE']._serialized_start=14512 - _globals['_SIRENSTATERESPONSE']._serialized_end=14646 - _globals['_SIRENCOMMANDREQUEST']._serialized_start=14649 - _globals['_SIRENCOMMANDREQUEST']._serialized_end=14905 - _globals['_LISTENTITIESLOCKRESPONSE']._serialized_start=14908 - _globals['_LISTENTITIESLOCKRESPONSE']._serialized_end=15262 - _globals['_LOCKSTATERESPONSE']._serialized_start=15265 - _globals['_LOCKSTATERESPONSE']._serialized_end=15409 - _globals['_LOCKCOMMANDREQUEST']._serialized_start=15412 - _globals['_LOCKCOMMANDREQUEST']._serialized_end=15587 - _globals['_LISTENTITIESBUTTONRESPONSE']._serialized_start=15590 - _globals['_LISTENTITIESBUTTONRESPONSE']._serialized_end=15880 - _globals['_BUTTONCOMMANDREQUEST']._serialized_start=15882 - _globals['_BUTTONCOMMANDREQUEST']._serialized_end=15998 - _globals['_MEDIAPLAYERSUPPORTEDFORMAT']._serialized_start=16001 - _globals['_MEDIAPLAYERSUPPORTEDFORMAT']._serialized_end=16175 - _globals['_LISTENTITIESMEDIAPLAYERRESPONSE']._serialized_start=16178 - _globals['_LISTENTITIESMEDIAPLAYERRESPONSE']._serialized_end=16560 - _globals['_MEDIAPLAYERSTATERESPONSE']._serialized_start=16563 - _globals['_MEDIAPLAYERSTATERESPONSE']._serialized_end=16760 - _globals['_MEDIAPLAYERCOMMANDREQUEST']._serialized_start=16763 - _globals['_MEDIAPLAYERCOMMANDREQUEST']._serialized_end=17075 - _globals['_SUBSCRIBEBLUETOOTHLEADVERTISEMENTSREQUEST']._serialized_start=17077 - _globals['_SUBSCRIBEBLUETOOTHLEADVERTISEMENTSREQUEST']._serialized_end=17165 - _globals['_BLUETOOTHSERVICEDATA']._serialized_start=17167 - _globals['_BLUETOOTHSERVICEDATA']._serialized_end=17246 - _globals['_BLUETOOTHLEADVERTISEMENTRESPONSE']._serialized_start=17249 - _globals['_BLUETOOTHLEADVERTISEMENTRESPONSE']._serialized_end=17503 - _globals['_BLUETOOTHLERAWADVERTISEMENT']._serialized_start=17505 - _globals['_BLUETOOTHLERAWADVERTISEMENT']._serialized_end=17607 - _globals['_BLUETOOTHLERAWADVERTISEMENTSRESPONSE']._serialized_start=17610 - _globals['_BLUETOOTHLERAWADVERTISEMENTSRESPONSE']._serialized_end=17781 - _globals['_BLUETOOTHDEVICEREQUEST']._serialized_start=17784 - _globals['_BLUETOOTHDEVICEREQUEST']._serialized_end=17954 - _globals['_BLUETOOTHDEVICECONNECTIONRESPONSE']._serialized_start=17957 - _globals['_BLUETOOTHDEVICECONNECTIONRESPONSE']._serialized_end=18086 - _globals['_BLUETOOTHGATTGETSERVICESREQUEST']._serialized_start=18088 - _globals['_BLUETOOTHGATTGETSERVICESREQUEST']._serialized_end=18168 - _globals['_BLUETOOTHGATTDESCRIPTOR']._serialized_start=18170 - _globals['_BLUETOOTHGATTDESCRIPTOR']._serialized_end=18255 - _globals['_BLUETOOTHGATTCHARACTERISTIC']._serialized_start=18258 - _globals['_BLUETOOTHGATTCHARACTERISTIC']._serialized_end=18420 - _globals['_BLUETOOTHGATTSERVICE']._serialized_start=18423 - _globals['_BLUETOOTHGATTSERVICE']._serialized_end=18566 - _globals['_BLUETOOTHGATTGETSERVICESRESPONSE']._serialized_start=18568 - _globals['_BLUETOOTHGATTGETSERVICESRESPONSE']._serialized_end=18690 - _globals['_BLUETOOTHGATTGETSERVICESDONERESPONSE']._serialized_start=18692 - _globals['_BLUETOOTHGATTGETSERVICESDONERESPONSE']._serialized_end=18777 - _globals['_BLUETOOTHGATTREADREQUEST']._serialized_start=18779 - _globals['_BLUETOOTHGATTREADREQUEST']._serialized_end=18868 - _globals['_BLUETOOTHGATTREADRESPONSE']._serialized_start=18870 - _globals['_BLUETOOTHGATTREADRESPONSE']._serialized_end=18974 - _globals['_BLUETOOTHGATTWRITEREQUEST']._serialized_start=18977 - _globals['_BLUETOOTHGATTWRITEREQUEST']._serialized_end=19105 - _globals['_BLUETOOTHGATTREADDESCRIPTORREQUEST']._serialized_start=19107 - _globals['_BLUETOOTHGATTREADDESCRIPTORREQUEST']._serialized_end=19206 - _globals['_BLUETOOTHGATTWRITEDESCRIPTORREQUEST']._serialized_start=19208 - _globals['_BLUETOOTHGATTWRITEDESCRIPTORREQUEST']._serialized_end=19328 - _globals['_BLUETOOTHGATTNOTIFYREQUEST']._serialized_start=19330 - _globals['_BLUETOOTHGATTNOTIFYREQUEST']._serialized_end=19437 - _globals['_BLUETOOTHGATTNOTIFYDATARESPONSE']._serialized_start=19439 - _globals['_BLUETOOTHGATTNOTIFYDATARESPONSE']._serialized_end=19549 - _globals['_SUBSCRIBEBLUETOOTHCONNECTIONSFREEREQUEST']._serialized_start=19551 - _globals['_SUBSCRIBEBLUETOOTHCONNECTIONSFREEREQUEST']._serialized_end=19623 - _globals['_BLUETOOTHCONNECTIONSFREERESPONSE']._serialized_start=19626 - _globals['_BLUETOOTHCONNECTIONSFREERESPONSE']._serialized_end=19779 - _globals['_BLUETOOTHGATTERRORRESPONSE']._serialized_start=19781 - _globals['_BLUETOOTHGATTERRORRESPONSE']._serialized_end=19887 - _globals['_BLUETOOTHGATTWRITERESPONSE']._serialized_start=19889 - _globals['_BLUETOOTHGATTWRITERESPONSE']._serialized_end=19980 - _globals['_BLUETOOTHGATTNOTIFYRESPONSE']._serialized_start=19982 - _globals['_BLUETOOTHGATTNOTIFYRESPONSE']._serialized_end=20074 - _globals['_BLUETOOTHDEVICEPAIRINGRESPONSE']._serialized_start=20076 - _globals['_BLUETOOTHDEVICEPAIRINGRESPONSE']._serialized_end=20186 - _globals['_BLUETOOTHDEVICEUNPAIRINGRESPONSE']._serialized_start=20188 - _globals['_BLUETOOTHDEVICEUNPAIRINGRESPONSE']._serialized_end=20301 - _globals['_UNSUBSCRIBEBLUETOOTHLEADVERTISEMENTSREQUEST']._serialized_start=20303 - _globals['_UNSUBSCRIBEBLUETOOTHLEADVERTISEMENTSREQUEST']._serialized_end=20378 - _globals['_BLUETOOTHDEVICECLEARCACHERESPONSE']._serialized_start=20380 - _globals['_BLUETOOTHDEVICECLEARCACHERESPONSE']._serialized_end=20494 - _globals['_BLUETOOTHSCANNERSTATERESPONSE']._serialized_start=20497 - _globals['_BLUETOOTHSCANNERSTATERESPONSE']._serialized_end=20682 - _globals['_BLUETOOTHSCANNERSETMODEREQUEST']._serialized_start=20684 - _globals['_BLUETOOTHSCANNERSETMODEREQUEST']._serialized_end=20783 - _globals['_SUBSCRIBEVOICEASSISTANTREQUEST']._serialized_start=20785 - _globals['_SUBSCRIBEVOICEASSISTANTREQUEST']._serialized_end=20881 - _globals['_VOICEASSISTANTAUDIOSETTINGS']._serialized_start=20883 - _globals['_VOICEASSISTANTAUDIOSETTINGS']._serialized_end=20991 - _globals['_VOICEASSISTANTREQUEST']._serialized_start=20994 - _globals['_VOICEASSISTANTREQUEST']._serialized_end=21182 - _globals['_VOICEASSISTANTRESPONSE']._serialized_start=21184 - _globals['_VOICEASSISTANTRESPONSE']._serialized_end=21267 - _globals['_VOICEASSISTANTEVENTDATA']._serialized_start=21269 - _globals['_VOICEASSISTANTEVENTDATA']._serialized_end=21323 - _globals['_VOICEASSISTANTEVENTRESPONSE']._serialized_start=21326 - _globals['_VOICEASSISTANTEVENTRESPONSE']._serialized_end=21467 - _globals['_VOICEASSISTANTAUDIO']._serialized_start=21469 - _globals['_VOICEASSISTANTAUDIO']._serialized_end=21547 - _globals['_VOICEASSISTANTTIMEREVENTRESPONSE']._serialized_start=21550 - _globals['_VOICEASSISTANTTIMEREVENTRESPONSE']._serialized_end=21757 - _globals['_VOICEASSISTANTANNOUNCEREQUEST']._serialized_start=21760 - _globals['_VOICEASSISTANTANNOUNCEREQUEST']._serialized_end=21911 - _globals['_VOICEASSISTANTANNOUNCEFINISHED']._serialized_start=21913 - _globals['_VOICEASSISTANTANNOUNCEFINISHED']._serialized_end=21992 - _globals['_VOICEASSISTANTWAKEWORD']._serialized_start=21994 - _globals['_VOICEASSISTANTWAKEWORD']._serialized_end=22076 - _globals['_VOICEASSISTANTEXTERNALWAKEWORD']._serialized_start=22079 - _globals['_VOICEASSISTANTEXTERNALWAKEWORD']._serialized_end=22242 - _globals['_VOICEASSISTANTCONFIGURATIONREQUEST']._serialized_start=22245 - _globals['_VOICEASSISTANTCONFIGURATIONREQUEST']._serialized_end=22373 - _globals['_VOICEASSISTANTCONFIGURATIONRESPONSE']._serialized_start=22376 - _globals['_VOICEASSISTANTCONFIGURATIONRESPONSE']._serialized_end=22573 - _globals['_VOICEASSISTANTSETCONFIGURATION']._serialized_start=22575 - _globals['_VOICEASSISTANTSETCONFIGURATION']._serialized_end=22664 - _globals['_LISTENTITIESALARMCONTROLPANELRESPONSE']._serialized_start=22667 - _globals['_LISTENTITIESALARMCONTROLPANELRESPONSE']._serialized_end=23040 - _globals['_ALARMCONTROLPANELSTATERESPONSE']._serialized_start=23043 - _globals['_ALARMCONTROLPANELSTATERESPONSE']._serialized_end=23228 - _globals['_ALARMCONTROLPANELCOMMANDREQUEST']._serialized_start=23231 - _globals['_ALARMCONTROLPANELCOMMANDREQUEST']._serialized_end=23434 - _globals['_LISTENTITIESTEXTRESPONSE']._serialized_start=23437 - _globals['_LISTENTITIESTEXTRESPONSE']._serialized_end=23783 - _globals['_TEXTSTATERESPONSE']._serialized_start=23786 - _globals['_TEXTSTATERESPONSE']._serialized_end=23941 - _globals['_TEXTCOMMANDREQUEST']._serialized_start=23943 - _globals['_TEXTCOMMANDREQUEST']._serialized_end=24070 - _globals['_LISTENTITIESDATERESPONSE']._serialized_start=24073 - _globals['_LISTENTITIESDATERESPONSE']._serialized_end=24346 - _globals['_DATESTATERESPONSE']._serialized_start=24349 - _globals['_DATESTATERESPONSE']._serialized_end=24540 - _globals['_DATECOMMANDREQUEST']._serialized_start=24543 - _globals['_DATECOMMANDREQUEST']._serialized_end=24706 - _globals['_LISTENTITIESTIMERESPONSE']._serialized_start=24709 - _globals['_LISTENTITIESTIMERESPONSE']._serialized_end=24982 - _globals['_TIMESTATERESPONSE']._serialized_start=24985 - _globals['_TIMESTATERESPONSE']._serialized_end=25180 - _globals['_TIMECOMMANDREQUEST']._serialized_start=25183 - _globals['_TIMECOMMANDREQUEST']._serialized_end=25350 - _globals['_LISTENTITIESEVENTRESPONSE']._serialized_start=25353 - _globals['_LISTENTITIESEVENTRESPONSE']._serialized_end=25693 - _globals['_EVENTRESPONSE']._serialized_start=25696 - _globals['_EVENTRESPONSE']._serialized_end=25827 - _globals['_LISTENTITIESVALVERESPONSE']._serialized_start=25830 - _globals['_LISTENTITIESVALVERESPONSE']._serialized_end=26191 - _globals['_VALVESTATERESPONSE']._serialized_start=26194 - _globals['_VALVESTATERESPONSE']._serialized_end=26375 - _globals['_VALVECOMMANDREQUEST']._serialized_start=26378 - _globals['_VALVECOMMANDREQUEST']._serialized_end=26546 - _globals['_LISTENTITIESDATETIMERESPONSE']._serialized_start=26549 - _globals['_LISTENTITIESDATETIMERESPONSE']._serialized_end=26830 - _globals['_DATETIMESTATERESPONSE']._serialized_start=26833 - _globals['_DATETIMESTATERESPONSE']._serialized_end=27013 - _globals['_DATETIMECOMMANDREQUEST']._serialized_start=27016 - _globals['_DATETIMECOMMANDREQUEST']._serialized_end=27168 - _globals['_LISTENTITIESUPDATERESPONSE']._serialized_start=27171 - _globals['_LISTENTITIESUPDATERESPONSE']._serialized_end=27461 - _globals['_UPDATESTATERESPONSE']._serialized_start=27464 - _globals['_UPDATESTATERESPONSE']._serialized_end=27779 - _globals['_UPDATECOMMANDREQUEST']._serialized_start=27782 - _globals['_UPDATECOMMANDREQUEST']._serialized_end=27931 - _globals['_ZWAVEPROXYFRAME']._serialized_start=27933 - _globals['_ZWAVEPROXYFRAME']._serialized_end=28000 - _globals['_ZWAVEPROXYREQUEST']._serialized_start=28002 - _globals['_ZWAVEPROXYREQUEST']._serialized_end=28106 - _globals['_APICONNECTION']._serialized_start=34501 - _globals['_APICONNECTION']._serialized_end=37456 + _globals['_LISTENTITIESSERVICESRESPONSE']._serialized_end=9574 + _globals['_EXECUTESERVICEARGUMENT']._serialized_start=9577 + _globals['_EXECUTESERVICEARGUMENT']._serialized_end=9828 + _globals['_EXECUTESERVICEREQUEST']._serialized_start=9831 + _globals['_EXECUTESERVICEREQUEST']._serialized_end=10080 + _globals['_EXECUTESERVICERESPONSE']._serialized_start=10083 + _globals['_EXECUTESERVICERESPONSE']._serialized_end=10290 + _globals['_LISTENTITIESCAMERARESPONSE']._serialized_start=10293 + _globals['_LISTENTITIESCAMERARESPONSE']._serialized_end=10561 + _globals['_CAMERAIMAGERESPONSE']._serialized_start=10564 + _globals['_CAMERAIMAGERESPONSE']._serialized_end=10710 + _globals['_CAMERAIMAGEREQUEST']._serialized_start=10712 + _globals['_CAMERAIMAGEREQUEST']._serialized_end=10788 + _globals['_LISTENTITIESCLIMATERESPONSE']._serialized_start=10791 + _globals['_LISTENTITIESCLIMATERESPONSE']._serialized_end=11940 + _globals['_CLIMATESTATERESPONSE']._serialized_start=11943 + _globals['_CLIMATESTATERESPONSE']._serialized_end=12485 + _globals['_CLIMATECOMMANDREQUEST']._serialized_start=12488 + _globals['_CLIMATECOMMANDREQUEST']._serialized_end=13248 + _globals['_LISTENTITIESNUMBERRESPONSE']._serialized_start=13251 + _globals['_LISTENTITIESNUMBERRESPONSE']._serialized_end=13649 + _globals['_NUMBERSTATERESPONSE']._serialized_start=13652 + _globals['_NUMBERSTATERESPONSE']._serialized_end=13811 + _globals['_NUMBERCOMMANDREQUEST']._serialized_start=13814 + _globals['_NUMBERCOMMANDREQUEST']._serialized_end=13945 + _globals['_LISTENTITIESSELECTRESPONSE']._serialized_start=13948 + _globals['_LISTENTITIESSELECTRESPONSE']._serialized_end=14264 + _globals['_SELECTSTATERESPONSE']._serialized_start=14267 + _globals['_SELECTSTATERESPONSE']._serialized_end=14426 + _globals['_SELECTCOMMANDREQUEST']._serialized_start=14429 + _globals['_SELECTCOMMANDREQUEST']._serialized_end=14560 + _globals['_LISTENTITIESSIRENRESPONSE']._serialized_start=14563 + _globals['_LISTENTITIESSIRENRESPONSE']._serialized_end=14896 + _globals['_SIRENSTATERESPONSE']._serialized_start=14899 + _globals['_SIRENSTATERESPONSE']._serialized_end=15033 + _globals['_SIRENCOMMANDREQUEST']._serialized_start=15036 + _globals['_SIRENCOMMANDREQUEST']._serialized_end=15292 + _globals['_LISTENTITIESLOCKRESPONSE']._serialized_start=15295 + _globals['_LISTENTITIESLOCKRESPONSE']._serialized_end=15649 + _globals['_LOCKSTATERESPONSE']._serialized_start=15652 + _globals['_LOCKSTATERESPONSE']._serialized_end=15796 + _globals['_LOCKCOMMANDREQUEST']._serialized_start=15799 + _globals['_LOCKCOMMANDREQUEST']._serialized_end=15974 + _globals['_LISTENTITIESBUTTONRESPONSE']._serialized_start=15977 + _globals['_LISTENTITIESBUTTONRESPONSE']._serialized_end=16267 + _globals['_BUTTONCOMMANDREQUEST']._serialized_start=16269 + _globals['_BUTTONCOMMANDREQUEST']._serialized_end=16385 + _globals['_MEDIAPLAYERSUPPORTEDFORMAT']._serialized_start=16388 + _globals['_MEDIAPLAYERSUPPORTEDFORMAT']._serialized_end=16562 + _globals['_LISTENTITIESMEDIAPLAYERRESPONSE']._serialized_start=16565 + _globals['_LISTENTITIESMEDIAPLAYERRESPONSE']._serialized_end=16947 + _globals['_MEDIAPLAYERSTATERESPONSE']._serialized_start=16950 + _globals['_MEDIAPLAYERSTATERESPONSE']._serialized_end=17147 + _globals['_MEDIAPLAYERCOMMANDREQUEST']._serialized_start=17150 + _globals['_MEDIAPLAYERCOMMANDREQUEST']._serialized_end=17462 + _globals['_SUBSCRIBEBLUETOOTHLEADVERTISEMENTSREQUEST']._serialized_start=17464 + _globals['_SUBSCRIBEBLUETOOTHLEADVERTISEMENTSREQUEST']._serialized_end=17552 + _globals['_BLUETOOTHSERVICEDATA']._serialized_start=17554 + _globals['_BLUETOOTHSERVICEDATA']._serialized_end=17633 + _globals['_BLUETOOTHLEADVERTISEMENTRESPONSE']._serialized_start=17636 + _globals['_BLUETOOTHLEADVERTISEMENTRESPONSE']._serialized_end=17890 + _globals['_BLUETOOTHLERAWADVERTISEMENT']._serialized_start=17892 + _globals['_BLUETOOTHLERAWADVERTISEMENT']._serialized_end=17994 + _globals['_BLUETOOTHLERAWADVERTISEMENTSRESPONSE']._serialized_start=17997 + _globals['_BLUETOOTHLERAWADVERTISEMENTSRESPONSE']._serialized_end=18168 + _globals['_BLUETOOTHDEVICEREQUEST']._serialized_start=18171 + _globals['_BLUETOOTHDEVICEREQUEST']._serialized_end=18341 + _globals['_BLUETOOTHDEVICECONNECTIONRESPONSE']._serialized_start=18344 + _globals['_BLUETOOTHDEVICECONNECTIONRESPONSE']._serialized_end=18473 + _globals['_BLUETOOTHGATTGETSERVICESREQUEST']._serialized_start=18475 + _globals['_BLUETOOTHGATTGETSERVICESREQUEST']._serialized_end=18555 + _globals['_BLUETOOTHGATTDESCRIPTOR']._serialized_start=18557 + _globals['_BLUETOOTHGATTDESCRIPTOR']._serialized_end=18642 + _globals['_BLUETOOTHGATTCHARACTERISTIC']._serialized_start=18645 + _globals['_BLUETOOTHGATTCHARACTERISTIC']._serialized_end=18807 + _globals['_BLUETOOTHGATTSERVICE']._serialized_start=18810 + _globals['_BLUETOOTHGATTSERVICE']._serialized_end=18953 + _globals['_BLUETOOTHGATTGETSERVICESRESPONSE']._serialized_start=18955 + _globals['_BLUETOOTHGATTGETSERVICESRESPONSE']._serialized_end=19077 + _globals['_BLUETOOTHGATTGETSERVICESDONERESPONSE']._serialized_start=19079 + _globals['_BLUETOOTHGATTGETSERVICESDONERESPONSE']._serialized_end=19164 + _globals['_BLUETOOTHGATTREADREQUEST']._serialized_start=19166 + _globals['_BLUETOOTHGATTREADREQUEST']._serialized_end=19255 + _globals['_BLUETOOTHGATTREADRESPONSE']._serialized_start=19257 + _globals['_BLUETOOTHGATTREADRESPONSE']._serialized_end=19361 + _globals['_BLUETOOTHGATTWRITEREQUEST']._serialized_start=19364 + _globals['_BLUETOOTHGATTWRITEREQUEST']._serialized_end=19492 + _globals['_BLUETOOTHGATTREADDESCRIPTORREQUEST']._serialized_start=19494 + _globals['_BLUETOOTHGATTREADDESCRIPTORREQUEST']._serialized_end=19593 + _globals['_BLUETOOTHGATTWRITEDESCRIPTORREQUEST']._serialized_start=19595 + _globals['_BLUETOOTHGATTWRITEDESCRIPTORREQUEST']._serialized_end=19715 + _globals['_BLUETOOTHGATTNOTIFYREQUEST']._serialized_start=19717 + _globals['_BLUETOOTHGATTNOTIFYREQUEST']._serialized_end=19824 + _globals['_BLUETOOTHGATTNOTIFYDATARESPONSE']._serialized_start=19826 + _globals['_BLUETOOTHGATTNOTIFYDATARESPONSE']._serialized_end=19936 + _globals['_SUBSCRIBEBLUETOOTHCONNECTIONSFREEREQUEST']._serialized_start=19938 + _globals['_SUBSCRIBEBLUETOOTHCONNECTIONSFREEREQUEST']._serialized_end=20010 + _globals['_BLUETOOTHCONNECTIONSFREERESPONSE']._serialized_start=20013 + _globals['_BLUETOOTHCONNECTIONSFREERESPONSE']._serialized_end=20166 + _globals['_BLUETOOTHGATTERRORRESPONSE']._serialized_start=20168 + _globals['_BLUETOOTHGATTERRORRESPONSE']._serialized_end=20274 + _globals['_BLUETOOTHGATTWRITERESPONSE']._serialized_start=20276 + _globals['_BLUETOOTHGATTWRITERESPONSE']._serialized_end=20367 + _globals['_BLUETOOTHGATTNOTIFYRESPONSE']._serialized_start=20369 + _globals['_BLUETOOTHGATTNOTIFYRESPONSE']._serialized_end=20461 + _globals['_BLUETOOTHDEVICEPAIRINGRESPONSE']._serialized_start=20463 + _globals['_BLUETOOTHDEVICEPAIRINGRESPONSE']._serialized_end=20573 + _globals['_BLUETOOTHDEVICEUNPAIRINGRESPONSE']._serialized_start=20575 + _globals['_BLUETOOTHDEVICEUNPAIRINGRESPONSE']._serialized_end=20688 + _globals['_UNSUBSCRIBEBLUETOOTHLEADVERTISEMENTSREQUEST']._serialized_start=20690 + _globals['_UNSUBSCRIBEBLUETOOTHLEADVERTISEMENTSREQUEST']._serialized_end=20765 + _globals['_BLUETOOTHDEVICECLEARCACHERESPONSE']._serialized_start=20767 + _globals['_BLUETOOTHDEVICECLEARCACHERESPONSE']._serialized_end=20881 + _globals['_BLUETOOTHSCANNERSTATERESPONSE']._serialized_start=20884 + _globals['_BLUETOOTHSCANNERSTATERESPONSE']._serialized_end=21069 + _globals['_BLUETOOTHSCANNERSETMODEREQUEST']._serialized_start=21071 + _globals['_BLUETOOTHSCANNERSETMODEREQUEST']._serialized_end=21170 + _globals['_SUBSCRIBEVOICEASSISTANTREQUEST']._serialized_start=21172 + _globals['_SUBSCRIBEVOICEASSISTANTREQUEST']._serialized_end=21268 + _globals['_VOICEASSISTANTAUDIOSETTINGS']._serialized_start=21270 + _globals['_VOICEASSISTANTAUDIOSETTINGS']._serialized_end=21378 + _globals['_VOICEASSISTANTREQUEST']._serialized_start=21381 + _globals['_VOICEASSISTANTREQUEST']._serialized_end=21569 + _globals['_VOICEASSISTANTRESPONSE']._serialized_start=21571 + _globals['_VOICEASSISTANTRESPONSE']._serialized_end=21654 + _globals['_VOICEASSISTANTEVENTDATA']._serialized_start=21656 + _globals['_VOICEASSISTANTEVENTDATA']._serialized_end=21710 + _globals['_VOICEASSISTANTEVENTRESPONSE']._serialized_start=21713 + _globals['_VOICEASSISTANTEVENTRESPONSE']._serialized_end=21854 + _globals['_VOICEASSISTANTAUDIO']._serialized_start=21856 + _globals['_VOICEASSISTANTAUDIO']._serialized_end=21934 + _globals['_VOICEASSISTANTTIMEREVENTRESPONSE']._serialized_start=21937 + _globals['_VOICEASSISTANTTIMEREVENTRESPONSE']._serialized_end=22144 + _globals['_VOICEASSISTANTANNOUNCEREQUEST']._serialized_start=22147 + _globals['_VOICEASSISTANTANNOUNCEREQUEST']._serialized_end=22298 + _globals['_VOICEASSISTANTANNOUNCEFINISHED']._serialized_start=22300 + _globals['_VOICEASSISTANTANNOUNCEFINISHED']._serialized_end=22379 + _globals['_VOICEASSISTANTWAKEWORD']._serialized_start=22381 + _globals['_VOICEASSISTANTWAKEWORD']._serialized_end=22463 + _globals['_VOICEASSISTANTEXTERNALWAKEWORD']._serialized_start=22466 + _globals['_VOICEASSISTANTEXTERNALWAKEWORD']._serialized_end=22629 + _globals['_VOICEASSISTANTCONFIGURATIONREQUEST']._serialized_start=22632 + _globals['_VOICEASSISTANTCONFIGURATIONREQUEST']._serialized_end=22760 + _globals['_VOICEASSISTANTCONFIGURATIONRESPONSE']._serialized_start=22763 + _globals['_VOICEASSISTANTCONFIGURATIONRESPONSE']._serialized_end=22960 + _globals['_VOICEASSISTANTSETCONFIGURATION']._serialized_start=22962 + _globals['_VOICEASSISTANTSETCONFIGURATION']._serialized_end=23051 + _globals['_LISTENTITIESALARMCONTROLPANELRESPONSE']._serialized_start=23054 + _globals['_LISTENTITIESALARMCONTROLPANELRESPONSE']._serialized_end=23427 + _globals['_ALARMCONTROLPANELSTATERESPONSE']._serialized_start=23430 + _globals['_ALARMCONTROLPANELSTATERESPONSE']._serialized_end=23615 + _globals['_ALARMCONTROLPANELCOMMANDREQUEST']._serialized_start=23618 + _globals['_ALARMCONTROLPANELCOMMANDREQUEST']._serialized_end=23821 + _globals['_LISTENTITIESTEXTRESPONSE']._serialized_start=23824 + _globals['_LISTENTITIESTEXTRESPONSE']._serialized_end=24170 + _globals['_TEXTSTATERESPONSE']._serialized_start=24173 + _globals['_TEXTSTATERESPONSE']._serialized_end=24328 + _globals['_TEXTCOMMANDREQUEST']._serialized_start=24330 + _globals['_TEXTCOMMANDREQUEST']._serialized_end=24457 + _globals['_LISTENTITIESDATERESPONSE']._serialized_start=24460 + _globals['_LISTENTITIESDATERESPONSE']._serialized_end=24733 + _globals['_DATESTATERESPONSE']._serialized_start=24736 + _globals['_DATESTATERESPONSE']._serialized_end=24927 + _globals['_DATECOMMANDREQUEST']._serialized_start=24930 + _globals['_DATECOMMANDREQUEST']._serialized_end=25093 + _globals['_LISTENTITIESTIMERESPONSE']._serialized_start=25096 + _globals['_LISTENTITIESTIMERESPONSE']._serialized_end=25369 + _globals['_TIMESTATERESPONSE']._serialized_start=25372 + _globals['_TIMESTATERESPONSE']._serialized_end=25567 + _globals['_TIMECOMMANDREQUEST']._serialized_start=25570 + _globals['_TIMECOMMANDREQUEST']._serialized_end=25737 + _globals['_LISTENTITIESEVENTRESPONSE']._serialized_start=25740 + _globals['_LISTENTITIESEVENTRESPONSE']._serialized_end=26080 + _globals['_EVENTRESPONSE']._serialized_start=26083 + _globals['_EVENTRESPONSE']._serialized_end=26214 + _globals['_LISTENTITIESVALVERESPONSE']._serialized_start=26217 + _globals['_LISTENTITIESVALVERESPONSE']._serialized_end=26578 + _globals['_VALVESTATERESPONSE']._serialized_start=26581 + _globals['_VALVESTATERESPONSE']._serialized_end=26762 + _globals['_VALVECOMMANDREQUEST']._serialized_start=26765 + _globals['_VALVECOMMANDREQUEST']._serialized_end=26933 + _globals['_LISTENTITIESDATETIMERESPONSE']._serialized_start=26936 + _globals['_LISTENTITIESDATETIMERESPONSE']._serialized_end=27217 + _globals['_DATETIMESTATERESPONSE']._serialized_start=27220 + _globals['_DATETIMESTATERESPONSE']._serialized_end=27400 + _globals['_DATETIMECOMMANDREQUEST']._serialized_start=27403 + _globals['_DATETIMECOMMANDREQUEST']._serialized_end=27555 + _globals['_LISTENTITIESUPDATERESPONSE']._serialized_start=27558 + _globals['_LISTENTITIESUPDATERESPONSE']._serialized_end=27848 + _globals['_UPDATESTATERESPONSE']._serialized_start=27851 + _globals['_UPDATESTATERESPONSE']._serialized_end=28166 + _globals['_UPDATECOMMANDREQUEST']._serialized_start=28169 + _globals['_UPDATECOMMANDREQUEST']._serialized_end=28318 + _globals['_ZWAVEPROXYFRAME']._serialized_start=28320 + _globals['_ZWAVEPROXYFRAME']._serialized_end=28387 + _globals['_ZWAVEPROXYREQUEST']._serialized_start=28389 + _globals['_ZWAVEPROXYREQUEST']._serialized_end=28493 + _globals['_APICONNECTION']._serialized_start=35031 + _globals['_APICONNECTION']._serialized_end=37986 # @@protoc_insertion_point(module_scope) diff --git a/aioesphomeapi/client.py b/aioesphomeapi/client.py index b0ff31d3..8784dbe7 100644 --- a/aioesphomeapi/client.py +++ b/aioesphomeapi/client.py @@ -45,6 +45,7 @@ DeviceInfoResponse, ExecuteServiceArgument, ExecuteServiceRequest, + ExecuteServiceResponse, FanCommandRequest, HomeassistantActionRequest, HomeassistantActionResponse, @@ -134,6 +135,7 @@ EntityInfo, EntityState, ESPHomeBluetoothGATTServices, + ExecuteServiceResponse as ExecuteServiceResponseModel, FanDirection, FanSpeed, HomeassistantServiceCall, @@ -1312,10 +1314,21 @@ def update_command( ) def execute_service( - self, service: UserService, data: ExecuteServiceDataType + self, + service: UserService, + data: ExecuteServiceDataType, + *, + on_response: Callable[[ExecuteServiceResponseModel], None] | None = None, + return_response: bool = False, ) -> None: connection = self._get_connection() - req = ExecuteServiceRequest(key=service.key) + # Generate call_id when response callback is provided + call_id = next(self._call_id_counter) if on_response is not None else 0 + req = ExecuteServiceRequest( + key=service.key, + call_id=call_id, + return_response=return_response, + ) args = [] apiv = self.api_version if TYPE_CHECKING: @@ -1339,6 +1352,21 @@ def execute_service( # pylint: disable=no-member req.args.extend(args) + # Register callback for response if provided + if on_response is not None: + unsub: Callable[[], None] | None = None + + def _on_response(msg: ExecuteServiceResponse) -> None: + if msg.call_id == call_id: + on_response(ExecuteServiceResponseModel.from_pb(msg)) + if unsub is not None: + unsub() + + unsub = connection.add_message_callback( + _on_response, + (ExecuteServiceResponse,), + ) + connection.send_message(req) def _request_image(self, *, single: bool = False, stream: bool = False) -> None: diff --git a/aioesphomeapi/client_base.pxd b/aioesphomeapi/client_base.pxd index 69e525c1..b92ceee6 100644 --- a/aioesphomeapi/client_base.pxd +++ b/aioesphomeapi/client_base.pxd @@ -26,6 +26,7 @@ cdef str _stringify_or_none(object value) cdef class APIClientBase: cdef public set _background_tasks + cdef public object _call_id_counter cdef public APIConnection _connection cdef public bint _debug_enabled cdef public object _loop diff --git a/aioesphomeapi/client_base.py b/aioesphomeapi/client_base.py index eb26f7d6..44122463 100644 --- a/aioesphomeapi/client_base.py +++ b/aioesphomeapi/client_base.py @@ -3,6 +3,7 @@ import asyncio from collections.abc import Callable, Coroutine +import itertools import logging from typing import TYPE_CHECKING, Any @@ -218,6 +219,7 @@ class APIClientBase: __slots__ = ( "_background_tasks", + "_call_id_counter", "_connection", "_debug_enabled", "_loop", @@ -286,6 +288,7 @@ def __init__( self.cached_name: str | None = None self._background_tasks: set[asyncio.Task[Any]] = set() self._loop = asyncio.get_running_loop() + self._call_id_counter = itertools.count(1) self._set_log_name() def set_debug(self, enabled: bool) -> None: diff --git a/aioesphomeapi/core.py b/aioesphomeapi/core.py index 58e58f50..29ceaf20 100644 --- a/aioesphomeapi/core.py +++ b/aioesphomeapi/core.py @@ -51,6 +51,7 @@ DisconnectResponse, EventResponse, ExecuteServiceRequest, + ExecuteServiceResponse, FanCommandRequest, FanStateResponse, GetTimeRequest, @@ -491,6 +492,7 @@ def __init__(self, error: BluetoothGATTError) -> None: 128: ZWaveProxyFrame, 129: ZWaveProxyRequest, 130: HomeassistantActionResponse, + 131: ExecuteServiceResponse, } MESSAGE_NUMBER_TO_PROTO = tuple(MESSAGE_TYPE_TO_PROTO.values()) diff --git a/aioesphomeapi/model.py b/aioesphomeapi/model.py index 01a0e581..38883424 100644 --- a/aioesphomeapi/model.py +++ b/aioesphomeapi/model.py @@ -1213,6 +1213,13 @@ class UserServiceArgType(APIIntEnum): STRING_ARRAY = 7 +class SupportsResponseType(APIIntEnum): + NONE = 0 + OPTIONAL = 1 + ONLY = 2 + STATUS = 100 + + @_frozen_dataclass_decorator class UserServiceArg(APIModelBase): name: str = "" @@ -1240,6 +1247,19 @@ class UserService(APIModelBase): args: list[UserServiceArg] = converter_field( default_factory=list, converter=UserServiceArg.convert_list ) + supports_response: SupportsResponseType | None = converter_field( + default=SupportsResponseType.NONE, converter=SupportsResponseType.convert + ) + + +@_frozen_dataclass_decorator +class ExecuteServiceResponse(APIModelBase): + call_id: int = 0 # Call ID that matches the original request + success: bool = False # Whether the service execution succeeded + error_message: str = "" # Error message if success = false + response_data: bytes = field( + default_factory=bytes + ) # JSON response data from ESPHome # ==================== BLUETOOTH ==================== diff --git a/tests/test_client.py b/tests/test_client.py index e0502982..fbad0fc6 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -52,6 +52,7 @@ DisconnectResponse, ExecuteServiceArgument, ExecuteServiceRequest, + ExecuteServiceResponse as ExecuteServiceResponsePb, FanCommandRequest, HomeassistantActionRequest, HomeassistantActionResponse, @@ -121,6 +122,7 @@ ClimateSwingMode, DeviceInfo, ESPHomeBluetoothGATTServices, + ExecuteServiceResponse as ExecuteServiceResponseModel, FanDirection, FanSpeed, HomeassistantActionResponse as HomeassistantActionResponseModel, @@ -1042,6 +1044,103 @@ async def test_execute_service(auth_client: APIClient) -> None: send.reset_mock() +async def test_execute_service_with_call_id(auth_client: APIClient) -> None: + """Test that call_id is auto-generated when on_response is provided.""" + send = patch_send(auth_client) + patch_api_version(auth_client, APIVersion(1, 3)) + + service = UserService( + name="my_service", + key=1, + args=[ + UserServiceArg(name="arg1", type=UserServiceArgType.BOOL), + ], + ) + + def dummy_callback(response: ExecuteServiceResponseModel) -> None: + pass + + # Test without on_response - call_id should be 0 + auth_client.execute_service( + service, + data={"arg1": True}, + ) + send.assert_called_once_with( + ExecuteServiceRequest( + key=1, + args=[ + ExecuteServiceArgument(bool_=True), + ], + call_id=0, + return_response=False, + ) + ) + send.reset_mock() + + # Test with on_response - call_id should be auto-generated (non-zero) + auth_client.execute_service( + service, + data={"arg1": False}, + on_response=dummy_callback, + ) + req = send.call_args[0][0] + assert req.call_id != 0 # Auto-generated + first_call_id = req.call_id + send.reset_mock() + + # Test that call_id increments + auth_client.execute_service( + service, + data={"arg1": True}, + on_response=dummy_callback, + ) + req = send.call_args[0][0] + assert req.call_id == first_call_id + 1 + + +async def test_execute_service_return_response_combinations( + auth_client: APIClient, +) -> None: + """Test that return_response is passed through and call_id is generated for on_response.""" + send = patch_send(auth_client) + patch_api_version(auth_client, APIVersion(1, 3)) + + service = UserService( + name="test_service", + key=1, + args=[], + ) + + def dummy_callback(response: ExecuteServiceResponseModel) -> None: + pass + + # Case 1: no callback, no return_response -> call_id=0, return_response=False + auth_client.execute_service(service, data={}) + assert send.call_args[0][0].return_response is False + assert send.call_args[0][0].call_id == 0 + send.reset_mock() + + # Case 2: return_response=True without callback -> call_id=0, return_response=True + auth_client.execute_service(service, data={}, return_response=True) + assert send.call_args[0][0].return_response is True + assert send.call_args[0][0].call_id == 0 + send.reset_mock() + + # Case 3: on_response generates call_id, return_response passed through + auth_client.execute_service(service, data={}, on_response=dummy_callback) + assert send.call_args[0][0].return_response is False + assert send.call_args[0][0].call_id != 0 + send.reset_mock() + + # Case 4: on_response with return_response=True + auth_client.execute_service( + service, data={}, on_response=dummy_callback, return_response=True + ) + assert send.call_args[0][0].return_response is True + assert send.call_args[0][0].call_id != 0 + send.reset_mock() + + async def test_request_single_image(auth_client: APIClient) -> None: send = patch_send(auth_client) @@ -2150,6 +2249,114 @@ def on_zwave_proxy_request(msg: ZWaveProxyRequest) -> None: assert first_msg.data == b"\x00\x01\x02\x03" +async def test_execute_service_with_response_callback( + api_client: tuple[ + APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper + ], +) -> None: + """Test execute_service with on_response callback.""" + client, connection, _transport, protocol = api_client + patch_api_version(client, APIVersion(1, 3)) + test_msg: list[ExecuteServiceResponseModel] = [] + sent_requests: list[ExecuteServiceRequest] = [] + + # Capture sent requests to get auto-generated call_id + original_send = connection.send_message + + def capture_send(msg: Any) -> None: + if isinstance(msg, ExecuteServiceRequest): + sent_requests.append(msg) + original_send(msg) + + connection.send_message = capture_send + + def on_response(msg: ExecuteServiceResponseModel) -> None: + test_msg.append(msg) + + service = UserService( + name="my_service", + key=1, + args=[ + UserServiceArg(name="arg1", type=UserServiceArgType.BOOL), + ], + ) + + # Execute service with callback + client.execute_service( + service, + data={"arg1": True}, + on_response=on_response, + ) + await asyncio.sleep(0) + + # Get the auto-generated call_id + assert len(sent_requests) == 1 + first_call_id = sent_requests[0].call_id + assert first_call_id != 0 # Should be auto-generated + + # Simulate response from device + response: message.Message = ExecuteServiceResponsePb( + call_id=first_call_id, + success=True, + error_message="", + response_data=b'{"result": "ok"}', + ) + mock_data_received(protocol, generate_plaintext_packet(response)) + + assert len(test_msg) == 1 + first_msg = test_msg[0] + assert first_msg.call_id == first_call_id + assert first_msg.success is True + assert first_msg.error_message == "" + assert first_msg.response_data == b'{"result": "ok"}' + + # Callback should auto-unsubscribe, so another response shouldn't be received + response2: message.Message = ExecuteServiceResponsePb( + call_id=first_call_id, + success=True, + error_message="", + response_data=b'{"result": "second"}', + ) + mock_data_received(protocol, generate_plaintext_packet(response2)) + assert len(test_msg) == 1 # Still only one message + + # Test that responses with different call_id are ignored + test_msg.clear() + sent_requests.clear() + client.execute_service( + service, + data={"arg1": False}, + on_response=on_response, + ) + await asyncio.sleep(0) + + # Get second auto-generated call_id + assert len(sent_requests) == 1 + second_call_id = sent_requests[0].call_id + assert second_call_id == first_call_id + 1 # Should increment + + # Response with wrong call_id should be ignored + wrong_response: message.Message = ExecuteServiceResponsePb( + call_id=11111, + success=False, + error_message="Wrong call", + response_data=b"", + ) + mock_data_received(protocol, generate_plaintext_packet(wrong_response)) + assert len(test_msg) == 0 + + # Correct call_id should be received + correct_response: message.Message = ExecuteServiceResponsePb( + call_id=second_call_id, + success=True, + error_message="", + response_data=b"", + ) + mock_data_received(protocol, generate_plaintext_packet(correct_response)) + assert len(test_msg) == 1 + assert test_msg[0].call_id == second_call_id + + async def test_subscribe_service_calls(auth_client: APIClient) -> None: send = patch_response_callback(auth_client) on_service_call = MagicMock() diff --git a/tests/test_model.py b/tests/test_model.py index 8543b0aa..8bbf16ee 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -21,6 +21,7 @@ DeviceInfo as SubDeviceInfoProto, DeviceInfoResponse, EventResponse, + ExecuteServiceResponse as ExecuteServiceResponsePb, FanStateResponse, HomeassistantActionRequest, HomeassistantServiceMap, @@ -56,6 +57,7 @@ SensorStateResponse, ServiceArgType, SirenStateResponse, + SupportsResponseType as SupportsResponseTypePb, SwitchStateResponse, TextSensorStateResponse, TextStateResponse, @@ -98,6 +100,7 @@ EntityState, Event, EventInfo, + ExecuteServiceResponse, FanInfo, FanState, HomeassistantServiceCall, @@ -120,6 +123,7 @@ SirenInfo, SirenState, SubDeviceInfo, + SupportsResponseType, SwitchInfo, SwitchState, TextInfo, @@ -316,6 +320,7 @@ def test_api_version_ord(): (BluetoothScannerStateResponseModel, BluetoothScannerStateResponse), (ZWaveProxyFrame, ZWaveProxyFramePb), (ZWaveProxyRequest, ZWaveProxyRequestPb), + (ExecuteServiceResponse, ExecuteServiceResponsePb), ], ) def test_basic_pb_conversions(model, pb): @@ -1769,3 +1774,137 @@ def test_event_entity_state_device_id(): assert event_from_dict.key == 102 assert event_from_dict.event_type == "door_opened" assert event_from_dict.device_id == 99 + + +@pytest.mark.parametrize( + "input, output", + [ + (0, SupportsResponseType.NONE), + (1, SupportsResponseType.OPTIONAL), + (2, SupportsResponseType.ONLY), + (100, SupportsResponseType.STATUS), + (999, None), # Unknown value + ], +) +def test_supports_response_type_convert(input, output): + assert SupportsResponseType.convert(input) == output + + +def test_supports_response_type_values(): + """Test that SupportsResponseType enum has expected values.""" + assert SupportsResponseType.NONE == 0 + assert SupportsResponseType.OPTIONAL == 1 + assert SupportsResponseType.ONLY == 2 + assert SupportsResponseType.STATUS == 100 + + +def test_user_service_with_supports_response(): + """Test UserService model with supports_response field.""" + # Test from protobuf with supports_response + pb = ListEntitiesServicesResponse( + name="test_service", + key=123, + supports_response=SupportsResponseTypePb.SUPPORTS_RESPONSE_OPTIONAL, + ) + service = UserService.from_pb(pb) + assert service.name == "test_service" + assert service.key == 123 + assert service.supports_response == SupportsResponseType.OPTIONAL + assert service.args == [] + + # Test with STATUS response type + pb_status = ListEntitiesServicesResponse( + name="status_service", + key=456, + supports_response=SupportsResponseTypePb.SUPPORTS_RESPONSE_STATUS, + ) + service_status = UserService.from_pb(pb_status) + assert service_status.supports_response == SupportsResponseType.STATUS + + # Test default value (NONE) + pb_default = ListEntitiesServicesResponse(name="default_service", key=789) + service_default = UserService.from_pb(pb_default) + assert service_default.supports_response == SupportsResponseType.NONE + + # Test from_dict + service_dict = UserService.from_dict( + { + "name": "dict_service", + "key": 111, + "supports_response": 2, # ONLY + } + ) + assert service_dict.supports_response == SupportsResponseType.ONLY + + # Test to_dict + service_to_dict = UserService( + name="to_dict_service", + key=222, + supports_response=SupportsResponseType.OPTIONAL, + ) + result = service_to_dict.to_dict() + assert result["supports_response"] == 1 + + +def test_execute_service_response(): + """Test ExecuteServiceResponse model.""" + # Test from protobuf with all fields + pb = ExecuteServiceResponsePb( + call_id=12345, + success=True, + error_message="", + response_data=b'{"result": "ok"}', + ) + response = ExecuteServiceResponse.from_pb(pb) + assert response.call_id == 12345 + assert response.success is True + assert response.error_message == "" + assert response.response_data == b'{"result": "ok"}' + + # Test error response + pb_error = ExecuteServiceResponsePb( + call_id=67890, + success=False, + error_message="Service execution failed", + response_data=b"", + ) + response_error = ExecuteServiceResponse.from_pb(pb_error) + assert response_error.call_id == 67890 + assert response_error.success is False + assert response_error.error_message == "Service execution failed" + assert response_error.response_data == b"" + + # Test default values + pb_default = ExecuteServiceResponsePb() + response_default = ExecuteServiceResponse.from_pb(pb_default) + assert response_default.call_id == 0 + assert response_default.success is False + assert response_default.error_message == "" + assert response_default.response_data == b"" + + # Test from_dict + response_dict = ExecuteServiceResponse.from_dict( + { + "call_id": 99999, + "success": True, + "error_message": "test", + "response_data": b"data", + } + ) + assert response_dict.call_id == 99999 + assert response_dict.success is True + assert response_dict.error_message == "test" + assert response_dict.response_data == b"data" + + # Test to_dict + response_to_dict = ExecuteServiceResponse( + call_id=11111, + success=True, + error_message="", + response_data=b"test_data", + ) + result = response_to_dict.to_dict() + assert result["call_id"] == 11111 + assert result["success"] is True + assert result["error_message"] == "" + assert result["response_data"] == b"test_data"