基于MQTT的智能家居程序框架

今日头条

1184人已加入

描述

实验设备:STM32F103C8T6开发板,ESP8266WIFI模块

一、本实验使用手机控制开发板,就要使用到发送数据

简单地理解:手机就是源,开发板就是目的

但是我们在网络通信里面就不能这么去说,我们需要涉及到设备地址操作。

在网络通信中,源和目的我们如何去理解那,此时要用到IP。仅仅有IP还是不足够很清晰的去寻找某个设备,此时就要添加端口,才可以精准的去寻找某个设备。

源有IP地址+端口,目的有IP地址+端口

程序

图1

程序

图2

三、网络基础知识

1、传输数据的三要素:

源:发出数据的设备

目的:数据接受的目标

数据:数据本身(数据+数据的长度)

例如:

memcpy(endaddr, startaddr, len);//endaddr是数据的放到目的地址,startaddr是开始的数据地址

网络传输数据中:

源:IP+端口

目的:IP+端口

数据:数据本身(数据+数据的长度)

二、公网IP不足

什么是公网IP:假设有一个互联网,凡是能接入互联网的IP地址,都可以称之为公网IP。

IP不足问题:在传输数据时,每个设备都会涉及到IP,当设备过于多时,会出现IP不够使用的问题。

程序

图3

什么是私网IP:在家、公司中,使用手机或者电脑连接网络,此时手机和电脑可以称之为私网IP。

什么是局域网:在同一个路由器下的所有设备,都是在同一个局域网里。

私网IP是可以相同的,因为我们使用路由器进行连入互联网。而路由器则是用到的是公网IP,公网IP是不可以相同的。

路由器则变成了不同局域网的私网IP到私网IP之间传输信息的中转站。

解决公网不足问题,不同局域网下私网IP发送数据到私网IP过程

例如:

①主机A的局域网IP是10.1.1.100,它使用端口1025,去访问公网211.100.7.34

②但是它没有公网IP,路由器此时就要修改这个数据包了,路由器就把数据包里的(10.1.1.100:1025)改成自己的IP和端口(162.105.176.65:16384),发出伪造的数据包。

③服务器收到后,返回数据给(162.105.176.65:16384)

④路由器收到数据后查表:

⑤这是主机A要我取的数据,于是把数据包里的目的(162.105.176.65:16384)改为(10.1.1.100:1025),

并发给主机A

⑥主机A收到数据

三、实际应用

手机如何才能与开发板通信?

硬件上理解:中间加入服务器,通过服务器中转。

协议上理解:本次实验使用MQTT

程序

MQTT

MQTT简单理解:

当观众看电视过程中,想去选择湖南卫视。此时就需要向服务器订阅,说我想看湖南卫视,此时服务器向频道发布者说,发布者接到订阅后,然后发布到服务器。此时观众就可以在电视中看到湖南卫视。

程序设计:

软件设计分为三层:

①网络设备层:负责设备初始化、数据收发

②MQTT协议层:负责数据的解析、打包

③应用层:根据数据控制设备

下个文章,我们细谈MQTT协议,以及程序框架。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分