720 智能硬件与 LeanCloud 云端的默契协作

【 玩转 LeanCloud 】开发者经验分享:

作者:谢子超

720技术负责人,从业十余年,一直负责软件开发工作。

我们的产品是与监控和改善室内空气质量相关的智能硬件,我们使用 LeanCloud 平台已经有 2 年多了,借此机会与其他从事智能硬件生产及应用解决方案的团队分享下我们的经验。

我们的主要硬件产品分为两部分:环境监测设备(环境宝)和环境治理设备( 720 全智能净化器系列)。环境监测设备的主要功能是通过 7x24 小时不间断地监测 8 项室内环境数据指标(包括 PM2.5 、PM10 、甲醛、TVOC 化学污染物、温度、湿度、噪声、等效二氧化碳),然后将采集到的数据通过 Wi-Fi 上传至云端,通过云端计算并下发决策指令,同时用户也可以随时通过手机了解家中的空气质量;环境治理设备净化器通过 Wi-Fi 联网后,与环境宝实现智能联动。净化器从云端接受控制指令来完成风量调节和功能开关等操作。两个设备组合使用即可实现自动化的空气质量控制。

节约创业成本

技术选型方面,因为是创业公司,所以我们早期对成本方面非常敏感。考虑到自行搭建建服务端要付出的成本和工作量(从服务器租赁、到工程师团队组建,到日常运维),我们更倾向把资源放在产品功能研发和逻辑实现上,而不必为这些离最终用户价值比较远的方面花太多时间和精力,所以我们决定找一些比较专业的后端云服务来满足我们对基础设施架构的需求。

当初了解过 Parse,但是由于国内网络状况对国外产品并不友好,所以没敢去尝试;后来遇到了 LeanCloud ,它是在国内,而且据我们了解它也是这行里做得最早的一家,于是就在一个产品上试用,整个过程进行得非常顺利,包括后续的使用感觉也很好,所以到现在基本上所有产品的服务端都在 LeanCloud 上了。

云引擎实现设备总控

技术实现方面,因为智能硬件很多时候是需要长连接的,我们使用的是 MQTT 协议,而 LeanCloud 对于这类协议没有特殊支持,所以我们使用一台自有服务器作为 MQTT 的服务端,再配合上 LeanCloud 的云引擎,最终也能较好地满足我们的需求。

数据检测设备需要定时采集数据并上报。在开发过程中我们的 Wi-Fi 芯片对 MQTT 的支持有一些问题,所以我们将 LeanCloud 云引擎作为 WebServer 并编写了自定义的 API,让数据检测设备通过 HTTP 请求调用这些 API 来完成数据上报。

智能控制设备通过长连接访问到 MQTT 服务器来实时地接收控制指令,调整自己的运行状态,此时云引擎就充当起了一个总控台的角色,它会对收集上来的数据进行一下判断,然后向 MQTT 服务器发送控制指令,达到控制设备的目的。顺便要提一下,云引擎使用起来还是挺方便的。我们不仅能够直观地从控制台看到各类资源的运转状况,还能通过命令行工具快速地部署和回滚代码,对于常见的服务端操作这些都是非常好的补充。

云缓存为存储和查询提速

在数据保存和查询上,我们使用了 LeanCloud 的云缓存。因为很多用户都会有按照时间范围(比如今天)来查询空气质量的习惯,所以如果在保存数据时设置好合适的 key 结构,我们就可以很方便地获取到需要的数据,而且还有非常棒的读写效率。

商用版体验更棒

技术方面,LeanCloud 的功能和 API 设计都做得比较好,而且它不会像其他公司那样,为了扩大市场宣传而催生出很多新的但又不稳定不好用的功能。服务稳定性方面,特别是在商用版推出之后,商用版有了专属的后端资源,跟免费版的共享资源隔离开来,我们觉得服务稳定性就更有保障了,当然除此之外,商用版在其他方面也比开发版有更多的优势可以利用。

LeanCloud 技术支持也非常专业。因为他们会让开发 SDK 的一线工程师来直接回答我们用户的提问,所以这样更容易定位问题,给用户更准确的解答,这样用户用起来也更加放心吧。只不过 LeanCloud 市场宣传可能做得比较保守,也许是公司风格太「技术化」了一点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux cifs windows 慢,windows上使用dockerIO特别慢有没有更优的解决方案?

复制一个大佬的回答Docker for Windows是在Hyper-V虚拟机上跑Linux,文件挂载是通过SMB协议从Windows挂载到Linux,文件读写都经过网络,遇到Laravel这种每次启动就要加载几百个文件的框架,文件性能问题就尤其明显。最好的验证方法就…

编译原理—词法分析器(Java)

1.当运行程序时,程序会读取项目下的program.txt文件 2. 程序将会逐行读取program.txt中的源程序,进行词法分析,并将分析的结果输出。 3. 如果发现错误,程序将会中止读取文件进行分析,并输出错误提示 所用单词的构词规…

【BZOJ4653】[Noi2016]区间 双指针法+线段树

【BZOJ4653】[Noi2016]区间 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn]。现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置。换句话说,就是使得存在一个 x,使得对于每一个被选中的区间 [li,ri],都…

为什么我们需要使用Pandas新字符串Dtype代替文本数据对象

We have to represent every bit of data in numerical values to be processed and analyzed by machine learning and deep learning models. However, strings do not usually come in a nice and clean format and require a lot preprocessing.我们必须以数值表示数据的每…

递归方程组解的渐进阶的求法——代入法

递归方程组解的渐进阶的求法——代入法 用这个办法既可估计上界也可估计下界。如前面所指出,方法的关键步骤在于预先对解答作出推测,然后用数学归纳法证明推测的正确性。 例如,我们要估计T(n)的上界,T(n)满足递归方程:…

【转载】C# 理解泛型

术语表 generics:泛型type-safe:类型安全collection: 集合compiler:编译器run time:程序运行时object: 对象.NET library:.Net类库value type: 值类型box: 装箱unbox: 拆箱implicity: 隐式explicity: 显式linked list:…

javascript 作用_JavaScript承诺如何从内到外真正发挥作用

javascript 作用One of the most important questions I faced in interviews was how promises are implemented. Since async/await is becoming more popular, you need to understand promises.我在采访中面临的最重要的问题之一是如何实现承诺。 由于异步/等待变得越来越流…

linux 文件理解,对linux中文件系统的理解

首先在linux系统当中一个可被挂在的数据为一个文件系统1.在安装linux过程中我们要进行磁盘分区,可以分根目录/,‘/home‘,‘/boot’,swap等等这些分区,每一个分区(’/(根目录)‘,’/home‘...)就是一个文件系统。2.文件系统分配完…

编译原理—语法分析器(Java)

递归下降语法分析 1. 语法成分说明 <语句块> :: begin<语句串> end <语句串> :: <语句>{&#xff1b;<语句>} <语句> :: <赋值语句> | <循环语句> | <条件语句> <关系运算符> :: < | < | > | > | |…

老笔记整理四:字符串的完美度

今天在宠果网上发现一道题目&#xff0c;求一个字符串的完美度http://hero.pongo.cn/home/index觉得这道题很有趣就挑战了一下&#xff0c;结果没有在规定的1小时里面写完&#xff08;笑&#xff09;&#xff0c;多花了10分钟终于做出来了。题目是这样的&#xff1a;我们要给每…

nlp构建_使用NLP构建自杀性推文分类器

nlp构建Over the years, suicide has been one of the major causes of death worldwide, According to Wikipedia, Suicide resulted in 828,000 global deaths in 2015, an increase from 712,000 deaths in 1990. This makes suicide the 10th leading cause of death world…

域名跳转

案例&#xff1a;当访问lsx.com网站&#xff0c;是我最早论坛的域名。回车之后会自动跳转到lshx.com。 为什么药lsx跳转到lshx.com呢&#xff1f; 为了统一品牌。建议换成了lshx.com。所有之前的lsx.com就不要用了&#xff0c;就让它跳转到lshx.com。是因为之前lsx.com上有很多…

Elastic Stack 安装

Elastic Stack 是一套支持数据采集、存储、分析、并可视化全面的分析工具&#xff0c;简称 ELK&#xff08;Elasticsearch&#xff0c;Logstash&#xff0c;Kibana&#xff09;的缩写。 安装Elastic Stack 时&#xff0c;必须相关组件使用相同的版本&#xff0c;例如&#xff1…

区块链去中心化分布式_为什么渐进式去中心化是区块链的最大希望

区块链去中心化分布式by Arthur Camara通过亚瑟卡马拉(Arthur Camara) 为什么渐进式去中心化是区块链的最大希望 (Why Progressive Decentralization is blockchain’s best hope) 不变性是区块链的最大优势和最大障碍。 逐步分权可能是答案。 (Immutability is blockchain’s…

编译原理—语义分析(Java)

递归下降语法制导翻译 实现含多条简单赋值语句的简化语言的语义分析和中间代码生成。 测试样例 begin a:2; b:4; c:c-1; area:3.14*a*a; s:2*3.1416*r*(hr); end #词法分析 public class analyzer {public static List<String> llistnew ArrayList<>();static …

linux问题总结

linux问题总结 编写后台进程的管理脚本&#xff0c;使用service deamon-name stop的时候&#xff0c;出现如下提示&#xff1a;/sbin/service: line 66: 23299 Terminated env -i LANG"$LANG" PATH"$PATH" TERM"$TERM" "${SERVICEDIR}/${SE…

linux vi行尾总是显示颜色,【转载】Linux 下使用 vi 没有颜色的解决办法

vi 是没有颜色的&#xff0c;vim 是有颜色的。我们可以通过 rpm -qa |grep vim 看看系统中是否安装了下面 3 个 rpm 包&#xff0c;如果有就是安装了 vim 。[rootBetty ~]# rpm -qa |grep vimvim-minimal-7.0.109-7.el5vim-enhanced-7.0.109-7.el5vim-common-7.0.109-7.el5如果…

时间序列分析 lstm_LSTM —时间序列分析

时间序列分析 lstmNeural networks can be a hard concept to wrap your head around. I think this is mostly due to the fact that they can be used for so many different things such as classification, identification or just simply regression.神经网络可能是一个难…

关于计算圆周率PI的经典程序

短短几行代码&#xff0c;却也可圈可点。如把变量s放在PI表达式中&#xff0c;还有正负值的处理&#xff0c;都堪称经典。尤其是处处考虑执行效率的思想令人敬佩。 /* pi/41-1/31/5-1/71/9-…… */ #include <stdio.h> int main(){ int s1; float pi0.,n1.,…

华为产品技术学习笔记之路由原理(一)

路由器&#xff1a;路由器是一种典型的网络连接设备&#xff0c;用来进行路由选择和报文转发。路由器与它直接相连的网络的跳数为0&#xff0c;通过一台路由器可达的网络的跳数为1.路由协议&#xff1a;路由器之间维护路由表的规则&#xff0c;用以发现路由&#xff0c;生成路由…