ITPub博客

首页 > 数据库 > 数据库开发技术 > 【星闪开发连载】星闪网关的设计与实现

【星闪开发连载】星闪网关的设计与实现

数据库开发技术 作者:DevKnight66 时间:2024-10-29 14:22:06 0 删除 编辑

 

目录


 

引言

对星闪模块WS63E的测试已经有一段时间了,在前面的博客也分享了自己的一些体会。今天要完成最终的成品了:星闪网关。所谓星闪网关就是可以接受客户端的连接和数据发送,并将数据转发给云端的设备。在实际生活中,星闪网关是非常有用的,因为很多星闪设备(如温湿度计、夜灯等)考虑到节能的需要,它们只有星闪一种无线方式,无法直接连接如云端,所以就需要网关设备做中转。

系统结构

我设计的系统的结构组成如下图所示。其中,星闪客户端用于连接温湿度传感器获得环境信息,然后通过星闪联络传递给网关设备,而网关设备通过WiFi链路连接到路由器,并实现和华为云服务器的连接。网关设备作为星闪服务器收到客户端发来的数据将其通过MQTT协议发送到华为IoT云。

5d82860b5c5d44d2ae69bbfc8e488277.png

考虑到手头的硬件配置,我将星闪派物联网开发套件模拟星闪客户端,这样方便连接传感器,而将单独的星闪派开发板作为星闪网关。

技术实现

有关技术的基本原理在前面的博客已经介绍了:  

SLE程序架构

程序的基本架构参考了润和提供的SLE控制LED灯的例子。

SLE客户端部分添加了AHT20和SSD1306相关的代码,而网关部分增加了WiFi的程序。CMakeList.txt做了如下修改:

程序的基本流程是这样的:

  •  服务器端程序启动后创建任务,初始化WiFi,WiFi成功后调用MQTT程序连接华为云,同时启动星闪SLE的广播,等待星闪客户端的连接。
  •  服务器端程序启动后创建任务,初始化温湿度传感器和屏幕,然后将温湿度显示在屏幕上,同时启动星闪SLE的客户端,扫描星闪服务器,一旦找到就尝试建立星闪连接。
  • 星闪客户端一旦连接成功,就启动一次读操作(润和原本的程序就是这样的,我保留了该步骤),在读操作的回调函数中将保存在全局变量中的温湿度数据组成JSON数据包,然后发送出去。
  • 星闪服务器收到收据后,就通过MQTT连接将数据转发到华为云。

温湿度程序

温湿度程序改动比较小,只是将用来存储温湿度数据的temp和humi两个变量变成了全局变量,然后供星闪程序读取。由于温湿度程序启动速度比星闪程序快得多,所以当星闪程序去读取这个数据时,它肯定是有效的。

WiFi程序

WiFi_STA.c程序基本没有修改。这个程序只在网关部分添加。主程序在初始化之后直接调用了WiFi初始化的程序,去实现和路由器之间的连接以及DHCP分配地址工作。在example_sta_function函数中增加了对mqtt_init的调用。这个代码有点瑕疵,就是如果有多个IP地址,mqtt_init会被调用多次,不过对于WS63E来说只有一个IP地址,问题不大。

MQTT程序

MQTT初始化程序改动也很少,只是删除了原有的发布代码。

在星闪网关服务器端example_ssaps_write_request_cbk中实现了对publish的调用。

MQTT所需要的JSON数据组包工作是在星闪客户端中完成的。

 

完整程序

 完整的程序已经提交到Gitee上了(zealsoft/fbb_ws63 - 码云 - 开源中国),欢迎提出宝贵意见。

目前的程序需要分两次编译,分别产生星闪客户端和星闪服务器的程序。也可以对程序进行一些修改,比如检测不到温湿度传感器就说明是星闪服务器,这样就可以将程序合二为一。

测试

分别将客户端和服务器的程序烧写到开发板上,我们就可以直接测试了。

星闪客户端的部分log如下,从中可以看出客户端连接到星闪服务器后就会把温湿度时间的JSON数据发送给星闪服务器:

星闪网关(服务器)的部分log如下,从中可以看到一旦星闪客户端建立连接,很快会收到上传的数据,然后网关就会通过MQTT将其发送的华为云(日志中的服务器地址、设备ID做了特殊处理):

登录华为IoTDA控制台,可以看到上传的数据。由此可见,整个系统功能正常。

4925fa5cc1a54d1eac95994ecb81c525.png

结语

经过这段时间的测试,WS63E模块整体的使用和hi3861差不多,星闪的编程模式和蓝牙差不多,读者要是想快速掌握星闪的编程,最好有点蓝牙的基础。

星闪技术应该是华为被蓝牙联盟踢出来之后给出的技术标准,就像OpenHarmony之于Android差不多。还是希望星闪技术不断发展,走出自己的道路。

虽然此次星闪体验官的测试任务完成了,但是后续仍然会继续分享一些对星闪技术的测试和分析,欢迎继续关注我的博客。

 

原文作者:神一样的老师;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-10-11

  • 博文量
    20
  • 访问量
    832