MicroWRT 网关中间件深入剖析 - 文章教程

MicroWRT 网关中间件深入剖析

发布于 2020-11-06 字数 2719 浏览 1224 评论 0

此网关中间件服务于实验室项目Web of Things的子项目MicroWRT中间件开发。由于MicroWRT源于OpenWRT,一个微型的嵌入式Linux操作系统,其支持多种语言开发环境包括c/c++、python。借助于WoT开放出来的网关注册、数据上传等多个Restful接口,使用python快速搭建起从物联网网网关到WoT接口的通信,不妨称之为 MicroWRT 网关中间件

代码组织结构

网关中间件代码在目录 gateway\bin\gateway 下,由 python 实现,各文件夹及文件功能简述如下:

cfg/

  • dev_property.xml: 设备属性信息(向平台添加设备时用到)
  • gw_property.xml: 网关属性信息(网关注册时用到)
  • res_property.xml: 资源属性信息(向平台添加资源时用到)
  • gw_json.cfg: json格式配置文件,目前包括3个域
    • updated:网关是否已经更新过
    • mwid:网关在平台上的ID
    • hwid:网关硬件ID,目前用MAC地址指代
  • local.cfg: 平台相关配置,包括平台IP,服务器端口号,各开放接口URL
  • mac_dev_map.cfg: hwid与设备号的本地映射表
  • mac_resID_resPlat_map.cfg:hwid、本地资源ID(我们自己定义的)和平台资源ID的本地映射表
  • campra_thread.py: 摄像头线程模块,接收来自AllJoyn服务端的图片。数据分成两部分,一部分是图片的二进制流,另一部分是头部。头部信息就指明图片是对应哪个MACADDR上的哪个本地资源
  • common.py: 通用模块,包括获取MAC地址、写配置文件等
  • gateway.py: 网关核心类,封装了网关注册、网关更新、删除网关、添加/删除设备、添加/删除资源、上传传感器数据/图像等
  • heartbeat.py: 心跳线程模块,用于定时向平台上传心跳,获取平台上的操作指令。如用微信端控制,则当用微信发送指令时, 在心跳的返回信息中就可知道命令已下达。目前包含控制红外摄像机和TV
  • init.py: 初使化模块,用以读local.cfg配置文件
  • main.cfg: json格式配置文件,包含心跳间隔时间,python接收传感器、图片等端口号
  • main.py:主模块,采用多线程开发。总共五个线程:主线程、网关资源属性注册线程(数据由AllJoyn服务端发送)、心跳线程、传感器数据上传线程(数据由AllJoyn服务端发送)、图像上传线程(数据由AllJoyn服务端发送)
  • register.py: 网关注册线程(由杨平所写),采用多路复用方式获取网关的设备及资源属性信息(json格式,由AllJoyn服务端发送),同时建立本地映射表。网关注册信息格式如下:
    • Mac_address: 设备硬件ID
    • flags: 0表示有设备进入,需要添加设备及资源;1表示有设备离开,需要注销资源
    • Res_num: 资源数量
    • Res: 资源
      • Res_type: 资源类型
      • Res_name: 资源名称
    • Res_unit: 资源单位
  • res_data.py: 传感器数据上传线程,接收来自AllJoyn服务端发来的传感器数据,格式封装为json:
    • Mac_addr: 设备硬件ID
    • Res_port: 资源本地编号
    • Res_val: 资源数值
  • restful.py: GET,POST请求python方法封装

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2583 文章
29 评论
84935 人气
更多

推荐作者

猫性小仙女

文章 1 评论 0

qq_VO6LhT

文章 0 评论 0

猿舌电影

文章 0 评论 0

7556275422

文章 0 评论 0

YYQ_139

文章 0 评论 0