物联网后端个人第十二周总结

学习工作进度

物联网方面

1.模拟设备通过规则引擎将数据通过mqtt进行转发

在物联网平台上实现模拟设备通过规则引擎将数据通过mqtt进行转发已经全部完成了,所使用的物联网平台在这方面有不少的问题和bug,也可能是没有按照开发者的想法对平台进行使用才导致出现了问题,也能给我们进行一个提醒,在日后开发我们自己的平台时一定要把使用文档写明白

2.网关二次开发

网关二次开发的工作终于圆满结束了上周因为向网关上传的程序有问题,导致网关宕机,与客服交流过之后解决了网关无法工作的问题,并且也解决了c程序编译的问题

本周首先通过网关技术客服给的调试程序获取到了网关每次对传感器轮询得到的原始数据。得到原始数据之后还要对原始数据进行处理
调试软件界面
网关轮询的得到的原始数据

以下是对数据的处理过程
数据处理全过程

经过一系列的进制转换,拼接之后将数据封装成JSON格式的,通过网关配置软件中指定的ip地址和端口将数据发送到mqtt-broker上,mqtt-broker再根据配置的topic将消息进行转发

以下为网关二次开发的程序

cpp 复制代码
#include "user_code.h"

static void get_mb_cmd_info(unsigned char item,int length,char** res)
{
	struct zq_mbpoll_info info;	
	int i;
	char** arr=malloc(length*sizeof(char*));
	char *token;
	char a[50];
	int num;
	double result;

	memset(a,0X00,50*sizeof(char));
	memset(&info,0x00,sizeof(info));
	zq_get_mbpoll_item_cmd_info(item,&info);
	strcpy(a,info.val);
	dbg_user_printf("%s",info.val);
	
    for(i=0; i<length; i++){
        if (i==0){
            token=strtok(a, ",");
        }else{
            token=strtok(NULL, ",");
        }
        num=atoi(token);
        arr[i]=malloc(5*sizeof(char));
        sprintf(arr[i],"%x",num);
    }
	
    for(i=0; i<length; i=i+2){
        res[i/2]=malloc(7*sizeof(char));
        strcpy(res[i/2],arr[i]);
        strcat(res[i/2],arr[i+1]);
        free(arr[i]);
        free(arr[i+1]);
        num=strtol(res[i/2],NULL,16);
		result=num/10.0;
        sprintf(res[i/2],"%.1f",result);
		dbg_user_printf("%s",res[i/2]);
    }
}

int mymb_poll_loop_query_end(void){
	char* res[5];
	int i;
	get_mb_cmd_info(0,10,res);
	char* result;
	cJSON *root;
	
	root=cJSON_CreateObject();
	cJSON_AddItemToObject(root,"temperature",cJSON_CreateString(res[0]));
	cJSON_AddItemToObject(root,"humidity",cJSON_CreateString(res[1]));
	cJSON_AddItemToObject(root,"pressure",cJSON_CreateString(res[2]));
	cJSON_AddItemToObject(root,"illumination",cJSON_CreateString(res[3]));
	cJSON_AddItemToObject(root,"CO2",cJSON_CreateString(res[4]));
	dbg_user_printf("%s",cJSON_Print(root));
	result=cJSON_Print(root);
	
	zq_tcp_send(2,result,strlen(result)*sizeof(char),0,0);
	dbg_user_printf("end");

	free(result);
	cJSON_Delete(root);
	for(i=0;i<5;i++){
        free(res[i]);
    }
    return 0;
}

int app_main(void * pParameter){
	zq_set_version(24);
	struct zq_recv_cb cb;
	memset(&cb,0x00,sizeof(cb));
	cb.mb_poll_loop_query_end =  mymb_poll_loop_query_end;	 
	zq_set_recv_cb(cb); 
}
APP_INIT app_init = app_main;

工作学习中遇到的问题

物联网方面

1.模拟设备通过规则引擎将数据通过mqtt进行转发

按照正常流程开发,遇到了很多奇奇怪怪的问题
规则的日志显示发送成功,但实际上并没有接收到

这时候是发送到本地奇特物联平台带的emqx上,可能平台对消息的发送者进行了鉴权,但是这里无法进行鉴权(可能是平台的bug,也可能是我使用的方法不对),后边换成了其他服务器上独立运行的emqx才顺利接收到消息

2.网关二次开发

技术支持客服本身也接这个业务,所以有的时候问的一些问题不给讲全,只是大致讲一下,学长也没有这方面的经验,很多时候都是靠自己摸索

一方面要回顾以前学习过的c语言基础部分,一方面还要学习没有接触过的高级部分,对内存和指针的管理,还好去年学习c语言的时候认真学了,有点基础,要不然这个项目算是夭折了

总结

总的来说,这两项任务都算是完成了,网关的二次开发有一个月了,规则引擎实现数据流转有半个月了,终于完成了。接下来就是做我们自己的物联网平台,后端的很多技术我都忘了,这段时间也都没有怎么学,要重新拾起来了。

相关推荐
jonyleek11 小时前
【JVS更新日志】物联网、AI套件、在线白板插件4.22更新说明!
物联网·更新·规则引擎·jvs·智能排产·白板插件·ai套件
三佛科技-1341638421212 小时前
PL3325CS/CD/CH/CE 与PL3325BE 之间的对比与联系(应用功率与典型应用电路)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
blevoice12 小时前
杰理智能蓝牙音响开发板AC696N:文件系统操作API精讲
单片机·物联网·杰理蓝牙芯片·ac6966b蓝牙音响方案·杰理智能音箱开发·杰理ac6965e蓝牙音频开发
三佛科技-1341638421213 小时前
FT838NB1-RT_5W(5V1A)原边反馈(5级能效)典型应用电路分析
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
钒星物联网14 小时前
一文说清如何选对卫星物联网数传终端
物联网·数据传输·卫星通信·低轨·野外监测·低轨卫星物联网终端
广州灵眸科技有限公司15 小时前
瑞芯微(EASY EAI)RV1126B rknn-toolkit-lite2使用方法
linux·网络·人工智能·物联网·算法
2603_9547083116 小时前
多能互补微电网:六大发展趋势,助力新型电力系统多能协同升级
人工智能·物联网·架构·系统架构·能源
AllData公司负责人17 小时前
AllData数据中台通过开源项目RustFS建设现代数据湖存储,接入工业, 医疗, 物联网数据,包括文件/图像/音频/视频数据!
数据库·数据仓库·物联网·开源·数据存储·数据接入·rustfs
雪兽软件17 小时前
物联网可以改变我们的生活
物联网·生活
RFID舜识物联网17 小时前
RFID耐高温标签:汽车喷涂线智能追溯的破局之道
大数据·人工智能·科技·物联网·安全·汽车