接收设备端消息,在_on_connectd函数里订阅了mqtt.json配置文件里的一下主题:

    1. sensor/data 设备的遥测数据
    2. sensor/connect 设备连接
    3. sensor/disconnect 设备断开连接
    4. v1/devices/me/attributes/request 获取设备属性

    1、设备遥测数据消息

    1. request_handled = self.put_data_to_convert(converter, message, content)

    put_data_to_convert:

    1. def put_data_to_convert(self, converter, message, content) -> bool:
    2. if not self.__msg_queue.full():
    3. self.__msg_queue.put((converter.convert, message.topic, content), True, 100)
    4. return True
    5. return False

    设备遥测数据是直接扔到消息队列__msg_queue里去的,没有做处理,在ConverterWorker线程里处理好了再交由gatewayservice处理

    2、设备连接消息

    1. self.__gateway.add_device(found_device_name, {"connector": self}, device_type=found_device_type)

    3、设备断开连接消息

    1. self.__gateway.del_device(found_device_name)

    4、获取设备属性消息

    1. self.__gateway.tb_client.client.gw_request_shared_attributes(
    2. found_device_name,
    3. [found_attribute_name],
    4. lambda data, *args: self.notify_attribute(
    5. data,
    6. found_attribute_name,
    7. handler.get("topicExpression"),
    8. handler.get("valueExpression"),
    9. handler.get('retain', False)))

    5、设备的回复服务端的rpc消息

    1. if self.__gateway.is_rpc_in_progress(message.topic):
    2. self.__gateway.rpc_with_reply_processing(message.topic, content)
    3. return None

    说明:把消息交由gatewayservice处理