OneNet + openssl + MQTT

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.pswp.cn/bicheng/84491.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84491.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84491.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

行為設計模式之Memento(備忘錄)

行為設計模式之Memento&#xff08;備忘錄&#xff09; 前言&#xff1a; 備忘錄設計模式&#xff0c;有點像vmware快照可以回滾&#xff0c;idea的提交記錄同樣可以混滾&#xff0c;流程引擎中流程可以撤銷到或者回滾到某個指定的狀態。 1&#xff09;意圖 在不破壞封裝性的…

動畫直播如何顛覆傳統?解析足球籃球賽事的數據可視化革命

在5G和AI技術快速發展的今天&#xff0c;體育賽事直播正在經歷一場深刻的變革。傳統視頻直播雖然能提供真實的比賽畫面&#xff0c;但在戰術可視化、數據深度和交互體驗方面存在明顯短板。而基于實時數據驅動的動畫直播技術&#xff0c;正通過創新的方式彌補這些不足&#xff0…

二刷蒼穹外賣 day01

nginx nginx反向代理 將前端發送的請求由nginx轉發到后端服務器 好處&#xff1a; 提速&#xff1a;nginx本身可緩存數據 負載均衡&#xff1a;配置多臺服務器&#xff0c;大量請求來臨可均衡分配 保證后端安全&#xff1a;不暴露后端服務真實地址 server{listen 80;server_…

5.2 HarmonyOS NEXT應用性能診斷與優化:工具鏈、啟動速度與功耗管理實戰

HarmonyOS NEXT應用性能診斷與優化&#xff1a;工具鏈、啟動速度與功耗管理實戰 在HarmonyOS NEXT的全場景生態中&#xff0c;應用性能直接影響用戶體驗。通過專業的性能分析工具鏈、針對性的啟動速度優化&#xff0c;以及精細化的功耗管理&#xff0c;開發者能夠構建"秒…

模型訓練-關于token【低概率token, 高熵token】

Qwen團隊新發現&#xff1a;大模型推理能力的提高僅由少數高熵 Token 貢獻 不要讓低概率token主導了LLM的強化學習過程 一 低概率詞元問題 論文&#xff1a;Do Not Let Low-Probability Tokens Over-Dominate in RL for LLMs 在RL訓練過程中&#xff0c;低概率詞元&#xff08…

XCTF-web-easyupload

試了試php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都沒有用 嘗試.user.ini 抓包修改將.user.ini修改為jpg圖片 在上傳一個123.jpg 用蟻劍連接&#xff0c;得到flag

gRPC、WebSocket 與 HTTP 的核心區別對比

gRPC、WebSocket 與 HTTP 的核心區別對比&#xff0c;涵蓋通信模式、協議特性及適用場景&#xff1a; &#x1f504; ?一、通信模式? ?HTTP? ?單向請求-響應?&#xff1a;客戶端發起請求&#xff0c;服務器返回響應后連接立即關閉13。?無狀態協議?&#xff1a;每次請求…

Android第十三次面試總結(四大 組件基礎)

Activity生命周期和四大啟動模式詳解 一、Activity 生命周期 Activity 的生命周期由一系列回調方法組成&#xff0c;用于管理其創建、可見性、焦點和銷毀過程。以下是核心方法及其調用時機&#xff1a; ?onCreate()?? ?調用時機?&#xff1a;Activity 首次創建時調用。?…

講講JVM的垃圾回收機制

垃圾回收就是對內存堆中已經死亡或者長時間沒有使用的對象進行清楚或回收。 JVM 在做 GC 之前&#xff0c;會先搞清楚什么是垃圾&#xff0c;什么不是垃圾&#xff0c;通常會通過可達性分析算法來判斷對象是否存活。 在確定了那些垃圾可以被回收后&#xff0c;垃圾回收器&…

QT軟件外包開發費用

國內QT軟件外包開發費用是一個非常復雜的問題&#xff0c;沒有一個固定的價格&#xff0c;它受到多種因素的影響。以下將詳細闡述影響QT軟件外包開發費用的主要因素&#xff0c;并提供大致的價格區間供參考&#xff08;請注意&#xff0c;這些價格僅為估算&#xff0c;實際報價…

iOS 16 SwiftUI 優雅跳轉實踐:用枚舉路由和 NavigationStack 實現多頁面導航

引言&#xff1a;跳轉的混亂與優雅的必要性 SwiftUI 給我們帶來了聲明式界面的全新開發體驗&#xff0c;但當涉及到頁面跳轉時&#xff0c;許多開發者仍然面臨一些“舊痛”。最初的 NavigationLink(destination:isActive:) 或 sheet(isPresented:) 等方式雖然能用&#xff0c;…

TikTok矩陣養號實戰:住宅IP純凈度與設備指紋聯動方案

在TikTok矩陣運營中&#xff0c;住宅IP純凈度和設備指紋管理是規避風控的核心。以下方案整合多平臺風控邏輯與實戰數據&#xff0c;覆蓋環境隔離、行為模擬到風險防控全流程。 &#x1f527; 一、住宅IP純凈度維持策略 IP篩選與驗證 靜態住宅IP優選&#xff1a;核心賬號綁定目標…

Elasticsearch增刪改查語句

創建索引庫&#xff1a;不帶映射的 PUT /索引名稱 {"settings": {"number_of_shards": 3, // 主分片數"number_of_replicas": 1 // 每個主分片的副本數} } 創建帶映射的索引庫&#xff1a; PUT /products {"settings": {"…

樹莓派4B, ubuntu20.04, 安裝Ros Noetic[踩坑記錄]

一、安裝過程 1. 硬件要求 樹莓派4B (建議4GB或8GB內存版本) 至少16GB的microSD卡 2. 下載并安裝Ubuntu 20.04 Ubuntu 20.04 LTS (Focal Fossa) for Raspberry Pi 使用Raspberry Pi Imager或BalenaEtcher將鏡像寫入microSD卡 3. 安裝ROS Noetic ?# 設置sources.list s…

視覺slam--框架

視覺里程計的框架 傳感器 VO--front end VO的缺點 后端--back end 后端對什么數據進行優化 利用什么數據進行優化的 后端是怎么進行優化的 回環檢測 建圖 建圖是指構建地圖的過程。 構建的地圖是點云地圖還是什么信息的地圖&#xff1f; 建圖并沒有一個固定的形式和算法…

每日算法 -【Swift 算法】刪除鏈表的倒數第 N 個結點

?? Swift | 刪除鏈表的倒數第 N 個結點(含詳細注釋) 在刷算法題時,我們經常會遇到關于鏈表的題目,而「刪除鏈表的倒數第 N 個節點」是其中一個非常經典的題。今天我們就用 Swift 來實現它,并梳理清楚整個思路。 ?? 一、題目描述 給你一個鏈表,刪除鏈表的倒數第 n 個…

Truffle 和 Ganache 使用指南

Truffle 和 Ganache 使用指南 Truffle 命令詳解 Truffle 是一個流行的以太坊開發框架,提供了許多有用的命令來簡化智能合約的開發、測試和部署。 常用 Truffle 命令 初始化項目 truffle init 創建一個新的 Truffle 項目結構。 編譯合約 truffle compile 編譯項目中的 Solid…

docker進階之架構

一、OCI 名為OCI&#xff0c;全稱 Open Container Initiative/開放容器倡議,其目的主要是為了制定容器技術的通用技術標準。目前主要有兩種標準&#xff1a; 1、容器運行時標準 &#xff08;runtime spec&#xff09; 2、容器鏡像標準&#xff08;image spec&#xff09; …

企業產品網絡安全日志6月10日-WAF資費消耗排查

發生了什么事&#xff1f; 上個的費用賬單出來了&#xff0c;WAF費用有點飆升。比平時多了50%到100%。 周五的時候就已經知道這個事情了&#xff0c;但當時考慮肯定是攔截了一些惡意請求&#xff0c;所以。 反正也是上個月的事情了&#xff0c;所以周一過來復盤一下 數了下&a…

vue3+el-table 利用插槽自定義數據樣式

<el-table-column label"匹配度" prop"baseMatchingLevel"><template #default"scope"><div :style"{ color: scope.row.baseMatchingLevel > 0.8 ? #00B578 : #FA5151 }">{{ scope.row.baseMatchingLevel }}&l…