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

小白能懂:嵌入式进阶:RTOS嵌入式系统框架

第一章 嵌入式常用裸机编程框架
第二章 面向对象编程基础
第三章 ESP8622物联网基础
第四章 STM32与ESP8266物联网编程
第五章 物联网编程优化
第六章 以OLED为例介绍RTOS面向对象编程
第七章 基于MQTT的智能家居程序框架


本节与本系列第三、四、五章联系较为紧密,建议一起观看,本节的主要内容是对前面的功能改进,不止在同一局域网中完成物联网的功能

文章目录

    • **小白能懂:嵌入式进阶:RTOS嵌入式系统框架**
  • 前言
  • 一、网络基础知识
    • 1.IP和端口
    • 2. 公网IP与私网(局域网)IP
    • 3. 如何访问私网设备
  • 二、怎样传输协议
  • 三 物联网程序设计
    • 1.功能分析
    • 2.程序分层
  • 总结


前言

学习韦东山老师的七天物联网实战及直播课相关内容,以其课程笔记为骨,记录一下学习的过程,可能会加入一些自己的感想。
最后欢迎点赞、收藏与评论交流!


一、网络基础知识

1.IP和端口

数据传输的本质是从一个地址将数据拷贝保存到另一地址,常用的方式为memcpy(add1,add2,len),总结为网络数据的传输的三要素:数据源,目的,数据。
可以理解端口与app相关,当打开新的app或者重新打开APP的时候,端口号才会发生变化。
在这里插入图片描述
IP和端口表示源和目的的具体地址,同一电脑或者服务器的IP地址固定,但同一IP的不同的应用或者功能主要通过端口来区分。

2. 公网IP与私网(局域网)IP

公网IP是指在互联网中可见的IP,但我们日常生活中的设备太多了,为了减少公网IP的负担,引入私网IP,说的很模糊,其实就是在家的各种设备通过路由器来传输数据,此时路由器的IP就是公网IP,连接路由器的手机、电脑就是私网IP。

在这里插入图片描述

私网IP访问公网设备步骤和示意图如下所示:

  • 主机A的局域网IP和端口号是10.1.1.100:1025,想要去访问公网211.100.7.34,由于它没有公网IP,多以只能求助于路由器
  • 路由器把主机A数据包里的IP和端口号(10.1.1.100:1025)改成自己的IP和端口(162.105.176.65:16384),然后发出伪造的数据包
  • 服务器收到后,将自己的数据返回给目的地址路由器(162.105.176.65:16384)
  • 路由器根据自己伪造数据包的IP和端口进行查表162.105.176.65:16384,发现是主机A请求的数据,因此会将数据返回给主机A
  • 主机A收到数据
    在这里插入图片描述
    但是借助路由器访问公网IP会导致公网设备无法访问路由器下的私网IP(连接路由器的手机、电脑、摄像头等),因为只有私网IP通过发起访问之后路由器才会分配给局域网设备相应的IP和端口;如果公网IP直接访问路由器里面的私网设备,路由器无法通过查表找到相应的私网设备

3. 如何访问私网设备

我们要实现在任意地方访问路由器下的私网设备(开发板,摄像头)必须添加服务器,通过手机外网控制家里的开发板。
如下图所示(手机192.168.0.2想要访问开发板设备192.168.0.2):
手机访问服务器将自己的数据发布出去,开发板再去访问该服务器可以将手机的数据取出来。
这样服务器里相当于有一个APP,将手机的数据(按约定的相应协议如MQTT)发布缓存下来,然后将其发送给相应订阅的开发板。
在这里插入图片描述

二、怎样传输协议

硬件上要有服务器。
软件上通过MQTT来实现,MQTT的框架如下所述:
内容的发布者进行发送,向服务器发布相应的内容;服务器进行数据的转播;订阅者在服务器上进行数据的订阅,当发现订阅的内容后即从服务器上进行内容的下载。
在这里插入图片描述

三 物联网程序设计

1.功能分析

F103端的主要工作包括通过串口连接服务器,发送数据,接收数据,控制相应的设备;
手机端的主要工作包括连接互联网,发送数据,接收数据,控制相应的设备。
在这里插入图片描述

2.程序分层

程序的分层结构如下所示:
首先是驱动层:本系列使用的硬件模块是ESP8266,需要写的是串口的相应驱动;AT指令的发送与处理;数据接收的处理;
同时我们的驱动层应该预留相应的接口方便以后其他硬件的接入与使用,比如USB-WIFI,或者其他的net_dev。
然后是MQTT的协议层:主要工作是构造data,用esp8622的函数进行发送;进行publish发送与subscribe订阅;
最后是APP层:进行数据处理,提供相应的函数。
在这里插入图片描述


总结

本节主要介绍了基于MQTT的智能家居程序框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/65559.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能家居 —— 串口通信(语音识别)线程控制

文章目录 串口通信线程控制代码mianPro.cinputCommand.hvoiceControl.c测试结果 语音控制部分语言控制模块YS-LDV7 若要完成串口之间的通信,需要再树莓派上完成配置文件的修改,利用测试代码验证串口收发功能是否正常,详情可以参考博文&#x…

智能家居(3) —— 串口通信(语音识别)线程控制

目录 一、串口通信线程控制代码 mianPro.c inputCommand.h voiceControl.c 测试结果 二、语音控制部分 一、串口通信线程控制代码 mianPro.c #include <pthread.h> #include "controlDevice.h" #include "inputCommand.h"struct InputCommand…

[第一步]homekit智能家居,homebridge与homebridge-aqara通信协议

根据这个就可以使用iphone控制灯与开关. 折腾了3个晚上,终于将homebridge安装好,安装之前需要安装一堆的库,比如node.js运行环境等,因为网上资料大部分都是在树莓派上面运行,我是直接在ubuntu上面进行的测试,因为安装会有所区别,但是安装好之后就一样了,安装方法在此我就不写了…

智能家居系统 QT

一 环境范围设置 &#xff08;1&#xff09;界面添加新控件 在mainwindow.ui 添加控件&#xff1a; 控件的类型 文本内容 对象名&#xff08;唯一&#xff09; 是否有槽函数 QLabel <温度< lable_随意 否 QLabel <湿度< lable_随意 否 QLabel <光…

Home Assistant 智能家居自动化

一、Home Assistant 自动化中的一个重要概念——模式 引入模式&#xff0c;用于解决正在执行过程中的同一规则又一次被触发的问题 二、Home Assistant 自动化规则的组成部分 2.1 触发条件Trigger&#xff1a;表示智能家居中事件或状态的转换 可选持续时间(特有) trigger有…

qt实现智能家居系统

一、项目介绍 通过TCP/IP协议实现客户端和和服务端的链接&#xff0c;服务端和下位机通过串口通信的方式链接&#xff0c;传递信息&#xff0c;客户端通过账号登录进入进入智能家居服务系统&#xff0c;账号登录和QQ登录类似&#xff0c;我采用的是数据库的方式实现数据的存储和…

语音识别智能家居控制设计

目录 一、方案流程及技术规格书设计 二、系统硬件电路设计 三、软件编写及调试 四、系统调试测试与分析 前言 随着科学技术的快速发展&#xff0c;人们对生活品质的要求也不断提高&#xff0c;开始追求更好更方便的生活方式。因此&#xff0c;智能家居系统应运而生。智能家…

智能家居之网关

网关诞生的背景 很多物联网终端设备在设计之初就考虑了低功耗、低成本的需求&#xff0c;因此大量的物联网终端设备是靠电池来工作并且需要运行相当长的一段时间&#xff0c;比如油田、农业相关的传感器&#xff0c;且这些终端设备不需要实时与物联网平台通讯&#xff0c;甚至…

智能家居是否可与ChatGPT深度融合?

​ ChatGPT自2022年面世以来&#xff0c;已为亿万网民提供智能问答服务。然而我们是否曾想到&#xff0c;这一人工智能驱动的聊天机器人&#xff0c;是否可为智能家居赋能? 要实现ChatGPT与智能家居设备之间的无缝对话&#xff0c;单单依靠一台终端是远远不够的。ChatGPT必须…

调查报告数据分析怎么做?

调查报告数据分析怎么做&#xff1f;拿到一份调查报告看选题、选题内容、调查的目的&#xff0c;然后清洗数据&#xff0c;分析数据提炼观点&#xff0c;过数据变化规律&#xff0c;揭示事物内在发展变化和趋势&#xff0c;抓住问题的本质和关键。 一、分析数据提炼观点 数据分…

pyqt5制作翻译软件+爬虫

VSCpythonmysql&#xff0c; 文章目录 目录 文章目录 前言 一、详细代码 第一个文件Ui_untitled.py 第二个fy_main.py文件&#xff1a; 第三个 &#xff1a;bd_pachong.py 二、登录界面&#xff1a; 总结 前言 通过pyqt5实现了翻译界面的可视化&#xff0c;利用python爬虫实现了…

给 30 岁左右的你三个职场跃迁/改变命运的建议!

见字如面&#xff0c;我是军哥&#xff01; 通过公众号的后台用户画像数据&#xff0c;我发现我的读者在 26 到 32 岁的年龄阶段的人数最多&#xff0c;所以今天来聊一聊这个话题&#xff0c;你一定要看到最后&#xff0c;会让你少走很多弯路&#xff01; 核心观点主要包括三个…

38岁程序员和你分享4个人生经验!

蓝色关注&#xff0c;回复“1”获取知名公司程序员和产品经理职级 这是我的第「123」篇原创文章 见字如面&#xff0c;我是军哥。 我最近一直想写一篇稍微长点的文章&#xff0c;毕竟内容篇幅有时候决定内容广度和深度。 距离我之前写的那篇文章《一位互联网老兵的五次认知升级…

【我命由我不由天】30多岁的大龄程序员,应该如何保持职场竞争力?

公众号后台回复“学习”&#xff0c;获取作者独家秘制精品资料 扫描下方海报二维码&#xff0c;试听课程&#xff1a; &#xff08;课程详细大纲&#xff0c;请参见文末&#xff09; 目录 回首往事&#xff1a;自己竟没有任何核心优势&#xff01;公司遇到危机时&#xff0c;大…

写给互联网人35岁之后的建议

作者介绍 李凯东 某大厂大数据总监&#xff0c;管理经验丰富&#xff1b; 负责数据、用户、搜索、推荐、AI等&#xff1b; 曾有10年连续创业经历&#xff1b; 产研运全能&#xff0c;国内知名比赛获奖无数&#xff1b; “数据人创作者联盟”成员。 又到了春节&#xff0c…

程序员如何跨越35岁危机?这篇给点干货建议!

职场&认知洞察 丨 作者 / findyi 这是findyi公众号的第83篇原创文章 这两天在我的读者群里做了一个职业小调研&#xff0c;发现关注我公众号的70%以上都是程序员。 毕竟程序员吸引程序员&#xff0c;这也算猿粪吧&#xff0c;哈哈。 这个小调研也引发大家对程序员行业的激烈…

35岁是人生分水岭?一定要做这7件事

在网上看到这样的帖子&#xff0c;说的是35岁以上的员工&#xff0c;有人脉的卖保险&#xff0c;没人脉的跑滴滴&#xff0c;实在不行送外卖。招聘时&#xff0c;35岁以下优先。调整时&#xff0c;35岁以上优化。对绝大数人来说&#xff0c;35岁是一道坎&#xff0c;35岁是人生…

32岁大龄女程序员的职场经历总结,分享重回职场的感受

不知不觉已经三十过二&#xff0c;我2016年研究生毕业就来到了苏州一家国企。我对自己并没有清晰的职业规划&#xff0c;还记得来这家公司面试时&#xff0c;面试官问我&#xff0c;为啥选择我们公司。我说因为他是国企又有互联网公司的性质&#xff0c;即稳定又能写代码&#…

麦肯锡:给20、30岁职场年轻人的14条建议!条条珍贵

点击“技术领导力”关注∆ 每天早上8:30推送 来源&#xff1a; 《麦肯锡决断力》 1、 选择工作的标准: 选择有利于自己成长的公司&#xff1b; 选择可以从事国际性工作的公司&#xff1b; 选择可以充分发挥自身能力&#xff0c;创造出价值&#xff0c;并且可以为社会做出贡献…

给还没到35岁中年危机的程序员们一些建议

前言 上周&#xff0c;我一个同学被柔性辞退了&#xff0c;是一个外企&#xff0c;给了n 1的补偿&#xff0c;十来万人民币。他在那家公司干了三年多&#xff0c;毕业十年换过四家单位&#xff0c;都是国企或者外企。他今年三十四岁&#xff0c;年前就知道要走的消息&#xff…