Total Pageviews

Showing posts with label iot. Show all posts
Showing posts with label iot. Show all posts

Sunday, 1 May 2022

iot_gateway

 

iot网关

1.介绍

该项目是课余时间,按照自己认为的理想的IOT系统架构,实现的一套智能家居系统。目前部署在自己的卧室,实现用小度音箱对室内灯的控制。

2.设计思想

在物联网产品接入层方面,对比过阿里云物联网、联通物联网、某消防iot公司、某电动车等公司的架构,但是发现很难达到自己认为理想的架构。发现这些架构设计中,要么是忽略解耦性,要么是忽略开发效率,要么单纯云端思想设计整个iot。相比于前后端,在iot产品开发中需要考虑的问题要更加复杂。

iot开发中,最重要的一点是"高内聚,低耦合",而实现这一思想的关键是解析器,解析器是要由嵌入式人员编写的,对上下行数据的一个解包和封包。

【问题】

iot产品开发中常见问题:w

  1. 缺乏上下行解析器层,导致开发中高度耦合,云端人员需要知道嵌入式人员上传的协议,日后协议的更新、bug的修复、判断逻辑的修改、分包合包逻辑等都需要两份人力去维护这个协议。
  2. 现在解析器实现方案中,多数是用脚本引擎实现,由一段简单的脚本语言实现,可是嵌入式人员技术栈是c/c++,而且这样导致解析器调试困难无法打印log,难以存储历史数据,开发中,自由度不高,常常需要云端参与支持等。而且嵌入式人员编写的时候不清楚上下文有哪些,不清楚能调用哪些库等。
  3. 通信协议选型方面,不考虑内存、flash占用,弱网通信,窄带通信,低功耗等问题,依然按照前后端思想开发。如使用msgpack序列化压缩传输数据,在后端差别不大,但是在arm嵌入式平台上,空间占用较大,可能导致栈溢出。
  4. 云端人员不知道常见硬件潜在风险。如下行修改终端配置信息后,立刻重启导致保存flash失败
  5. 报警类信息由云端来做逻辑判断,导致不及时。
  6. 随着不断新增硬件产品,需要不断修改云端代码以适配。
  7. 软硬人员两地办公,沟通效率低
  8. ...

【解决思路】

在linux驱动开发中,有一种抽象的思想是“分层,分离”,使得操作系统能做到支持多种硬件接入,而不需要重新编译系统,有着很好的解耦性。

  • 分离使得硬件相关的和非硬件相关的代码分开独立修改和发布。
  • 设备链表实现了设备的动态接入和拔出,设备之间通过name动态匹配。
  • 分层使得操作系统提供了driver层,即统一接口层,如register、read、write。一款新设备的接入,只需要厂商自己提供device设备和驱动程序driver, 而不需要修改操作系统任何内容即可。

iot_gw

与操作系统类似,iot系统也需要动态支持丰富的硬件类型,同样不能因为硬件的修改导致iot系统重新编译。 这也体现了现在流行的微服务思想,如独立发布、跨语言等。

设备指的就是终端产品,云端可以根据终端上传的设备类型去服务链表中找到对应的解析器。

grpc提供了通用函数:marshal 、unmarshal。而且grpc序列化和反序列化速度较快,支持c++等丰富语言,第三方包支持c语言。

解析器相当于windows下安装的驱动,完全由设备厂商编写。云端人员不关心与设备的通信协议,协议只有嵌入式人员自己维护,iot_gateway最终得到的就是一份明文的、完全解析完毕的数据包。解析器也可以根据实际不同类型设备使用量,来部署节点数量

其他选型参考

protobuf:终端通信中选用protobuf,相比去其他序列化协议如msgpack,更加灵活通用。尤其在终端上的表现protobuf更加节省内存和flash。可使用第三方c语言的nanopb插件来支持嵌入式更优性能。

协议方面共有两层protobuf,一层是和终端通信,一层是grpc协议

EMQ:mqtt协议,在高并发中支持较好,文档详细,功能丰富。

3.使用

需要依赖环境包括EMQ,consul,cmake。测试环境是ubuntu64

iot_gateway是图中的iot_gateway.

编译:

make target=linux

运行:

./gateway

xiaodu_parser是go实现的解析器。

编译:

make target=linux

运行:

make run

xiaodu_parser_c是c语言实现的解析器,嵌入式人员更习惯c/c++。

编译:

./build.sh

运行:

./parser_c

4.其他说明

iot产品种类复杂,有的是移动,有的是静止,有的是宽带,有的是窄带,有的要低功耗,有的要低延迟等。针对不同产品,需要考虑的问题也常常有较大的不同,iot_gateway还需要做更多兼容性。

  1. iot_gateway_v1工程只是网关的实现demo,应用层代码应该在网关层之上实现。
  2. 嵌入式应该把一些可以转移的逻辑放在解析器层实现,这样日后有bug容易修复,减少OTA升级设备。
  3. 安全方面,如果是第三方提供网关服务,应该考虑是双层加密。如lora方式
  4. iot产品有时会处于弱网通信,此时应考虑弱网优化,如udp在弱网下消耗更小。弱网应控制传输包的大小在1400字节以下。
  5. 针对不同网络类型不同对待。如wifi链路超时一般低于4G网。NAT网络下注意心跳周期不高于3分钟。

【参考】

《小度技能平台》

《LoRaWAN network-server》

《grpc》

《protobuf》


from https://github.com/BobDeng1974/iot_gateway

------


IOT

Project setup

yarn install

Compiles and hot-reloads for development

yarn serve

Compiles and minifies for production

yarn build

Lints and fixes files

yarn lint

Customize configuration

See Configuration Reference.


from https://github.com/X-laser/IOT


Friday, 16 October 2020

JerryScript: JavaScript engine for the Internet of Things

 

Ultra-lightweight JavaScript engine for the Internet of Things.

https://jerryscript.net/

License Travis CI Build Status AppVeyor Build Status Coverity Scan Build Status FOSSA Status SonarQube IRC Channel

JerryScript is a lightweight JavaScript engine for resource-constrained devices such as microcontrollers. It can run on devices with less than 64 KB of RAM and less than 200 KB of flash memory.

Key characteristics of JerryScript:

  • Full ECMAScript 5.1 standard compliance
  • 160K binary size when compiled for ARM Thumb-2
  • Heavily optimized for low memory consumption
  • Written in C99 for maximum portability
  • Snapshot support for precompiling JavaScript source code to byte code
  • Mature C API, easy to embed in applications

Additional information can be found on our project page and Wiki.

Memory usage and Binary footprint are measured at here with real target daily.

The latest results on Raspberry Pi 2:

Remote Testrunner

IRC channel: #jerryscript on freenode Mailing list: jerryscript-dev@groups.io, you can subscribe here and access the mailing list archive here.

Quick Start

Getting the sources

git clone https://github.com/jerryscript-project/jerryscript.git
cd jerryscript

Building JerryScript

python tools/build.py

For additional information see Getting Started.

Documentation

from  https://github.com/jerryscript-project/jerryscript

Tuesday, 1 September 2020

Friday, 20 December 2019

VR、AR、MR的区别

近日, 获得谷歌5亿美元融资的技术公司Magic Leap在WSJD展会中放出了一段实录视频,引起不小骚动。如今,也有媒体称他们为MR公司,那么VR、AR、MR之间到底有什么区别呢。
VR、AR、MR定义:
什么是虚拟现实?
虚拟现实(Virtual Reality,简称VR,又译作灵境、幻真)是近年来出现的高新技术,也称灵境技术或人工环境。虚拟现实是利用电脑模拟产生一个三维空间的虚拟世界,提供使用者关于视觉、听觉、触觉等感官的模拟,让使用者如同身历其境一般,可以及时、没有限制地观察三度空间内的事物。
什么是增强现实?
增强现实(Augmented Reality,简称AR),也被称之为混合现实。它通过电脑技术,将虚拟的信息应用到真实世界,真实的环境和虚拟的物体实时地叠加到了同一个画面或空间同时存在。
什么是混合现实?
混合现实(Mixed reality,简称MR),既包括增强现实和增强虚拟,指的是合并现实和虚拟世界而产生的新的可视化环境。在新的可视化环境里物理和数字对象共存,并实时互动。系统通常采用三个主要特点:1. 它结合了虚拟和现实;2. 在虚拟的三维(3D注册); 3. 实时运行。
VR和AR的区别:
简单来说,虚拟现实(VR),看到的场景和人物全是假的,是把你的意识代入一个虚拟的世界。增强现实(AR),看到的场景和人物一部分是真一部分是假,是把虚拟的信息带入到现实世界中。
交互区别
VR设备:因为VR是纯虚拟场景,所以VR装备更多的是用于用户与虚拟场景的互动交互,更多的使用是:位置跟踪器、数据手套(5DT之类的)、动捕系统、数据头盔等等。
AR设备:由于AR是现实场景和虚拟场景的结合,所以基本都需要摄像头,在摄像头拍摄的画面基础上,结合虚拟画面进行展示和互动,比如GOOGLE GLASS这些(其实严格的来说,IPAD,手机这些带摄像头的只能产品,都可以用于AR,只要安装AR的软件就可以。)
技术区别
类似于游戏制作,创作出一个虚拟场景供人体验,其核心是graphics的各项技术的发挥。和我们接触最多的就是应用在游戏上,可以说是传统游戏娱乐设备的一个升级版,主要关注虚拟场景是否有良好的体验。而与真实场景是否相关,他们并不关心。VR设备往往是浸入式的,典型的设备就是oculus rift。
AR应用了很多computer vision的技术。AR设备强调复原人类的视觉的功能,比如自动去识别跟踪物体,而不是我手动去指出;自主跟踪并且对周围真实场景进行3D建模,而不是我打开Maya照着场景做一个极为相似的。典型的AR设备就是普通移动端手机,升级版如Google Project Tango。
VR、AR、MR公司及产品
VR设备代表:Oculus
AR设备代表:HoloLens
MR设备公司:Magic Leap(关于 Magic Leap 的产品,Rony Abovitz 将它描述为一款小巧的独立电脑,人们在公共场合使用也可以很舒服。此外,它还涉及视网膜投影技术。)
传感物联网由杨剑勇先生所创建,是一家总部坐落于深圳,定位在物联网领域的科技媒体网站,于2010年4月上线,在业界已颇具影响力。

http://cf.lcchina.org.cn/docbak/e/e/b/61609_4fe7ebaf20eeb.pdf
http://www.elecfans.com/d/user/2737565/

Friday, 9 February 2018

交通运输部正在编制无人驾驶技术规划


2月7日,交通运输部部长李小鹏表示,交通运输部正在编制无人驾驶技术规划,研究起草技术规范,建设测试基地,和有关部门共同研究制定路上测试的相关政策指导文件,积极而又稳妥地来推动这项技术。李小鹏指出,无人驾驶是一个热词,也是产业竞争的热点。前不久,交通运输年度工作会议上做的报告当中有9次提到了自动驾驶或者无人驾驶。无人驾驶是自动驾驶的高级阶段,汇集了包括现代通信技术、现代网络技术、现代制造技术、新能源技术等等一系列的现代技术,是一个融合体。在自动驾驶船、自动轨道交通方面实际上已经有了突破和应用,在汽车自动驾驶方面也正在研究,也在突破。这项技术的发展方兴未艾,发展迅速。李小鹏介绍称,专家认为,自动驾驶也好、无人驾驶也好,起码有以下几个好处:一是可以提高驾驶的安全性,提高交通运输安全性。二是可以提高交通运输的效率。三是可以使得交通运输更加环保。四是服务的质量能够更好,或者体验更好。当然,无人驾驶也好、自动驾驶也好,还能够推动产业发展,更重要的是推动科学技术的进步,这确实是一个重大发展领域。李小鹏透露,交通运输部高度重视,积极推动这方面的科技研究。同时也在编制规划,正在研究起草技术规范。与此同时,还在建设测试基地,和有关部门也在共同研究制定路上测试的相关政策指导文件。总之,交通运输部正在积极推动,下一步,还会和有关部门配合起来,积极而又稳妥地来推动这项技术。李小鹏称,这项技术发展到现在,如果要说大规模的应用,可能还需要时日,还需要更多的研发、更多的完善、更多的测试、更多的实验,但是相信这项技术一定会对交通运输的发展带来更加广阔和美好的前景.

Wednesday, 7 February 2018

互联网红利的终结

2月初,各大市场调研机构纷纷发布了全球智能手机销量出现下滑的消息。值得注意的是,作为全球第一大智能手机市场,中国也历史性地第一次出现下滑。全球技术分析公司Canalys的数据表明,2017年中国智能手机市场年总出货量较2016年下跌4%,与手机厂商的热情投入呈现冰火两重天的态势。更有甚者,Strategy Analytics公司的一位分析师表示,全球手机市场的放缓主要原因是“中国手机市场崩盘”:中国手机市场出现了高达16%的暴跌。
不管是个位数的下跌还是两位数的暴跌,中国智能手机的下滑是确定无疑的。这个历史性的下滑之所以不寻常,是因为它不是一种噪音而是真正的信号。根据国家统计局的数据,凭借出口、建筑和消费支出的大幅攀升,中国经济增长七年来首次加速。2017年中国经济增长率为6.9%,扭转了从2011年开始逐渐放缓的趋势。由此可以推断,手机市场的下滑完全是其内生动力不足导致的。这个信号或许预示着中国互联网市场的红利已经见顶,所有线上业务将随之出现停滞或增长放缓,广泛的整合将成为必然。
没有智能手机的增长,就没有移动互联网的流量红利。智能手机的边界几乎就是整个互联网的边界。智能手机市场的收缩和遇冷,预示着互联网的停滞和增长放缓几乎会同步发生。所谓见顶,意味着一直稳定增长的日活跃用户数将全面出现下降,用户在互联网上停留的时间也将显著减少,而且流量成本会越来越高昂。这些都是最容易挑动投资者敏感神经的指标。
在流量红利干涸之后,行业巨头们已经有所动作。在全球几家市值最高的科技公司披露年报之际,简单梳理一番,我们会发现以下四大趋势。这些趋势中隐藏着正在发生的未来。
在2017年最后一个季度中,Facebook在北美地区的日活跃用户数首次出现环比下降,用户平均每天在Facebook上停留的时间减少了5000万个小时。出人意料的是,Facebook的广告收入仍在以同比接近50%的增速增长。这意味着社交巨头Facebook已经成功摆脱了依赖流量增长来推动业绩的模式,而是通过提高广告质量、更精准地投放来提高广告收入,从每位用户身上获得了更多的收益。这是趋势一:通过精细管理和精准营销来保持增长。
趋势二是寻找新的增长点。一个最好的例子是亚马逊。在过去的12个月中,亚马逊股价的累计涨幅为73%。发布第四季度财报之后,至少已有13位市场分析师上调了亚马逊的目标股价。甚至有分析师给出了1750美元的目标股价。按照该股价计算,亚马逊市值将达到约8500亿美元,成为全球市值最高的公司。亚马逊的增长来自两个方面,“金牌会员”的会员费和云计算业务。前者是传统的定价策略,后者是一种新技术。
趋势三是互联网巨头转战线下,向实体经济要场景、要数据、要流量。在去年12月以100亿元的大手笔布局新零售版图之后,1月底,腾讯作为主发起方,联合苏宁、京东、融创与万达商业签订战略投资协议,计划投资约340亿元收购万达商业香港H股退市时引入的投资人持有的约14%股份。这将是全球互联网公司和实体商业巨头之间最大的单笔战略投资之一。几天之后,腾讯又以战略投资者的身份斥资25亿元收购了海澜之家5.31%的股份。这些大手笔的收购,一方面是竞争的需要,另一个原因就是迫于线上增长放缓、成本增加。
趋势四是从互联网转战物联网。上周,谷歌的母公司Alphabet公布财报,2017年营收为1108.55亿美元。虽然网络广告业务依然带来了大笔收入,但当天的股价却下跌约5%。投资者之所以如此恐慌,是因为在移动搜索领域,谷歌的流量购置成本在2017年达到216亿美元,比上年增长29%,超过了Google核心广告业务20%的收入增长,这是导致其第四季度出现亏损的原因之一。谷歌的网络广告营收占总营收的约85%。一旦流量红利终结之后,投资者担心谷歌无法找到在搜索广告以外找到真正的收入来源。
那么,谷歌如何能摆脱困境呢? 答案可能是物联网,从出行入口:无人驾驶切入这一市场。1月初,美国最大的汽车制造商菲亚特克莱斯勒汽车公司(Fiat Chrysler Automobiles,简称FCA)对外披露,与谷歌达成了一项大规模协议,谷歌无人驾驶项目Waymo将采购“数千辆”该公司的新型自动驾驶小型货车来扩充其无人驾驶车队,这批车将在今年底加入谷歌,谷歌目前拥有大约600辆FCA轿车。该车型售价大约4万美元。从这个规模来看,谷歌已经全面突破了无人驾驶的技术障碍,无人驾驶的商业化箭在弦上。无人驾驶被视为未来最有前景的一场革命,它对人类的作用就相当于今天的手机。既然苹果可以凭借一部手机成为全球市值最高、最受尊敬的公司,对科技巨头来说,这是兵家必争之地。
全球科技巨头的转型已经悄然而至,中国公司却落后了半拍。2月第一周,国内共发生了116起投融资事件,累计金额超过190.12亿元,虽然数目有所下降,但融资金额较上周的142亿元明显上升。种种迹象表明,中国的科技巨头仍然延续着抢占更多的地盘以带动增长的思路,这种草莽粗放的增长并不意味着效率的改善和提升,因而不可持续.