|
@@ -544,7 +544,37 @@ class AlarmPlan:
|
|
|
|
|
|
# 夜间如厕频次统计
|
|
|
def handle_night_toileting_frequency(self):
|
|
|
- return
|
|
|
+ try:
|
|
|
+ dev_id = self.dev_id_
|
|
|
+ device:Device = dev_map_find(dev_id)
|
|
|
+ if not device:
|
|
|
+ return
|
|
|
+
|
|
|
+ start_dt, end_dt = helper.get_query_time_range(self.param_)
|
|
|
+ params = {
|
|
|
+ "event_type": event_desc_map[EventType.TOILETING_DETECTION.value],
|
|
|
+ "start_dt": start_dt,
|
|
|
+ "end_dt": end_dt
|
|
|
+ }
|
|
|
+ userdata = {
|
|
|
+ "start_dt" : start_dt,
|
|
|
+ "end_dt" : end_dt
|
|
|
+ }
|
|
|
+ db_req_que.put(DBRequest(
|
|
|
+ sql=sqls.sql_query_events_by_datetime,
|
|
|
+ params=params,
|
|
|
+ callback=self.cb_night_toileting_frequency,
|
|
|
+ userdata=userdata))
|
|
|
+
|
|
|
+ except json.JSONDecodeError as e:
|
|
|
+ tb_info = traceback.extract_tb(e.__traceback__)
|
|
|
+ for frame in tb_info:
|
|
|
+ LOGERR(f"[{frame.filename}:{frame.lineno}] @{frame.name}(), error:{e}, {e.doc}")
|
|
|
+ except Exception as e:
|
|
|
+ tb_info = traceback.extract_tb(e.__traceback__)
|
|
|
+ for frame in tb_info:
|
|
|
+ LOGERR(f"[{frame.filename}:{frame.lineno}] @{frame.name}(), error: {e}")
|
|
|
+
|
|
|
|
|
|
|
|
|
# 如厕频次异常
|
|
@@ -570,7 +600,7 @@ class AlarmPlan:
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
+ # 如厕频次统计回调
|
|
|
def cb_toileting_frequency(self, result, userdata):
|
|
|
try:
|
|
|
if result:
|
|
@@ -630,3 +660,70 @@ class AlarmPlan:
|
|
|
for frame in tb_info:
|
|
|
LOGERR(f"[{frame.filename}:{frame.lineno}] @{frame.name}(), error: {e}")
|
|
|
return
|
|
|
+
|
|
|
+
|
|
|
+ # 夜间如厕频次统计回调
|
|
|
+ def cb_night_toileting_frequency(self, result, userdata):
|
|
|
+ try:
|
|
|
+ if result:
|
|
|
+ count = 0
|
|
|
+ event_list = []
|
|
|
+
|
|
|
+ for row in result:
|
|
|
+ dev_id: str = row.get("dev_id")
|
|
|
+ event_uuid: str = row.get("uuid")
|
|
|
+ plan_uuid: str = row.get("plan_uuid")
|
|
|
+ event_type: int = row.get("event_type")
|
|
|
+ info: dict = json.loads(row["info"]) if row.get("info") else {}
|
|
|
+ is_handle: str = row.get("is_handle")
|
|
|
+ create_time: str = row.get("create_time")
|
|
|
+ update_time: str = row.get("update_time")
|
|
|
+ is_deleted: str = row.get("is_deleted")
|
|
|
+ remark: str = row.get("remark")
|
|
|
+
|
|
|
+ event_list.append(info)
|
|
|
+
|
|
|
+ this_event_uuid = str(uuid.uuid4())
|
|
|
+ last_info = {
|
|
|
+ "start_time" : userdata["start_dt"],
|
|
|
+ "end_time" : userdata["end_dt"],
|
|
|
+ "count" : len(event_list),
|
|
|
+ "event_list" : event_list
|
|
|
+ }
|
|
|
+
|
|
|
+ # 入库
|
|
|
+ event_uuid = str(uuid.uuid4())
|
|
|
+ params = {
|
|
|
+ "dev_id": dev_id,
|
|
|
+ "uuid": this_event_uuid,
|
|
|
+ "plan_uuid": self.plan_uuid_,
|
|
|
+ "event_type": event_desc_map[self.event_type_],
|
|
|
+ "info": json.dumps(last_info, ensure_ascii=False),
|
|
|
+ "is_handle": 0,
|
|
|
+ "create_time": get_bj_time_s(),
|
|
|
+ "is_deleted": 0,
|
|
|
+ "remark": json.dumps({}, ensure_ascii=False)
|
|
|
+ }
|
|
|
+ db_req_que.put(DBRequest(sql=sqls.sql_insert_events, params=params, callback=None))
|
|
|
+
|
|
|
+ # 通知
|
|
|
+ mqtt_send.alarm_event(dev_id, this_event_uuid, plan_uuid, event_desc_map[self.event_type_], last_info, "events")
|
|
|
+
|
|
|
+ LOGINFO(f"EventAttr_ToiletingFrequency succeed")
|
|
|
+ else:
|
|
|
+ LOGDBG("EventAttr_ToiletingFrequency, empty result")
|
|
|
+
|
|
|
+ except json.JSONDecodeError as e:
|
|
|
+ tb_info = traceback.extract_tb(e.__traceback__)
|
|
|
+ for frame in tb_info:
|
|
|
+ LOGERR(f"[{frame.filename}:{frame.lineno}] @{frame.name}(), error:{e}, {e.doc}")
|
|
|
+ except Exception as e:
|
|
|
+ tb_info = traceback.extract_tb(e.__traceback__)
|
|
|
+ for frame in tb_info:
|
|
|
+ LOGERR(f"[{frame.filename}:{frame.lineno}] @{frame.name}(), error: {e}")
|
|
|
+ return
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|