树莓派通过HTTP协议上传CPU温度值到云平台

一、前言
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协议上传到云平台进行管理。
如需咨询树莓派方案详情,欢迎联系虹科。



3 评论

  1. 怎么有语法错误?
    root@raspberrypi:/home/pi# python3 http_Test.py
    File “/home/pi/http_Test.py”, line 27
    if __name__ == ‘__main__’:
    ^
    SyntaxError: invalid syntax

发表评论

你的邮件地址不会公开


*