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

学习工作进度

    物联网方面 

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

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

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

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

调试软件界面
调试软件界面
网关从四个传感器获取到的原始数据
网关轮询的得到的原始数据

以下是对数据的处理过程

在这里插入图片描述
数据处理全过程

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

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

#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语言的时候认真学了,有点基础,要不然这个项目算是夭折了

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/217981.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上手 Promethus - 开源监控、报警工具包

名词解释 Promethus 是什么 开源的【系统监控和警报】工具包 专注于&#xff1a; 1&#xff09;可靠的实时监控 2&#xff09;收集时间序列数据 3&#xff09;提供强大的查询语言&#xff08;PromQL&#xff09;&#xff0c;用于分析这些数据 功能&#xff1a; 1&#xff0…

Linux学习记录

Linux 文章目录 LinuxLinux发行版Debian 分支Red Hat 分支Arch Linux 分支 服务器基础操作lscat和less设置权限删除文件和目录搜索文件 cmake使用文件 Linux发行版 一个典型的 Linux 发行版除了 Linux 内核以外&#xff0c;通常还会包括一系列 GNU 工具和库、一些附带的软件、…

C#调用ffmpeg从视频提取图片

微信公众号“CSharp编程大全”的文章《C#从视频提取图片&#xff1f;》介绍了基于Microsoft.DirectX.AudioVideoPlayback.Video类实现从视频提取图片的方式&#xff0c;本来是想学习并测试该类的用法&#xff0c;但实际测试过程中却没有测通。百度从视频提取图片&#xff0c;网…

【数据集】全网最全的常见已公开医学影像数据集

目录 一&#xff0c;极市医学数据集汇总 1.CT 医学图像 ​编辑 2.恶性与良性皮肤癌 3.白内障数据集 4.胸部 X 光图像&#xff08;肺炎&#xff09; 5.用于图像增强的内窥镜真实合成曝光过度和曝光不足帧 6.医学家 7.乳房组织病理学图像 8.皮肤癌 MNIST&#xff1a;HA…

【广州华锐互动】Web3D云展编辑器能为展览行业带来哪些便利?

在数字时代中&#xff0c;传统的展览方式正在被全新的技术和工具所颠覆。其中&#xff0c;最具有革新意义的就是Web3D云展编辑器。这种编辑器以其强大的功能和灵活的应用&#xff0c;正在为展览设计带来革命性的变化。 广州华锐互动开发的Web3D云展编辑器是一种专门用于创建、编…

Cesium-terrain-builder编译入坑详解

本以为编译cesium-terrian-tools编译应该没那么难&#xff0c;不想问题重重&#xff0c;不想后人重蹈覆辙&#xff0c;也记录下点点滴滴。 目前网上存在的cesium代码版本主要有两个分支&#xff1a; 原始网站【不能生成layer文件&#xff0c;且经久不更新&#xff0c;使用gdal…

微信小程序富文本拓展rich-text

微信小程序富文本插件 功能介绍 支持解析<style>标签中的全局样式支持自定义默认的标签样式支持自动设置标题 若html中存在title标签,将自动把title标签的内容设置到页面的标题上,并在回调bindparse中返回,可以用于转发支持添加加载提示 可以在Parser标签内添加加载提…

selenium的基础语法

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️山水速疾来去易&#xff0c;襄樊镇固永难开 ☁️定位页面的元素 参数:抽象类By里…

4.25每日一题(通过被积函数和积分区域(不等式)选正确的坐标系求二重积分)

一、正确画出积分区域&#xff1b;通过积分区域和被积函数选择方法 二、如何根据被积函数和积分区域正确选择通过极坐标还是根据直角坐标方程计算&#xff1a; &#xff08;1&#xff09;适合极坐标的积分区域&#xff1a;圆或者部分圆 &#xff08;2&#xff09;适合极坐标的…

c语言-字符函数和字符串函数详解

文章目录 1. 字符分类函数2. 字符转换函数3. strlen的使用和模拟实现4. strcpy的使用和模拟实现5. strncpy函数的使用6. strcat的使用和模拟实现7. strncat函数的使用8. strcmp的使用和模拟实现9. strncmp函数的使用10. strstr的使用和模拟实现11. strtok函数的使用12. strerro…

【数据处理】 -- 【两分钟】了解【最好】的方式 -- 【正则表达式】

直接匹配&#xff1b; 普通字符 元匹配&#xff1a; . 任意单字符 r’表示单引号里字符为其特殊含义&#xff0c;比如.不是句号是匹配符的意思 *任意次数&#xff08;换行结束&#xff09; 一次及以上 {3,4}指定次数,至少3次&#xff0c;最多4次|{3}固定4次 [\d.]单个任意…

位图及有关海量数据处理

bitset 1.给40亿个不重复的无符号整数&#xff0c;没排过序&#xff0c;给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个中 ①.如果用排序加二分查找&#xff0c;40亿个数需要16g内存&#xff0c;内存开不出这么大连续空间 ②.每个值映射一个比特位&#xff0c;…