一、前言
HTTP是超文本传输协议的英文缩写,是基于TCP/IP通讯协议之上用来传输HTML和图片文件的应用协议,它是一个应用层面向对象的协议,优点是简捷、快速,适用于分布式超媒体信息系统。HTTP协议主要工作于B-S架构之上,这个时候浏览器作为HTTP的客户端通过URL向HTTP的服务器(web服务器)发送所有请求,web服务器根据接收到的请求后,向客户端发送响应信息。客户端向服务器请求发送时,需要传送请求方法和路径。路径就是URL,而HTTP常用的请求方法为GET和POST方法,每种方法规定了客户端与服务器通讯方式和数据报文。本文就以虹科工业树莓派为例进行实践,尝试把工业树莓派的一些数据上传到云平台。
二、准备
1.1、硬件准备
RevPi Connect*1
24V电源*1
网线*1
1.2、软件准备
SSH工具-FinalShell
注册OneNET云平台
三、云平台操作步骤
1、进入OneNET云平台的多协议接入服务;
路径:OneNET云平台首页->产品服务->MQTT物联网套件->立即使用->多协议接入服务
2、选择HTTP服务;
3、添加产品,详细信息可参考如下;
4、添加设备,设置一个设备名称和编号即可;
5、点击设备详情,添加APIKey;
6、保留这个页面或者保存好API地址和APIKey,后面需要用到;
7、云平台配置完成。
四、工业树莓派配置
1、用SSH工具登录工业树莓派命令行,并使用sudo su指令进入管理员权限。
2、新建一个python文件,这里的话就直接用nano指令新建了一个python文件,然后会直接进入新建的python文件里面;
nano http_Test.py
3、在新建的python文件里面添加如下代码,注意APIKET和apiurl都需要填写OneNET云平台生成的API地址和APIKey;
import urllib.request import json import time import datetime import requests APIKEY = 'api_key' # 改成自己添加的设备APIKEY apiurl = 'http://api.heclouds.com/devices/设备号/datapoints'#改成自己添加的设备APIURL apiheaders = {'api-key': APIKEY, 'Content-Length': '120'} def get_temp(): f=open('/sys/class/thermal/thermal_zone0/temp', 'r') s=f.read() temp =int(s) last_temp=temp/1000 return last_temp def http_put(): temperature=get_temp() CurTime = datetime.datetime.now() payload = {'datastreams': [{"id": "raspberrypi_temperature", "datapoints": [{"at": CurTime.isoformat(), "value": temperature}]}]} jdata = json.dumps(payload) # 对数据进行JSON格式化编码 # print(jdata) r = requests.post(apiurl, headers=apiheaders, data=json.dumps(payload) # return r if __name__ == '__main__': while True: time.sleep(2) http_put()
4、添加之后如下图所示:
5、编辑完成之后,Ctrl+X退出,Y保存,回车键确认保存。
6、运行以下代码,即可运行http_Test.py文件
python3 http_Test.py
8、打开OneNET平台,点击设备的数据流,打开实时刷新即可看到数据在实时更新。
五、总结
以上操作的话,只是把工业树莓派CPU温度上传到云平台进行一个显示效果。但是结合工业树莓派强大的功能,可以做更多的操作和应用。工业树莓派本身支持很多的通讯协议,例如Modbus TCP/RTU、EtherCAT、Profinet等。工业树莓派就可以作为一个协议转换的网关,将工业现场设备数据通过通讯协议传输到工业树莓派上进行数据,然后再将处理后的数据通过HTTP协议上传到云平台进行管理。
如需咨询树莓派方案详情,欢迎联系虹科。
怎么有语法错误?
root@raspberrypi:/home/pi# python3 http_Test.py
File “/home/pi/http_Test.py”, line 27
if __name__ == ‘__main__’:
^
SyntaxError: invalid syntax
代码里面的引号变了,字符问题
运行以后不显示时间等等下面的文字 云平台上面也是离线状态