mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 06:33:51 +00:00 
			
		
		
		
	Add support for doing update entity refresh/check via API. (#7190)
This commit is contained in:
		| @@ -1872,6 +1872,11 @@ message UpdateStateResponse { | ||||
|   string release_summary = 9; | ||||
|   string release_url = 10; | ||||
| } | ||||
| enum UpdateCommand { | ||||
|   UPDATE_COMMAND_NONE = 0; | ||||
|   UPDATE_COMMAND_UPDATE = 1; | ||||
|   UPDATE_COMMAND_CHECK = 2; | ||||
| } | ||||
| message UpdateCommandRequest { | ||||
|   option (id) = 118; | ||||
|   option (source) = SOURCE_CLIENT; | ||||
| @@ -1879,5 +1884,5 @@ message UpdateCommandRequest { | ||||
|   option (no_delay) = true; | ||||
|  | ||||
|   fixed32 key = 1; | ||||
|   bool install = 2; | ||||
|   UpdateCommand command = 2; | ||||
| } | ||||
|   | ||||
| @@ -1328,7 +1328,17 @@ void APIConnection::update_command(const UpdateCommandRequest &msg) { | ||||
|   if (update == nullptr) | ||||
|     return; | ||||
|  | ||||
|   update->perform(); | ||||
|   switch (msg.command) { | ||||
|     case enums::UPDATE_COMMAND_UPDATE: | ||||
|       update->perform(); | ||||
|       break; | ||||
|     case enums::UPDATE_COMMAND_CHECK: | ||||
|       update->check(); | ||||
|       break; | ||||
|     default: | ||||
|       ESP_LOGW(TAG, "Unknown update command: %d", msg.command); | ||||
|       break; | ||||
|   } | ||||
| } | ||||
| #endif | ||||
|  | ||||
|   | ||||
| @@ -567,6 +567,20 @@ template<> const char *proto_enum_to_string<enums::ValveOperation>(enums::ValveO | ||||
|   } | ||||
| } | ||||
| #endif | ||||
| #ifdef HAS_PROTO_MESSAGE_DUMP | ||||
| template<> const char *proto_enum_to_string<enums::UpdateCommand>(enums::UpdateCommand value) { | ||||
|   switch (value) { | ||||
|     case enums::UPDATE_COMMAND_NONE: | ||||
|       return "UPDATE_COMMAND_NONE"; | ||||
|     case enums::UPDATE_COMMAND_UPDATE: | ||||
|       return "UPDATE_COMMAND_UPDATE"; | ||||
|     case enums::UPDATE_COMMAND_CHECK: | ||||
|       return "UPDATE_COMMAND_CHECK"; | ||||
|     default: | ||||
|       return "UNKNOWN"; | ||||
|   } | ||||
| } | ||||
| #endif | ||||
| bool HelloRequest::decode_varint(uint32_t field_id, ProtoVarInt value) { | ||||
|   switch (field_id) { | ||||
|     case 2: { | ||||
| @@ -8596,7 +8610,7 @@ void UpdateStateResponse::dump_to(std::string &out) const { | ||||
| bool UpdateCommandRequest::decode_varint(uint32_t field_id, ProtoVarInt value) { | ||||
|   switch (field_id) { | ||||
|     case 2: { | ||||
|       this->install = value.as_bool(); | ||||
|       this->command = value.as_enum<enums::UpdateCommand>(); | ||||
|       return true; | ||||
|     } | ||||
|     default: | ||||
| @@ -8615,7 +8629,7 @@ bool UpdateCommandRequest::decode_32bit(uint32_t field_id, Proto32Bit value) { | ||||
| } | ||||
| void UpdateCommandRequest::encode(ProtoWriteBuffer buffer) const { | ||||
|   buffer.encode_fixed32(1, this->key); | ||||
|   buffer.encode_bool(2, this->install); | ||||
|   buffer.encode_enum<enums::UpdateCommand>(2, this->command); | ||||
| } | ||||
| #ifdef HAS_PROTO_MESSAGE_DUMP | ||||
| void UpdateCommandRequest::dump_to(std::string &out) const { | ||||
| @@ -8626,8 +8640,8 @@ void UpdateCommandRequest::dump_to(std::string &out) const { | ||||
|   out.append(buffer); | ||||
|   out.append("\n"); | ||||
|  | ||||
|   out.append("  install: "); | ||||
|   out.append(YESNO(this->install)); | ||||
|   out.append("  command: "); | ||||
|   out.append(proto_enum_to_string<enums::UpdateCommand>(this->command)); | ||||
|   out.append("\n"); | ||||
|   out.append("}"); | ||||
| } | ||||
|   | ||||
| @@ -227,6 +227,11 @@ enum ValveOperation : uint32_t { | ||||
|   VALVE_OPERATION_IS_OPENING = 1, | ||||
|   VALVE_OPERATION_IS_CLOSING = 2, | ||||
| }; | ||||
| enum UpdateCommand : uint32_t { | ||||
|   UPDATE_COMMAND_NONE = 0, | ||||
|   UPDATE_COMMAND_UPDATE = 1, | ||||
|   UPDATE_COMMAND_CHECK = 2, | ||||
| }; | ||||
|  | ||||
| }  // namespace enums | ||||
|  | ||||
| @@ -2175,7 +2180,7 @@ class UpdateStateResponse : public ProtoMessage { | ||||
| class UpdateCommandRequest : public ProtoMessage { | ||||
|  public: | ||||
|   uint32_t key{0}; | ||||
|   bool install{false}; | ||||
|   enums::UpdateCommand command{}; | ||||
|   void encode(ProtoWriteBuffer buffer) const override; | ||||
| #ifdef HAS_PROTO_MESSAGE_DUMP | ||||
|   void dump_to(std::string &out) const override; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user