Эх сурвалжийг харах

设备获取智能场景数据和修改紧急开关下发智能按钮数据

locky 3 жил өмнө
parent
commit
1664b98833

+ 1 - 1
Controller/SensorGateway/EquipmentFamilyController.py

@@ -153,7 +153,7 @@ class EquipmentFamilyView(View):
         device_info_qs = Device_Info.objects.filter(serial_number=serial_number, isShare=False)
         if device_info_qs:
             qs = device_info_qs.values('NickName', 'userID_id', 'userID__userEmail', 'userID__phone',
-                                       'userID__username', 'userID__NickName', )
+                                       'userID__username', 'userID__NickName')
             nickname = qs[0]['NickName']
             device_user_id = qs[0]['userID_id']
             if device_user_id == user_id:

+ 21 - 0
Controller/SensorGateway/SmartSceneController.py

@@ -826,6 +826,7 @@ class SmartSceneView(View):
             if not smart_scene_qs.exists():
                 return response.json(173)
 
+            # 下发智能场景数据
             smart_scene_qs = smart_scene_qs.values('device_data')
             topic_name = SMART_SCENE_TOPIC_NAME.format(serial_number)
             for smart_scene in smart_scene_qs:
@@ -836,6 +837,26 @@ class SmartSceneView(View):
                 except AssertionError:
                     return response.json(10044)
                 time.sleep(1)
+
+            # 下发智能按钮数据
+            smart_button_qs = GatewaySubDevice.objects.filter(device_id=device_id, device_type=216).\
+                values('src_addr', 'is_tampered')
+            if smart_button_qs.exists():
+                sos_count = smart_button_qs.count()
+                for index, smart_button in enumerate(smart_button_qs):
+                    msg = {
+                        'sos_count': sos_count,  # 该网关下的智能按钮数量
+                        'sos_num': index + 1,  # 第几个按钮
+                        'sensor_src': int(smart_button['src_addr'], 16),
+                        'sos_select': smart_button['is_tampered']
+                    }
+                    success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg, 0)
+                    try:
+                        assert success
+                    except AssertionError:
+                        return response.json(10044)
+                    time.sleep(1)
+
             return response.json(0)
         except Exception as e:
             return response.json(500, repr(e))

+ 9 - 2
Controller/SensorGateway/SubDeviceController.py

@@ -455,10 +455,17 @@ class GatewaySubDeviceView(View):
                 sub_device_qs = sub_device_qs.values('device_id', 'src_addr', 'device__serial_number')
                 serial_number = sub_device_qs[0]['device__serial_number']
                 topic_name = SMART_SCENE_TOPIC_NAME.format(serial_number)
-                sos_count = GatewaySubDevice.objects.filter(device_id=sub_device_qs[0]['device_id']).count()
+                gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=sub_device_qs[0]['device_id'],
+                                                                        device_type=216).values('src_addr')
+                sos_count = gateway_sub_device_qs.count()
+                sos_num = 1
+                for index, gateway_sub_device in enumerate(gateway_sub_device_qs):
+                    if sub_device_qs[0]['src_addr'] == gateway_sub_device['src_addr']:
+                        sos_num += index
                 # 通知设备修改sos状态
                 msg = {
-                    'sos_count': sos_count,     # 该网关下的智能按钮数量
+                    'sos_count': sos_count,  # 该网关下的智能按钮数量
+                    'sos_num': sos_num,  # 第几个按钮
                     'sensor_src': int(sub_device_qs[0]['src_addr'], 16),
                     'sos_select': emergency_status
                 }