# -*- 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