首页 理论教育 Contiki物联网操作系统:快速建立RESTful服务器

Contiki物联网操作系统:快速建立RESTful服务器

时间:2023-11-20 理论教育 版权反馈
【摘要】:因为LoWPAN 设备资源受限,它不能给许多请求提供服务,为了解决这一问题,Contiki 操作系统实现了中间件服务器,如RESTful 服务器。网络中的每个资源受限设备将向RESTful 服务器发送感知结果,RESTful服务器将承担给所有请求者分发数据的任务。RESTful服务器可以运行在流行的Web服务器上,如Apache、nginx和IIS。WebSense 的架构如图13-12 所示,通过6LoWPAN 路由器,6LoWPAN 网络中的所有节点可以和RESTful服务器通信。想要获得传感器数据的客户可以使用WebSocket打开到RESTful服务器的连接。

Contiki物联网操作系统:快速建立RESTful服务器

本例将设计基于6LoWPAN 的向Web 服务器发布传感器采集到值的WebSense 应用。因为LoWPAN 设备资源受限,它不能给许多请求提供服务,为了解决这一问题,Contiki 操作系统实现了中间件服务器,如RESTful 服务器。网络中的每个资源受限设备将向RESTful 服务器发送感知结果,RESTful服务器将承担给所有请求者分发数据的任务。RESTful服务器可以运行在流行的Web服务器上,如Apache、nginx和IIS。

WebSense 的架构如图13-12 所示,通过6LoWPAN 路由器,6LoWPAN 网络中的所有节点可以和RESTful服务器通信。想要获得传感器数据的客户可以使用WebSocket打开到RESTful服务器的连接。

图13-12 WebSense架构

可以使用具有WebSocket API 的HTML5 实现客户前端系统,在HTML5 应用中,传感器数据还可以被可视化,如WebSense 的RESTful 服务器可以应用Node.js。

1.准备工作

图13-13 WebSense项目实现

本节实现如图13-13 所示网络结构的WebSene 实例,为了实现6LoWPAN路由器,本例使用RPL 边界路由器模块,也就是在边界路由器上运行borderrouter.c程序。在网络中的其他节点上运行sky-websense.c程序,该程序保存在examples/ipv6/sky-websense文件夹下,其目标是为所有来自网络外部的请求提供传感器数据。技术上,该程序将运行一个mini Web服务器,并且提供HTTP请求服务。一旦RESTful 服务器请求传感器数据,WebSense 节点将发送数据,发送数据的函数是send_values()函数。本例中节点将提供光照和温度数据,生成这两个数据的函数是get_light()和get_temp(),这几个函数的代码如下所示。为了实现该Web服务器,本例使用Contiki系统的httpd-simple模块,该模块程序文件httpd-simple.c 和头文件httpd-simple.h 保存在examples/ ipv6/rpl-bor⁃der-router文件下。

(www.xing528.com)

生成传感器数据的函数如下:

2.Cooja仿真实现

本节在Cooja 环境下实现网络结构的WebSene 实例,仿真网络拓扑图如图13-14 所示。网络中的节点1 承担边界路由器的角色,运行border-router.c 程序,与第一节中的例子相似,需要指定侦听端口和建立6LoWPAN 网络和外部网络的桥接,在此不做详述。在网络中的其他节点上运行sky-websense.c 程序,也就是网络节点2~6 承担mini Web 服务器的角色。该网络的网络层仍使用RPL 协议,运行过程中将建立以节点1 为根的RPL DAG。程序运行过程中在本机浏览器地址栏中输入节点1 的IPv6 地址(如aaaa::212:7401:1:101),将在浏览器中列出如图13-15 所示的路由信息。在本机浏览器地址栏中输入其他节点的IPv6 地址(如aaaa::212:7405:5:505),将在浏览器中看到获得的传感器设备的数据信息,如图13-16所示。

图13-14 WebSense实例网络

图13-15 网络路由信息

图13-16 节点感知数据

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈