这里聊聊扫地机的 IOT 开发

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

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

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

这里聊聊扫地机的 IOT 开发

说说机器端的联网开发

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

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

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

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

这里聊聊扫地机的 IOT 开发

普通 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端的开发这里略过。。。

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

Original: https://www.cnblogs.com/englyf/p/16663833.html
Author: englyf八戒
Title: 这里聊聊扫地机的 IOT 开发

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/574064/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux下侦听端口被占用,怎么解决?

    不知道你有没有遇到过这种问题:在同一台物理机器上,服务A 启动时侦听 端口1 ,同时它也作为客户端去连接 服务B,连接服务B时候会随机一个端口号,假如随机的是 端口2 ,这个时候 …

    Linux 2023年6月13日
    097
  • k8s之部署metrics-server 转载

    Metrics Server是Kubernetes内置自动缩放管道的可扩展,高效的容器资源指标来源。 Metrics Server从Kubelet收集资源指标,并通过Metrics…

    Linux 2023年6月14日
    079
  • 保罗·艾伦的故事

    上周,保罗·艾伦逝世。《财新周刊》约我写一篇纪念文章,发表在他们杂志上面 一些个人新闻:最近,我了解到我在2009年与之抗争的非霍奇金淋巴瘤已经复发。我已经开始治疗,我的医生很乐观…

    Linux 2023年6月14日
    0112
  • 用 shell 脚本做命令行工具扩展

    问题的提出 公司开发机与远程服务器之间有严格的隔离策略,不能直接使用 ssh 登录,而必需通过跳板机。这样一来,本地与服务器之间的一些文件传输变得非常不便。经过咨询,运维教了我一招…

    Linux 2023年5月27日
    0124
  • MySQL主从复制的原理和实现

    垂直扩展: 横向扩展: 复制:使每一个节点都有相同的数据集 MySQL复制的实现:使用二进制日志来实现 提高性能(负载均衡)、 实现读写分离 实现数据备份的功能(实时备份) 高可用…

    Linux 2023年6月7日
    0101
  • jarwarSpringBoot加载包内外资源的方式,告别FileNotFoundException吧

    工作中常常会用到文件加载,然后又经常忘记,印象不深,没有系统性研究过,从最初的war包项目到现在的springboot项目,从加载外部文件到加载自身jar包内文件,也发生了许多变化…

    Linux 2023年6月6日
    0108
  • Shell中的特殊符号(special characters)和含义

    之前写过两篇关于Bash语法的blog,分别是: 个人感觉,想要通畅地读懂bash脚本,还差一个部分,那就是符号。 个人网上的讲bash符号的文章有点乱,要么有错,要么不全,要么太…

    Linux 2023年5月28日
    095
  • 2021年3月-第02阶段-前端基础-Flex 伸缩布局-移动WEB开发_流式布局

    移动web开发流式布局 1.0 移动端基础 1.1 浏览器现状 PC端常见浏览器:360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器、搜狗浏览器、IE浏览器。 移动端常见…

    Linux 2023年6月8日
    0129
  • Linux 0.11源码阅读笔记-内存管理

    内存管理 Linux内核使用段页式内存管理方式。 内存池 物理页:物理空闲内存被划分为固定大小(4k)的页 内存池:所有空闲的物理页面形成一个内存池,并逐页分配和回收。并通过位图记…

    Linux 2023年5月27日
    099
  • Web前端基础精品入门(HTML+CSS+JavaScript+JS)[爱前端]听课笔记3:三角形的制作

    菜单中有的项目有夏季菜单,需要添加一个三角形,这个三角形是利用两个边框不同颜色产生的楔形制作的 设置盒子的高度和宽度均为0,边框合适的大小,透明颜色,对应边设置高度、颜色 几个变形…

    Linux 2023年6月14日
    0104
  • 【原创】Linux v4l2框架分析

    背景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. –…

    Linux 2023年5月27日
    076
  • webshell 免杀

    https://xz.aliyun.com/t/11391 Original: https://www.cnblogs.com/cute/p/16356651.htmlAuthor…

    Linux 2023年5月28日
    0116
  • Ansible Playbook概览

    Ansible playbook 执行需要三步路执行: 1.编写playbook 2.定义主机清单文件 3.设置运行环境,写入配置文件 1.编写playbook Playbook使…

    Linux 2023年6月6日
    079
  • jenkins安装及配置(一)

    一、安装 1、以jenkins.war包方式安装 官网地址:https://mirrors.jenkins.io/war-stable/latest/jenkins.war 运行命…

    Linux 2023年6月14日
    086
  • UWP Add transport control button to taskbar preview

    I want to add transport control button to taskbar preview, like Netease Music. This is rea…

    Linux 2023年6月13日
    0113
  • 部署office在线预览服务器(Office Web Apps Server)

    引言为方便在web端方便的使用office。 简介 Office Online Server (OOS,下文简写为OOS ) 提供基于浏览器的 Word、PowerPoint、Ex…

    Linux 2023年6月14日
    0127
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球