当前位置: 首页 > news >正文

虚拟机Ubantu连接ONENET平台上传数据与错误问题汇总

1.安装UBANTU与虚拟机,可以看我的前面的文章

2.基础的ONENET操作,我看的下面这篇文章做的,或者B站有视频讲解,需要注意一点在产品开发时注意选数据流。看下面这一篇,照着设置,先用这个mqtt.fx激活设备后在进行我们的虚拟机程序触发。

使用MQTT.fx接入新版ONENet(24.4.8)_mqtt.fx 最新版本-CSDN博客

3.基础的代码逻辑是通过唯一一篇说的详细还不收费的这个哥们的文章里搞懂的

Python使用MQTT连接新版ONENet_python onenet-CSDN博客

4.具体代码

import paho.mqtt.client as mqtt from paho.mqtt.client import MQTTv311 import json import base64 import hmac import time from urllib.parse import quote # 服务器信息 ServerUrl = "mqtts.heclouds.com" # 服务器URL ServerPort = 1883 # 服务器端口 DeviceName = "sssrgovan" # 设备ID Productid = "dsdsd4sxgl" # 产品ID accesskey = "sdddddddddddddddddddddddddddddd" # 密钥 # 发布的topic Pub_topic1 = "$sys/" + Productid + "/" + DeviceName + "/dp/post/json" # 需要订阅的topic Sub_topic1 = "$sys/" + Productid + "/" + DeviceName + "/dp/post/json/accepted" Sub_topic2 = "$sys/" + Productid + "/" + DeviceName + "/dp/post/json/rejected" # 测试用JSON数据格式(上传5个不同的数据量) data = { "id": 123, "dp": { "acceleration": [{"v": 22.1}], "orientation": [{"v": 61.2}], "position": [{"v": 10.5}], # 新增数据点 "speed": [{"v": 20.5}], "speed_normalized": [{"v": 30.5}] } } jsonstr = json.dumps(data) # 认证token生成函数 def get_token(id, access_key): version = '2018-10-31' res = "products/" + Productid + "/devices/" + DeviceName et = str(int(time.time()) + 36000000) method = 'sha1' key = base64.b64decode(access_key) org = et + '\n' + method + '\n' + res + '\n' + version sign_b = hmac.new(key=key, msg=org.encode(), digestmod=method) sign = base64.b64encode(sign_b.digest()).decode() sign = quote(sign, safe='') res = quote(res, safe='') token = 'version=%s&res=%s&et=%s&method=%s&sign=%s' % (version, res, et, method, sign) return token # 当客户端收到来自服务器的CONNACK响应时的回调 def on_connect(client, userdata, flags, reason_code, properties): if reason_code.is_failure: print(f"连接失败,错误码:{reason_code}") # 尝试重连 time.sleep(5) client.reconnect() else: print(f"连接成功,返回码:{reason_code}") # 连接成功后就订阅topic client.subscribe(Sub_topic1) client.subscribe(Sub_topic2) # 从服务器接收发布消息时的回调 def on_message(client, userdata, message): print(f"收到服务器反馈:{message.topic} {str(message.payload, 'utf-8')}") # 当消息已经被发送给中间人,on_publish()回调将会被触发 def on_publish(client, userdata, mid): print(f"消息发布成功,消息ID:{mid}") # 当客户端成功订阅主题时的回调 def on_subscribe(client, userdata, mid, reason_code_list, properties): if reason_code_list[0].is_failure: print(f"订阅失败,错误码:{reason_code_list[0]}") else: print(f"订阅成功,QoS:{reason_code_list[0].value}") # 当客户端成功取消订阅主题时的回调 def on_unsubscribe(client, userdata, mid, reason_code_list, properties): if len(reason_code_list) == 0 or not reason_code_list[0].is_failure: print("取消订阅成功") else: print(f"取消订阅失败,错误码:{reason_code_list[0]}") client.disconnect() # 主函数 def main(): # 生成认证token passw = get_token(DeviceName, accesskey) print("生成的token:", passw) # 初始化MQTT客户端 mqttc = mqtt.Client(client_id=DeviceName, protocol=MQTTv311) mqttc.on_connect = on_connect mqttc.on_message = on_message mqttc.on_publish = on_publish mqttc.on_subscribe = on_subscribe mqttc.on_unsubscribe = on_unsubscribe # 设置设备认证信息 mqttc.username_pw_set(username=Productid, password=passw) # 连接到OneNET平台 print("开始连接到服务器") mqttc.connect(ServerUrl, port=ServerPort, keepalive=120) # 启动网络循环 mqttc.loop_start() try: for _ in range(5): # 发送5次数据 # 发布数据到OneNET平台,使用 QoS 0 mqttc.publish(Pub_topic1, jsonstr, qos=0) print("数据发布成功") time.sleep(5) # 每5秒发送一次数据 except KeyboardInterrupt: print("程序被手动终止") finally: print("正在断开连接...") mqttc.disconnect() if __name__ == '__main__': main()

其中里面的

# 服务器信息 ServerUrl = "mqtts.heclouds.com" # 服务器URL ServerPort = 1883 # 服务器端口 DeviceName = "sssrgovan" # 设备ID Productid = "dsdsd4sxgl" # 产品ID accesskey = "sdddddddddddddddddddddddddddddd" # 密钥

改成自己的,看不懂的看。Python使用MQTT连接新版ONENet_python onenet-CSDN博客

5.遇到的问题:

(1)虚拟机一直连接不成功。

解决方法,把网络连接方法改成桥接模式,

(2)如果操作1让wifi不见了或者网络没了,包括其他情况下ubantu的wifi 或者网络搞没了。

看https://blog.csdn.net/yt09281102/article/details/147784905?spm=1001.2014.3001.5502

(3)一直连接不上ONENET平台,或者说一直无法在线

  1. 确认目标服务器的 IP 地址是否正确

  2. 可以尝试通过域名解析来获取 IP 地址,使用nslookupping命令解析域名:

nslookup mqtts.heclouds.com

如果出现

meav) tuoni@jiaweisi:~/桌面/gym-duckietown/demo$ nslookup mqtts.heclouds.com Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: mqtts.heclouds.com canonical name = mqtts.heclouds.com.cmegtm.cn. Name: mqtts.heclouds.com.cmegtm.cn Address: 183.230.40.96 Name: mqtts.heclouds.com.cmegtm.cn Address: 218.201.45.2 Name: mqtts.heclouds.com.cmegtm.cn Address: 2409:8060:8ea:601::13:7c64

那么说明你的代码里

nslookup的结果来看,mqtts.heclouds.com的 IP 地址解析结果为多个 IP 地址,包括 IPv4 和 IPv6 地址。这表明该域名可能对应多个服务器节点,用于负载均衡或高可用性配置。

为了确定正确的 IP 地址,你可以尝试以下步骤:

尝试使用其他 IP 地址连接

nslookup的结果中可以看到多个 IPv4 地址:

  • 183.230.40.96

  • 218.201.45.2

你可以尝试使用这些 IP 地址代替之前的183.230.40.39来连接到 OneNET 平台。修改代码中的ServerUrl为其中一个 IP 地址,然后重新运行程序。例如:

ServerUrl = "183.230.40.96"

使用域名而非 IP 地址连接

由于mqtts.heclouds.com对应多个 IP 地址,使用域名连接可以让 DNS 解析自动选择可用的服务器节点。修改代码中的ServerUrl为域名:

ServerUrl = "mqtts.heclouds.com"

(4)如果在线了,你的数据格式也是对的,就是不出来数据刷新

就把你的

里面的和你的数据名称一样的删除后重新构建,就可以了。不要设置单位。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

当前记住的就这些,因为在做毕业设计,我现在已经完成了数据传输,大家有问题留言,看到有时间我会回复。

http://www.cnnetsun.cn/news/1691811.html

相关文章:

  • Graphormer科研提效指南:相比传统GNN训练节省70%时间的实测数据对比
  • 黑客反被黑:研究人员利用 XSS 漏洞劫持 StealC 控制面板,窃取攻击者情报
  • Freeswitch介绍+demo
  • Coffee Chat 的高效转化:15 分钟的对话,如何从“求内推”升华为“技术探讨”?
  • Small Tech 的崛起:为什么2026年去 Series B/C 的 AI 创业公司,成长速度远超大厂“拧螺丝”?
  • 如何为Windows 11 LTSC系统一键安装微软商店:3分钟解决应用生态难题
  • 智能配置革命:OpCore-Simplify重新定义黑苹果EFI构建流程
  • OpenArk:革新性Windows内核安全分析工具的突破性升级
  • 利用快马平台快速生成origin风格的数据可视化原型
  • 终极指南:如何使用macdriver开发Mac原生图形界面——CoreGraphics与QuartzCore框架详解
  • Webpacker终极集成指南:如何与React、Vue、TypeScript完美协作
  • Leantime Docker容器化部署完整指南:5步实现企业级项目管理平台
  • 利用快马平台ai能力,三分钟搭建mybatis plus spring boot项目原型
  • PromptSource与内容生成:高质量文本创作的提示工程技巧
  • Brax环境封装指南:无缝集成Gym和DM_Env接口
  • 解决Unity游戏插件加载难题的MelonLoader全攻略
  • faster-whisper-GUI与其他工具对比:为什么选择这个开源语音转写解决方案
  • Terminal-Icons高级用法:条件图标与动态颜色配置终极指南
  • awesome-ai-resources社区支持指南:如何参与贡献与获取帮助
  • Java 11 新特性概览与实战教程
  • Kirikiroid2核心组件深度解析:XP3存档系统与视频播放模块
  • JTCalendar核心组件深度解析:Manager、Delegate和View的完美协作
  • 全球AI信息场(信息网)基础理论与数学建模研究(乖乖数学)
  • Splinter 截图与 HTML 快照:完整记录测试过程的实用技巧
  • 系统减负:让Windows重获新生的开源清理方案
  • weixin-java-tools安全机制深度剖析:加解密与会话管理
  • 如何用秒传脚本实现百度网盘文件秒传:终极完整教程
  • FRCRN在短视频配音场景落地:UGC人声素材智能净化与重录准备
  • Overgrowth物理引擎集成:Bullet3在游戏中的实际应用指南
  • comsol三次谐波,本征手性BIC,远场偏振图,手性透射曲线,二维能带图,Q因子图,电场图