原文链接点击打开链接

微信公众号(嵌入式企鹅圈)将新开辟专栏撰写物联网完整解决方案的相关技术,包括物联网架构、云服务、微信接口开发、智能设备开发等。鉴于本人研发的进展和需要时间进行原创总结,物联网专栏更新会比较慢,近期嵌入式企鹅圈仍以嵌入式Linux技术开发经验分享为主。

本文从场景和技术的角度去理解物联网技术和方案的演进,纯粹是个人观点,可能与主流定义稍有偏差。

一、物联网与物联设备

本人对物联网的理解是物联设备组成的网络,因此物联网需要两个要素,一是设备能够互联,另一个是能够组网。物联网往往又跟智能硬件概念相结合,当今物联网产品形态往往又带有无线连接的特点(有线最主要的弊端就是布线麻烦)。因此能够支持互联、组网、无线三个特点的物联设备技术就是常见的蓝牙和wifi了。蓝牙是近距离通信,穿墙能力差;而wifi距离远,可穿墙,但是功耗比较高。ZigBee其实通信距离比蓝牙远,功耗也比wifi低,看起来是比较理想的物联技术,但是ZigBee的组网能力比较差,带宽低,传输慢。ZigBee更多用在工业控制领域。

手机是现代社会每个人不可或缺的产品,蓝牙和wifi是手机的必备模块,所以手机是最大的物联智能设备。另外,由于人是物联网的直接使用者,因此几乎所有的物联解决方案都是围绕手机用户展开。

二、物联场景演进

1.手机直接控制物联设备架构

下图是wifi物联架构示意图:

手机连接并控制物联设备是物联技术的基础,第一种方式是手机和硬件控制设备都以client的方式连接路由器,这样手机和硬件控制设备都能获得一个动态的IP,这样手机可以通过socket通信方式来控制硬件控制设备。第二种方式是硬件控制设备带有wifi AP热点功能,手机以wifi client连接上AP,AP的IP是固定的,因此手机也能够对硬件控制设备进行控制。

这种物联方式一般只是演示的模型,实际应用很少。因为它的缺点显而易见,我们都知道socket通信需要知道通信对方的IP,因此手机上的APP控制硬件设备时需要填入设备的IP。第一种方式的IP是动态的,需要通过路由器的web控制页面(一般电脑连接后浏览器输入192.168.1.1)获得,这在商用应用中不可能存在。第二种方式也需要手机APP输入固定的IP,控制不同的设备就得输入不同的IP,用户体验不好。而且这种物联跟遥控没有本质的区别,不利于获取用户的信息。而获取用户的信息并提供优质服务才是物联网的核心要素。

2.基于独立后台服务的物联架构

下图是wifi物联架构示意图:

这种物联架构中的独立服务器是以域名的方式存在,这样可以直接解决动态IP不固定的问题。另外,这种物联架构中手机和硬件控制都需要以用户名注册和登陆的方式来访问独立服务器,并由服务器通过心跳技术来确认手机和硬件控制设备的在线状态。手机和硬件控制在服务器看来都是普通的物联设备,它们在服务器看来都具有唯一的用户ID,物联设备登陆服务器时服务器会获取到用户ID所在设备的IP地址。而手机APP控制硬件设备是以用户ID为依据进行控制,其先将用户ID送往服务器即可获取到对应的IP地址。后续控制可以通过服务器,也可以绕过服务器直接进行。

类似web互联架构在互联网应用广泛存在,如QQ。每台手机都以QQ账号和密码进行登录,登录后,QQ后台服务器会获知每个用户所在手机的IP地址。两个QQ用户通信时会先通过账号来获取对方的IP,并进行下一步通信。这些访问细节都已经封装在QQ客户端程序中,QQ使用者并不需要理会。用户间的通信可能会经过QQ服务器,也可能绕过服务器进行。如文字信息一般会送往QQ服务器进行信息过滤再送到对方,而QQ视频应该是双方直接通过IP进行通信。

这种架构在物联领域曾经是主流的架构,但是其固有的缺点也约束了它的发展壮大。这种架构中,独立服务器一般是由硬件控制设备的销售厂商开发维护的,另外其还需要向购买硬件设备的用户提供手机APP,以让用户能够进行远端的硬件控制。如小孩监护摄像头,厂商需要开发手机监护APP给用户安装使用。可以想到,用户每购买一种物联设备,都需要安装一个不同的APP。这直接影响了用户体验。用户一般是不情愿安装很多的手机APP的,不仅安全无法保障,手机布满控制APP时,要找到哪款设备对应的APP还要花时间。另外,独立服务器的厂商受限于自己的技术储备和运维能力,难以兼容支持第三方厂商的物联设备。

3.基于统一后台服务的物联架构

由第2点,我们自然可以想到,如果有一家实力超雄的厂商能够提供统一的后台服务,并被广大手机用户使用者认可愿意使用,而物联设备厂商按照统一后台服务拟定的协议进行设备生产并接入到统一的后台服务,那大一统的物联网大平台将成为可能。

微信公众号和微信硬件平台得益于腾讯QQ的超大用户量,很自然就承载了这种平台的实现。完全可以预见,微信将是未来物联网的重要支撑平台之一,而小米在手机、智能家居和相关行业的布局也是物联网重要支撑平台的竞争者。微信拟定统一开发的协议,让社会上不同的第三方硬件设备公司接入并获得唯一的用户ID,而小米不仅是统一后台的开发维护者,也是小米不同硬件设备的生产者,两者走的路并不一致。但两者的共同点是后台服务是统一的,两者的隶属公司都是超大体量型企业。

在移动互联网领域,用户基础是非常核心的要素,涉及平台相关的服务,没有超大型体量的企业很难快速构建,顶多只能在垂直领域有所作为。事实上,在微信智能硬件平台出现之前,也有一些企业构建了统一的后台服务,让第三方设备厂商接入。但受限于用户的支持,这些平台都未能为人熟知(也许是我涉猎这方面知识较少,之前有了解过一个平台,后来忘记了)。

这种架构的示意图如下,以微信和蓝牙设备控制为例:

微信公众平台的最核心作用就是给各种不同的外设提供接入并分配唯一的设备ID。微信智能硬件平台的设备ID分配策略包括外设厂商编码和设备编码两个部分。设备编码在统一厂商里面是唯一的。

手机需要关注外设厂商运维的微信公众号,才能通过该公众号的页面发出设备控制指令消息。控制消息会通过微信公众号服务器发往外设厂商独立运维的后台服务器,并由后台服务器作出处理后向外设发出控制消息,该消息会通过微信公众号服务器到手机的微信客户端,而微信控制端调用蓝牙JSAPI来控制蓝牙外设。手机微信要控制外设需要先开启蓝牙并连接上蓝牙外设。连接协议由微信硬件平台制定,称为airsys协议。

微信公众平台是开放平台,支持第三方服务接入,同时提供微信支付、客户接口、用户管理等九大接口供第三方服务调用。微信公众号支持开发者模式,开启后即可以接入第三方的服务。所谓微信开发即是在调用微信提供的接口的基础上完成业务逻辑开发,支持的语言是php,asp等等。如何构建第三方服务器和如何进行微信接口开发另文再述。蓝牙和wifi由于功耗的差异,其互联微信的架构也有差异,在日后的技术实现分享中会详细进行比较。

三、native APP & light APP

在第2种架构,手机要控制外设需要安装外设厂商开发的APP,是原生APP(native APP);而在第3种架构,手机控制外设只需要关注外设厂商运维的微信公众号,微信是手机的原生APP,而每个外设厂商通过微信公众号提供的服务称为轻应用(light APP)。微信是智能手机的首选APP,用户量超大,因此基于微信统一后台服务的物联平台是未来物联网的重要支撑。

物联网架构演进和微信智能设备平台开发相关推荐

  1. 网络架构、云平台和微信公众平台开发接入

    云与后端相关的技术似乎并不属于嵌入式和物联智能硬件开发工程师的范畴,但是嵌入式开发工程师有必要认识成熟的网络架构和相关的云技术,以拓展自己在系统架构方面的视野.大数据分析是物联网背后的核心价值,物联智 ...

  2. 微信公众平台开发教程(九)微信公众平台通用开发框架

    微信公众平台开发教程(九)微信公众平台通用开发框架 一.思考 开发了几个微信项目,一直在思考: 如何将微信相关的处理与业务系统联系在一起? 如何做到彼此分离,且易于扩展? 能否开发一套独立的微信服务框 ...

  3. Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发

    接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...

  4. php 自定义菜单 openid,微信公众平台开发(99) 自定义菜单获取OpenID

    关键字 微信公众平台 自定义菜单 OpenID 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-menu-get-openid.html 在这篇 ...

  5. 《微信公众平台开发最佳实践》——2.1 新浪SAE应用

    本节书摘来自华章出版社<微信公众平台开发最佳实践>一 书中的第2章,第2.1节,作者李骏 边思,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.1 新浪SA ...

  6. 高性能微信公众平台开发

    高性能微信公众平台开发 目前,微信平台的月活跃数已达4.38亿,微信已被越来越多的商家为一大重点营销平台.面对如此庞大的用户群,商家迫切需要提供定制化的服务.那么,如何运营微信公众号成为企业亟需解决的 ...

  7. 微信公众平台开发教程第2篇-----微信开发者接入

    原文地址为: 微信公众平台开发教程第2篇-----微信开发者接入 最近几天在群里看到没有接触过开发的朋友也有在玩微信的公众平台,微信用户到目前已经达到3个亿了吧!!  我不知道伙伴们是因为什么而接触微 ...

  8. 微信第三方平台开发错误码集合,各种 code

    微信第三方平台开发错误码集合 PHP static $codes = array("-1" => "系统繁忙","0" => & ...

  9. 视频教程-微信公众平台开发实战PHP版-微信开发

    微信公众平台开发实战PHP版 互联商通创始人/架构师, 在IT领域摸爬滚打20年的全栈老程序员(架构师.培训讲师).熟悉iOS.Android及LNMP的架构下快速开发互联网相关项目.精通微信和支付宝 ...

最新文章

  1. Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds...
  2. 新手小白零基础搭建个人博客(一)服务器篇
  3. VTK:Matlab之MatlabEngineFilter
  4. matlab 水平投影,科学网—Matlab中如何将投影信息写入到shape文件中 - 朱永超的博文...
  5. k8s的pod资源管理与配置使用凭证的harbor仓库
  6. QPW 行政区划字典表(td_area)
  7. ajax对日期处理,AJAX获取服务器当前时间及时间格式输出处理
  8. 关于zabbix_get 的介绍
  9. 逆向课程第二讲,寻找main入口点
  10. linuxpython安装_Linux安装python3.6
  11. Torch 的安装与基本用法
  12. vbyone接口引脚定义_FMC接口介绍
  13. jmeter并发性能测试工具
  14. 微信小程序 自定义导航栏
  15. 怎样从任务管理器打开计算机,怎么打开任务管理器|任务管理器在哪里打开
  16. android 自定义textview在onlayout中设置setTypeface的时候报错 requestLayout() improperly called by ...
  17. 基于WEB在线音乐工厂的设计与实现
  18. AI巨头们建造的“新世界”,进展如何?
  19. es7.1聚合查询 javaAPI
  20. 院士给自己博士生写的一封信:博士生每天工作12小时只是一个下限

热门文章

  1. Magento开发文档(一):Magento入门
  2. [数据压缩]实验四 DPCM编码
  3. vivo手机用蓝牙耳机播放声音调最小可还是觉得大,如何解决????
  4. 面霸吐血整理:我是如何面试了10家公司,拿到offer的?
  5. scratch玫瑰花
  6. 2021年同等学力申硕计算机专业国考真题
  7. mysql事务能支持多大_MySQL事务调优
  8. Intertek与浩洋电子达成战略合作 深耕舞台灯具市场
  9. 如何测量芯片电源的上电时序
  10. PRISEMI芯导产品推荐 | 支持路径管理功能的3A单节锂离子电池充电IC——PSC2965