|
引言:
在这个数字化时代,智能设备已经渗透到我们的生活和工作中。我们的家居、办公室和工厂都充斥着各种各样的智能设备,它们不仅让我们的生活更加便捷,还提供了大量数据。然而,当我们想要实时了解这些设备的状态、性能和数据时,通常会面临一些挑战。
一般,智能设备的数据存储在云端,我们需要依赖于云服务提供商的应用程序或界面来查看这些数据。然而,很多时候,这些通用应用无法满足我们个性化的需求。我们可能需要定制化的数据可视化,以便更清晰地了解设备的状态。我们也可能需要数据推送到我们常用的平台,方便我们随时随地查看。
在这篇文章中,我们将讨论如何通过自有云主机把设备数据推送到微信,毕竟微信是一个人人都用的软件,通过推送到微信显示数据,不仅方便还减少了我们的操作流程。
在这里,我使用的是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脚本即可
|
|