#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
    demeter web page
    name:device.py
    author:rabin
"""
from __load__ import *
from demeter.mqtt import *
# 首页
class index_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		# 获取网关列表
		self.data['gateway'] = self.service('common').list('device_gateway', state=True, search={'farm_id':self.data['setting']['farm']})
		# 获取页面
		self.data['page'] = self.service('common').list('device_page', order='inorder asc,cdate desc', search={'farm_id':self.data['setting']['farm']})
		self.view("device/index.html")

#批量控制
class mul_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		self.data['list'] = self.service('common').list('device_mul', search={'farm_id':self.data['setting']['farm']})
		if self.data['list']:
			model = Demeter.model('device_mul_queue')
			for key, value in enumerate(self.data['list']):
				model.status.ins((2,3))
				model.mul_id = value['id']
				info = model.select()
				#self.data['list'][key]['oper'] = ''
				if info:
					for v in info:
						if v['oper']:
							self.data['list'][key]['oper'] = v['oper']
					
		self.view("device/mul.html")

	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		value = self.input('value')
		if id:
			info = self.service('common').one('device_mul', id=id)
			if info:
				update = {}
				update['value'] = value
				if info['device_type'] == 1:
					if value == '1':
						update['oper'] = '批量启动中'
					else:
						update['oper'] = '批量关闭中'
				else:
					if value == '1':
						update['oper'] = '批量升起中'
					elif value == '2':
						update['oper'] = '批量下降中'
					elif value == '5':
						update['oper'] = '批量停止中'
						
				self.service('common').update('device_mul', id, update, cdate=False)
				if info['devices']:
					devices = tuple(eval(info['devices']))
					for device in devices:
						Demeter.service('device').switch(device, switch=value, mul=id)
			self.out('yes', {'id':id})
		else:
			self.out('no')

#大屏幕
class screen_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		device = self.input('device')

		# 获取摄像头图片
		self.data['camera'] = Device.get(self, search={'hardware_type':6,'farm_id':self.data['setting']['farm']})
		# 获取当前数据
		self.data['device'] = Device.get(self, search={'id--ins':self.data['setting']['farmInfo']['gateway'], 'hardware_type--ins':(2,4,5),'farm_id':self.data['setting']['farm']})
		deviceInfo = {}
		if self.data['device']:
			for key, value in enumerate(self.data['device']):
				if value['type_id'] > 0:
					type_info = self.service('common').one('device_type', id=value['type_id'])
					self.data['device'][key]['unit'] = type_info['unit']
					self.data['device'][key]['typeName'] = type_info['name']
					if not device and not deviceInfo:
						deviceInfo = self.data['device'][key]
		self.data['list'] = ({'name':'实时数据监测', 'device':self.data['device']},)

		Device.statBase(self, deviceInfo)
		log_search = {}
		if device:
			log_search['device_id'] = device
		else:
			log_search['device_id--ins'] = self.data['setting']['farmInfo']['gateways']
		log_search['type_id'] = 2
		log_search['farm_id'] = self.data['setting']['farm']
		# 获取设备日志
		self.data['logs'] = self.service('common').list('msg', search=log_search, limit='0,1')
		if self.data['logs']:
			for key, value in enumerate(self.data['logs']):
				type_info = self.service('common').one('msg_type', id=value['type_id'])
				self.data['logs'][key]['type'] = type_info['name']
				self.data['logs'][key]['cdates'] = Demeter.date(value['cdate'])
		self.data['info'] = self.data['setting']['farmInfo']
		if not self.data['info']['welcome']:
			self.data['info']['welcome'] = self.data['info']['name']

		self.data['noset'] = True
		self.data['stat'] = True
		self.view("device/screen.html")

#大屏幕设置
class screen_set_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		self.data['info'] = self.data['setting']['farmInfo']
		self.data['info']['devices'] = self.data['info']['gateway']
		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
		self.data['device'] = Device.getByGateway(self, search={'hardware_type--ins' : (2,4,5),'farm_id':self.data['setting']['farm']})
		self.view("device/alert/screen.html")

	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		update = {}
		update['welcome'] = self.input('update_name')
		update['gateway'] = self.inputs('update_devices')
		if not update['gateway']:
			self.out(u'请选择设备')
			return
		update['gateway'] = str(update['gateway'])
		if update['welcome']:
			value = update['welcome']
		else:
			value = self.data['setting']['farmInfo']['name']
		key = 'update/w/' + id
		pub = Pub()
		pub.push(key, value)
		state = self.service('common').update('farm', id, update)
		self.out('yes', {'id':state})

#特殊的大屏幕
class screens_path(Load):
	@Web.setting
	def get(self):
		farm = self.input('ids', '2,3,4')
		self.data['farm'] = farm
		farm = farm.split(',')
		device = self.input('device')
		farmInfo = self.service('common').one('farm', id=farm[0])
		# 获取摄像头图片
		#self.data['camera'] = Device.get(self, search={'hardware_type':6,'farm_id--ins':farm})
		self.data['camera'] = []
		# 获取当前数据
		deviceList = Device.get(self, search={'hardware_type--ins':(2,4,5),'farm_id--ins':farm})
		self.data['device'] = {}
		for v in farm:
			self.data['device'][v] = []
		deviceInfo = {}
		devices = []
		if deviceList:
			for key, value in enumerate(deviceList):
				if value['type_id'] > 0:
					type_info = self.service('common').one('device_type', id=value['type_id'])
					value['unit'] = type_info['unit']
					value['typeName'] = type_info['name']
					self.data['device'][str(value['farm_id'])].append(value)
					devices.append(value['id'])
					if not device and not deviceInfo:
						deviceInfo = value
		self.data['deviceList'] = {}
		for v in farm:
			farmData = self.service('common').one('farm', id=int(v))
			if farmData:
				self.data['deviceList'][v] = ({'name':farmData['name'] + '实时检测', 'device':self.data['device'][v]},)

		Device.statBase(self, deviceInfo)
		log_search = {}
		if device:
			log_search['device_id'] = device
		else:
			log_search['device_id--ins'] = devices
		log_search['type_id'] = 2
		log_search['farm_id--ins'] = farm
		# 获取设备日志
		self.data['logs'] = self.service('common').list('msg', search=log_search, limit='0,1')
		if self.data['logs']:
			for key, value in enumerate(self.data['logs']):
				type_info = self.service('common').one('msg_type', id=value['type_id'])
				self.data['logs'][key]['type'] = type_info['name']
				self.data['logs'][key]['cdates'] = Demeter.date(value['cdate'])
		self.data['info'] = farmInfo
		if not self.data['info']['welcome']:
			self.data['info']['welcome'] = self.data['info']['name']

		self.data['noset'] = True
		self.data['stat'] = True
		self.view("device/screens.html")

#获取设备数据和设备控制
class data_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		Device.data(self)
		if 'stat' in self.data and self.data['stat']:
			Device.statBase(self, self.data['stat'])
		self.view("device/data.html")

#获取图像
class pic_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		Device.pic(self)
		self.view("device/pic.html")

#数据统计
class stat_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		Device.stat(self)
		self.view("device/stat.html")

#设备日志
class log_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		Device.log(self)
		self.view("device/logs.html")

#设备分组
class group_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		# 获取页面
		self.data['page'] = self.service('common').list('device_page', order='inorder asc,cdate desc', search={'farm_id':self.data['setting']['farm']})
		if self.data['page']:
			for key, value in enumerate(self.data['page']):
				self.data['page'][key]['group'] = self.service('common').list('device_group', search={'page_id':value['id'],'farm_id':self.data['setting']['farm']} , order='inorder asc,cdate desc')

				if self.data['page'][key]['group']:
					for groupk, groupv in enumerate(self.data['page'][key]['group']):
						self.data['page'][key]['group'][groupk]['device'] = Device.get(self, search={'id--ins':groupv['devices'],'farm_id':self.data['setting']['farm']})
		self.view("device/group.html")

#更新设备的上下限
class update_device_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		id = self.input('device_id')
		if id:
			Device.data(self)
		else:
			id = self.input('id')
		self.data['set'] = {}
		if id:
			self.data['set'] = self.service('common').one('device_info', id=id)
			if self.data['set'] and self.data['set']['type_id'] > 0:
				self.data['type'] = self.service('common').one('device_type', id=self.data['set']['type_id'])
		self.view("device/alert/device.html")

	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		update = {}
		update['max'] = self.input('update_max')
		update['min'] = self.input('update_min')
		if not update['max'] and not update['min']:
			self.out(u'请至少输入一个上限或者下限')
			return
		if not update['min']:
			del update['min']
		if not update['max']:
			del update['max']
		state = self.service('common').update('device_info', id, update)
		self.out('yes', {'id':state})


#更新页面
class update_page_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		id = self.input('id')
		#self.data['ico'] = ('cj', 'kz', 'syt', 'wg', 'pl', 'dpm', 'fz', 'zn')
		self.data['ico'] = ('cj', 'kz', 'syt')
		self.data['info'] = {}
		if id:
			self.data['info'] = self.service('common').one('device_page', id=id)
		else:
			self.data['info']['ico'] = self.data['ico'][0]
		self.view("device/alert/page.html")

	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		update = {}
		update['name'] = self.input('update_name')
		update['ico'] = self.input('update_ico')
		update['inorder'] = self.input('update_inorder', 0)
		if not update['inorder']:
			update['inorder'] = 0
		update['inorder'] = int(update['inorder'])
		update['stat'] = self.input('update_stat')
		if not update['name']:
			self.out(u'请输入页面名称')
			return
		if not update['ico']:
			self.out(u'请选择图标')
			return
		if update['stat']:
			update['stat'] = True
		else:
			update['stat'] = False
		state = self.service('common').update('device_page', id, update)
		self.out('yes', {'id':state})

#更新分组
class update_group_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		page = self.input('page')
		self.data['page'] = self.service('common').one('device_page', id=page)

		id = self.input('id')
		self.data['info'] = {}
		if id:
			self.data['info'] = self.service('common').one('device_group', id=id)

		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
		self.data['device'] = Device.getByGateway(self, search={'farm_id':self.data['setting']['farm']})
		self.view("device/alert/group.html")

	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		update = {}
		update['page_id'] = self.input('update_page_id')
		update['name'] = self.input('update_name')
		update['devices'] = self.inputs('update_devices')
		update['inorder'] = self.input('update_inorder', 0)
		if not update['inorder']:
			update['inorder'] = 0
		update['inorder'] = int(update['inorder'])
		if not update['name']:
			self.out(u'请输入分组名称')
			return
		if not update['devices']:
			self.out(u'请选择设备')
			return
		update['devices'] = str(update['devices'])
		state = self.service('common').update('device_group', id, update)
		self.out('yes', {'id':state})

	@Web.auth
	@Web.setting
	def delete(self):
		id = self.input('id')
		if not id:
			self.out('no')
			return
		state = self.service('common').rDelete('device_group', id)
		self.out('yes', {'state':state})

#智能设置-批量设置
class set_mul_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		self.data['name'] = '批量控制'
		Device.set(self)
		self.data['mul'] = self.service('common').list('device_mul', search={'farm_id':self.data['setting']['farm']})
		if self.data['mul']:
			for key, value in enumerate(self.data['mul']):
				self.data['mul'][key]['device'] = Device.get(self, search={'id--ins':value['devices'],'farm_id':self.data['setting']['farm']})
		self.view("device/set/mul.html")

#更新批量控制
class update_set_mul_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		id = self.input('id')
		self.data['info'] = {}
		if id:
			self.data['info'] = self.service('common').one('device_mul', id=id)

		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
		self.data['device'] = Device.getByGateway(self, search={'hardware_type' : 3,'farm_id':self.data['setting']['farm']})
		self.data['type'] = ({'id':1, 'name':'开关'},{'id':2, 'name':'卷帘'})
		self.view("device/alert/mul.html")

	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		update = {}
		update['name'] = self.input('update_name')
		update['device_type'] = self.input('update_type')
		update['devices'] = self.inputs('update_devices')
		if not update['name']:
			self.out(u'请输入名称')
			return
		if not update['device_type']:
			self.out(u'请选择设备类型')
			return
		if not update['devices']:
			self.out(u'请选择设备')
			return
		update['devices'] = str(update['devices'])
		state = self.service('common').update('device_mul', id, update)
		self.out('yes', {'id':state})

	@Web.auth
	@Web.setting
	def delete(self):
		id = self.input('id')
		if not id:
			self.out('no')
			return
		state = self.service('common').rDelete('device_mul', id)
		self.out('yes', {'state':state})

#智能设置-定时设置
class set_timing_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		self.data['name'] = '定时设置'
		Device.set(self)
		Device.setCronOper(self)
		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
		self.data['device'] = Device.getByGateway(self, search={'hardware_type': 3,'farm_id':self.data['setting']['farm']})
		self.data['list'] = self.service('common').list('device_set_timing', state=True, page={'num':10}, search={'farm_id':self.data['setting']['farm']})
		if self.data['list']:
			for key, value in enumerate(self.data['list']):
				self.data['list'][key]['device'] = []
				if value['devices']:
					device = Device.get(self, search={'id--ins':value['devices'],'farm_id':self.data['setting']['farm']})
					if device:
						self.data['list'][key]['device'] = device
				self.data['list'][key]['oper'] = self.data['oper'][value['oper']-1]['name']

				self.data['list'][key]['cdates'] = Demeter.date(value['cdate'])
				self.data['list'][key]['zdates'] = Demeter.date(value['zdate'])

				if value['status'] == 1:
					self.data['list'][key]['status_text'] = '执行成功'
				elif value['status'] == 2:
					self.data['list'][key]['status_text'] = '执行失败'

		self.view("device/set/timing.html")

class update_set_timing_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		id = self.input('id')
		Device.setCronOper(self)
		self.data['info'] = {}
		if id:
			self.data['info'] = self.service('common').one('device_set_timing', id=id)
			if self.data['info'] and self.data['info']['zdate']:
				self.data['info']['zdate'] = Demeter.date(self.data['info']['zdate'])

		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
		self.data['device'] = Device.getByGateway(self, search={'hardware_type' : 3,'farm_id':self.data['setting']['farm']})
		self.view("device/alert/timing.html")

	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		update = {}
		update['devices'] = self.inputs('update_devices')
		update['oper'] = self.input('update_oper')
		update['zdate'] = self.input('update_zdate')
		if not update['devices']:
			self.out(u'请选择设备')
			return
		if not update['oper']:
			self.out(u'请选择执行结果')
			return
		if not update['zdate']:
			self.out(u'请选择执行时间')
			return

		update['devices'] = str(update['devices'])
		state = self.service('common').update('device_set_timing', id, update)
		self.out('yes', {'id':state})

	@Web.auth
	@Web.setting
	def delete(self):
		id = self.input('id')
		if not id:
			self.out('no')
			return
		state = self.service('common').rDelete('device_set_timing', id)
		self.out('yes', {'state':state})

#智能设置-周期设置
class set_loop_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		self.data['name'] = '周期设置'
		Device.set(self)
		Device.setCronOper(self)
		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
		self.data['device'] = Device.getByGateway(self, search={'hardware_type': 3,'farm_id':self.data['setting']['farm']})
		self.data['list'] = self.service('common').list('device_set_loop', page={'num':10}, search={'farm_id':self.data['setting']['farm']})
		if self.data['list']:
			for key, value in enumerate(self.data['list']):
				self.data['list'][key]['device'] = []
				if value['devices']:
					device = Device.get(self, search={'id--ins':value['devices'],'farm_id':self.data['setting']['farm']})
					if device:
						self.data['list'][key]['device'] = device
				if value['looptype'] == 2:
					value['loop'] = value['loop'].split(',')
					loop = []
					for v in self.data['week']:
						if str(v['id']) in value['loop']:
							loop.append(v['name'])
					loop = ' '.join(loop) + ' '
				elif value['looptype'] == 3:
					loop = value['loop'].replace(',', ' ') + ' '
				else:
					loop = ''
				self.data['list'][key]['loop'] = loop
				self.data['list'][key]['oper'] = self.data['oper'][value['oper']-1]['name']
				self.data['list'][key]['looptype'] = self.data['looptype'][value['looptype']-1]['list']
				self.data['list'][key]['cdates'] = Demeter.date(value['cdate'])
				self.data['list'][key]['hour'] = Demeter.hour(value['hour'])
				self.data['list'][key]['minute'] = Demeter.hour(value['minute'])

		self.view("device/set/loop.html")

class update_set_loop_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		id = self.input('id')
		Device.setCronOper(self)
		self.data['info'] = {}
		if id:
			self.data['info'] = self.service('common').one('device_set_loop', id=id)

		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
		self.data['device'] = Device.getByGateway(self, search={'hardware_type' : 3,'farm_id':self.data['setting']['farm']})
		self.view("device/alert/loop.html")

	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		update = {}
		update['devices'] = self.inputs('update_devices')
		update['oper'] = self.input('update_oper')
		update['loop'] = self.input('update_loop')
		update['hour'] = self.input('update_hour')
		update['minute'] = self.input('update_minute')
		update['looptype'] = self.input('update_looptype')
		if not update['devices']:
			self.out(u'请选择设备')
			return
		if not update['oper']:
			self.out(u'请选择执行结果')
			return
		if not update['hour']:
			self.out(u'请选择执行时间')
			return
		if not update['looptype']:
			self.out(u'请选择执行时间')
			return
		if update['looptype'] != '1' and not update['loop']:
			self.out(u'请选择执行时间')
			return
		update['devices'] = str(update['devices'])
		state = self.service('common').update('device_set_loop', id, update)
		self.out('yes', {'id':state})

	@Web.auth
	@Web.setting
	def delete(self):
		id = self.input('id')
		if not id:
			self.out('no')
			return
		state = self.input('state', False)
		update = {}
		update['status'] = state
		state = self.service('common').update('device_set_loop', id, update)
		self.out('yes', {'state':state})

#智能设置-条件控制
class set_condition_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		self.data['name'] = '条件控制'
		Device.set(self)
		Device.setCronOper(self)
		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
		self.data['device'] = Device.getByGateway(self, search={'hardware_type': 3,'farm_id':self.data['setting']['farm']})
		self.data['list'] = self.service('common').list('device_set_condition', state=True, page={'num':10}, search={'farm_id':self.data['setting']['farm']})
		if self.data['list']:
			for key, value in enumerate(self.data['list']):
				self.data['list'][key]['device'] = []
				if value['devices']:
					device = Device.get(self, search={'id--ins':value['devices'],'farm_id':self.data['setting']['farm']})
					if device:
						self.data['list'][key]['device'] = device
				self.data['list'][key]['cdates'] = Demeter.date(value['cdate'])
				self.data['list'][key]['oper'] = self.data['opers'][value['oper']-1]['name']
				self.data['list'][key]['condition'] = self.data['condition'][value['condition']-1]['exp']
				gateway = self.service('common').one('device_gateway', id=value['gateway_id'])
				self.data['list'][key]['gatewayName'] = gateway['name']
				device = self.service('common').one('device_info', id=value['device_id'])
				if device:
					self.data['list'][key]['deviceName'] = device['name']
					type_info = self.service('common').one('device_type', id=device['type_id'])
					self.data['list'][key]['unit'] = type_info['unit']

		self.view("device/set/condition.html")

class update_set_condition_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		id = self.input('id')
		Device.setCronOper(self)
		self.data['info'] = {}
		if id:
			self.data['info'] = self.service('common').one('device_set_condition', id=id)

		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
		self.data['device'] = Device.getByGateway(self, search={'hardware_type' : 3,'farm_id':self.data['setting']['farm']})
		self.data['device_list'] = self.service('common').list('device_info', search={'hardware_type--ins' : (2,4),'gateway_id':self.data['gateway'][0]['id']})
		self.view("device/alert/condition.html")

	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		update = {}
		update['devices'] = self.inputs('update_devices')
		update['oper'] = self.input('update_oper')
		update['gateway_id'] = self.input('update_gateway_id')
		update['device_id'] = self.input('update_device_id')
		update['condition'] = self.input('update_condition')
		update['value'] = self.input('update_value')
		update['notice'] = self.input('update_notice')
		if not update['devices']:
			self.out(u'请选择设备')
			return
		if not update['oper']:
			self.out(u'请选择执行结果')
			return
		if not update['gateway_id']:
			self.out(u'请选择设备条件')
			return
		if not update['device_id']:
			self.out(u'请选择设备条件')
			return
		if not update['condition']:
			self.out(u'请选择判断条件')
			return
		if not update['value']:
			self.out(u'请输入判断条件的值')
			return
		if update['notice']:
			update['notice'] = True
		else:
			update['notice'] = False
		
		update['devices'] = str(update['devices'])
		state = self.service('common').update('device_set_condition', id, update)
		self.out('yes', {'id':state})

	@Web.auth
	@Web.setting
	def delete(self):
		id = self.input('id')
		if not id:
			self.out('no')
			return
		state = self.input('state', False)
		update = {}
		update['status'] = state
		state = self.service('common').update('device_set_condition', id, update)
		self.out('yes', {'state':state})

#更新控制设备的状态
class update_path(Load):
	@Web.auth
	@Web.setting
	def post(self):
		id = self.input('id')
		value = self.input('value')
		if id:
			Demeter.service('device').switch(id, switch=value)
			
			self.out('yes', {'id':id})
			"""
			yield self.switch(id, value)
			Shell.popen(Demeter.path + 'switch.py ' + id + ' ' + value, bg=True)
			response = response.replace("\n", "")
			if response == 'ok':
				self.out('yes', {'id':id})
			else:
				model = Demeter.model('notice_type')
				model.key = response
				info = model.select(type='fetchone')
				if info:
					response = info['name']

				self.out(response)
			"""
		else:
			self.out('no')

	@tornado.gen.coroutine
	def switch(self, id, value):
		Demeter.service('device').switch(id, switch=value)

class get_path(Load):
	@Web.auth
	@Web.setting
	def get(self):
		# 根据网关id获取设备
		id = self.input('id')
		device = Device.get(self, search={'gateway_id':id, 'hardware_type': 2,'farm_id':self.data['setting']['farm']})
		self.view("device/alert/select_device.html")