EasyDevice与Luat及OneNet的合作历史
深圳乐易派(EasyDevice)自2015年进入物联网产品开发代工领域以来,一直秉承“快速开发、快速量产”的准则,助力多个著名品牌,快速量产热门产品,抢占先机市场,取得成功。
同时,乐易派不断改进开发流程、采购流程、试产流程、量产流程,逐步实现了“物联网产品,60天从需求到量产”的服务目标。
上海合宙一直是乐易派物联网产品的2G/4G模块供应商。乐易派一路见证了合宙Luat将近三十多个版本的演进,目前已经将合宙Luat作为乐易派物联网产品的嵌入式软件技术框架来使用,积累了大量经验。
OneNet物联网开放平台和乐易派的合作也已经超过三年,乐易派开发的物联网产品使用过OneNet平台的MQTT、EDP、HTTP、MBUS等几乎所有的接入协议。
本文主要分享如何使用Luat和OneNet,快速构建物联网产品嵌入式端的软件,以及在量产过程中的下载管理,产品外投部署后的升级管理等方面的经验。
标准化0.0.0版本简化采购和烧写流程
乐易派按照量产定型的产品型号向合宙采购2G/4G模块,同时提供给合宙一个该产品的0.0.0版本的嵌入式软件(固件FW),合宙在模块产线上即将0.0.0版本烧写进2G/4G模块,然后交付给乐易派。
所有产品的0.0.0版本固件,99%的代码相同,均由三个文件构成:main.lua,devreg.lua,cfg.lua。
main.lua的代码结构采用了合宙Luat的标准模板,仅修改“PROJECT”产品名称。cfg.lua保存了产品所需的配置参数,其中包括产品向OneNet平台进行“设备注册”所必须的2个参数:“register_code”和“product_id”。
devreg.lua的功能有两个:
其一,通过http协议,使用“register_code”和“product_id”参数向OneNet平台注册产品。产品的“name”统一使用模块的IMEI号,便于在OneNet后台进行查询和维护。OneNet平台返回2个参数:“device_id”和“api_key”,会被保存到cfg.lua中保存,用于产品每次接入OneNet平台时验证身份。
其二,注册完后,运行update.request(),从合宙iot.openluat.com下载该产品的最新Luat应用版本。
大量量产产品的生产批次多,每批生产之间有时间间隔,嵌入式固件又经常进行版本迭代,每次生产同步最新版本进行烧写容易出错。
含有0.0.0版本固件的模块在PCB装焊完成后,首次加电即自动完成OneNet平台的设备注册,然后自动从合宙的固件远程升级服务器下载最新版本的固件覆盖0.0.0版本,自动完成烧写,不用任何人工参与,提高了效率,避免了差错。
由于0.0.0版本的代码结构基本固定,每个产品其实只需要修改与合宙固件远程升级服务器有个的“PROJECT”参数,以及和OneNet平台“设备注册”流程有关的“register_code”和“product_id”参数,即可交付给合宙生产,永不修改,非常合适乐易派的多种产品、多批次生产、并行向合宙下单采购的特点,避免了烧写版本的差错。
通过rssi状态辅助运维
从0.0.1版本开始的Luat嵌入式固件,由main.lua,cfg.lua,app.lua等文件组成,其中main.lua和cfg.lua和0.0.0版本一样。而乐易派所有物联网产品的应用程序app.lua和衍生文件的代码,50%固化相同。
物联网设备的上行信息称为“数据”,设备通过指定协议(例如MQTT)发送给OneNet平台,OneNet平台再自动推送给产品的应用服务器进行使用。
物联网设备的下行信息称为“命令”,应用服务器通过API接口发送给OneNet平台,OneNet平台通过指定协议发送给物联网设备进行执行。
乐易派在做系统设计时,将“数据”分成两类:“status”和“evnet”。“status”指随时都存在的信息(例如rssi,电压等),需要周期性上报。“event”指随机产生的信息(如人机交互等),产生后需要即时上报。
rssi是“status”类必选数据之一,一般5分钟间隔周期上报,作为发送给应用服务器的“心跳”,用来指示物联网设备是否在线。
同时,通过rssi可以了解设备的接入链路质量。如果链路质量一直很低,说明设备布放位置的网络覆盖不良,应该调整设备位置。
在生产过程中,在统一的网络环境中观察rssi,可以筛选出天线不达标的产品,保证产品的天线出厂品质的一致性。
通过BASIC通道广播运维命令
产品如果使用MQTT协议,除了OneNet定义的“$creq”“命令”通道(Topic)外,每个设备都会订阅(subscribe)一个“BASIC”自定义通道(Topic)。“命令”一般通过用户的应用服务器调用OneNet的API发给设备,如果乐易派希望对所有设备(包括部署后的设备)进行一次全体复位(或者全体设备更新固件),想通过用户的应用服务器发命令就很不方便。
乐易派利用OneNet平台提供的MQTT Simulator,注册一个HOST设备,HOST通过“BASIC”通道广播“全体复位”(或者“全体升级”)的消息,触发全体设备执行,可以方便的实现运维和升级。
通过NTP授时执行定时重启 提高可维护性
产品每次复位启动后,第一个动作并不是连接OneNet平台执行既定应用,而是连接一个NTP授时服务器,获得真实时间。真实时间一方面用做上报"status"和"event"的时间戳,更重要的是作为绝对时间,触发设备定时重启(例如一般无人使用的午夜2点)。这个功能在2G应用中尤其重要,目前2G的网络状况恶化,接入设备种类众多(例如大量的共享单车),会出现各种意外的GPRS信道堵塞(尤其是下载大量数据时),甚至逻辑卡死,并且不能自我恢复,必须从新断网后搜网才能解锁。定时重启机制保证即便设备链路卡死,也能够在固定的周期(例如一天)后复位恢复,大幅度降低人工干预的运维成本。
通过OneNet的loc地图辅助运维
NTP授时后,还要通过合宙的LBS位置服务器,获取设备的大概位置,并作为“status”类必选参数之一上报。OneNet平台的设备管理后台有非常友好的位置(loc)地图匹配功能,可以直观查看每台设备的布放位置,辅助运维人员的工作。
量产产品不能仅关注功能实现
每一种物联网产品各有不同的应用功能来实现其价值。但对于真正大量量产使用的物联网产品,可靠性、可生产性、可维护性、低廉的布放后运维成本,则是产品价值实现的基础保障。乐易派通过软件框架,将保障性措施全部规范化,只需要集中精力完成应用功能开发,即可快速进入量产阶段。目前一个产品的固件开发可以控制在一周内结案。
借物联网生态赋能
乐易派在快速实行物联网产品量产过程中,大量借用了合宙(Luat框架、远程版本升级服务器、LBS定位数据库)和OneNet(MQTT Simulator、地图位置功能)提供的平台功能,整合进开发、量产、运维过程,提高整体效率,降低综合成本。随着近期Luatask的推出,乐易派又将Task的消息传递机制导入到框架中,进一步增强了系统的健壮性。
“60天从需求到量产”,并非乐易派一家之功,而是善用物联网行业生态的能量,站在了巨人的肩膀上!
客户案例:2016年 | 物联网门禁
客户品牌:社区半径
开发时长:45天(含模具开发)
生产总量:20000台
应用成就:部署进入全国1200个小区的单元门控
相关技术:
2G接入远程开门
BLE短距开门
NFC近场开门
小区卡开门
公交卡开门
银行卡开门
二代身份证开门
客户案例:2017年 | 共享充电宝
客户品牌:Hi电
开发时长:35天
生产总量:50000台
应用成就:部署进入北、上、广、深、汉、宁、杭、蓉、渝、湘10大城市热点商圈
相关技术:
2G接入远程开电
大容量电池管理
客户案例:2018年 | 桌面广告终端
客户品牌:桌美宝
开发时长:60天(含模具开发)
生产总量:6000台
应用成就:部署进入深圳南宁12大热点商圈桌面
相关技术:
2G接入远程
图像处理及显示
广告远程发布平台(乐易派开发)
客户案例:2018年 | 智能直饮水机(幼儿园专用)
客户品牌:聪聪喝水
开发时长:20天
生产总量:300台
应用成就:试点投放某地100所幼儿园
相关技术:
4G接入远程
RFID智能水杯
远程水机水杯管理平台(乐易派开发)
接案咨询顾问:CTO/刘
“想做量产的是真客户,接了案子,保证量产”
“聊聊想法的是好朋友,集思广益,来日方长”
TEL&VX : 13066888733
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!