Difference between revisions of "MQTT communication applications"
(→MQTT on BPI:bit) |
(→MQTT on BPI:bit) |
||
Line 71: | Line 71: | ||
finally: | finally: | ||
c.disconnect() # 调试程序事重开服务,要记得收尾,否则将重启板子才可以继续。 | c.disconnect() # 调试程序事重开服务,要记得收尾,否则将重启板子才可以继续。 | ||
+ | |||
+ | hese are concrete examples of MQTT and should run as follows |
Revision as of 19:58, 23 February 2019
About MQTT
MQTT today is an important part of the Internet of things, the service of outer complex security functions, architecture design belongs to the data forwarding servers at the same time, for example, an MQTT server, can solve different types of two sets of data exchange system, through subscription and transceiver interface design, it will only responsible for both ends to an exchange of data.
MQTT server mode of transmission can be thought of as everyone through their internal engagement after entering a public chat room, if you want to communicate with others, you can create a chat room (push), you can also add other people chat room (subscription), server regardless of how to communicate between you, it will only help you to the chat room set up and free exchange of information between you can, also have completed the transfer.
for example:
- Xiao Ming want to send a message to the little red, so xiao Ming can create a topic (topic) of the chat room for sending (publish), then the little red to join (subscribe) this topic (topic) of the chat room, so she could get the xiao Ming's information, the old version of the MQTT chat room is public, between each other is free to join others' topic, also is the others can receive xiaoming, privately, but now the MQTT server allows you to define permissions (config), Let xiao Ming's topic only xiao hong can join.
- Code between under this architecture, we are the client code, also do not need to write the server receives the program to another, as long as the two sides agree on the data of the interface agreement is ok, because the communication between the too transparent, so the security so far are too dependent on the surface of certification, will be back to authority and to improve the communication control.
Prepare the MQTT server
Use a common MQTT server. If you do not have a public server, click here to enter The communication cat shares the MQTT server online client.Note that the ports of the WS and TCP servers are not the same, so you need to change the server port when you connect
You can also test out the MQTT service directly online, subscribing to your own topic messages and sending your own.
If you don't want to use the Internet's own MQTT server, you can use the local mosquitto Windows server environment pack, Just unzip and write out the mosquitos, and the config file is the mosquito.conf
It won't show any data after running normally, otherwise it will report an error and flash back, so don't worry about whether it is working or not, if you need to confirm whether it is working properly, you can follow the following tutorial to try.
MQTT on BPI:bit
According to the previous tutorial:2 WiFI wireless connection and entering wireless mode, this tutorial confirms that the board has a networking configuration and that MQTT service can be started when the network is ready
Now prepare the following Python code, server_mqtt.py
import wifi wifi.start() server_ip = "mq.tongxinmao.com" # 在线公共的 MQTT 服务器 client_id = "umqtt_client" # 客户端 ID ,随意定义,用来标识自己发出的数据。 import time from umqtt.robust import MQTTClient try: # see https://github.com/micropython/micropython-lib/blob/master/umqtt.simple/umqtt/simple.py c = MQTTClient(client_id, server_ip, 18830) # 配置连接,这个是连通信猫的服务器配置,端口是 18830,一般默认的是 1883 c.DEBUG = True # 输出 Debug 信息 def sub_cb(topic, msg): print((topic, msg)) c.publish(topic, msg) # 无论收到什么订阅的信息都以同样的主题和数据传回。 c.set_callback(sub_cb) # 把向远端订阅(subscribe)的数据接收回调处理。 if not c.connect(clean_session=False): c.subscribe(b"foo_topic") # 订阅一个 foo_topic 的主题(topic) c.publish(b"foo_topic", b"hello") # 向 foo_topic 的主题(topic)发送 hello 字符串。 while 1: # 让芯片运行慢一点,便于观察现象。 time.sleep(1) # 等待处理 MQTT 的数据 if c.check_msg() is not None: c.wait_msg() # 没数据可以处理的时候可以做点别的事情 else: print('other operator') finally: c.disconnect() # 调试程序事重开服务,要记得收尾,否则将重启板子才可以继续。
hese are concrete examples of MQTT and should run as follows