目录

树莓派数据远程传输学习记录TCPIP协议连接OneNet云平台传输数据的方法

树莓派数据远程传输学习记录——TCP/IP协议连接OneNet云平台传输数据的方法

https://img-home.csdnimg.cn/images/20240715101418.png

关键词由CSDN通过智能技术生成

目录


项目场景:

本人在进行树莓派项目开发时进行数据远程传输(4G/WiFi通信)过程中,由于自己主研究方向是硬件开发,不善于使用 Web云端 等方式对数据进行可视化的展示。所以一般都将采集到的传感器数据传输到 网络调试助手 ,以实现对Web端的模拟。


问题描述:

若用如下图所示的网络调试助手进行模拟数据展示的话,主要问题有:

(1)是可视化的程度比较低,功能展示起来不太美观;

(2)对收集到的数据不能进行解码处理、图像化处理、以及对采集到的数据数据进一步处理等的操作。

https://i-blog.csdnimg.cn/blog_migrate/a9c3c3e9465fad38208821d630b3cf22.png

而如下图所示的OneNet云平台不仅拥有非常美观的前端界面,而且自带有登录注册,提供TCP/IP通信,进行数据可视化展示等服务,可以为广大硬件开发人员提供非常不错的数据展示平台。

https://i-blog.csdnimg.cn/blog_migrate/61118013701a5059fad0a352536c4537.png


解决方案:

OneNet云平台前期项目搭建准备:

首先在OneNet云平台这边,我们登录之后,在自己头像这边点击账号信息;

https://i-blog.csdnimg.cn/blog_migrate/f78555e2efa01d2762a5dac68a533cb1.png

在点进去的界面内,上主菜单有一个全部产品服务,点出来的框内可以看到有多协议接入这个选项;

https://i-blog.csdnimg.cn/blog_migrate/0d5e66d18a8d7ecd6691464824433a23.png

点进去后可以看到有TCP透传这个选项,由于本人在做树莓派开发过程中基本都是TCP/IP进行通信,因此选择该选项,进行产品的添加;

https://i-blog.csdnimg.cn/blog_migrate/3a91267935d4feac2e1f034b35e0e43e.png

在点击添加产品后,有诸多的信息填入选项(该产品是自己的项目,不算设备,设备在项目生成后会有另外添加)可以依据自己的项目进行填写,也可以随便填,但是联网方式和接入协议不能错写;

https://i-blog.csdnimg.cn/blog_migrate/5264236b859fe90971eb6da8433961f7.png

填写完成后,便能出现如下图所示的可视化界面; https://i-blog.csdnimg.cn/blog_migrate/67d33520dedc07b9316645a51ff4b011.png

我们需要在设备列表的界面,对设备进行添加;

https://i-blog.csdnimg.cn/blog_migrate/eee7ec28ccb3ca2c4309667defb8195b.png 输入相关信息的界面中,有个鉴权信息,十分重要,后期要用的,这边提一下,引起注意!!

https://i-blog.csdnimg.cn/blog_migrate/f0c2dcff47dc7f28829fab65b155c5a3.png

添加设备之后,就会出现新的一个离线设备,在右边操作属性中,有一个详情的连接;

https://i-blog.csdnimg.cn/blog_migrate/022e7b992b35a3ad2022116de7017b25.png

IP:183.230.40.40
端口号:1811

https://i-blog.csdnimg.cn/blog_migrate/57c3f1a8c51749a02c011bfa490a334c.png


以网络调试助手模拟树莓派建立连接并发送数据:

为了方便直接观看建立过程,我们先以网络调试助手模拟树莓派与OneNet云平台建立连接,准备前期图片如下;

https://i-blog.csdnimg.cn/blog_migrate/fb6a3e0d537e61a2102ee37b4830cf07.png

由于云平台一方是作为 服务端 先开启连接接口,因此网络调试助手这边协议类型应该为 TCP客户端(Client)

在建立连接之后,还需要先发送一个登录报文,以通过脚本连接对应的设备,报文格式如下;

https://i-blog.csdnimg.cn/blog_migrate/7df3a581845b876cecd0c0b11ea64614.png

发送报文之后,即可直接接收到recived的回复

https://i-blog.csdnimg.cn/blog_migrate/e9cafcf2d95f43eefba69465bffd3223.png

此时云平台一放也可以显示出一个设备的在线接入:

https://i-blog.csdnimg.cn/blog_migrate/d2b2d39ba2e2ae3d705c6da0580ca485.png

此时我们发送一个1,云平台一方也可以将数据与具体输入时间进行展示;

https://i-blog.csdnimg.cn/blog_migrate/cf83cd6d79567b64f3aaabbb8a16c7c5.png

https://i-blog.csdnimg.cn/blog_migrate/da1cb4a26c175e5e849004a73e90f54e.png

到这里,以网络调试助手模拟的树莓派即可成功连接OneNet云平台,并且能够进行数据的传输。


树莓派与OneNet云平台进行对接:

树莓派与外部云端进行TCP/IP通信的方法,我们之前在 的博客中,已经有所介绍,详情可以点进去观看;

我们这边只需要通过 以socket为框架的TCP/IP协议 进行通信并发送数据即可,并且在发送数据之前先发送 接入报文 ,所需代码如下:

发送端(服务端) fa.py代码:

#coding=utf-8
import socket
import cv2
import numpy
import time
import smbus
import math

def SendVideo():
    address = ('183.230.40.40', 1811) # 地址:IP+端口号
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建sock对象
        sock.connect(address) # 与客户端连接
    except socket.error as msg: # 判断连接是否发生错误
        print(msg)
        sys.exit(1)
    DataBase=b'*512656#123456#sample*' #输入连接报文
    sock.send(DataBase)
    while 1:
        time.sleep(0.1)
        sock.send(b'123'); #发送数据
        
        sock.settimeout(1) # 计时1秒,若无信息接收则关闭recv
        try:
            data=sock.recv(10)
            #print(data)
        except socket.timeout as e:
            #print(f"{e}")
            continue

if __name__ == '__main__':
    SendVideo()

最后总结:

至此就完成了树莓派与OneNet云平台建立TCP/IP连接,实现了数据的可视化,节省了在项目开发过程中需要额外进行Web端设计的成本。

过程中可能有些地方没有说明清楚,还请大家多多交流,记得 点赞+关注 哦!!

https://i-blog.csdnimg.cn/blog_migrate/f3b4cdecb199cf5670cf9d1155452734.gif