mqtt之互联网知识基础
mqtt之互联网知识基础
tcp/ip协议划分为4层
从底层向上介绍
1.链路层 实现设备之间的物理联系 esp8266 利用wifi联网时有三种工作模式 sta ap sta/ap
2.网络层 设备可以通过链路层联网 但是无法实现设备间的数据通讯,因为网络设备没有明确的表示, 通过ip协议为联网设备提供ip地址 192.168.0.2 子网掩码 与网络设备相同,网络本身也有自己的地址 如192.168.0.2中192.168.0就是子网地址 为了解决ip地址中那部分是子网地址 就需要子网掩码 255 . 255 . 255 . 0
mac地址 网络设备要想实现通讯,设备之间不光要知道彼此的ip地址,还要知道mac地址
网络中的每个设备都有一个独立的mac地址
这种让两台完全不认识彼此的设备获取到对方IP和MAC地址的协议就是ARP了
3.传输层 网络设备通讯时,数据丢失和受损的情况经常出现 tcp和udp解决这一问题
一个是对传输速率高 udp 用于网络游戏以及语音聊天应用
一个是对传输数据准确性高tcp
4.应用层 http mqtt
mqtt 发布者 服务器 订阅者模式
http 请求 响应机制 它常被用来传输网页数据
5 ip 公网ip与局域网ip
局域网ip就是平时我们所熟悉的 192.168.0.1 一般是路由器给我们分配的局域网地址 可以根据局域网ip进行局域网内的通讯
不同的局域网组成了我们现在的互联网
6 什么是端口 为什么会用到他?
电脑上出现多个程序想要同时联网 通过ip地址发送了那个数据包 但是电脑不知道把这些数据包发给谁 或是谁发的 这个时候端口就有用了 理论上一台计算机有65535个端口
7什么是端口映射为什么要用到它?
当一个局域网内的两台电脑 都运行微信程序 微信都需要用到1234来传输数据端口映射
使用pubsubclient 库来进行创建mqtt连接
1.创建wifi连接对象 mqtt连接对象
WiFiClient espClient;
PubSubClient MQTT_client(espClient);
2定义 mqtt服务器 和端口号
const char *mqtt_broker = "139.9.128.158";
const int mqtt_port = 1883;
3.
MQTT_client.setServer(mqtt_broker, mqtt_port); //设置MQTT服务器地址与端口
MQTT_client.setCallback(callback); //设置MQTT接收数据回调函数
4.static void callback(char *topic, uint8_t *payload, uint16_t length); // MQTT接收回调函数
进行编辑
5.mqtt进行连接
MQTT_client.connect(imei.c_str(), mqtt_username, mqtt_password, Topic_INFO.c_str(), 0, true,
get_willMessage(off_line).c_str()); //连接MQTT服务器 设置遗嘱
入口参数 imei mqttuser pass topic qos 是否保存 遗嘱;
6. MQTT_client.publish 发布主题
7.订阅主题 MQTT_client.subscribe
在这里 把信息转化成json格式 去发布
三个主题 一个公共的 用于状态
控制类的 状态类的
更多推荐
所有评论(0)