这里聊聊扫地机的 IOT 开发
以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16663833.html
消费者使用扫地机通常的方式是通过手机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端的开发这里略过。。。
好了,简单介绍到这里,下次见。
这里聊聊扫地机的 IOT 开发的更多相关文章
- Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建
目前,微软针对Windows IoT计划支持的硬件包括树莓派2,Minnow Board MAX 和Galileo (Gen 1和Gen 2).其中,Galileo (Gen 1和Gen 2)运行的是 ...
- 【Windows10 IoT开发系列】API 移植工具
原文:[Windows10 IoT开发系列]API 移植工具 Windows 10 IoT Core 中是否提供你的当前 Win32 应用程序或库所依赖的 API? 如果不提供,是否存在可使用的等效 ...
- 【Windows10 IoT开发系列】PowerShell的相关配置
原文:[Windows10 IoT开发系列]PowerShell的相关配置 可使用 Windows PowerShell 远程配置和管理任何 Windows 10 IoT 核心版设备.PowerShe ...
- 【Windows10 IoT开发系列】Powershell命令行实用程序
原文:[Windows10 IoT开发系列]Powershell命令行实用程序 更新帐户密码: 强烈建议你更新默认的管理员帐户密码.若要更新帐户密码,你可以发出以下命令: net user Admin ...
- 【Windows10 IoT开发系列】“Hello,World!”指导
原文:[Windows10 IoT开发系列]"Hello,World!"指导 本文主要是介绍使用C#来开发一个可以运行在Raspberry Pi2上的一个基本项目. 1.在启动V ...
- 【Windows10 IoT开发系列】配置篇
原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...
- 小熊派IoT开发板系列教程正式发布——免费学习
[摘要] 小熊派开源社区针对小熊派IoT开发板首次规划了小熊派未来的系列教程.从基础到进阶的设计,可适应具有不同基础的开发者,通过该系列教程的学习,开发者能够轻松掌握IoT产品的开发.该系列教程包括单 ...
- IoT开发精英实战营招募啦!速来报名!
具有了向上的力量,才能一眼望到山外的大地,蜿蜒的长河,人类精神的进步. --罗曼·罗兰<爱与死的搏斗> 七月流火,八月未央,九月授衣.说是长长长长的夏天,眨眼间,也早过了立秋而迎来处暑.距 ...
- HC大会,华为联合合作伙伴发布一站式物联网IoT开发工具小熊派BearPi
传统的物联网产品开发步骤复杂,涉及硬件开发.软件开发.云端开发等众多流程.而且产品的开发周期长.开发成本高.产品稳定性不佳.维护成本高.而物联网设备本身市场竞争激烈,价格低,设备更新迭代快,所以在保证 ...
随机推荐
- 普通 Docker 与 Kubernetes 对比
Docker提供基本容器管理 API 和容器镜像文件格式Kubernetes 管理运行容器的(物理或虚拟)主机群集,如果 Docker 是 OCP 的"内核",Kubernetes ...
- 小米社区APP深度体验
小米社区APP深度体验 版本:3.0.210928 BUG 1,在暗黑模式下,会员一栏中的成就等级小字未作深色模式调整,从而造成文字难于识别. 2,在暗黑模式下,会员页中底部的会员产品首页视觉没有完美 ...
- CMP0065警告问题
参考链接: https://cmake.org/cmake/help/latest/policy/CMP0065.html https://cmake-developers.cmake.narkive ...
- 如何用车辆历史违章查询API接口进行快速开发
最近公司项目有一个车辆的历史违章查询显示的小功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的车辆历史违章查询API非常符合我的开 ...
- Apache Hudi数据跳过技术加速查询高达50倍
介绍 在 Hudi 0.10 中,我们引入了对高级数据布局优化技术的支持,例如 Z-order和希尔伯特空间填充曲线(作为新的聚类算法),即使在经常使用过滤器查询大表的复杂场景中,也可以在多个列而非单 ...
- CF1381B Unmerge(位运算的作用)
题目大意: 给定长度为 \(2n\) 的排列 \(p\) .确定是否存在两个数组 \(a\) 和 \(b\) ,每个数组的长度都为 \(n\) ,并且没有相等的元素,使得 \(p = \operato ...
- 关于静态 RMQ 问题
目录 1. 普通做法 2. Four Russian 算法 3. 随机数据的一种做法 4. 有关转 LCA 的做法 1.1. RMQ 转 LCA 再转 ±1RMQ(RMQ 标准算法) 1.2. 一个优 ...
- 2536-springsecurity系列--关于session管理1
版本信息 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring ...
- 我又造了个轮子:GrpcGateway
我个人对GRPC是比较感兴趣的,最近在玩通过前端调用GRPC.通过前端调用GRPC业界有两种方式:GRPC Web和GRPC JSON转码. GRPC Web 通过JS或者Blazor WASM调用G ...
- Linux、Ubuntu常用命令
# 文件解压缩 # zip压缩目录(附带目录权限) zip -q -r html.zip /home/html 压缩目录 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz ...