123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import datetime
- import json,os
- import time
- from MyUtils.ZillionUtil import ZillionUtil
- from MyUtils.Dingtalk import send_message_markdown
- import pytz
- def datetime_now():
- # datetime_now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
- #容器时间
- # tz = pytz.timezone('Asia/Shanghai') # 东八区
- datetime_now = datetime.datetime.fromtimestamp(int(time.time()),
- pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S')
- return datetime_now
- # 获取能耗数据
- def get_data_time(zillionUtil,hbase_database, hbase_table, building,meters,funcid):
- Criteria = {
- "building": building,
- "meter": {
- "in":meters
- },
- "funcid": funcid
- }
- datas = zillionUtil.select(hbase_database, hbase_table, Criteria)
- return datas
- with open("config.json", "r",encoding="utf-8") as f:
- data = json.load(f)
- hbase_database = data["metadata"]["database"]
- url = data["metadata"]["url"]
- building = data["building"]
- # funcid = data["funcid"]
- # points = data["points"]
- dingding = data["dingding"]
- points = {'1202': 'B2南新风机房浸水报警传感器',
- '1201': '2F空调机房浸水报警传感器',
- '1203': 'B2北新风机房浸水报警传感器',
- '1101': '制冷机房浸水报警传感器',
- '9002': '楼顶南新风机房浸水报警传感器',
- '9001': '楼顶北新风机房浸水报警传感器'}
- funcid = 11701
- # hbase_database = os.getenv("hbase_database")
- # url = os.getenv("url")
- # building = os.getenv("building")
- # dingding = os.getenv("dingding")
- # # funcid = os.getenv("funcid")
- # # points = os.getenv("points")
- #存报警
- alarm = {}
- zillionUtil = ZillionUtil(url)
- meters = [i for i in points]
- #存发送钉钉报警内容
- print("%s"%building)
- while True:
- messages = []
- datas = get_data_time(zillionUtil,hbase_database,"original_present",building,meters,funcid)
- for i in datas:
- value = i["data"]
- meter = i["meter"]
- receivetime = i["receivetime"]
- name = points[meter]
- if value == 1:
- #如果表之前未产生报警,直接发送报警,并将点位存在报警池中
- #如果之前已经有报警,不重复发送
- if meter not in alarm:
- message = (" - **空间名称:** %s \n" + " - **设备类名称:** 水浸传感器 \n" + " - **报警值:** %s \n" + " - **状态:** <font color=#FF0000>请及时查看处理</font> \n")%(name, value)
- messages.append(message)
- messages.append("___")
- alarm[meter] = value
- else:
- #如果报警恢复,删除报警池内容,发送恢复报警
- if meter in alarm:
- if alarm[meter] == 1:
- alarm.pop(meter)
- message = (" - **空间名称:** %s \n" + " - **设备类名称:** 水浸传感器 \n" + " - **报警值:** %s \n" + " - **状态:** 报警已恢复 \n") % (name, value)
- messages.append(message)
- messages.append("___")
- if messages:
- messages_info = "\n".join(messages)
- #如果有报警,发送钉钉
- title = "## 【中海财富中心】位移传感器报警 "
- messages_info = title +"\n" + messages_info
- print(messages_info)
- send_message_markdown(title,messages_info,dingding)
- messages.clear()
- time.sleep(60)
|