本人在进行树莓派项目开发时进行数据远程传输(4G/WiFi通信)过程中,由于自己主研究方向是硬件开发,不善于使用Web云端等方式对数据进行可视化的展示。所以一般都将采集到的传感器数据传输到网络调试助手,以实现对Web端的模拟。
若用如下图所示的网络调试助手进行模拟数据展示的话,主要问题有: (1)是可视化的程度比较低,功能展示起来不太美观; (2)对收集到的数据不能进行解码处理、图像化处理、以及对采集到的数据数据进一步处理等的操作。 而如下图所示的OneNet云平台不仅拥有非常美观的前端界面,而且自带有登录注册,提供TCP/IP通信,进行数据可视化展示等服务,可以为广大硬件开发人员提供非常不错的数据展示平台。
首先在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云平台,并且能够进行数据的传输。
树莓派与外部云端进行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端设计的成本。 过程中可能有些地方没有说明清楚,还请大家多多交流,记得点赞+关注哦!!