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

news2024/12/24 21:43:44

学习工作进度

    物联网方面 

        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.coloradmin.cn/o/1251301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑系统一次频率响应特性的新型电力系统源网荷储协调鲁棒规划》

这篇文章的标题涉及到新型电力系统的源&#xff08;发电源&#xff09;、网&#xff08;电网&#xff09;、荷&#xff08;负荷&#xff0c;即用电需求&#xff09;以及储&#xff08;储能系统&#xff09;的协调鲁棒规划&#xff0c;其中考虑了系统的一次频率响应特性。 让我…

软件设计师:计算机组成与体系结构之计算机基础知识

计算机基础知识 数据的表示 码制及进制转换 原码&#xff1a;将数值转成二进制反码&#xff1a;正数与原码完全相同&#xff1b;负数&#xff0c;除了符号位其他位取反补码&#xff1a;正数与原码完全相同&#xff1b;负数&#xff0c;在补码的基础上加1移码&#xff1a;补码…

CUDA编程二、C++和cuda混合编程的一些基础知识点

目录 一、C运行过程 1、C编译过程 2、代码运行示例 单文件 多文件 a、编译所有cpp文件&#xff0c;但是不链接 b、链接所有的.o文件 c、运行程序 CMake编译 代码 使用方法 编译过程 代码运行 二、C和cuda混合编程 cuda 单文件 cuda和C多文件 手动分步编译 C…

TDA笔记:夏克林老师,南洋理工大学

TDA比传统的统计方法有优势&#xff1a;benchmark中展现了这种优势 laplacian矩阵 多种单纯复形构造方式&#xff0c;可以构造出不同表征 二部图&#xff1a;Dowker complex Tor algebra可以用到多大数据 目前较新

python教程:正常shell与反弹shell

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 正常shell需要先在攻击端开机情况下开启程序,然后攻击端运行程序,才能连接 反弹shell,攻击端是服务端,被攻击端是客户端 正常shell,攻击端是客户端,被攻击端是服务端 反弹shell,先启用服务端,再启用客户端 反弹shell的好处…

OPPO VOOC快充原理

1 USB 3.0标准A插头 USB 3.0连接器是基于USB 2.0改进而来的&#xff0c;这个设计给USB 3.0连接器带来了一些潜在风险&#xff0c;如果USB 3.0设备插入主机的速度太慢&#xff0c;3.0的针脚还没来得及被识别到&#xff0c;就会被主机判定成USB 2.0的设备。 Figure 1-1 USB 3.0标…

【C++】构造函数和析构函数第四部分(深拷贝和浅拷贝)--- 2023.11.25

目录 什么是浅拷贝&#xff1f;浅拷贝的问题使用深拷贝解决浅拷贝问题结束语 什么是浅拷贝&#xff1f; 如果在一个类中没有人为定义拷贝函数&#xff0c;则系统会提供默认拷贝函数。那么在此默认拷贝函数中主要进行了简单的赋值操作&#xff0c;那这个简单的赋值操作我们一般…

教师编制缩减是为什么

老师们有没有注意到一个趋势&#xff1f;那就是教师编制正在逐步缩减。不知道你们发现没有&#xff0c;我最近在研究教育领域的新闻&#xff0c;发现这两年教师编制缩减的消息越来越多。这是为什么呢&#xff1f;今天就来跟大家聊一聊。 原因一&#xff1a;资金压力 第一个原因…

HarmonyOS应用开发实战—登录页面【ArkTS】

文章目录 本页面实战效果预览图一.HarmonyOS应用开发1.1HarmonyOS 详解1.2 ArkTS详解二.HarmonyOS应用开发实战—登录页面【ArkTS】2.1 ArkTS页面源码2.2 代码解析2.3 心得本页面实战效果预览图 一.HarmonyOS应用开发 1.1HarmonyOS 详解 HarmonyOS(鸿蒙操作系统)是华为公司…

SD卡选型参考

文档版本日期类型REV1.02023.11.25新建 SD卡对于大家来说&#xff0c;应该很熟悉了&#xff0c;都是我们在各类电子设备中经常使用的。不过大家在购买SD卡的时候都会关注哪些参数呢&#xff1f;可能大部分使用者&#xff0c;甚至包括我在内也只是会关注下容量&#xff0c;当然是…

案例-某验四代滑块反爬逆向研究一

系列文章目录 第一部分 案例-某验四代滑块反爬逆向研究一 文章目录 系列文章目录前言一、分析流程二、定位 w 值生成位置三、device_id 值的定位生成四、pow_msg 值 和 pow_sign 值的生成总结 前言 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff…

性能优化中使用Profiler进行内存泄露的排查及解决方式

文章目录 一、前言二、内存泄露的排查方式三、参考链接 一、前言 对于常规意义上的线程使用要及时关闭&#xff0c;数据库用完要及时关闭&#xff0c;数据用完要及时清空等等这里不再赘述&#xff0c;但是在开发中总会有不熟悉的api&#xff0c;开发进度过快&#xff0c;开发人…

2022年09月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 运行下列程序后,结果为120的是? A: B: C: D: 答案:C 本题考察阶乘知识,12345的结果为120. <

redis持久化:RDB:和AOF

目录 RDB 持久化 1、修改配置文件&#xff1a;redis.conf 2、RDB模式自动触发保存快照 3、RDB模式手动触发保存快照 4、RDB的优缺点 AOF持久化 1、AOF持久化工作流程 2、修改配置文件开启AOF 3、AOF优缺点 4、AOF的重写机制原理 RDBAOF混合模式 redis持久化有两种方…

(2023码蹄杯)省赛(初赛)第三场真题(原题)(题解+AC代码)

题目1&#xff1a;MC0227堆煤球 码题集OJ-堆煤球 (matiji.net) 思路&#xff1a; 1.i从l枚举到r,i是8的倍数就跳过&#xff0c;i不是8的倍数就用等差数列求和公式i(1i)/2,最后累加到答案中即可 AC_Code:C #include<bits/stdc.h> using namespace std;int main( ) {in…

name 属性:提高 Vue 应用可维护性的关键

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

基于springboot实现乒乓球预约管理系统项目【项目源码】

基于springboot实现乒乓球预约管理系统演示 系统的开发环境 浏览器&#xff1a;IE 8.1&#xff08;推荐6.0以上&#xff09; 开发使用语言&#xff1a;JAVA JDK版本&#xff1a;JDK_8 数据库管理系统软件&#xff1a;Mysql 运行平台&#xff1a;Windows 7 运行环境&#…

【微服务专题】SpringBoot自动配置简单源码解析

目录 前言阅读对象阅读导航前置知识什么是自动配置0.1 基本概念0.2 SpringBoot中的【约定大于配置】0.3 从SpringMVC看【约定大于配置】0.4 从Redis看【约定大于配置】0.5 小结 笔记正文一、EnableAutoConfiguration源码解析二、SpringBoot常用条件注解源码解析2.1 自定义条件注…

性能测试【一】:Jmeter的常用操作

性能测试【一】&#xff1a;Jmeter的常用操作 一、使用命令行方式运行Jmeter1、为什么2、怎么用3、示例4、结果文件 二、生成动态报告1、准备2、命令3、报告示例4、报告释义 三、使用问题汇总 推荐使用命令行运行&#xff0c;GUI方式会经常卡死&#xff0c;尤其跑稳定性 一、使…

《使用Python将Excel数据批量写入MongoDB数据库》

在数据分析及处理过程中&#xff0c;我们经常需要将数据写入数据库。而MongoDB作为一种NoSQL数据库&#xff0c;其具有强大的可扩展性、高性能以及支持复杂查询等特性&#xff0c;广泛用于大规模数据存储和分析。在这篇文章中&#xff0c;我们将使用Python编写一个将Excel数据批…