| 
					
				 | 
			
			
				@@ -223,9 +223,9 @@ class info_path(Load): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			,height = '300' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			,add = False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			#,edit = False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			,search = (('farm_id-select-','type_id-select-', 'gateway_id-select-', 'hardware_type-select-'), (u'选择农场',u'设备名称',u'设备类型',u'网关',u'硬件类型')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			,thead = (u'所属农场', u'设备名称', u'设备id', u'连接状态', u'数值', u'设备类型', u'网关',u'硬件类型') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			,tbody = ('farm','name', 'hardware_id', 'status', 'show_num', 'type', 'gateway', 'hardware_type') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			,search = (('farm_id-select-','type_id-select-', 'gateway_id-select-', 'hardware_type-select-'), (u'选择农场',u'设备类型',u'网关',u'硬件类型')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			,thead = (u'所属农场', u'设备名称', u'设备id', u'连接状态', u'值', u'设备类型', u'网关',u'硬件类型') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			,tbody = ('farm','name', 'hardware_id', 'status', 'show', 'type', 'gateway', 'hardware_type') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			,state = False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		self.data['common']['search_farm_id-select-'] = Demeter.config['setting']['farmList'] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -238,20 +238,26 @@ class info_path(Load): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			for key, value in enumerate(self.data['list']): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				farm = self.service('common').one('farm', id=value['farm_id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				self.data['list'][key]['farm'] = farm['name'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				info = self.service('common').one('device_type', id=value['type_id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				self.data['list'][key]['type'] = info['name'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				self.data['list'][key]['type'] = '无' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if value['type_id']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					info = self.service('common').one('device_type', id=value['type_id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if info: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						self.data['list'][key]['type'] = info['name'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				info = self.service('common').one('device_gateway', id=value['gateway_id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				self.data['list'][key]['gateway'] = info['name'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if value['status']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					self.data['list'][key]['status'] = '连接' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					self.data['list'][key]['status'] = '断开' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if value['show_num']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if value['num'] and value['show']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					value['show'] = str(value['show']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					# 根据设备类型type_id得到单位和计算公式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					self.data['list'][key]['show_num'] = '<a href="/device/stat?id='+value['id']+'">' + value['show_num'] + '</a><br />更新时间:' + Demeter.date(value['cdate']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					self.data['list'][key]['show'] = '<a href="/device/stat?id='+value['id']+'&search_date-select-=1&method=list">'+value['show'] + '</a><br />更新时间:' + Demeter.date(value['cdate']) + '<br /><a href="/device/stat?id='+value['id']+'&search_date-select-=1&method=avg">[平均值统计]</a> <a href="/device/stat?id='+value['id']+'&search_date-select-=1&method=maxmin">[高低值统计]</a>' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				elif value['show']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					self.data['list'][key]['show'] = '<a href="/device/pic?id='+value['id']+'"><img src="'+value['show']+'" width="200px"/></a><br />更新时间:' + Demeter.date(value['cdate']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					self.data['list'][key]['show_num'] = '0' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					self.data['list'][key]['show'] = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				hardware_type = self.service('common').one('hardware_type', id=value['hardware_type']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				self.data['list'][key]['hardware_type'] = hardware_type['name'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -278,41 +284,57 @@ class info_update_path(Load): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	def delete(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		self.commonDelete('device_info') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class stat_path(Load): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class pic_path(Load): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Web.auth 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	def get(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		self.common( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			name = u'设备统计' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			,path = 'stat' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			name = u'摄像头图片' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			,path = 'pic' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			,width = '600' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			,height = '300' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			,add = False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			,edit = False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			,search = (('label-1','cdate-time-start','cdate-time-end', 'date-select-'), (u'日期范围',u'开始时间',u'截止时间',u'周期选择')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			#,add = False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			#,edit = False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			,search = (('label-1','cdate-time-start','cdate-time-end'), (u'日期范围',u'开始时间',u'截止时间')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			,thead = (u'图片地址', u'更新时间') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			,tbody = ('pic', 'cdate') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			,state = False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		self.data['common']['search_date-select-'] = [{'id':'1d', 'name':'一天'},{'id':'7d', 'name':'一周'},{'id':'1m', 'name':'一个月'},{'id':'6m', 'name':'半年'}] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self.commonList('device_pic') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if self.data['list']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for key, value in enumerate(self.data['list']): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				self.data['list'][key]['pic'] = '<img src="'+value['pic']+'" width="200px" />' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self.commonView('list') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class stat_path(Load): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Web.auth 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	def get(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		method = self.input('method', 'avg') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		id = self.input('id') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self.common( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			name = u'设备统计' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			,path = 'stat' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			,search = (('label-1','cdate-time-start','cdate-time-end', 'date-select-'), (u'日期范围',u'开始时间',u'截止时间',u'周期选择')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		data = self.service('common').one('device_info', id=id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		model = Demeter.model('data', 'tsdb') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		search = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if 'date-select-' in self.data['search'] and self.data['search']['date-select-']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			value = self.data['search']['date-select-'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if value == '1d': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				search.append('group by time(30m) where time > now() – 1d') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			elif value == '7d': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				search.append('group by time(300m) where time > now() – 7d') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			elif value == '1m': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				search.append('group by time(1d) where time > now() – 1m') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			elif value == '6m': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				search.append('group by time(10d) where time > now() – 6m') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		search = "".join(search) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		self.data['list'] = model.get(data['farm_id'], data['hardware_id'], search=search) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		#print self.data['list'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if self.data['list']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			self.data['category'] = json.dumps(self.data['list'][0]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			self.data['value'] = json.dumps(self.data['list'][1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		typeInfo = self.service('common').one('device_type', id=data['type_id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		farm = self.service('common').one('farm', id=data['farm_id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		self.data['info'] = data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self.data['type'] = typeInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self.data['farm'] = farm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self.data['method'] = method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		model = Demeter.model('data', 'tsdb') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self.data['common']['search_date-select-'] = model.dateConfig() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		search = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if 'cdate-time-start' in self.data['search']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			search['start'] = self.data['search']['cdate-time-start'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if 'cdate-time-end' in self.data['search']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			search['end'] = self.data['search']['cdate-time-end'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if 'date-select-' in self.data['search']: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			search['group'] = self.data['search']['date-select-'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self.data['list'] = model.getData(method, search, data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		self.commonView('stat') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |