def deviceRegister()

in leda_python/leda.py [0:0]


    def deviceRegister(self, deviceName, productKey, productTsl, deviceCallBack):
        '''注册设备并上线设备(设备默认注册后即上线)
			:param deviceName[string]: 由设备特征值组成的唯一描述信息, 必须保证每个待接入设备名称不同.
			:param productKey[string]: 产品唯一描述信息, 由阿里提供, 在设备 tsl 里也可以查得到.
			:param productTsl[string]: 设备tsl, 由阿里提供描述规范, 描述了设备的能力
			:param deviceCallBack[obj]: 设备回调方法
			:return:ledaSubDev[obj]
		'''

        if (False == isinstance(productTsl, str)):
            raise exception.LedaParamsException("deviceRegister: input args type is invalid")

        m = hashlib.md5()
        m.update(productTsl.encode('utf-8'))
        productMd5 = m.hexdigest()

        with self.deviceServiceDictLock:
            pk_dn = productKey + deviceName
            if (pk_dn in self.device_service_dict):
                s = '%s:%s' % (funcname(), linenum())
                _logger.warning("%s,device_name(%s) has already registered" % (s, deviceName))
                sudDevice = self.device_service_dict[pk_dn][1]
                sudDevice.online()
            else:

                sudDevice = self.driver_register_device(deviceName, productKey, productMd5, productTsl, deviceCallBack)
                sudDevice.online()
                self.device_service_dict[pk_dn] = [sudDevice.get_cloud_id(), sudDevice]

            return sudDevice