日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

RRPC能力

RRPC是指由服務端通過物聯網平臺云端API向設備端發送請求,并能夠使設備端響應的功能。

功能介紹

MQTT協議是基于PUB/SUB的異步通信模式,不適用于服務端同步控制設備端返回結果的場景。物聯網平臺基于MQTT協議制定了一套請求和響應的同步機制,無需改動MQTT協議即可實現同步通信。物聯網平臺提供API給服務端,設備端只需要按照固定的格式回復PUB消息,服務端通過API,即可同步獲取設備端的響應結果。

服務端通過云端API發起一個RRPC調用后,設備端會收到一個同步請求的Topic, 格式如/ext/rrpc/${messageId}/${rrpc_topic}, 設備端接收到該消息后進行處理,并將處理結果以Message的方式推送到/ext/rrpc/${messageId}/${rrpc_topic}。Python Link SDK已經提供了相應的細節封裝。

關于RRPC的詳細介紹,請參見什么是RRPC

云端有兩種場景會涉及到RRPC的調用:

  • 消息通信RRpc,該API會發送一個RRPC請求,需要在設備端實現RRPC調用(使用該API時,請求參數的Topic字段不能為空,需填入用戶的自定義Topic)。

  • 設備管理InvokeThingsService,如果使用高級版并登記為同步類型的服務,調用其服務時會采用RRPC模式。

Link SDK使用

使用RRPC能力,需要Aliyun IoT Python SDK 1.1.0或更高的版本。

  • RRPC使用:普通RRPC Topic

    1. 通過設置on_topic_rrpc_message的回調來處理RRPC的Topic請求。

      linkkit.on_topic_rrpc_message = on_topic_rrpc_message
      ...
      def on_topic_rrpc_message(self, id, topic, payload, qos, userdata):
          print("on_topic_rrpc_message: id:%s, topic:%s, payload:%s" % (id, topic, payload))
          self.linkkit.thing_answer_rrpc(id, payload)     
    2. 在設備連云成功后,調用subscribe_rrpc_topic, 訂閱該RRPC的Topic。

      def on_connect(self, session_flag, rc, userdata):
              print("on_connect:%d,rc:%d,userdata:" % (session_flag, rc))
              self.linkkit.subscribe_rrpc_topic("/${YourProductKey}/${YourDeviceName}/user/get")

      其中Topic:/${YourProductKey}/${YourDeviceName}/user/get僅為示例。如果您要使用到其他自定義Topic的能力,需要自行替換。

    所有的RRPC請求處理完成后,必須通過thing_answer_rrpc進行回應,id為RRPC請求的ID,payload為返回報文的payload

    針對此類的RRPC,物聯網平臺云端SDK可以通過RRpc接口進行調用,并獲得同步的返回結果。

  • RRPC使用:物模型服務

    通過設置on_thing_call_service的回調來處理同步類型的service請求。

    linkkit.on_thing_call_service = on_thing_call_service
    ...
    def on_thing_call_service(self, identifier, request_id, params, userdata):
        print("on_thing_call_service: identifier:%s, request_id:%s, params:%s" % (identifier, request_id, params))
        ...
        self.linkkit.thing_answer_service(identifier, request_id, 200, {}) 

    所有的service請求處理完成后,必須通過thing_answer_service進行回應,request_id為請求的request_id

    針對此類的service,云端SDK可以通過InvokeThingsService接口進行調用,并獲得同步的返回結果。