当前位置: 首页 > news >正文

大话 IOT 技术(4) -- 答疑篇

文章目录

    • 前言
    • 手机能与设备直接通信吗
    • 多协议能统一用一个吗
      • 假设我们统一用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.dtcms.com/a/360351.html

相关文章:

  • [光学原理与应用-355]:ZEMAX - 设置 - 系统检查与系统测试
  • k8s三阶段项目
  • 物理气相沉积(PVD)技术及应用现状和发展趋势
  • FreeRTOS深入理解
  • 数据库索引abc,请问查询哪些字段能命中索引
  • 平滑滤波器(Smooth Filter)的MATLAB与Verilog仿真设计与实现
  • 关于Ctrl+a不能全选的问题
  • 封装哈希表
  • 机器视觉opencv教程(四):图像颜色识别与颜色替换
  • 【开题答辩全过程】以 基于SpringBoot的流浪猫狗领养系统为例,包含答辩的问题和答案
  • C语言中如何使用NULL
  • 【Linux】系统部分——ELF文件格式与动态库加载
  • Asible管理变量和事实和实施任务控制
  • 科学研究系统性思维的方法体系:研究设计相关模版
  • 【Unity3D实例-功能-切换武器】切换武器(一)动画配置
  • IAR 用JLINK 下载代码设置步骤
  • FLEXPART 拉格朗日粒子扩散模式建模技术及研究大气污染物源-汇关系中的实践
  • 订餐后台管理系统-day06菜品分类模块
  • 工业软件领域SAAS模式为何不能得到普及?
  • 上海交大具身导航中的感知智能、社会智能和运动智能全面综述
  • 网络端口与服务对应表 - 白帽子安全参考指南
  • Android开发-设计规范
  • 安装proteus,并实现stm32仿真
  • 当 AI 开始 “筛选” 信息:算法偏见会加剧认知鸿沟吗?如何构建公平的 AI 生态?
  • 深入解析 Oracle 并发与锁机制:高并发环境下的数据一致性之道
  • Log File Sync等待事件分析
  • linux日志同步
  • strtok()字符串分隔函数
  • OpenStack 01:介绍
  • Batch Normalization 批归一化