:art: Fever over 10 minutes

huangqimin001 3 年之前
父節點
當前提交
ecffc70fb9
共有 3 個文件被更改,包括 41 次插入0 次删除
  1. 15 0
      api/eqpt_views.py
  2. 25 0
      utils/redis/rfever.py
  3. 1 0
      utils/redis/rkeys.py

+ 15 - 0
api/eqpt_views.py

@@ -16,6 +16,7 @@ from equipment.models import (IsolationPointInfo, IsolationPointUserInfo, Thermo
16 16
                               ThermometerMeasureLogInfo)
17 17
 from utils.error.errno_utils import IsolationPointStatusCode, ThermometerEquipmentStatusCode
18 18
 from utils.redis.rcharging import get_charging_delta_stamp, set_charging_stamp
19
+from utils.redis.rfever import del_fever_stamp, get_fever_delta_stamp, set_fever_stamp
19 20
 from utils.redis.rscreen import get_screen_info, set_screen_info
20 21
 
21 22
 
@@ -322,6 +323,20 @@ def mqtt_upload_temperature(payload):
322 323
     # 过去半小时内如果有充电记录的,当前温度大于37度的过滤掉
323 324
     if temperature > 37 and get_charging_delta_stamp(macid) < 1800:
324 325
         ignore_temperature = True
326
+    # 过去10分钟连续大于37.3度再取最高温度
327
+    if temperature > settings.FEVER_TEMPERATURE:
328
+        delta_stamp = get_fever_delta_stamp(macid)
329
+        # 首次超过37.3
330
+        if not delta_stamp:
331
+            set_fever_stamp(macid)
332
+            ignore_temperature = True
333
+        # 连续10分钟超过37.3
334
+        elif delta_stamp > 600:
335
+            pass
336
+        else:
337
+            ignore_temperature = True
338
+    else:
339
+        del_fever_stamp(macid)
325 340
 
326 341
     current_time = payload.get('current_time', '')
327 342
     start_stamp = end_stamp = tc.string_to_timestamp(current_time)

+ 25 - 0
utils/redis/rfever.py

@@ -0,0 +1,25 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from TimeConvert import TimeConvert as tc
4
+
5
+from utils.redis.connect import r
6
+from utils.redis.rkeys import TWJC_FEVER_STAMP_HASH
7
+
8
+
9
+def set_fever_stamp(macid):
10
+    r.hset(TWJC_FEVER_STAMP_HASH, macid, tc.utc_timestamp())
11
+
12
+
13
+def del_fever_stamp(macid):
14
+    return r.hdel(TWJC_FEVER_STAMP_HASH, macid)
15
+
16
+
17
+def get_fever_stamp(macid):
18
+    return r.hgetint(TWJC_FEVER_STAMP_HASH, macid)
19
+
20
+
21
+def get_fever_delta_stamp(macid):
22
+    stamp = get_fever_stamp(macid)
23
+    if not stamp:
24
+        return 0
25
+    return tc.utc_timestamp() - stamp

+ 1 - 0
utils/redis/rkeys.py

@@ -6,3 +6,4 @@ TWJC_POINT_INFO = 'twjc:point:info:%s'  # uuid, point_id
6 6
 TWJC_SCREEN_INFO = 'twjc:screen:info:%s'  # point_id, screen_info
7 7
 
8 8
 TWJC_CHARGING_STAMP_HASH = 'twjc:charging:stamp:hash'  # HASH, macid:stamp
9
+TWJC_FEVER_STAMP_HASH = 'twjc:fever:stamp:hash'  # HASH, macid:stamp