test.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. # coding=utf-8
  2. import json
  3. import random
  4. import time
  5. import hashlib
  6. from webbrowser import get
  7. # from plc_log import logger_pc
  8. import requests
  9. from requests.adapters import HTTPAdapter
  10. from requests.packages.urllib3.util import Retry
  11. root_url = "http://www.sukon-cloud.com"
  12. def get_token():
  13. try:
  14. uid = "f49624126f654356a8e6b2669d3b8fbb"
  15. sid = "6b63484a788a4c2fbf245254dcfd7ec1"
  16. random_id = str(random.randint(100, 999)) + str("".join([chr(random.randint(97, 122)) for i in range(3)]))
  17. time_stamp = str(int(round(time.time()) * 1000))
  18. m = hashlib.md5()
  19. m.update(str(uid + sid + random_id + time_stamp).encode('utf-8'))
  20. signature = m.hexdigest().upper()
  21. url = root_url + "/api/v1/token/initToken"
  22. s = requests.Session()
  23. # 设置 post()方法进行重访问
  24. params = {"uid": uid, "sid": sid, "random": random_id, "timestamp": time_stamp, "signature": signature}
  25. # print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
  26. s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
  27. response = s.post(url=url, data=params, timeout=10)
  28. # print("出参:", "\n", json.dumps(json.loads(response.text), indent=4, ensure_ascii=False))
  29. return json.loads(response.text).get("data")["token"]
  30. except Exception as e:
  31. print(e)
  32. return None
  33. def get_projects():
  34. url = root_url + "/api/v1/base/projects"
  35. s = requests.Session()
  36. # 设置 post()方法进行重访问
  37. s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
  38. params = {"token": get_token()}
  39. print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
  40. response = s.post(url=url, data=params, timeout=10)
  41. try:
  42. print("出参:", "\n", json.dumps(json.loads(response.text), indent=4, ensure_ascii=False))
  43. return json.loads(response.text).get("data")
  44. except Exception as e:
  45. return []
  46. def get_box_id(project):
  47. try:
  48. url = root_url + "/api/v1/base/projectBoxes"
  49. s = requests.Session()
  50. # 设置 post()方法进行重访问
  51. s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
  52. params = {"token": get_token(), "projectId": project}
  53. print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
  54. response = s.post(url=url, data=params, timeout=10)
  55. print("出参:", "\n", json.dumps(json.loads(response.text), indent=4, ensure_ascii=False))
  56. box_id = json.loads(response.text).get("data")
  57. return box_id
  58. except Exception as e:
  59. return []
  60. def get_variants(box_id):
  61. try:
  62. url = root_url + "/api/v1/base/boxVariants"
  63. s = requests.Session()
  64. # 设置 post()方法进行重访问
  65. s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
  66. params = {"token": get_token(), "boxId": box_id, "plcId": "0"}
  67. # print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
  68. response = s.post(url=url, data=params, timeout=10)
  69. out_data = json.dumps(json.loads(response.text), indent=4, ensure_ascii=False)
  70. out_data = out_data[:400] + "......"
  71. # print("出参:", "\n", out_data)
  72. variants = json.loads(response.text).get("data")
  73. return variants
  74. except Exception as e:
  75. return []
  76. def get_variants_data(variants, box_id):
  77. try:
  78. url = root_url + "/api/v1/data/realtimeDatas"
  79. variants_ids = ":".join([str(i.get("variantId")) for i in variants])
  80. s = requests.Session()
  81. # 设置 post()方法进行重访问
  82. s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
  83. params = {"token": get_token(), "variantIds": f"{box_id}({variants_ids})"}
  84. print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
  85. response = s.post(url=url, data=params, timeout=10)
  86. out_data = json.dumps(json.loads(response.text), indent=4, ensure_ascii=False)
  87. out_data = out_data[:400] + "......"
  88. print("出参:", "\n", out_data)
  89. variants_data = json.loads(response.text).get("data")
  90. new_variants_data = []
  91. # 合并数据
  92. for i in variants:
  93. for v in variants_data:
  94. v_id = v.get("id").split(":")[-1]
  95. if v_id == i.get("variantId"):
  96. new_variants_data.append(dict(i, **v))
  97. return new_variants_data
  98. except Exception as e:
  99. return []
  100. def test(id, box_id):
  101. url = root_url + "/api/v1/data/realtimeDatas"
  102. response = requests.post(url=url, data={"token": get_token(), "variantIds": f"{box_id}({id})"})
  103. variants_data = json.loads(response.text).get("data")
  104. print(variants_data)
  105. def set_value():
  106. box_id = 'c1881d886ab54370aa81d3a1a8532ba4:150'
  107. url = "/api/v1/mndraw/setVariantValue"
  108. response = requests.post(url=url, data={"token": get_token(), "variantId": box_id, "variantVal": 907})
  109. variants_data = json.loads(response.text)
  110. print(variants_data)
  111. if __name__ == '__main__':
  112. # box_id = get_box_id("mNCgKJSl75k")
  113. # for i in box_id: 39845c626cf645b9ad278a8b2817c593 f70a4e6dd29a40d0baa987b9bb067991
  114. # print(i)
  115. # variants = get_variants('72f954c219324c839d14eb53911ec932')
  116. # for i in variant:
  117. # print(i)
  118. # variants = [{'variantId': '26', 'name': 'MT101', 'addr': 'DB3.DBD680', 'type': '0', 'id': '72f954c219324c839d14eb53911ec932:26', 'status': '1', 'value': '1.16', 'time': 1725170642}]
  119. # variant_data = get_variants_data(variants, '72f954c219324c839d14eb53911ec932')
  120. # print(variant_data)
  121. # result = test(120, "86c16e6b5165464dab16a4f8320e6d5f")
  122. # box_id = "6499855e3d8b4836b158556646f3b9fd"
  123. # result = get_variants(box_id)
  124. # print(result)
  125. variants = get_variants("86c16e6b5165464dab16a4f8320e6d5f")
  126. get_variants_data(variants, "86c16e6b5165464dab16a4f8320e6d5f")