| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- # coding=utf-8
- import json
- import random
- import time
- import hashlib
- from webbrowser import get
- # from plc_log import logger_pc
- import requests
- from requests.adapters import HTTPAdapter
- from requests.packages.urllib3.util import Retry
- root_url = "http://www.sukon-cloud.com"
- def get_token():
- try:
- uid = "f49624126f654356a8e6b2669d3b8fbb"
- sid = "6b63484a788a4c2fbf245254dcfd7ec1"
- random_id = str(random.randint(100, 999)) + str("".join([chr(random.randint(97, 122)) for i in range(3)]))
- time_stamp = str(int(round(time.time()) * 1000))
- m = hashlib.md5()
- m.update(str(uid + sid + random_id + time_stamp).encode('utf-8'))
- signature = m.hexdigest().upper()
- url = root_url + "/api/v1/token/initToken"
- s = requests.Session()
- # 设置 post()方法进行重访问
- params = {"uid": uid, "sid": sid, "random": random_id, "timestamp": time_stamp, "signature": signature}
- # print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
- s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
- response = s.post(url=url, data=params, timeout=10)
- # print("出参:", "\n", json.dumps(json.loads(response.text), indent=4, ensure_ascii=False))
- return json.loads(response.text).get("data")["token"]
- except Exception as e:
- print(e)
- return None
- def get_projects():
- url = root_url + "/api/v1/base/projects"
- s = requests.Session()
- # 设置 post()方法进行重访问
- s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
- params = {"token": get_token()}
- print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
- response = s.post(url=url, data=params, timeout=10)
- try:
- print("出参:", "\n", json.dumps(json.loads(response.text), indent=4, ensure_ascii=False))
- return json.loads(response.text).get("data")
- except Exception as e:
- return []
- def get_box_id(project):
- try:
- url = root_url + "/api/v1/base/projectBoxes"
- s = requests.Session()
- # 设置 post()方法进行重访问
- s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
- params = {"token": get_token(), "projectId": project}
- print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
- response = s.post(url=url, data=params, timeout=10)
- print("出参:", "\n", json.dumps(json.loads(response.text), indent=4, ensure_ascii=False))
- box_id = json.loads(response.text).get("data")
- return box_id
- except Exception as e:
- return []
- def get_variants(box_id):
- try:
- url = root_url + "/api/v1/base/boxVariants"
- s = requests.Session()
- # 设置 post()方法进行重访问
- s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
- params = {"token": get_token(), "boxId": box_id, "plcId": "0"}
- # print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
- response = s.post(url=url, data=params, timeout=10)
- out_data = json.dumps(json.loads(response.text), indent=4, ensure_ascii=False)
- out_data = out_data[:400] + "......"
- # print("出参:", "\n", out_data)
- variants = json.loads(response.text).get("data")
- return variants
- except Exception as e:
- return []
- def get_variants_data(variants, box_id):
- try:
- url = root_url + "/api/v1/data/realtimeDatas"
- variants_ids = ":".join([str(i.get("variantId")) for i in variants])
- s = requests.Session()
- # 设置 post()方法进行重访问
- s.mount('http://', HTTPAdapter(max_retries=Retry(total=5, allowed_methods=frozenset(['GET', 'POST']))))
- params = {"token": get_token(), "variantIds": f"{box_id}({variants_ids})"}
- print("入参:", "\n", json.dumps(params, indent=4, ensure_ascii=False))
- response = s.post(url=url, data=params, timeout=10)
- out_data = json.dumps(json.loads(response.text), indent=4, ensure_ascii=False)
- out_data = out_data[:400] + "......"
- print("出参:", "\n", out_data)
- variants_data = json.loads(response.text).get("data")
- new_variants_data = []
- # 合并数据
- for i in variants:
- for v in variants_data:
- v_id = v.get("id").split(":")[-1]
- if v_id == i.get("variantId"):
- new_variants_data.append(dict(i, **v))
- return new_variants_data
- except Exception as e:
- return []
- def test(id, box_id):
- url = root_url + "/api/v1/data/realtimeDatas"
- response = requests.post(url=url, data={"token": get_token(), "variantIds": f"{box_id}({id})"})
- variants_data = json.loads(response.text).get("data")
- print(variants_data)
- def set_value():
- box_id = 'c1881d886ab54370aa81d3a1a8532ba4:150'
- url = "/api/v1/mndraw/setVariantValue"
- response = requests.post(url=url, data={"token": get_token(), "variantId": box_id, "variantVal": 907})
- variants_data = json.loads(response.text)
- print(variants_data)
- if __name__ == '__main__':
- # box_id = get_box_id("mNCgKJSl75k")
- # for i in box_id: 39845c626cf645b9ad278a8b2817c593 f70a4e6dd29a40d0baa987b9bb067991
- # print(i)
- # variants = get_variants('72f954c219324c839d14eb53911ec932')
- # for i in variant:
- # print(i)
- # variants = [{'variantId': '26', 'name': 'MT101', 'addr': 'DB3.DBD680', 'type': '0', 'id': '72f954c219324c839d14eb53911ec932:26', 'status': '1', 'value': '1.16', 'time': 1725170642}]
- # variant_data = get_variants_data(variants, '72f954c219324c839d14eb53911ec932')
- # print(variant_data)
- # result = test(120, "86c16e6b5165464dab16a4f8320e6d5f")
- # box_id = "6499855e3d8b4836b158556646f3b9fd"
- # result = get_variants(box_id)
- # print(result)
- variants = get_variants("86c16e6b5165464dab16a4f8320e6d5f")
- get_variants_data(variants, "86c16e6b5165464dab16a4f8320e6d5f")
|