1010from ..api import RoborockClient
1111from ..exceptions import RoborockConnectionException , RoborockException , VacuumError
1212from ..protocol import Decoder , Encoder , create_local_decoder , create_local_encoder
13- from ..protocols .v1_protocol import encode_local_payload
13+ from ..protocols .v1_protocol import RequestMessage
1414from ..roborock_message import RoborockMessage , RoborockMessageProtocol
1515from ..util import RoborockLoggerAdapter
1616from .roborock_client_v1 import CLOUD_REQUIRED , RoborockClientV1
@@ -123,12 +123,20 @@ async def async_disconnect(self) -> None:
123123
124124 async def hello (self ):
125125 try :
126- return await self ._send_message (_HELLO_REQUEST_MESSAGE )
126+ return await self ._send_message (
127+ roborock_message = _HELLO_REQUEST_MESSAGE ,
128+ request_id = _HELLO_REQUEST_MESSAGE .seq ,
129+ response_protocol = RoborockMessageProtocol .HELLO_RESPONSE ,
130+ )
127131 except Exception as e :
128132 self ._logger .error (e )
129133
130134 async def ping (self ) -> None :
131- await self ._send_message (_PING_REQUEST_MESSAGE )
135+ await self ._send_message (
136+ roborock_message = _PING_REQUEST_MESSAGE ,
137+ request_id = _PING_REQUEST_MESSAGE .seq ,
138+ response_protocol = RoborockMessageProtocol .PING_RESPONSE ,
139+ )
132140
133141 def _send_msg_raw (self , data : bytes ):
134142 try :
@@ -145,27 +153,26 @@ async def _send_command(
145153 ):
146154 if method in CLOUD_REQUIRED :
147155 raise RoborockException (f"Method { method } is not supported over local connection" )
148-
149- roborock_message = encode_local_payload (method , params )
150- self ._logger .debug ("Building message id %s for method %s" , roborock_message .get_request_id (), method )
151- return await self ._send_message (roborock_message , method , params )
156+ request_message = RequestMessage (method = method , params = params )
157+ roborock_message = request_message .encode_message (RoborockMessageProtocol .GENERAL_REQUEST )
158+ self ._logger .debug ("Building message id %s for method %s" , request_message .request_id , method )
159+ return await self ._send_message (
160+ roborock_message ,
161+ request_id = request_message .request_id ,
162+ response_protocol = RoborockMessageProtocol .GENERAL_REQUEST ,
163+ method = method ,
164+ params = params ,
165+ )
152166
153167 async def _send_message (
154168 self ,
155169 roborock_message : RoborockMessage ,
170+ request_id : int ,
171+ response_protocol : int ,
156172 method : str | None = None ,
157173 params : list | dict | int | None = None ,
158174 ) -> RoborockMessage :
159175 await self .validate_connection ()
160- request_id : int | None
161- if not method or not method .startswith ("get" ):
162- request_id = roborock_message .seq
163- response_protocol = request_id + 1
164- else :
165- request_id = roborock_message .get_request_id ()
166- response_protocol = RoborockMessageProtocol .GENERAL_REQUEST
167- if request_id is None :
168- raise RoborockException (f"Failed build message { roborock_message } " )
169176 msg = self ._encoder (roborock_message )
170177 if method :
171178 self ._logger .debug (f"id={ request_id } Requesting method { method } with { params } " )
0 commit comments