浏览代码

之江空调控制

李莎 2 年之前
父节点
当前提交
6b61950d03
共有 4 个文件被更改,包括 93 次插入63 次删除
  1. 9 0
      Dockerfile
  2. 2 1
      config.json
  3. 79 62
      main.py
  4. 3 0
      requirements.txt

+ 9 - 0
Dockerfile

@@ -0,0 +1,9 @@
+FROM python:3.7.15-slim
+
+
+WORKDIR ./zjsys_check_EquipSwitch
+ADD . .
+
+RUN  pip install -r requirements.txt
+
+CMD ["python", "-u","./start.py"]

+ 2 - 1
config.json

@@ -10,5 +10,6 @@
     "passwd": "gWK5o9WmCBF5LiW",
     "database": "sagacloud_object"
   },
-  "dingding": "https://oapi.dingtalk.com/robot/send?access_token=06168366057e525190d7e1d9b9a7332e996a32eaeafd5d8a5394815ee306e1cc"
+  "dingding": "https://oapi.dingtalk.com/robot/send?access_token=06168366057e525190d7e1d9b9a7332e996a32eaeafd5d8a5394815ee306e1cc",
+  "sleep": 3600
 }

+ 79 - 62
main.py

@@ -5,6 +5,7 @@ import datetime
 import pytz
 import json
 import time
+import os
 
 SELETE_SQL = "SELECT infos FROM `object_data_equipment_infos` WHERE `category` LIKE '%ACAT%'"
 INSERT_SQL = "replace into sagacloud_setup.zj_check_EquipSwitch(EquipLocalID,EquipName,EquipSwitchSet,RunStatus,remark) values "
@@ -40,74 +41,90 @@ def get_data_time(zillionUtil,hbase_database, hbase_table, building, meter,funid
 
 
 
-with open("config.json", "r") as f:
-    data = json.load(f)
-    hbase_database = data["metadata"]["database"]
-    url = data["metadata"]["url"]
-    mysql = data["mysql"]
-    my_database = mysql["database"]
-    dingding = data["dingding"]
+# with open("config.json", "r") as f:
+#     data = json.load(f)
+#     hbase_database = data["metadata"]["database"]
+#     url = data["metadata"]["url"]
+#     mysql = data["mysql"]
+#     my_database = mysql["database"]
+#     dingding = data["dingding"]
+#     sleep = data["sleep"]
 
+mysql = {
+    "host": os.getenv("host"),
+    "port": int(os.getenv("port")),
+    "user": os.getenv("user"),
+    "passwd": os.getenv("passwd"),
+    "database": os.getenv("database")
+}
+database = os.getenv("database")
+hbase_database = os.getenv("hbase_database")
+url = os.getenv("url")
+sleep = os.getenv("sleep")
+dingding = os.getenv("dingding")
 
 
 timedelta_5min = (datetime.datetime.now() - datetime.timedelta(minutes=5)).strftime(f"%Y%m%d%H%M")
 current_month = datetime.datetime.now().strftime("%Y%m")
 
-# #连接hbase
-zillionUtil = ZillionUtil(url)
-
-# #连接mysql
-MysqlUtil = MysqlUtils(**mysql)
-object_data_infos = MysqlUtil.query(SELETE_SQL)
-sqls = []
-for info in object_data_infos:
-    if "EquipSwitchSet" in json.loads(info[0]) and "RunStatus" in json.loads(info[0]):
-        info_data = json.loads(info[0])
-        EquipSwitchSet = info_data["EquipSwitchSet"]
-        RunStatus = info_data["RunStatus"]
-        EquipLocalID = info_data["EquipLocalID"]
-        EquipName = info_data["EquipName"]
-        if EquipSwitchSet != RunStatus:
-            EquipSwitchSet_meter,EquipSwitchSet_funcid = str.split(EquipSwitchSet,"-")[0],str.split(EquipSwitchSet,"-")[1]
-            RunStatus_meter,RunStatus_funcid = str.split(RunStatus,"-")[0],str.split(RunStatus,"-")[1]
-            datas = get_data_time(zillionUtil, hbase_database, "original_month_"+current_month, "3301100002",EquipSwitchSet_meter,eval(EquipSwitchSet_funcid),eval(RunStatus_funcid),timedelta_5min)
-            EquipSwitchSet_data_list = []
-            RunStatus_data_list = []
-
-            for i in datas:
-                if str(i["funcid"]) == EquipSwitchSet_funcid:
-                    EquipSwitchSet_data_list.append(i["data"])
+
+while True:
+    # #连接hbase
+    zillionUtil = ZillionUtil(url)
+
+    # #连接mysql
+    MysqlUtil = MysqlUtils(**mysql)
+    object_data_infos = MysqlUtil.query(SELETE_SQL)
+    sqls = []
+    for info in object_data_infos:
+        if "EquipSwitchSet" in json.loads(info[0]) and "RunStatus" in json.loads(info[0]):
+            info_data = json.loads(info[0])
+            EquipSwitchSet = info_data["EquipSwitchSet"]
+            RunStatus = info_data["RunStatus"]
+            EquipLocalID = info_data["EquipLocalID"]
+            EquipName = info_data["EquipName"]
+            if EquipSwitchSet != RunStatus:
+                EquipSwitchSet_meter,EquipSwitchSet_funcid = str.split(EquipSwitchSet,"-")[0],str.split(EquipSwitchSet,"-")[1]
+                RunStatus_meter,RunStatus_funcid = str.split(RunStatus,"-")[0],str.split(RunStatus,"-")[1]
+                datas = get_data_time(zillionUtil, hbase_database, "original_month_"+current_month, "3301100002",EquipSwitchSet_meter,eval(EquipSwitchSet_funcid),eval(RunStatus_funcid),timedelta_5min)
+                EquipSwitchSet_data_list = []
+                RunStatus_data_list = []
+
+                for i in datas:
+                    if str(i["funcid"]) == EquipSwitchSet_funcid:
+                        EquipSwitchSet_data_list.append(i["data"])
+                    else:
+                        RunStatus_data_list.append(i["data"])
+                if EquipSwitchSet_funcid and RunStatus_data_list:
+                    diff_data = set(EquipSwitchSet_data_list) | set(RunStatus_data_list)
+                    if len(set(EquipSwitchSet_data_list)) == 1 and len(diff_data) == 2:
+                        remark = "%s %s设定值与运行状态不一致,检查时间%s"%(datetime_now(),EquipSwitchSet_meter,timedelta_5min)
+                        print(remark)
+                        sql = "('%s','%s','%s','%s','%s')" % (EquipLocalID,EquipName,EquipSwitchSet,RunStatus,remark)
+                        sqls.append(sql)
                 else:
-                    RunStatus_data_list.append(i["data"])
-            if EquipSwitchSet_funcid and RunStatus_data_list:
-                diff_data = set(EquipSwitchSet_data_list) | set(RunStatus_data_list)
-                if len(set(EquipSwitchSet_data_list)) == 1 and len(diff_data) == 2:
-                    remark = "%s %s设定值与运行状态不一致,检查时间%s"%(datetime_now(),EquipSwitchSet_meter,timedelta_5min)
+                    remark = "%s %s数据有丢失,检查时间%s"%(datetime_now(),EquipSwitchSet_meter,timedelta_5min)
                     print(remark)
-                    sql = "('%s','%s','%s','%s','%s')" % (EquipLocalID,EquipName,EquipSwitchSet,RunStatus,remark)
+                    sql = "('%s','%s','%s','%s','%s')" % (EquipLocalID, EquipName, EquipSwitchSet, RunStatus, remark)
                     sqls.append(sql)
-            else:
-                remark = "%s %s数据有丢失,检查时间%s"%(datetime_now(),EquipSwitchSet_meter,timedelta_5min)
-                print(remark)
-                sql = "('%s','%s','%s','%s','%s')" % (EquipLocalID, EquipName, EquipSwitchSet, RunStatus, remark)
-                sqls.append(sql)
-
-if sqls:
-    print("%s 清空数据库表"%datetime_now())
-    MysqlUtil.update(DELETE_SQL)
-    print("%s 数据库表清空完成"%datetime_now())
-    print("%s 开始往数据库插入数据,共计%s条"%(datetime_now(),len(sqls)))
-    for i in range(0,len(sqls),1000):
-        sqlranges = sqls[i:i + 1000]
-        sqlranges = INSERT_SQL + ",".join(sqlranges)
-        MysqlUtil.update(sqlranges)
-    print("%s 数据库插入成功"%datetime_now())
-    messages = []
-    message = (" - **类型:** 空调疑似掉线 \n" + " - **数量:**  <font color=#FF0000>%s</font> \n")% (len(sqls))
-    messages.append(message)
-    messages.append("___")
-    messages.append("<font color=#0080FF>详情查看MySQL数据库sagacloud_setup里的zj_check_equipswitch表</font>")
-    messages_info = "\n".join(messages)
-    title = "## **【之江实验室】空调控制状态报警** "
-    messages_info = title + "\n" + "___" + "\n" + messages_info
-    send_message_markdown(title, messages_info, dingding)
+
+    if sqls:
+        print("%s 清空数据库表"%datetime_now())
+        MysqlUtil.update(DELETE_SQL)
+        print("%s 数据库表清空完成"%datetime_now())
+        print("%s 开始往数据库插入数据,共计%s条"%(datetime_now(),len(sqls)))
+        for i in range(0,len(sqls),1000):
+            sqlranges = sqls[i:i + 1000]
+            sqlranges = INSERT_SQL + ",".join(sqlranges)
+            MysqlUtil.update(sqlranges)
+        print("%s 数据库插入成功"%datetime_now())
+        messages = []
+        message = (" - **类型:** 空调疑似掉线 \n" + " - **数量:**  <font color=#FF0000>%s</font> \n")% (len(sqls))
+        messages.append(message)
+        messages.append("___")
+        messages.append("<font color=#0080FF>详情查看MySQL数据库sagacloud_setup里的zj_check_equipswitch表</font>")
+        messages_info = "\n".join(messages)
+        title = "## **【之江实验室】空调控制状态报警** "
+        messages_info = title + "\n" + "___" + "\n" + messages_info
+        send_message_markdown(title, messages_info, dingding)
+    time.sleep(int(sleep))

+ 3 - 0
requirements.txt

@@ -0,0 +1,3 @@
+pymysql==1.0.2
+pytz==2021.1
+dingtalkchatbot==1.5.2