赞
踩
在这次的项目开始时,我们使用了ESP32开发板,当然,需要给设备联网,这个在代码中添加,
在使用Easy IoT时,需要连接一个可以访问网络的WiFi,
在使用SIoT时只需要提供一个WiFi就可以,形成局域网,手机电脑的WiFi都可以
目录
MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议,由 IBM 发布。
MQTT 可以被解释为一种低开销,低带宽占用的即时通讯协议,可以用极少的代码和带宽的为连接远程设备提供实时可靠的消息服务,它适用于硬件性能低下的远程设备以及网络状况糟糕的环境下,因此 MQTT 协议在 IoT(Internet of things,物联网),小型设备应用,移动应用等方面有较广泛的应用。
IoT 设备要运作,就必须连接到互联网,设备才能相互协作,以及与后端服务协同工作。而互联网的基础网络协议是 TCP/IP,MQTT 协议是基于 TCP/IP 协议栈而构建的,因此它已经慢慢的已经成为了 IoT 通讯的标准。
1.基本特点
MQTT是一种发布/订阅传输协议,基本原理和实现如下;
MQTT 协议提供一对多的消息发布,可以解除应用程序耦合,信息冗余小。该协议需要客户端和服务端,而协议中主要有三种身份:发布者(Publisher)、代理(Broker,服务器)、订阅者(Subscriber)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,而消息发布者可以同时是订阅者,实现了生产者与消费者的脱耦
2.基本概念
一个使用 MQTT 协议的设备、应用程序等,它总是建立到服务器的网络连接。
MQTT 服务器也称为 Broker(消息代理),以是一个应用程序或一台设备。它是位于消息发布者 和订阅者之间
Easy Iot是一个旨在简化和加速物联网设备的连接和管理的物联网平台。它提供了易于使用的工具和界面,使用户能够轻松地将各种设备和传感器连接到云平台,并实时监控和控制这些设备。平台使用MQTT协议与开发板进行通信。MQTT是一种轻量级的通信协议,专为物联网设备和网络环境设计。它采用发布-订阅模式,其中消息发布者(可以是手机,也可以是物联网设备)将消息发送到特定的主题(Topic),而消息订阅者(可以是手机,也可以是物联网设备)则订阅感兴趣的主题,以接收相应的消息。
理解了发布者和订阅者的概念,也就好理解本实验设置Topic的用途了。Topic0的发布者是电脑,发布内容是指令,订阅者是开发板,用于接收电脑指令。
http://iot.dfrobot.com.cnhttp://iot.dfrobot.com.cn
(1)在首页右上角选择“注册”,按提示注册账号
(2)登录平台后选择“工作间”,在左边查看账号、密码信息 (点击小眼睛就可以看得到)
(3)新添加1个设备,命名为“送文件机械人”,了解Topic概念,下一步编程会用到
- #include <DFRobot_Iot.h>
- // 函数声明
- void obloqMqttEventT0(String& message);
- // 静态常量
- const String topics[5] = {"vUbidcvIg","","","",""};
- const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,NULL,NULL,NULL,NULL};
- // 创建对象
- DFRobot_Iot myIot;
-
-
- // 主程序开始
- void setup() {
- Serial.begin(9600);
- myIot.setMqttCallback(msgHandles);
- myIot.wifiConnect("Xiaomi 13", "123456789");
- while (!myIot.wifiStatus()) {}
- myIot.init("iot.dfrobot.com.cn","AvPM-----","","AvPGi-----",topics,1883);
- myIot.connect();
- Serial.println("hello");
- while (!myIot.connected()) {}
- myIot.publish(topic_0, "hello");
- }
- void loop() {
-
- }
-
- // 事件回调函数
- void obloqMqttEventT0(String& message) {
- Serial.print(message);
- }
在这里把vUbidcvIg改成自己的Easy IoT的主题就行
const String topics[5] = {"vUbidcvIg","","","",""};
在这里把"AvPM-----"改为自己的lot_id,vvv"AvPGi-----"改为自己的lot_pwd
myIot.init("iot.dfrobot.com.cn","AvPM-----","","AvPGi-----",topics,1883);
登录Easy Iot平台查看Topic0接收到的信息,也可以在这里发送信息
在这里我们就可以看到开发板发送过来的信息
在手机微信搜索“Easy Iot”小程序,用在电脑上注册的账号登录平台,界面和电脑有一定区别,但操作逻辑和功能是一样的,可以按照博主的步骤来做。
SIoT为一个为教育定制的跨平台的开源MQTT服务器程序,S指科学(Science)、简单(simple)的意思。SIoT支持Win10、Win7、Mac、Linux等操作系统,一键启动,无需用户注册或者系统设置即可使用。
SIoT为“虚谷物联”项目的核心软件,是为了帮助中小学生理解物联网原理,并且能够基于物联网技术开发各种创意应用。因为其重点关注物联网数据的收集和导出,是采集科学数据的最好选择之一。
这里博主分享了SIoT的包,下载使用即可,也可以去官网下载
下载后打开我们的目录下的应用程序
在最下面找到127.0.0.1
然后在浏览器中复制改地址,在后面加上:8080(要注意这里是英文输入法才行)
这里的账号:siot,密码是:dfrobot
- import siot
- import time
-
- SERVER = "127.0.0.1" #MQTT服务器IP
- CLIENT_ID = "" #在SIoT上,CLIENT_ID可以留空
- IOT_pubTopic = 'xzbot/001' #“topic”为“项目名称/设备名称”
- IOT_UserName ='siot' #用户名
- IOT_PassWord ='dfrobot' #密码
-
- siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)
- siot.connect()
- siot.loop()
-
- a= ''
-
- try:
- while True:
- a=str(input('请输入:'))
- siot.publish(IOT_pubTopic, "value %s"%a)
- print(a)
- except:
- siot.stop()
- print("disconnect seccused")
- import siot
- import time
-
- SERVER = "127.0.0.1" #MQTT服务器IP
- CLIENT_ID = "" #在SIoT上,CLIENT_ID可以留空
- IOT_pubTopic = 'xzbot/001' #“topic”为“项目名称/设备名称”
- IOT_UserName ='siot' #用户名
- IOT_PassWord ='dfrobot' #密码
-
- def sub_cb(client, userdata, msg):
- a=str(msg.payload)
- #print("\nTopic:" + str(msg.topic) + " Message:" + a)
- print(a[-2])
-
- siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)
- siot.connect()
- siot.subscribe(IOT_pubTopic, sub_cb)
- siot.loop()
-
- try:
- while True:
- pass
- except:
- siot.stop()
- print("disconnect seccused")
打开我们的设备名称
在这里可以看到开发板端发送过来的信息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。