自有云主机获取设备数据推送到微信
引言:在这个数字化时代,智能设备已经渗透到我们的生活和工作中。我们的家居、办公室和工厂都充斥着各种各样的智能设备,它们不仅让我们的生活更加便捷,还提供了大量数据。然而,当我们想要实时了解这些设备的状态、性能和数据时,通常会面临一些挑战。
一般,智能设备的数据存储在云端,我们需要依赖于云服务提供商的应用程序或界面来查看这些数据。然而,很多时候,这些通用应用无法满足我们个性化的需求。我们可能需要定制化的数据可视化,以便更清晰地了解设备的状态。我们也可能需要数据推送到我们常用的平台,方便我们随时随地查看。
在这篇文章中,我们将讨论如何通过自有云主机把设备数据推送到微信,毕竟微信是一个人人都用的软件,通过推送到微信显示数据,不仅方便还减少了我们的操作流程。
在这里,我使用的是python编写的代码,原因是python代码方便易于部署,自有云主机也基本都配备python环境,高端的路由器或者软路由也可以通过docker使用,非常简单。
代码:
import requests
import json
login_url = "https://api.gizwits.com/app/login"
appid_s=" ";
push_plus_token=" "
user_token_s=""
device_name="8路继电器-C50E"
need_did=""
# 用户名密码
data = {
"username": "**@qq.com",
"password": "**",
"lang": "en"
}
headers = {
"X-Gizwits-Application-Id": appid_s
}
try:
response = requests.post(login_url, json=data, headers=headers)
if response.status_code == 200:
response_data = response.json()
print(response_data)
user_token_s=response_data["token"]
print(user_token_s)
else:
print(f"HTTP 请求失败: {response.status_code}")
except Exception as e:
print(f"发生异常: {str(e)}")
exit(1)
## 请求设备did
# API URL
get_did_url = "https://api.gizwits.com/app/bindings?limit=20&skip=0"
headers = {
"X-Gizwits-Application-Id": appid_s,
"X-Gizwits-User-token": user_token_s
}
try:
response = requests.get(get_did_url, headers=headers)
if response.status_code == 200:
response_data = response.json()
print(response_data)
for device in response_data.get("devices", []):
did = device.get("did", "N/A")
dev_alias = device.get("dev_alias", "N/A")
print(f"Device ID: {did}, Device Alias: {dev_alias}")
if(dev_alias==device_name):
need_did=did
else:
print(f"HTTP 请求失败: {response.status_code}")
exit(1)
except Exception as e:
print(f"发生异常: {str(e)}")
exit(1)
if(need_did==""):
exit(1)
device_data_url = "https://api.gizwits.com/app/devdata/"+need_did+"/latest"
# 请求头信息
headers = {
"X-Gizwits-Application-Id": appid_s,
"X-Gizwits-User-token": user_token_s
}
try:
response = requests.get(device_data_url, headers=headers)
if response.status_code == 200:
data = response.json()
attr = data.get("attr", {})
for key, value in attr.items():
print(f"{key}: {value}")
push_url = "http://www.pushplus.plus/send?token=" + push_plus_token + "&title=继电器数据&content="
push_json = json.dumps(attr)
push_url = push_url + push_json + "&template=json"
return_data = requests.get(push_url)
return_data = json.loads(return_data.text)
success_msg = str(return_data['msg']) + str(return_data['data'])
print(success_msg)
else:
print(f"HTTP 请求失败: {response.status_code}")
except Exception as e:
print(f"发生异常: {str(e)}")
代码通过使用用户名密码获取用户token,在通过绑定列表获取设备did,请求设备数据api得到设备数据
这份代码只需要填写开头的用户名密码,appid,pushplus token和需要推送的设备名即可自动推送数据到微信
这里推送使用的是push plus,申请token也非常方便,到官网申请即可
推送效果:
自有云主机宝塔环境定时运行示例:
仅需在宝塔的任务里使用定时的shell脚本执行,执行指定目录内的python脚本即可
页:
[1]