收藏官网首页
查看: 3286|回复: 0

[分享] 自有云主机获取设备数据推送到微信

106

主题

107

帖子

7264

积分

论坛元老

Rank: 8Rank: 8

积分
7264
跳转到指定楼层
楼主
 楼主| 发表于 2023-10-3 22:52:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
引言:
    在这个数字化时代,智能设备已经渗透到我们的生活和工作中。我们的家居、办公室和工厂都充斥着各种各样的智能设备,它们不仅让我们的生活更加便捷,还提供了大量数据。然而,当我们想要实时了解这些设备的状态、性能和数据时,通常会面临一些挑战。

一般,智能设备的数据存储在云端,我们需要依赖于云服务提供商的应用程序或界面来查看这些数据。然而,很多时候,这些通用应用无法满足我们个性化的需求。我们可能需要定制化的数据可视化,以便更清晰地了解设备的状态。我们也可能需要数据推送到我们常用的平台,方便我们随时随地查看。

在这篇文章中,我们将讨论如何通过自有云主机把设备数据推送到微信,毕竟微信是一个人人都用的软件,通过推送到微信显示数据,不仅方便还减少了我们的操作流程。

在这里,我使用的是python编写的代码,原因是python代码方便易于部署,自有云主机也基本都配备python环境,高端的路由器或者软路由也可以通过docker使用,非常简单。

代码:

  1. import requests
  2. import json

  3. login_url = "https://api.gizwits.com/app/login"
  4. appid_s=" ";
  5. push_plus_token=" "
  6. user_token_s=""
  7. device_name="8路继电器-C50E"
  8. need_did=""
  9. # 用户名密码
  10. data = {
  11.     "username": "**@qq.com",
  12.     "password": "**",
  13.     "lang": "en"
  14. }

  15. headers = {
  16.     "X-Gizwits-Application-Id": appid_s
  17. }

  18. try:
  19.     response = requests.post(login_url, json=data, headers=headers)
  20.     if response.status_code == 200:
  21.         response_data = response.json()
  22.         print(response_data)
  23.         user_token_s=response_data["token"]
  24.         print(user_token_s)
  25.     else:
  26.         print(f"HTTP 请求失败: {response.status_code}")
  27. except Exception as e:
  28.     print(f"发生异常: {str(e)}")
  29.     exit(1)

  30. ## 请求设备did

  31. # API URL
  32. get_did_url = "https://api.gizwits.com/app/bindings?limit=20&skip=0"

  33. headers = {
  34.     "X-Gizwits-Application-Id": appid_s,
  35.     "X-Gizwits-User-token": user_token_s
  36. }

  37. try:
  38.     response = requests.get(get_did_url, headers=headers)

  39.     if response.status_code == 200:
  40.         response_data = response.json()

  41.         print(response_data)
  42.         for device in response_data.get("devices", []):
  43.             did = device.get("did", "N/A")
  44.             dev_alias = device.get("dev_alias", "N/A")
  45.             print(f"Device ID: {did}, Device Alias: {dev_alias}")
  46.             if(dev_alias==device_name):
  47.                 need_did=did
  48.     else:
  49.         print(f"HTTP 请求失败: {response.status_code}")
  50.         exit(1)
  51. except Exception as e:
  52.     print(f"发生异常: {str(e)}")
  53.     exit(1)

  54. if(need_did==""):
  55.     exit(1)

  56. device_data_url = "https://api.gizwits.com/app/devdata/"+need_did+"/latest"

  57. # 请求头信息
  58. headers = {
  59.     "X-Gizwits-Application-Id": appid_s,
  60.     "X-Gizwits-User-token": user_token_s
  61. }

  62. try:
  63.     response = requests.get(device_data_url, headers=headers)

  64.     if response.status_code == 200:
  65.         data = response.json()

  66.         attr = data.get("attr", {})

  67.         for key, value in attr.items():
  68.             print(f"{key}: {value}")

  69.         push_url = "http://www.pushplus.plus/send?token=" + push_plus_token + "&title=继电器数据&content="
  70.         push_json = json.dumps(attr)
  71.         push_url = push_url + push_json + "&template=json"
  72.         return_data = requests.get(push_url)
  73.         return_data = json.loads(return_data.text)
  74.         success_msg = str(return_data['msg']) + str(return_data['data'])
  75.         print(success_msg)
  76.     else:
  77.         print(f"HTTP 请求失败: {response.status_code}")
  78. except Exception as e:
  79.     print(f"发生异常: {str(e)}")
复制代码

代码通过使用用户名密码获取用户token,在通过绑定列表获取设备did,请求设备数据api得到设备数据
这份代码只需要填写开头的用户名密码,appid,pushplus token和需要推送的设备名即可自动推送数据到微信

这里推送使用的是push plus,申请token也非常方便,到官网申请即可

推送效果:


自有云主机宝塔环境定时运行示例:
仅需在宝塔的任务里使用定时的shell脚本执行,执行指定目录内的python脚本即可



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表