4.运行HTTP服务器,基于RESTful API,实现了基于HTML5的云IDE开发环境。方便技术极客对网关的功能进行定制,这些IDE包括了Java的IDE,基于图形编程的Blockly IDE和可以配置FPGA模块功能和引脚定义的Web设计工具,当然也包括较为底层的c语言IDE。 有了这些功能,用户就可以根据自己的需要,编写简单的程序来控制与物联网网关连接的任何设备,实现自己的智能物联网。 在板子内部,通过实现Linux内核驱动的用户空间模式,实现了Node.js直接访问FPGA内存空间、控制FPGA内部逻辑,并最终控制与FPGA相连接的各种物联网外设的功能。同时还实现了Node.js对FPGA的现场再配置,这样直接通过网络下载FPGA配置文件,即可现场改变整个核心系统。
物联网网关系统软件设计 ● 物联网云构建系统设计 如图3所示是物联网网关的云构建系统,图中可以看到物联网云构建系统由GitHub,Docker Build与七牛云存储三部分组成。云构建系统的想法来源于持续集成,在软件工程里,持续集成的概念已经非常普遍了,每次有代码改动的提交都会触发一个编译测试的持续过程。模仿软件持续集成,在云端构建了一个对应于物联网网关的持续集成环境,选择云端是因为嵌入式系统本身的能力与处理速度都有限,不适于做为持续集成的构建环境。在云构建系统中,使用GitHub来管理代码的基础版本,使用Docker Hub的容器构建机制完成应用程序与FPGA程序的构建,最后使用七牛云做为构建结果的分发平台。所有开发板通过RESTful API驱动云编译环境,并访问七牛云来实现程序配置的升级。利用这一套云持续集成系统,不仅可以迅速对应用进行部署而且可以开放支持用户进行自定义开发的云开发环境,用户利用这一云环境,能够轻松实现对FPGA的定制设计,实现一套云端FPGA设计环境。
物联网网关的云架构 ● 物联网大数据处理系统设计 如图4所示是物联网大数据处理系统的设计构架图,物联网网关上收集到的物联网数据被系统上的Node.js源源不断地送往大数据消息总线Kafka的HTTP proxy,每一个Kafka HTTP proxy可以承接数千个这样的物联网网关,而proxy又将汇总的的数据发送到Kafka的集群中做进一步汇总,然后在Kafka 集群内部实现对数据的ETL过程,包括数据异常值的过滤,重复数据的去除,atv,数据格式的转换。最后利用Kafka集群,将数据发送到不同的下游消费者那里,先发送到大数据存储系统S3或者HDFS做永久保存,为将来用Hadoop或者Spark等离线分析系统提供数据;接着数据被发送到ElasticSearch中做索引,方便对数据进行快速的搜索与查询,并且利用Kibana做数据的可视化,提供整个数据流的健康状态监控;最后数据被发送到实时在线大数据处理系统Spark Streaming中做数据在线分析、机器学习等任务,实现数据在在线分析与响应。
大数据处理系统的设计结构图 参考文献 https://blog.jscrambler.com/java-the-perfect-language-for-the-internet-of-things-iot/
https://cnodejs.org/topic/5659a9e0c4fa25cb27cc3c23
https://www.burakkanber.com/blog/machine-learning-in-other-languages-introduction/ (责任编辑:本港台直播) |