MQTT Adapter Node¶
提醒
还未迁移到 Adapter 3.0, 推荐先使用 MQTT_adapter
提醒:需要使用 CodeLab Adapter 最新版本。
通过继承 AdapterMQTTNode,我们可以利用 MQTT 通道构建 Adapter Node,一旦你理解 MQTT message 的消息细节,就可以在任何平台任何设备上构建 Adapter Node,从超级计算机到单片机。
如果你对 Adapter Node 概念不熟悉,可以参考这里。
依赖¶
pip install codelab_adapter_mqtt_client
Demo¶
依然以反转字符串为例:
import json import time from codelab_adapter_mqtt_client import AdapterMQTTNode from codelab_adapter_mqtt_client.topic import * from loguru import logger class HelloWorldMQTTNode(AdapterMQTTNode): def __init__(self, *args, **kwargs): kwargs["logger"] = logger kwargs["external_message_processor"] = self.external_message_processor super().__init__(*args, **kwargs) self.NODE_ID = "eim" def external_message_processor(self, topic, payload): self.logger.debug(payload) content = payload["zmq_payload"]["content"] NODE_ID = payload["zmq_payload"]["NODE_ID"] if type(content) == str: content_send_to_scratch = content[::-1] # 反转 payload["zmq_payload"]["content"] = content_send_to_scratch self.publish(payload) if __name__ == "__main__": node = HelloWorldMQTTNode() try: node.client.on_message = node.mqtt_on_message node.run() except KeyboardInterrupt: print('Control-C detected. See you soon.') node.clean_up()
运行¶
打开 CodeLab Adapter,运行extension_mqtt_gateway
插件,该插件在 zeromq 与 mqtt 直接进行转换。
运行 helloworld_mqtt_node:python helloworld_mqtt_node.py
让我们在 CodeLab Scratch3 中尝试一下反转字符串:
成功!
AdapterMQTTNode 已经开源在 GitHub 上,如果你对任何细节感到好奇,就把盒子拆开来看吧。
Debug¶
新开一个窗口,运行codelab-mqtt-monitor
(随 codelab_adapter_mqtt_client 一起安装),你将能够看到往来的 MQTT message 的内部细节。
想象空间¶
当你通过codelab-mqtt-monitor
了解了 MQTT message 的内部细节,你就可以使用任何语言的 MQTT client 来构建 Adapter Node!你甚至可以在一个单片机中构建 Adapter Node!