文章目录

    • 前言
    • 手机能与设备直接通信吗
    • 多协议能统一用一个吗
      • 假设我们统一用http协议
      • 假设我们统一用mqtt协议
    • bypass服务端和设备不能mqtt直接通信
    • 设备必有wifi 和蓝牙功能
    • 设备为什么不能自己连接网络
    • 配网模式是什么
    • 后话

当你迷茫的时候,请点击 物联网目录大纲 快速查看前面的技术文章,相信你总能找到前行的方向

前言

本篇将对前面大话IOT技术系列的一个补充,前面几篇文章中,为了主线剧情简洁流畅,不致于被支线所干扰,有些地方我没有讲的太细,不然很容易掉到另一个坑里面去,同时也会使主线变得杂乱无章,不知所云。

所以本篇将以问答的形式对前面文章中的一些地方进行补充,查漏补缺,本篇就不再拘束,可以天马行空,尽情发挥你的想象,一起探索无尽的可能。

也许,你从中受到启发,顺便引领了一个新的时代……

手机能与设备直接通信吗

问题来自大话 IOT 技术(1) – 架构篇,当时有这么一幅图,手机通过神秘的方式实现了与家里面的设备进行远程通信。

相信读过文章的朋友们后来都知道了答案:中间多了两个服务端,而且又是http协议,又是mqtt协议,绕来绕去的,聪明的你不禁要问,不能直接通信吗?

当然可以直接通信,在我们配网篇中已经有所体现,你猜到了是什么吗?

三,二,一……

答案揭晓:

蓝牙

手机可以和设备直接蓝牙通信,在配网的过程中就得利用蓝牙将wifi信息告诉设备,让它内部设置好wifi信息,之后设备就可以成功连接上网了。

Q:为什么实际生产上不用这种方式控制智能家居呢?

A:因为蓝牙属于近距离传输,一般2~5米,你出个门就控制不了家里的设备了,如果有这样实现的,估计到时候你可能会气的砸手机,这TM什么破智能……而wifi没有距离的限制,无论你在哪儿,无论你身处何方,只要有网就行,它更能满足人们的远程控制欲。

也许以后会有其他的技术,假设还有绿牙,黄牙……也许它们能突破技术天花板,兼容高效,远距离传输,这个想法也不是不可能哈,那样的话,岂不是简化了很多步骤,让中间商无路可走吗?

很好,让我们尽请期待吧……

不过,我觉得最可能实现还是wifi技术,现在是5G时代,也许在以后的 8G,9G时代里面,就能实现万物相互通信呢?

正说着,第二个问题接着来到了

多协议能统一用一个吗

该问题出自上面的问题,也源自于架构篇,又是http协议,又是mqtt协议,绕来绕去的。


人生苦短,打工人何苦为难打工人!

Q:我用一个协议行不行

A:当然可以!why not?不要急着打我,先容我申辩一下。

那么统一用什么协议好呢?没关系,我们一个一个地试……

假设我们统一用http协议

那真是太棒了,不是吗?http 协议是我们最熟悉的协议了,哪哪都有它,可谓是程序界的万精油,协议界的大哥大。

首先在物联网的整个链路中,手机到服务端(bypass 服务)就是通过http请求响应完成的,这条链路前半段可谓是畅通无阻。

那关键就是解决后半段啦,我们可以变一下,简单,安排!


画图容易,实现也不难!

我们只需要在设备上的程序中实现,把设备变成http服务端暴露 api接口给 bypass 调用,bypass 服务想查什么查什么,想改什么改什么,只需要调一个http请求到设备上,设备再进行相应地逻辑处理就完成了,真是太完美了!

上面逻辑有问题吗?没问题啊。

确实没问题,实现起来也是ok的。

那现实中为什么不这样做呢?是我太聪明了?想到了人们想不到的方法?

只能打击一下,你想多了……

归根到底,还是协议间的区别所致。

了解详情请查看 HTTP 与 MQTT 区别

一辆大车HTTP,一辆是小车MQTT

如果是你,你愿意花几十万买辆大货车开车去买菜,还是愿意花几千块钱买个小电驴骑着去买菜

结果不言而喻,HTTP实在大而全,发送的http消息丰富多彩,冗余信息量非常之大,试想你在家里看电影,活生生地被家里面的智能家居抢走网,好脾气的你估计都会骂一声TM的智障设备……

假设我们统一用mqtt协议

这还不简单,安排!

受上面的启发,你可能会直接这么画

但看过架构篇的朋友还是会一眼就看出其中的问题

正确的应该是这样的,我们 mqtt 服务端怎么可以少呢?


这种形式有点像三国势力,那个mqtt 服务端倒像是汉献帝了。

各方势力上表朝廷,封孙权为吴王,封关羽为汉寿亭侯,刘备自领益州牧……

上图也是类似,手机,bypass,设备 全都是mqtt 客户端,通信全投到 mqtt服务端,以此来通知 xx 客户端要做什么。

这样可以吗?我觉得也没什么问题。

正如我们架构篇的实现,后半段的链路是一样的,bypass 服务 和设备间的通信确实是围绕mqtt服务端展开的,信息也是以mqtt 消息传递。

所以有出入的在于前半段链路,手机端与bypass服务端的通信,由原来的 http协议改成了mqtt协议。

那这样会有什么问题呢?

我觉得还是他们协议上的本质区别,mqtt协议消息一般很单一,通常以json格式传输,如果手机端与bypass间的调用都是以application/json方式传输,我是觉得可以这样做,也没有什么不妥。

但事实往往不是理想中的那样饱满,我们的手机可不愿意这样做,它以智能著称,请求,响应多种多样,图片,文档,字节流……

如果把http协议比作是彩电,那么mqtt协议就是个黑白电视机了。

都进入21世纪了,谁愿意重回那个黑白时代?

说到这里,大家就能清楚为什么要两个协议都用了吧?根本原因还是适合

就像是结婚过日子,遇到合适的人才能走的长久,现实中多难找啊!不然就不会有这么多人离婚的新闻了,能找到适合自己的,当然得保护起来,并贯彻下去。

也许有一天,会出来一种新协议,一统 http 与 mqtt,那时候,统一协议的时代才算真正到来!

bypass服务端和设备不能mqtt直接通信

问题出自于大话 IOT 技术(1) – 架构篇,bypass服务端和设备是不能mqtt直接通信的。

所以才会引入mqtt 服务端(broker)


这个是由 mqtt 实现所决定的,mqtt 通信需要有服务端和客户端。

Q:不能mqtt直接通信吗?说的好像很绝对啊

A:当然可以实现mqtt直接通信,那就是bypass服务端与mqtt服务端合二为一,拥有mqtt 服务端的功能就行了

那你愿意重新开发一套mqtt broker吗?

当然不好了,费时费力不说,可靠性也难保证,还是开源项目香啊!

向所有开源开发者们致敬!正是你们无私的奉献,推动了科技的进步和发展!

设备必有wifi 和蓝牙功能

问题出自大话 IOT 技术(1) – 架构篇 与大话 IOT 技术(2) – 配网篇,我们曾在架构篇中找手机与设备的相同点中对比过,在配网的过程中也有体现

Q:为什么设备一定要有wifi和蓝牙的功能?

A:用处不一样,最终目的是为了通过 wifi 实现在手机远程控制设备,也即手机和设备间的通信靠wifi;但是给设备连接网络这第一步得需要手机辅助,在配网的时候就要用蓝牙传递wifi信息,这时就需要蓝牙。

两者缺一不可,缺wifi无法远程通信,缺蓝牙不能帮设备配网

也许有硬件技术的伙伴能在没有蓝牙的条件下也能完成设备连接wifi,但是不适用于普通用户,你不可以让用户去烧录程序,去捣腾一些嵌入式开发的活吧?

设备为什么不能自己连接网络

本问题出自 大话 IOT 技术(2) – 配网篇

Q:设备明明有wifi功能,为什么不能自己连接wifi呢?

A:概念的不同,这就好比你的手机能支持wifi,但是一开始都需要你亲自输入 wifi 账号密码,后面它才能记住并自动重连。

手机就是一台功能强大的设备,而我们普通的设备没有手机的交互页面可以让用户输入wifi账密,那就只能通过其他形式辅助设置账密了。

试想一下,如果设备暴露出一个类似 /set/wifi 的api 接口,那么我们也许就可以省掉蓝牙模块了,直接调用这个设置wifi的接口,多么地简单啊!

又或者以后设备有了操控面板,可以在设备的面板上输入wifi信息设置,这样听上去蛮不错的,也更智能一些,只要成本不是问题,从来就不缺解决方案!

配网模式是什么

问题出自于大话 IOT 技术(2) – 配网篇,一般你给智能家居配网的时候,当你输入完wifi信息后,手机的智能家居app页面就会提示你手动让设备进入配网模式,有的是长按一下设备的某个机械按键,有的是连续按几下。

但无论怎样,都需要手动在设备端触发

Q:什么是配网模式?设备内部进入配网模式都在做什么?

A:配网模式只是一个状态而已,比如你要是喜欢甚至可以用 status=0 来表示,在这个特殊的状态下,需要做到打开蓝牙配对接收wifi消息,再将设备内部某个配置更新下里面的wifi信息,然后设备连上网后,向mqtt 服务端发送一条注册的消息。

通俗地理解就是一个状态,在这个状态下面进行一些特殊的操作而已

后话

这次就不想写后话了,但还是小小地总结一下。

本文采用问答(Q/A)的形式,补充说明了一下前面几篇文章中一些存疑的知识点,同时加入了天马行空的想象力,对未来的技术充满期待……

技术无处不在,首先不能限制想象,有了好的思路,再找到对应的方法,这就是技术的突破,技术的进步!

相信有一天,技术会变得越来越简单,而那一天,需要我们不断地前行,不断地思考和验证。

我相信,会有那么一天的!

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

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

相关文章

机器视觉学习-day14-绘制图像轮廓

1. 轮廓的概念轮廓是目标物体或者区域在图像外部的边界线,通常由一系列像素点相连组成,这些像素点共同构成了一个封闭的形状,这样形状就是轮廓。轮廓与边缘不同:轮廓是连续的,边缘可以连续也可以离散轮廓是完整的&…

Linux shell getopts 解析命令行参数

Linux shell getopts 解析命令行参数getopts语法 getopts 选项字符串 名称 [ 参数 ...]示例1(有前置冒号): while getopts ":hdo:" optname; do ...... done示例1(无前置冒号) while getopts "hdo:" optname…

DeepInteraction++基于多模态交互的自动驾驶感知与规划框架

DeepInteraction++基于多模态交互的自动驾驶感知与规划框架 1 论文核心概念 DeepInteraction++ 提出了一种名为"模态交互"(modality interaction)的新策略,用于自动驾驶中的多模态(LiDAR 和相机)感知任务。其核心思想是不将多模态信息融合为单一表示,而是分别…

忆联参与制定消费级SSD团体标准正式出版! 以“高可靠”引领行业提质增效与用户体验升级

引言​在AIPC爆发、数据价值凸显的当下,存储设备已超越简单容器,成为智能体验基石,其性能与可靠性直接关乎用户效率与资产安全。然而,消费级SSD长期缺乏统一权威的可靠性标准,使厂商缺乏质量对标依据,用户亦…

微服务搭建(SpringBoot + Dubbo + Nacos)

1.项目接口2. 编辑pom.xml和application.yml文件2.1父工程pom.xml<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:s…

android中常见布局及其约束

0 布局的定义 布局可以理解为一种​​容器​​&#xff0c;用于​​组织与排列界面上的控件​​。 布局是一个相框&#xff0c;控件就是你要展示的照片。• 你&#xff08;布局规则&#xff09;决定这些照片怎么排列&#xff1a;是从上到下整齐放&#xff08;LinearLayout&am…

Rust语言能干什么

Rust 语言的应用范围非常广&#xff0c;几乎覆盖了现代软件开发的全部领域。它最初以“系统级语言”身份出道&#xff0c;但现在已经远远超出了这个范畴。下面我从几个关键方向给你梳理一下&#xff0c;Rust 到底能干什么&#xff0c;以及为什么在这些领域它特别有优势。 1. 系…

只需一个设置就可以解决Microsoft Edge浏览器打不开网页的问题

Microsoft Edge是一款功能强大的网络浏览器&#xff0c;预装在Windows 10、11系统中。通过这个简单易懂的教程&#xff0c;学习如何修复Microsoft Edge浏览器打不开的问题。1、打开计算机找到C盘&#xff0c;双击打开&#xff1a;2、打开【用户】➜【Admin】➜【AppData】➜【L…

AI 应用 图文 解说 (二) -- 百度智能云 ASR LIM TTS 语音AI助手源码

文章的目的为了记录AI应用学习的经历&#xff0c;降低AI的入门难度。同时记录开发流程和要点有些记忆模糊&#xff0c;防止忘记。也希望可以给看到文章的朋友带来一些收获。 相关链接&#xff1a; AI 应用 图文 解说 (一) -- 百度智能云 实现 语音 聊天-CSDN博客 AI 应用 图文 …

计算机Python毕业设计推荐:基于Django的博客网站设计与实现【python/大数据/深度学习/机器学习定制】

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、项目介绍二、…

当 AI 开始 “筛选” 信息:算法偏见会加剧认知鸿沟吗?如何构建公平的 AI 生态?

AI 筛选信息的现状与原理​在信息爆炸的时代&#xff0c;AI 筛选信息已成为各领域不可或缺的关键技术。在社交媒体平台上&#xff0c;如抖音、小红书等&#xff0c;AI 根据用户的点赞、评论、浏览历史等数据&#xff0c;精准推送用户可能感兴趣的内容&#xff0c;极大提升了用户…

2023年IEEE IOTJ SCI1区TOP,动态环境下无人机目标覆盖任务路径规划,深度解析+性能实测

目录1.摘要2.问题模型3.算法设计4.结果展示5.参考文献6.代码获取7.算法辅导应用定制读者交流1.摘要 无人机&#xff08;UAV&#xff09;作为物联网应用的重要工具&#xff0c;正广泛应用于智能农业监测、智能交通监测等领域&#xff0c;并逐渐成为国内外研究热点。然而&#x…

计算机视觉(四):二值化

二值化&#xff0c;就是将图像从彩色或灰度模式转换为只有两种颜色&#xff08;通常是黑色和白色&#xff09;的模式。这个过程的本质是设定一个阈值 (Threshold)&#xff0c;将图像中所有像素的灰度值与这个阈值进行比较。 基本原理 二值化的核心原理非常简单&#xff1a; 灰度…

(二)设计模式(Command)

文章目录项目地址一、设计模式1.1 Command Design1. 创建命令接口2. 创建支付的Command类3. CommandScheduler4. 使用1.2 Chain of Responsibility1. 接口创建2. 审批人3. 发起审批1.3 State Pattern1. 创建简单的状态机定义动作和状态状态机使用状态机1.x Iterator1.x Observe…

现代C++性能陷阱:std::function的成本、异常处理的真实开销

1. std::function 的成本 std::function 是一个通用的、类型擦除的函数包装器&#xff0c;它非常方便&#xff0c;可以存储和调用任何可调用对象&#xff08;函数、lambda、函数对象、bind表达式等&#xff09;。然而&#xff0c;这种灵活性是有代价的。 主要成本来源&#xff…

基于Spark的白酒行业数据分析与可视化系统的设计与实现

文章目录有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍一、项目背景与研究意义二、系统整体架构三、系统功能设计四、应用场景与价值五、项目特色与创新点六、总结与展望每文一语有需要本项目的代码或文档以及全部资源&#xff0c;或者部…

织梦会员中心模板调用某个栏目名和栏目下文档的办法

大家在用到织梦dedecms时候&#xff0c;需要在会员中心模板调用栏目的名称和链接&#xff0c;还有某个栏目下的文档要怎么操作呢&#xff1f; 我们都知道&#xff0c;在会员中心模板&#xff0c;直接用dede:type或者dede:arclist标签是不行的&#xff0c;在会员中心调用只能用p…

区块链的法律定位:技术、工具还是资产?

高鹏律师首席数据官&#xff0c;数字经济团队创作AI辅助当我们谈论区块链时&#xff0c;我们在谈论什么&#xff1f;是那串不可篡改的哈希值&#xff0c;是去中心化的信仰图腾&#xff0c;还是藏在代码背后的权利密码&#xff1f;今天&#xff0c;我们不聊技术迭代的炫酷&#…

LeetCode每日一题,2025-8-31

dfs搜索解数独&#xff0c;重点是如何判断当前这位置的board[x][y]是否可以填数字num public class T37 {public static void main(String[] args) {char[][] board new char[][]{{5, 3, ., ., 7, ., ., ., .},{6, ., ., 1, 9, 5, ., ., .},{., 9, 8, ., ., ., ., 6, .},{8, …

Linux 进程信号学习笔记:从概念到实操

一、Linux 信号基本概念1.1 生活角度理解信号我们可以把进程比作等待快递的人&#xff0c;信号就像快递&#xff1a;识别信号&#xff1a;就像我们知道快递来了该 怎么处理&#xff0c;进程对信号的识别是内核程序员预先编写的内置特性&#xff0c;即使信号没产生&#xff0c;进…