嵌入式开发记录-day60 智能家居简介、mqqt协议测试

1、最终实现的效果:

  1、实现的框架结构:

  

 

  2、手机端控制设备(LED、蜂鸣器、继电器、步进电机),在终端响应;

2、为什么需要这样做:

  1、本次的控制端与响应端是在广域网下通信,因此引入了云服务器;

  2、如果控制端需要控制多个终端,引入云服务器更加方便(控制端如何准确找到多个终端);

  3、如果控制端对同一类设备发送不同的命令格式,终端需要有区分性的解析请求格式。也就需要用到json;

3、重点学习对象:

  1、如何将mqtt协议搭建、移植到开发板上(广域网下找到多个终端);

  2、json的数据格式(解析不同的数据格式);

4、MQTT协议

  1、mqtt协议是一种基于订阅者和发布者的一种轻量级通信协议;

  2、基于TCP/IP协议基础上开发的一种协议;

  3、MQTT协议实现的方法有多种,其中比较强大的是Mosquitto

  4、三种角色:

    消息发布者:对应于控制终端,控制端发出控制命令;APP

    消息转发者:对应于服务器,用于消息转发;云服务器;

    消息订阅者:对应于响应终端,用于命令解析,响应动作;开发板;(通过订阅,可使服务器找到自己)

5、Ubuntu下MQTT协议测试:

  1、安装MQTT

sudo apt-get install mosquitto   // 安装mosquitto

sudo apt-get install mosquitto-clients  // 安装mosquitto的客户端

  2、两个窗口之间通信测试

    1、主机启动mosquitto服务

service mosquittos start   // 启动服务

ps -ef|grep mosquitto   // 查看服务是否启动

  

  2、新打第二个终端

mosquitto_sub -h localhost -t "mqtt" -v
// -h 指定要连接的MQTT服务器(IP),这里使用的是本机,也可以直接使用本机的IP
// -t 订阅主题,此处为mqtt,所以主题为mqtt
// -v 打印更多的调试信息

  

 

   运行完成,阻塞在这里,等待接收数据;订阅者,相当于开启了客户端,等待服务器发送数据;

  3、新打开第三个终端

mosquitto_pub -h localhost -t "mqtt" -m "hello MQTT"
// -h 指定要连接的MQTT服务器,这里连接的是本机,所以是localhost,也可以是要连接的设备的IP地址
// -t 订阅主题,此处为mqtt
// -m 指定消息内容,这里发送的是Hello MQTT

  运行完成,等待下一次发送数据;开启的发布者,相当于服务端发送数据;对应于控制端;

  此时订阅端接收的数据:

  

 

 

 

 

   

 

posted @ 2020-12-13 12:56  笑不出花的旦旦  阅读(751)  评论(0)    收藏  举报