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


项目场景:

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


问题描述:

若用如下图所示的网络调试助手进行模拟数据展示的话,主要问题有:
(1)是可视化的程度比较低,功能展示起来不太美观;
(2)对收集到的数据不能进行解码处理、图像化处理、以及对采集到的数据数据进一步处理等的操作。
在这里插入图片描述
而如下图所示的OneNet云平台不仅拥有非常美观的前端界面,而且自带有登录注册,提供TCP/IP通信,进行数据可视化展示等服务,可以为广大硬件开发人员提供非常不错的数据展示平台。
在这里插入图片描述


解决方案:

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

首先在OneNet云平台这边,我们登录之后,在自己头像这边点击账号信息;
在这里插入图片描述
在点进去的界面内,上主菜单有一个全部产品服务,点出来的框内可以看到有多协议接入这个选项;
在这里插入图片描述
点进去后可以看到有TCP透传这个选项,由于本人在做树莓派开发过程中基本都是TCP/IP进行通信,因此选择该选项,进行产品的添加;
在这里插入图片描述
在点击添加产品后,有诸多的信息填入选项(该产品是自己的项目,不算设备,设备在项目生成后会有另外添加)可以依据自己的项目进行填写,也可以随便填,但是联网方式和接入协议不能错写;
在这里插入图片描述
填写完成后,便能出现如下图所示的可视化界面;在这里插入图片描述
我们需要在设备列表的界面,对设备进行添加;
在这里插入图片描述输入相关信息的界面中,有个鉴权信息,十分重要,后期要用的,这边提一下,引起注意!!
在这里插入图片描述
添加设备之后,就会出现新的一个离线设备,在右边操作属性中,有一个详情的连接;
在这里插入图片描述
点击详情之后,出来的界面会有很多详细信息,我们可以注意到有一个API地址,然而我们TCP/IP通信时,用的都是IP地址,两个地址不太一样,但可以相互转换,具体定义可以参考代理IP与API接口,因此我们还需要解决怎么用IP进行连接的问题。
在这里插入图片描述
我们点击设备列表,返回到设备信息后,可以看到有个脚本解析,在这边,我们需要上传一个sample.lua的脚本,实现IP地址对OneNet云端的通信。
脚本链接:https://pan.baidu.com/s/1A6cKhVsHb2vKazemWp36sw
提取码:mgtz
在这里插入图片描述
添加脚本后,云端这边就可以通过IP地址+端口号进行通信连接了,此外OneNet云平台本身就有提供固定的IP地址和端口号

IP:183.230.40.40
端口号:1811

在这里插入图片描述


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

为了方便直接观看建立过程,我们先以网络调试助手模拟树莓派与OneNet云平台建立连接,准备前期图片如下;
在这里插入图片描述
由于云平台一方是作为服务端先开启连接接口,因此网络调试助手这边协议类型应该为TCP客户端(Client)
在建立连接之后,还需要先发送一个登录报文,以通过脚本连接对应的设备,报文格式如下;
在这里插入图片描述
发送报文之后,即可直接接收到recived的回复
在这里插入图片描述
此时云平台一放也可以显示出一个设备的在线接入:
在这里插入图片描述
此时我们发送一个1,云平台一方也可以将数据与具体输入时间进行展示;
在这里插入图片描述
在这里插入图片描述
到这里,以网络调试助手模拟的树莓派即可成功连接OneNet云平台,并且能够进行数据的传输。


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

树莓派与外部云端进行TCP/IP通信的方法,我们之前在树莓派TCP传输协议(socket通信) 一发一收与多发多收的博客中,已经有所介绍,详情可以点进去观看;
我们这边只需要通过以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端设计的成本。
过程中可能有些地方没有说明清楚,还请大家多多交流,记得点赞+关注哦!!
请添加图片描述

  • 10
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾柒#_17

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值