OneNet + openssl + MTLL

news2025/6/9 2:02:41

1.OneNet

        使用的教程

        1.在网络上搜索onenet,注册并且登录账号。

        2.产品服务-----物联网服务平台立即体验

        3.在底下找到立即体验进去

        4.产品开发------创建产品

        5.关键是选择MQTT,其他的内容自己填写

        6.这里产品以及开发完成,接下来就是添加设备了

        7.进去之后点击添加设备

        8.这里的关键点就是设备名称,后面写代码要用到,最好使用英文

        9.点击详情就可以看具体的信息了

设备名称,产品密钥,产品ID都是后面要用到的。

        10.点击产品开发

        11.点击设置物理模型

        12.点击

        13.关键点:标识,数据类型,取值范围

标识符:后面代码传数据要用到

数据类型:选int32

取值范围:后面传递进来的要在这个范围,不然会传送失败

        14.保存

2.openssl

        1.openssl的安装

                1.将opensll安装包复制到linux的目录下,减压

        2.   进入openssl源码目录
        输入./config enable-shared -fPIC #加入-fPIC 选项,不然,编译paho会出问题。

        表示完成
        3.make 这个过程需要等待下


        4.sudo make install 安装

        输入密码,等待安装完成

3.paho

        1.将安装包复制到linux的目录下,减压

        2.vim Makefile

        

编译修改如下:

        

1 .PC版本的编译步骤
    1. openssl
    2.paho 的编译
        修改makefile
        1.CC ?=gcc             122line
        2.133 line 加入这两个选项
        CFLAGS += -I /usr/local/ssl/include
        LDFLAGS += -L /usr/local/ssl/lib  
        3.192line  注意-I,-L 后面填写ssl库的头文件目录和库文件目录 我这里是/usr/local/ssl/include 和 
        /usr/local/ssl/lib,如果你的不是,需要切换下
        CCFLAGS_SO += -Wno-deprecated-declarations -DOSX -I /usr/local/ssl/include
        LDFLAGS_C += -Wl,-install_name,lib$(MQTTLIB_C).so.${MAJOR_VERSION}
        LDFLAGS_CS += -Wl,-install_name,lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -L /usr/local/ssl/lib
        LDFLAGS_A += -Wl,-install_name,lib${MQTTLIB_A}.so.${MAJOR_VERSION}
        LDFLAGS_AS += -Wl,-install_name,lib${MQTTLIB_AS}.so.${MAJOR_VERSION} -L /usr/local/ssl/lib
        FLAGS_EXE += -DOSX
        FLAGS_EXES += -L /usr/local/ssl/lib

        4.make 

        quesion:
        /usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(x86_64cpuid.o): relocation R_X86_64_PC32 against symbol `OPENSSL_cpuid_setup' can not be used when making a shared object; recompile with -fPIC
        初步分析,ssl编译的有问题,需要在编译的时候添加 ./config enable-shared

         /tmp/ccM0lsiB.o: relocation R_X86_64_PC32 against symbol `stdout@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
        检查paho库makefile 中是否加入-fPIC编译选项。
         本makefile line:157 CCFLAGS_SO = -g  -fPIC

         5. sudo make install   /usr/local/lib /usr/local/include 
         最后:
         install: cannot stat 'build/output/doc/MQTTClient/man/man3/MQTTClient.h.3': No such file or directory
         Makefile:275: recipe for target 'install' failed
         make: [install] Error 1 (ignored)
         install -m 644 build/output/doc/MQTTAsync/man/man3/MQTTAsync.h.3 /usr/local/share/man/man3
         install: cannot stat 'build/output/doc/MQTTAsync/man/man3/MQTTAsync.h.3': No such file or directory
         Makefile:275: recipe for target 'install' faile
        
         报这个错不用理会。到此就完成了编译。
         pc 版mqtt库的安装。


2.arm版本:   
        arm-linux-gcc 配置
        1.先按照之前方法配置
        apt-get install lib32ncurses5 lib32z1(由于是64位系统,
        arm-linux-gcc 是32位,需要安装这个库)
    openssl arm 版本编译
    1. 
    ./config no-asm shared --prefix=$(pwd)/__install
     no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是对arm格式不支持的。
    shared :生成动态连接库。
    –prefix :指定make install后生成目录的路径,不修改此项则默认为OPENSSLDIR目录(/usr/local/ssl)
    2.修改makefile
    1) CC= gcc 改成 CC = arm-linux-gcc;(根据你自己的交叉编译环境设置,我的交叉编译环境是:arm-none-linux-gnueabi-)
    2) 删除 CFLAG= 中的 “-march=pentium”;(如果有的话)

    3) AR=ar $(ARFLAGS) r 改为 AR=arm-none-linux-gnueabi-ar $(ARFLAGS) r;

    4) ARD=ar $(ARFLAGS) d 改为 ARD=arm-none-linux-gnueabi-ar $(ARFLAGS) d;(如果有的话)

    5)RANLIB= /usr/bin/ranlib 改为 RANLIB= arm-none-linux-gnueabi-ranlib;
    3.makefile 中去掉
    153 63 -m64 去掉

    4. make
    5. make install
    6.生成的arm库子当前目录下__install

    2. arm paho
    https://blog.csdn.net/ltc844139730/article/details/52553086?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_v2~rank_aggregation-9-52553086.pc_agg_rank_aggregation&utm_term=arm%E7%A7%BB%E6%A4%8Dmqtt&spm=1000.2123.3001.4430
        1.进入paho目录
        2.  修改makefile 24行
        .PHONY: clean, mkdir, install, uninstall, html,在这行的下面加入2行

        INCLUDES = -I/home/linux/code_test/mqtt_src/openssl-1.0.0s/__install/include
        LIBSDIR  = -L/home/linux/code_test/mqtt_src/openssl-1.0.0s/__install/lib
        3.
        然后到文件的第181行,在${CC} 后面加上$(INCLUDES),在最后加上$(LIBSDIR),生成的时候需要库,要把库的路径添加进去。

        ${CC} $(INCLUDES) -g -o $@ $< -l${MQTTLIB_CS} ${FLAGS_EXES} $(LIBSDIR)
        在第187行,203行,215行做同样处理。最好和我用一样的版本,一个是这个位置不对,另一个是我之前用的1.10版本的,这样子做没有效果。
        需要多行加入。行号稍微有点差异。
    3. make CC=arm-linux-gcc

    问题
    报错:build/output/libpaho-mqtt3a.so: undefined reference to `clock_gettime'
    修改makefile 最后 加入-lrt
    FLAGS_EXES = $(LDFLAGS) -I ${srcdir} ${START_GROUP} -lpthread -lssl -lcrypto -lrt ${END_GROUP} -L ${blddir}  
    
    最后,bulid/output 下面就是 arm 版本的库了.

    在paho 目录下面有两个makefile ,后缀为arm,是arm版本的makefile 生成arm版本的库。
    后缀名为PC的是生成PC版本的库,可以根据情况进行改名。
    cp Makefile_arm makefile 
    cp Makefile_PC makefile
 

4.代码的修改

        1.heda.h文件

                主要修改以下三个内容

DEV_NAME:就是

PRODUCT_ID:

PASSWD:要使用onenet计算工具

点击Generate,产生的PASSWD赋值给PASSWD。

这里.h文件就修改完成了。

        2.main.c

这里的num产生一个0-100范围内的数值,也就是前面设定的范围

tmp就是前面    onenet----13步骤    设定的标识符。

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

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

相关文章

分享两个日常办公软件:uTools、PixPin

1. uTools 网址&#xff1a;https://u.tools/ 这是一个高效智能的在线工具平台。 特点&#xff1a; 专为提升用户的工作效率跟生活便利性设计。 优点&#xff1a; 1&#xff1a;由国内团队开发。 2&#xff1a;通过插件化的方式为用户提供多样化的功能支持。 3&#xf…

Golang基础学习

​​​​​​​​​​ 初见golang语法 go项目路径 cd $GOPATH //ls可以看到有bin,pkg,src三个文件 cd src/ mkdir GolangStudy cd GolangStudy mkdir firstGolanggo程序执行: go run hello.go//如果想分两步执行: go build hello.go ./hello导入包的方式 import "f…

Spark 之 DataFrame 开发

foreachPartition val data = spark.sparkContext.parallelize(1 to 100)// 使用 foreachPartition 批量处理分区 data.foreachPartition {partitionIterator =

嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析

第一部分 移除挂起等待列表中的任务 while( listLIST_IS_EMPTY( &xPendingReadyList ) pdFALSE )//循环寻找直到为空&#xff0c;把全部任务扫描一遍 { pxTCB ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingR…

机器学习KNN算法全解析:从原理到实战

大家好&#xff01;今天我们来聊聊机器学习中的"懒人算法"——KNN&#xff08;K-Nearest Neighbors&#xff0c;K近邻&#xff09;算法。这个算法就像个"墙头草"&#xff0c;它不学习模型参数&#xff0c;而是直接根据邻居的"投票"来做决策&…

【QT】自定义QWidget标题栏,可拖拽(拖拽时窗体变为normal大小),可最小/大化、关闭(图文详情)

目录 0.背景 1.详细实现 思路简介 .h文件 .cpp文件 0.背景 Qt Linux&#xff1b;项目遇到问题&#xff0c;解决后特此记录 项目需要&#xff0c;个性化的标题栏&#xff08;是个widget&#xff09;&#xff0c;在传统的三个按钮&#xff08;最大化、最小化、关闭&#xf…

FPGA定点和浮点数学运算-实例对比

在创建 RTL 示例时&#xff0c;经常使用 VHDL 2008 附带的 VHDL 包。它提供了出色的功能&#xff0c;可以高效地处理定点数&#xff0c;当然&#xff0c;它们也是可综合的。该包的一些优点包括&#xff1a; 有符号和无符号&#xff08;后缀和后缀&#xff09;定点向量。轻松将定…

Linux编程:2、进程基础知识

一、进程基本概念 1、进程与程序的区别 程序&#xff1a;静态的可执行文件&#xff08;如电脑中的vs2022安装程序&#xff09;。进程&#xff1a;程序的动态执行过程&#xff08;如启动后的vs2022实例&#xff09;&#xff0c;是操作系统分配资源的单位&#xff08;如 CPU 时…

Cursor Rules 使用

前言 最近在使用 Cursor 进行编程辅助时&#xff0c;发现 AI 生成的代码风格和当前的代码风格大相径庭。而且有时它会输出很奇怪的代码&#xff0c;总是不符合预期。 遂引出本篇&#xff0c;介绍一下 Rules &#xff0c;它就可以做一些规范约束之类的事情。 什么是 Cursor R…

服务器数据恢复—服务器raid5阵列崩溃如何恢复数据?

服务器数据恢复环境&故障&#xff1a; 某品牌型号为X3850服务器上有一组由14块数据盘和1块热备盘组建的raid5磁盘阵列。 服务器在正常使用过程中突然崩溃&#xff0c;管理员查看raid5阵列故障情况的时发现磁盘阵列中有2块硬盘掉线&#xff0c;但是热备盘没有启用。 服务器数…

Go语言堆内存管理

Go堆内存管理 1. Go内存模型层级结构 Golang内存管理模型与TCMalloc的设计极其相似。基本轮廓和概念也几乎相同&#xff0c;只是一些规则和流程存在差异。 2. Go内存管理的基本概念 Go内存管理的许多概念在TCMalloc中已经有了&#xff0c;含义是相同的&#xff0c;只是名字有…

【DAY41】简单CNN

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点&#xff1a; 数据增强卷积神经网络定义的写法batch归一化&#xff1a;调整一个批次的分布&#xff0c;常用与图像数据特征图&#xff1a;只有卷积操作输出的才叫特征图调度器&#xff1a;直接修改基础学习率 卷积操作常…

使用MinIO搭建自己的分布式文件存储

目录 引言&#xff1a; 一.什么是 MinIO &#xff1f; 二.MinIO 的安装与部署&#xff1a; 三.Spring Cloud 集成 MinIO&#xff1a; 1.前提准备&#xff1a; &#xff08;1&#xff09;安装依赖&#xff1a; &#xff08;2&#xff09;配置MinIO连接&#xff1a; &…

K7 系列各种PCIE IP核的对比

上面三个IP 有什么区别&#xff0c;什么时候用呢&#xff1f; 7 series Integrated Block for PCIE AXI Memory Mapped to PCI Express DMA subsystem for PCI Express 特点 这是 Kintex-7 内置的 硬核 PCIe 模块。部分事务层也集成在里面&#xff0c;使用标准的PCIE 基本没…

natapp 内网穿透失败

连不上网络错误调试排查详解 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 如何将DNS服务器修改为114.114.114.114_百度知道 连不上/错误信息等问题解决汇总 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 nslookup auth.natapp.cnping auth.natapp.cn

深入解析CI/CD开发流程

引言&#xff1a;主播最近实习的时候发现部门里面使用的是CI/CD这样的集成开发部署&#xff0c;但是自己不是太了解什么意思&#xff0c;所以就自己查了一下ci/cd相关的资料&#xff0c;整理分享了一下 一、CI/CD CI/CD是持续集成和持续交付部署的缩写&#xff0c;旨在简化并…

Docke启动Ktransformers部署Qwen3MOE模型实战与性能测试

docker运行Ktransformers部署Qwen3MOE模型实战及 性能测试 最开始拉取ktransformers:v0.3.1-AVX512版本&#xff0c;发现无论如何都启动不了大模型&#xff0c;后来发现是cpu不支持avx512指令集。 由于本地cpu不支持amx指令集&#xff0c;因此下载avx2版本镜像&#xff1a; …

应用分享 | 精准生成和时序控制!AWG在确定性三量子比特纠缠光子源中的应用

在量子技术飞速发展的今天&#xff0c;实现高效稳定的量子态操控是推动量子计算、量子通信等领域迈向实用化的关键。任意波形发生器&#xff08;AWG&#xff09;作为精准信号控制的核心设备&#xff0c;在量子实验中发挥着不可或缺的作用。丹麦哥本哈根大学的研究团队基于单个量…

相机--相机标定实操

教程 camera_calibration移动画面示例 usb_cam使用介绍和下载 标定流程 单目相机标定 我使用的是USB相机&#xff0c;所以直接使用ros的usb_cam功能包驱动相机闭关获取实时图像&#xff0c;然后用ros的camera_calibration标定相机。 1,下载usb_cam和camera_calibration: …

DAY43 复习日

浙大疏锦行-CSDN博客 kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;把项目拆分成多个文件 src/config.py: 用于存放项目配置&#xff0c;例如文件路径、学习率、批次大小等。 # src/config.py# Paths DATA_DIR "data…