| 
					
				 | 
			
			
				@@ -51,7 +51,7 @@ class Device(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				self.switch(v, switch)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	# 处理开关-向设备发送请求
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	def switch(self, device_id, switch=1, mul=False):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	def switch(self, device_id, switch=1, mul=False, queue=False):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		model = Demeter.model('device_info')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		model.id = device_id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		info = model.select(type='fetchone')
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -64,10 +64,18 @@ class Device(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			queue_model.value = switch
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			queue_model.insert()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if info and info['status'] == True:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"""
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if queue:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				oper = self.msg(info['type_id'], switch)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				queue_model = Demeter.model('device_mul_queue')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				queue_model.id = queue
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				queue_model.update(oper='正在' + oper + info['name'])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"""
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			# 设置为loading状态,cxnum保存当前的值
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			model.id = device_id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			model.update(exp='-1', cxnum=switch, oper=True)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			model.update(exp='-1', cxnum=switch, oper=True, operdate=Demeter.time())
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			model = Demeter.model('device_gateway')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			model.id = info['gateway_id']
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -94,8 +102,8 @@ class Device(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			msg = self.notice('offline')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			model.id = device_id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			model.update(exp=msg, cxnum=switch)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			self.mul(info['id'], info['type_id'], info['name'], switch, '失败:' + msg, False)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			model.update(exp=msg, cxnum=switch, oper=True, operdate=Demeter.time())
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			self.mul(info, info['name'] + '失败:' + msg, False)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			#Demeter.error('offline')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	# 处理开关-响应
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -110,19 +118,19 @@ class Device(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if msg == 'ok':
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				model = Demeter.model('device_info')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				model.id = info['id']
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				model.update(value=param['switch'], exp='1', oper=False)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				model.update(value=param['switch'], exp='1', oper=False, operdate=Demeter.time())
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				# 如果有批量控制
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				self.mul(info['id'], info['type_id'], info['name'], param['switch'], '成功', True)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				self.mul(info, info['name'] + '成功', True)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				msg = self.notice(msg)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				model = Demeter.model('device_info')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				model.id = info['id']
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				model.update(exp=msg, oper=False)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				model.update(exp=msg, oper=True, operdate=Demeter.time())
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				# 如果有批量控制
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				oper = self.mul(info['id'], info['type_id'], info['name'], param['switch'], '失败:' + msg, False)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				self.mul(info, info['name'] + '失败:' + msg, False)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				oper = self.msg(info['type_id'], param['switch'])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				content = oper + gateway['name'] + '下的'+ info['name'] + '失败,错误提示:' + msg
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				Demeter.service('record').msg(info['id'], content, info['farm_id'], 3)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -136,54 +144,38 @@ class Device(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			msg = info['name']
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return msg
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	def mul(self, id, type_id, name, switch, msg, state):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	def msg(self, type_id, switch):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		oper = ''
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		type_model = Demeter.model('device_type')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		type_model.id = type_id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		type_info = type_model.select(type='fetchone')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if type_info['unit'] == 'button':
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if switch == 1:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				oper = '升起'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			elif switch == 2:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				oper = '降下'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			elif switch == 5:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				oper = '停止'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if switch == 1:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				oper = '开启'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				oper = '关闭'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return oper
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	def mul(self, info, msg, state):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		model = Demeter.model('device_mul_queue')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		model.device_id = id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mul_model = Demeter.model('device_mul')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		model.device_id = info['id']
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		model.status = 1
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		queue = model.select()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if queue:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			model.device_id = id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for v in queue:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				model.status = 1
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				model.device_id = info['id']
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				oper = self.msg(info['type_id'], v['value']) + msg
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if state:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				model.update(status=2)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				#model.device_id = id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				#model.delete()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				model.update(status=3)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			mul_model = Demeter.model('device_mul')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			type_model = Demeter.model('device_type')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			type_model.id = type_id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			type_info = type_model.select(type='fetchone')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if type_info['unit'] == 'button':
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if switch == '1':
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					oper = '升起'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				elif switch == '2':
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					oper = '降下'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				elif switch == '5':
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					oper = '停止'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				model.update(status=2, oper=oper, operdate=Demeter.time())
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if switch == '1':
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					oper = '开启'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					oper = '关闭'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if msg:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				for v in queue:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					# 判断是否全部失败,全部失败,则将回执状态值
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					old = False
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if state == False:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						mul_model.id = v['mul_id']
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						info = mul_model.select(type='fetchone')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						model.mul_id = v['mul_id']
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						model.status = 3
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						queueMulNum = len(model.select())
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						devicesNum = len(tuple(eval(info['devices'])))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						if queueMulNum == devicesNum:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							old = info['old']
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					mul_model.id = v['mul_id']
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					oper = oper + name + msg
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if old:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						mul_model.update(oper=oper, value=old)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					else:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						mul_model.update(oper=oper)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return oper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				model.update(status=3, oper=oper, operdate=Demeter.time()) 
			 |