3 İşlemeler 891e776428 ... 1081f10927

Yazar SHA1 Mesaj Tarih
  lang 1081f10927 更新设备影子时支持ai字段 3 yıl önce
  locky 8be0925fcf 网关推送消息写入传感器记录数据 3 yıl önce
  locky 3207797725 新增传感器记录表 3 yıl önce

+ 4 - 0
Controller/ShadowController.py

@@ -138,6 +138,8 @@ def update_device_shadow(request):
         is_custom_voice = request_dict.get('is_custom', None)
         double_wifi = request_dict.get('double_wifi', None)
         is_ptz = request_dict.get('is_ptz', None)
+        is_ai = request_dict.get('is_ai', None)
+
         # 更新
         qs_dict = {
             'updTime': nowTime,
@@ -170,6 +172,8 @@ def update_device_shadow(request):
             qs_dict['double_wifi'] = double_wifi
         if is_ptz:
             qs_dict['is_ptz'] = is_ptz
+        if is_ai:
+            qs_dict['is_ai'] = is_ai
         logger.info('{} qs_dict: {}'.format(uid, qs_dict))
 
         us_qs = UidSetModel.objects.filter(uid=uid)

+ 30 - 6
Controller/gatewayController.py

@@ -10,7 +10,7 @@ import time
 
 from django.views.generic.base import View
 
-from Model.models import UidPushModel
+from Model.models import UidPushModel, SensorRecord, GatewaySubDevice
 from Object.ResponseObject import ResponseObject
 from Object.utils import LocalDateTimeUtil
 from Service.CommonService import CommonService
@@ -36,18 +36,42 @@ class GatewayView(View):
         else:
             return response.json(414)
 
-    def gateway_push(self, request_dict, response):
+    @staticmethod
+    def gateway_push(request_dict, response):
+        """
+        网关推送
+        @param request_dict: 请求参数
+        @request_dict serial_number: 序列号
+        @request_dict ieee_addr: 长地址
+        @request_dict src_addr: 短地址
+        @request_dict sensor_type: 传感器类型
+        @request_dict event_type: 事件类型
+        @request_dict alarm: 消息内容
+        @param response: 响应对象
+        @return: response
+        """
         logger = logging.getLogger('info')
         serial_number = request_dict.get('serial_number', None)
+        ieee_addr = request_dict.get('ieee_addr', None)
         src_addr = request_dict.get('src_addr', None)
+        sensor_type = request_dict.get('sensor_type', None)
         event_type = request_dict.get('event_type', None)
         alarm = request_dict.get('alarm', None)
         logger.info('---调用网关推送接口--- request_dict:{}'.format(request_dict))
-        if not all([serial_number, src_addr, event_type, alarm]):
+        if not all([serial_number, ieee_addr, src_addr, sensor_type, event_type, alarm]):
             return response.json(444)
 
         n_time = int(time.time())
         try:
+            # 查询子设备表id
+            gateway_sub_device_qs = GatewaySubDevice.objects.filter(device__serial_number=serial_number,
+                                                                    device_type=sensor_type, ieee_addr=ieee_addr,
+                                                                    src_addr=src_addr).values('id')
+            if gateway_sub_device_qs.exists():
+                gateway_sub_device_id = gateway_sub_device_qs[0]['id']
+                # 写入传感器记录数据
+                SensorRecord.objects.create(gateway_sub_device_id=gateway_sub_device_id, alarm=alarm,
+                                            event_type=event_type, created_time=n_time)
             # 查询推送配置数据
             uid_push_qs = UidPushModel.objects.filter(uid_set__uid=serial_number, uid_set__detect_status=1). \
                 values('token_val', 'app_type', 'appBundleId', 'm_code', 'push_type', 'userID_id', 'userID__NickName',
@@ -88,11 +112,11 @@ class GatewayView(View):
 
                 try:
                     # 推送消息
-                    if push_type == 0:      # ios apns
+                    if push_type == 0:  # ios apns
                         GatewayPushService.ios_apns_push(**kwargs)
-                    elif push_type == 1:    # android gcm
+                    elif push_type == 1:  # android gcm
                         GatewayPushService.android_fcm_push(**kwargs)
-                    elif push_type == 2:    # android 极光推送
+                    elif push_type == 2:  # android 极光推送
                         GatewayPushService.android_jpush(**kwargs)
                 except Exception as e:
                     logger.info('网关推送消息异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 34 - 1
Model/models.py

@@ -2193,4 +2193,37 @@ class AiProcessTime(models.Model):
         db_table = 'ai_process_time'
         verbose_name = 'ai设备服务表'
         verbose_name_plural = verbose_name
-        ordering = ('id',)
+        ordering = ('id',)
+
+
+class GatewaySubDevice(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    device = models.ForeignKey(Device_Info, to_field='id', default='', on_delete=models.CASCADE,
+                               verbose_name='关联设备信息id')
+    device_type = models.SmallIntegerField(default=0, verbose_name=u'设备类型')
+    nickname = models.CharField(default='', max_length=32, verbose_name=u'设备名称')
+    ieee_addr = models.CharField(default='', max_length=64, verbose_name=u'长地址')
+    src_addr = models.CharField(default='', max_length=16, verbose_name=u'短地址')
+    status = models.SmallIntegerField(default=0, verbose_name='状态')  # 0:关闭, 1:开启
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+    updated_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        db_table = 'gateway_sub_device'
+        verbose_name = '网关子设备'
+        verbose_name_plural = verbose_name
+
+
+class SensorRecord(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    gateway_sub_device_id = models.IntegerField(default=0, blank=True, verbose_name=u'网关子设备id')
+    alarm = models.CharField(default='', max_length=32, verbose_name=u'消息内容')
+    event_type = models.SmallIntegerField(default=0, verbose_name=u'消息类型')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'sensor_record'
+        verbose_name = '传感器记录'
+        verbose_name_plural = verbose_name
+        app_label = 'db2'
+