这里聊聊扫地机的 IOT 开发

以下内容为本人的著作,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/Xszi1YFxVqpJ7OcOt-lrqw


消费者使用扫地机通常的方式是通过手机APP去遥控它,比如启动清扫,划定清扫区域,设置预约清扫任务,还有启动回充等等。这些功能的实现,都依赖于扫地机的网络接入。业内把这个网络称呼为物联网,目前的接入方式其实都依赖现有的网络基础设施,比如在公网搭建各种 IOT 云服务,方便于终端客户的扫地机设备和手机APP互联互通。

为了实现互联互通,需要和 IOT 云服务对接,这其中包含了两部分的开发任务。其一是,机器端的接入开发任务,一般是用无线 wifi 技术连接家庭用的路由器进而访问公网的 IOT 云服务。其二是,配置云平台后台相关产品的设置。其三是,手机APP端的接入开发任务,通过云服务商的授权API,APP访问和更新机器上传到云服务器的数据缓存,进而和扫地机的用户互动。

说说机器端的联网开发


扫地机既然要访问 IOT 云服务,就必须具有联网的能力,比如通过上面提到的无线 wifi 技术。那么扫地机使用这个无线 wifi 技术是不是就像电脑用网卡上网一样呢?答案是,肯定的。扫地机属于嵌入式设备,使用无线 wifi 技术一般通过在主板上外接 wifi 模块来实现。

由于嵌入式设备的使用场景有着很大的差异,比如设备除了需要访问专门的 IOT 云服务,有的方案商还会提供一些特殊的内置服务进而需要设备能访问其它的网络服务(比如让设备贴心地播放天气预报,那么就需要能访问天气预报服务以获取天气数据。除了这个小功能,你的想象力还惦记着什么呢?欢迎留言!)。

另外,如果生产商对嵌入式设备的成本很敏感,那么在硬件投入上还是省着点吧,毕竟功能的多少还是以硬件为基础的。除了必要的云服务(与APP互联互通的 IOT 云服务)之外,其它功能也不作硬性要求了,那么联网的硬件是不是可以作出一些牺牲,比如专门面向特定的 IOT 云服务,甚至于只接入某个云服务商。

基于目前的使用需求,wifi 模块,可以分为普通 wifi 模组和嵌入式 wifi 模组。

普通 wifi 模组的特点是不内置 wifi 协议和驱动,一般通过 USB 或者 SDIO 等接口和设备主控芯片连接。设备的主控芯片需要支持 wifi 协议栈和驱动,性能要求比较高,通常选择通用性 CPU,因而业务开发更灵活,方便于拓展丰富的应用领域。这种配置,你的想象力可大可小,千万别辜负了。

嵌入式 wifi 模组的特点就是内置了 WiFi 协议和驱动,一般通过专用协议串口等接口和设备主控芯片连接。设备的主控芯片,性能要求不高,通常选择 MCU,便于降成本,但是业务场景相对受限。这种配置下,你的设备能访问什么服务,完全看 wifi 模块提供商的配置。

并不是所有 IOT 云服务商都支持上面的两种 wifi 模组,只有部分 IOT 云服务商会同时支持。理论上所有的 IOT 云服务商都支持普通的 wifi 模组连接,而提供了嵌入式 wifi 模块的服务商,已知的有涂鸦和华为 HI-LINK 等。

说说云平台的后台配置


开发扫地机设备端的联网任务,除了硬件上的投入之外,还需要做一些和云平台后台有关的事情。

目前国内主流的 IOT 云服务商有涂鸦智能云、阿里生活物联网、亚马逊 AWS、华为 HI-LINK 等。这其中接入门槛最低的要数涂鸦智能云吧,因为它不仅提供了廉价的云服务,还有现成的公共APP,所以终端机器运营商如果考虑成本的因素还可以免去开发自己APP,就算初次开发APP也能使用云服务商提供的 SDK(开发套件)快速推出成品APP。

要声明的是每个云服务商的具体开发流程和有关术语会有差异,可以翻照具体的云平台提供的开发文档指引。

这里介绍一下通用的流程:

1. 选择 IOT 云服务平台

可以针对自己的需求选择最合适的云服务供应商,如果你自己是有扫地机设备开发团队的,但是APP开发的投入想省掉,那就选涂鸦吧,上文已介绍原因。如果你没有扫地机设备开发团队,扫地机的开发任务是交给方案商去做的话,建议选择阿里生活物联网,这个平台的互联网基因大家都是知道的,开发调试会非常方便(作为曾经在某个方案商呆过,这是真心话。题外话:有没有人喜欢玩真心话大冒险?)。除了开发的因素,还要考虑成本价格,一般收费的原则是按照单个接入设备一次性收费。

是的,还有很多平台可以选择,各位老板自己喜欢吧。

2. 注册开发者账号

登录 IOT 云服务平台的网站,用公司的名义注册个主体账号。如果你需要授权该账号的权限给开发人员或者方案商,可以查看一下该平台是否支持产品开发的权限授权。

3. 创建产品

各平台都提供了创建产品的模板,选择一个类型和扫地机业务类似或者匹配的模板。这一步会自动生成一个 product_id,后边有提到。

4. 配置功能

IOT 云平台配置功能都是通过 物模型 清单来实现。为了直观说明,下面展示涂鸦平台的一个扫地机物模型例子给大家看看:

DP ID 功能点名称 标识符 数据传输类型 数据类型 功能点属性
1 电源开关 power 可下发可上报(rw) bool
2 清扫开关 switch_go 可下发可上报(rw) bool
3 清扫模式 mode 可下发可上报(rw) enum 枚举值: standby, random, smart, wall_follow, mop, spiral, left_spiral, right_spiral, right_bow, left_bow, partial_bow, chargego
5 工作状态 status 只上报(ro) enum 枚举值: standby, smart_clean, wall_clean, spot_clean, mop_clean, goto_charge, charging, charge_done, paused, cleaning, sleep
13 寻找机器 seek 可下发可上报(rw) bool
101 清扫 clean_switch 可下发可上报(rw) bool
102 暂停 pause_switch 可下发可上报(rw) bool
103 回充 charge_switch 可下发可上报(rw) bool
104 清扫模式: clean_mode 可下发可上报(rw) enum 枚举值: smart, pose, zone, backcharge, curpointing, selectroom, null
105 当前状态: robot_state 可下发可上报(rw) enum 枚举值: idle, pointing, areaing, totaling, sweep, mop, fault, pause, chargring, tocharge, fullcharge, remotectl, dormant, curpointing, selectroom, chargingwash, dusting, selfclean
106 剩余电量 battery 可下发可上报(rw) value "数值范围: 0-100, 间距: 1, 倍数: 0, 单位: %"
107 清扫时间 cur_clean_time 可下发可上报(rw) value "数值范围: 0-2147483647, 间距: 1, 倍数: 0, 单位: 秒"
108 清扫面积 cur_clean_area 可下发可上报(rw) value "数值范围: 0-2147483647, 间距: 1, 倍数: 0, 单位: "
109 吸力 fan_mode 可下发可上报(rw) enum 枚举值: quiet, auto, strong, max
110 水量设置 water_mode 可下发可上报(rw) enum 枚举值: low, mid, high

可以看到首先需要建立一个 DP 点(对应着一个功能),然后命名功能点对应的名称,并且有对应的功能标识符,定义可读可写的数据传输类型(对于云端而言),定义当前功能的数据类型,以及具体的枚举值或者数值范围等。

5. 购买联网许可

扫地机在联网时,需要凭证云平台提供的 liscense 才可以顺利使用该平台的信息交互服务。用账号登录平台就可以申购对应设备数量的 liscense,然后在生产的时候把 liscense 烧录进机器。用户把扫地机带回家里后,在使用APP成功控制机器之前,需要按照使用说明书的指引触发扫地机进入配网模式,然后按照APP的配网流程把机器绑定到云平台。机器能否成功绑定,首先是扫地机需要通过蓝牙或者wifi的AP热点模式直连手机从APP获取到家庭的路由器 wifi 名和密码,然后通过家庭网络把机器内部存下来的 liscense 发给云平台校验并获取授权通过。

在开发阶段,一般平台会提供一定数量的免费 liscense 用于调试设备,需要在平台上面申请。这个 liscense 在有的平台也会称呼为三元组,一般包含有代表产品的 product_id,代表设备唯一识别码的 UUID 或者 MAC,和代表设备授权的键值 author_key。product_id 在前面的创建产品时就已生成,后边的两项信息只会在购买 liscense 成功后才可以看到。

6. 调试功能

有的云平台为了方便开发者调试设备功能点,提供了比较详细的调试功能,比如设备在线状态,实时查看平台针对设备收发的数据日志等。

7. 发布产品

关于产品的各项准备工作完成后,需要让该产品在云端进入发布状态,这样该产品下的设备才能被云平台提供数据处理服务。

8. 上传 OTA 升级包和多语言包

产品上市后,是有极大可能需要在客户手中更新机器固件的,比如大量客户发现了机器工作异常。这样就需要通过云服务给设备远程更新固件,一般通过在APP页面预置升级按钮,当用户点击 升级 按钮后,云平台就会把提前上传到后台的固件升级包下发给机器,机器接收完整升级包后自动执行后续所有操作,这个过程就是 OTA(over the air update)。

有些产品提供多语言的功能,只要用户在APP页面点击切换对应的语言包,云平台就会把提前上传到后台的对应语言包下发给机器,机器接收完整语言包后自动执行后续所有操作。

关于APP端的开发这里略过。。。

好了,简单介绍到这里,下次见。

posted @ 2022-09-07 00:16  ENG八戒  阅读(1169)  评论(4编辑  收藏  举报