123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- from apps.web.constant import DeviceCmdCode
- from apps.web.core.adapter.aoqiang_socket_node import AoQiangSocketNodeBox
- from apps.web.core.exceptions import ServiceException
- from apps.web.core.networking import MessageSender
- from apps.web.device.models import Device
- class AoQiangSocketGetewayBox(AoQiangSocketNodeBox):
- def get_node_list(self):
- devInfo = MessageSender.send(self.device, self.make_random_cmdcode(),
- {'IMEI': self._device['devNo'], 'data': {'fun_code': 0x01}})
- self.check_feedback_result(devInfo)
- result = []
- for nodeId, nodeInfo in devInfo['data']['devs_status'].items():
- if nodeInfo['status'] == 1:
- nodeInfo['online'] = True
- else:
- nodeInfo['online'] = False
- nodeInfo.update({'devNo': nodeId})
- result.append(nodeInfo)
- return result
- def get_node(self, nodeDevNo):
- devInfo = MessageSender.send(self.device, self.make_random_cmdcode(),
- {'IMEI': self._device['devNo'], 'data': {'fun_code': 0x01}})
- self.check_feedback_result(devInfo)
- return devInfo['data']['subdevs_status'].get(nodeDevNo, None)
- def add_node(self, nodeDevNo):
- devInfo = MessageSender.send(self.device, DeviceCmdCode.OPERATE_DEV_SYNC,
- {'IMEI': self._device['devNo'], 'data': {'fun_code': 0x03, 'sub_id': nodeDevNo}})
- self.check_feedback_result(devInfo)
- # 子节点的父节点也要更新
- try:
- devObj = Device.objects.get(devNo=nodeDevNo)
- devObj.gatewayNode = self._device['devNo']
- devObj.save()
- except Exception, e:
- raise ServiceException({'result': 2, 'description': u'请先扫码注册子设备插座,然后再加入网关'})
- def remove_node(self, nodeDevNo):
- devInfo = MessageSender.send(self.device, DeviceCmdCode.OPERATE_DEV_SYNC,
- {'IMEI': self._device['devNo'], 'data': {'fun_code': 0x05, 'sub_id': nodeDevNo}})
- self.check_feedback_result(devInfo)
- # 子节点的父节点也要更新
- try:
- devObj = Device.objects.get(devNo=nodeDevNo)
- devObj.gatewayNode = ''
- devObj.save()
- except Exception, e:
- pass
|