device.py 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. demeter web page
  5. name:device.py
  6. author:rabin
  7. """
  8. from __load__ import *
  9. # 首页
  10. class index_path(Load):
  11. @Web.auth
  12. def get(self):
  13. # 获取网关列表
  14. self.data['gateway'] = self.service('common').list('device_gateway', state=True, search={'farm_id':self.data['setting']['farm']})
  15. # 获取页面
  16. self.data['page'] = self.service('common').list('device_page', order='inorder asc,cdate desc', search={'farm_id':self.data['setting']['farm']})
  17. self.view("device/index.html")
  18. #批量控制
  19. class mul_path(Load):
  20. @Web.auth
  21. def get(self):
  22. self.data['list'] = self.service('common').list('device_mul', search={'farm_id':self.data['setting']['farm']})
  23. if self.data['list']:
  24. for key, value in enumerate(self.data['list']):
  25. info = self.service('common').one('device_mul_queue', mul_id=value['id'])
  26. if not info:
  27. self.data['list'][key]['oper'] = ''
  28. self.view("device/mul.html")
  29. @Web.auth
  30. def post(self):
  31. id = self.input('id')
  32. value = self.input('value')
  33. if id:
  34. info = self.service('common').one('device_mul', id=id)
  35. if info:
  36. update = {}
  37. update['value'] = value
  38. if value == '1':
  39. update['oper'] = '批量启动中'
  40. else:
  41. update['oper'] = '批量关闭中'
  42. self.service('common').update('device_mul', id, update, cdate=False)
  43. if info['devices']:
  44. devices = tuple(eval(info['devices']))
  45. for device in devices:
  46. Demeter.service('device').switch(device, value, id)
  47. self.out('yes', {'id':id})
  48. else:
  49. self.out('no')
  50. #大屏幕
  51. class screen_path(Load):
  52. @Web.auth
  53. def get(self):
  54. device = self.input('device')
  55. # 获取摄像头图片
  56. self.data['camera'] = Device.get(self, search={'hardware_type':6,'farm_id':self.data['setting']['farm']})
  57. # 获取当前数据
  58. 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']})
  59. deviceInfo = {}
  60. if self.data['device']:
  61. for key, value in enumerate(self.data['device']):
  62. if value['type_id'] > 0:
  63. type_info = self.service('common').one('device_type', id=value['type_id'])
  64. self.data['device'][key]['unit'] = type_info['unit']
  65. self.data['device'][key]['typeName'] = type_info['name']
  66. if not device and not deviceInfo:
  67. deviceInfo = self.data['device'][key]
  68. self.data['list'] = ({'name':'实时数据监测', 'device':self.data['device']},)
  69. Device.statBase(self, deviceInfo)
  70. log_search = {}
  71. if device:
  72. log_search['device_id'] = device
  73. else:
  74. log_search['device_id--ins'] = self.data['setting']['farmInfo']['gateways']
  75. log_search['type_id'] = 2
  76. log_search['farm_id'] = self.data['setting']['farm']
  77. # 获取设备日志
  78. self.data['logs'] = self.service('common').list('msg', search=log_search, limit='0,1')
  79. if self.data['logs']:
  80. for key, value in enumerate(self.data['logs']):
  81. type_info = self.service('common').one('msg_type', id=value['type_id'])
  82. self.data['logs'][key]['type'] = type_info['name']
  83. self.data['logs'][key]['cdates'] = Demeter.date(value['cdate'])
  84. self.data['info'] = self.data['setting']['farmInfo']
  85. if not self.data['info']['welcome']:
  86. self.data['info']['welcome'] = self.data['info']['name']
  87. self.data['noset'] = True
  88. self.data['stat'] = True
  89. self.view("device/screen.html")
  90. #大屏幕设置
  91. class screen_set_path(Load):
  92. @Web.auth
  93. def get(self):
  94. self.data['info'] = self.data['setting']['farmInfo']
  95. self.data['info']['devices'] = self.data['info']['gateway']
  96. self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
  97. self.data['device'] = Device.getByGateway(self, search={'hardware_type--ins' : (2,4,5),'farm_id':self.data['setting']['farm']})
  98. self.view("device/alert/screen.html")
  99. @Web.auth
  100. def post(self):
  101. id = self.input('id')
  102. update = {}
  103. update['welcome'] = self.input('update_name')
  104. update['gateway'] = self.inputs('update_devices')
  105. if not update['gateway']:
  106. self.out(u'请选择设备')
  107. return
  108. update['gateway'] = str(update['gateway'])
  109. state = self.service('common').update('farm', id, update)
  110. self.out('yes', {'id':state})
  111. #获取设备数据和设备控制
  112. class data_path(Load):
  113. @Web.auth
  114. def get(self):
  115. Device.data(self)
  116. if 'stat' in self.data and self.data['stat']:
  117. Device.statBase(self, self.data['stat'])
  118. self.view("device/data.html")
  119. #获取图像
  120. class pic_path(Load):
  121. @Web.auth
  122. def get(self):
  123. Device.pic(self)
  124. self.view("device/pic.html")
  125. #数据统计
  126. class stat_path(Load):
  127. @Web.auth
  128. def get(self):
  129. Device.stat(self)
  130. self.view("device/stat.html")
  131. #设备日志
  132. class log_path(Load):
  133. @Web.auth
  134. def get(self):
  135. Device.log(self)
  136. self.view("device/logs.html")
  137. #设备分组
  138. class group_path(Load):
  139. @Web.auth
  140. def get(self):
  141. # 获取页面
  142. self.data['page'] = self.service('common').list('device_page', order='inorder asc,cdate desc', search={'farm_id':self.data['setting']['farm']})
  143. if self.data['page']:
  144. for key, value in enumerate(self.data['page']):
  145. 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')
  146. if self.data['page'][key]['group']:
  147. for groupk, groupv in enumerate(self.data['page'][key]['group']):
  148. self.data['page'][key]['group'][groupk]['device'] = Device.get(self, search={'id--ins':groupv['devices'],'farm_id':self.data['setting']['farm']})
  149. self.view("device/group.html")
  150. #更新设备的上下限
  151. class update_device_path(Load):
  152. @Web.auth
  153. def get(self):
  154. id = self.input('device_id')
  155. if id:
  156. Device.data(self)
  157. else:
  158. id = self.input('id')
  159. self.data['set'] = {}
  160. if id:
  161. self.data['set'] = self.service('common').one('device_info', id=id)
  162. if self.data['set'] and self.data['set']['type_id'] > 0:
  163. self.data['type'] = self.service('common').one('device_type', id=self.data['set']['type_id'])
  164. self.view("device/alert/device.html")
  165. @Web.auth
  166. def post(self):
  167. id = self.input('id')
  168. update = {}
  169. update['max'] = self.input('update_max')
  170. update['min'] = self.input('update_min')
  171. if not update['max'] and not update['min']:
  172. self.out(u'请至少输入一个上限或者下限')
  173. return
  174. if not update['min']:
  175. del update['min']
  176. if not update['max']:
  177. del update['max']
  178. state = self.service('common').update('device_info', id, update)
  179. self.out('yes', {'id':state})
  180. #更新页面
  181. class update_page_path(Load):
  182. @Web.auth
  183. def get(self):
  184. id = self.input('id')
  185. #self.data['ico'] = ('cj', 'kz', 'syt', 'wg', 'pl', 'dpm', 'fz', 'zn')
  186. self.data['ico'] = ('cj', 'kz', 'syt')
  187. self.data['info'] = {}
  188. if id:
  189. self.data['info'] = self.service('common').one('device_page', id=id)
  190. else:
  191. self.data['info']['ico'] = self.data['ico'][0]
  192. self.view("device/alert/page.html")
  193. @Web.auth
  194. def post(self):
  195. id = self.input('id')
  196. update = {}
  197. update['name'] = self.input('update_name')
  198. update['ico'] = self.input('update_ico')
  199. update['inorder'] = self.input('update_inorder', 0)
  200. if not update['inorder']:
  201. update['inorder'] = 0
  202. update['inorder'] = int(update['inorder'])
  203. update['stat'] = self.input('update_stat')
  204. if not update['name']:
  205. self.out(u'请输入页面名称')
  206. return
  207. if not update['ico']:
  208. self.out(u'请选择图标')
  209. return
  210. if update['stat']:
  211. update['stat'] = True
  212. else:
  213. update['stat'] = False
  214. state = self.service('common').update('device_page', id, update)
  215. self.out('yes', {'id':state})
  216. #更新分组
  217. class update_group_path(Load):
  218. @Web.auth
  219. def get(self):
  220. page = self.input('page')
  221. self.data['page'] = self.service('common').one('device_page', id=page)
  222. id = self.input('id')
  223. self.data['info'] = {}
  224. if id:
  225. self.data['info'] = self.service('common').one('device_group', id=id)
  226. self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
  227. self.data['device'] = Device.getByGateway(self, search={'farm_id':self.data['setting']['farm']})
  228. self.view("device/alert/group.html")
  229. @Web.auth
  230. def post(self):
  231. id = self.input('id')
  232. update = {}
  233. update['page_id'] = self.input('update_page_id')
  234. update['name'] = self.input('update_name')
  235. update['devices'] = self.inputs('update_devices')
  236. update['inorder'] = self.input('update_inorder', 0)
  237. if not update['inorder']:
  238. update['inorder'] = 0
  239. update['inorder'] = int(update['inorder'])
  240. if not update['name']:
  241. self.out(u'请输入分组名称')
  242. return
  243. if not update['devices']:
  244. self.out(u'请选择设备')
  245. return
  246. update['devices'] = str(update['devices'])
  247. state = self.service('common').update('device_group', id, update)
  248. self.out('yes', {'id':state})
  249. @Web.auth
  250. def delete(self):
  251. id = self.input('id')
  252. if not id:
  253. self.out('no')
  254. return
  255. state = self.service('common').rDelete('device_group', id)
  256. self.out('yes', {'state':state})
  257. #智能设置-批量设置
  258. class set_mul_path(Load):
  259. @Web.auth
  260. def get(self):
  261. self.data['name'] = '批量控制'
  262. Device.set(self)
  263. self.data['mul'] = self.service('common').list('device_mul', search={'farm_id':self.data['setting']['farm']})
  264. if self.data['mul']:
  265. for key, value in enumerate(self.data['mul']):
  266. self.data['mul'][key]['device'] = Device.get(self, search={'id--ins':value['devices'],'farm_id':self.data['setting']['farm']})
  267. self.view("device/set/mul.html")
  268. #更新批量控制
  269. class update_set_mul_path(Load):
  270. @Web.auth
  271. def get(self):
  272. id = self.input('id')
  273. self.data['info'] = {}
  274. if id:
  275. self.data['info'] = self.service('common').one('device_mul', id=id)
  276. self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
  277. self.data['device'] = Device.getByGateway(self, search={'hardware_type' : 3,'farm_id':self.data['setting']['farm']})
  278. self.view("device/alert/mul.html")
  279. @Web.auth
  280. def post(self):
  281. id = self.input('id')
  282. update = {}
  283. update['name'] = self.input('update_name')
  284. update['devices'] = self.inputs('update_devices')
  285. if not update['name']:
  286. self.out(u'请输入名称')
  287. return
  288. if not update['devices']:
  289. self.out(u'请选择设备')
  290. return
  291. update['devices'] = str(update['devices'])
  292. state = self.service('common').update('device_mul', id, update)
  293. self.out('yes', {'id':state})
  294. @Web.auth
  295. def delete(self):
  296. id = self.input('id')
  297. if not id:
  298. self.out('no')
  299. return
  300. state = self.service('common').rDelete('device_mul', id)
  301. self.out('yes', {'state':state})
  302. #智能设置-定时设置
  303. class set_timing_path(Load):
  304. @Web.auth
  305. def get(self):
  306. self.data['name'] = '定时设置'
  307. Device.set(self)
  308. Device.setCronOper(self)
  309. self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
  310. self.data['device'] = Device.getByGateway(self, search={'hardware_type': 3,'farm_id':self.data['setting']['farm']})
  311. self.data['list'] = self.service('common').list('device_set_timing', state=True, page={'num':10}, search={'farm_id':self.data['setting']['farm']})
  312. if self.data['list']:
  313. for key, value in enumerate(self.data['list']):
  314. self.data['list'][key]['device'] = []
  315. if value['devices']:
  316. device = Device.get(self, search={'id--ins':value['devices'],'farm_id':self.data['setting']['farm']})
  317. if device:
  318. self.data['list'][key]['device'] = device
  319. self.data['list'][key]['oper'] = self.data['oper'][value['oper']-1]['name']
  320. self.data['list'][key]['cdates'] = Demeter.date(value['cdate'])
  321. self.data['list'][key]['zdates'] = Demeter.date(value['zdate'])
  322. if value['status'] == 1:
  323. self.data['list'][key]['status_text'] = '执行成功'
  324. elif value['status'] == 2:
  325. self.data['list'][key]['status_text'] = '执行失败'
  326. self.view("device/set/timing.html")
  327. class update_set_timing_path(Load):
  328. @Web.auth
  329. def get(self):
  330. id = self.input('id')
  331. Device.setCronOper(self)
  332. self.data['info'] = {}
  333. if id:
  334. self.data['info'] = self.service('common').one('device_set_timing', id=id)
  335. if self.data['info'] and self.data['info']['zdate']:
  336. self.data['info']['zdate'] = Demeter.date(self.data['info']['zdate'])
  337. self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
  338. self.data['device'] = Device.getByGateway(self, search={'hardware_type' : 3,'farm_id':self.data['setting']['farm']})
  339. self.view("device/alert/timing.html")
  340. @Web.auth
  341. def post(self):
  342. id = self.input('id')
  343. update = {}
  344. update['devices'] = self.inputs('update_devices')
  345. update['oper'] = self.input('update_oper')
  346. update['zdate'] = self.input('update_zdate')
  347. if not update['devices']:
  348. self.out(u'请选择设备')
  349. return
  350. if not update['oper']:
  351. self.out(u'请选择执行结果')
  352. return
  353. if not update['zdate']:
  354. self.out(u'请选择执行时间')
  355. return
  356. update['devices'] = str(update['devices'])
  357. state = self.service('common').update('device_set_timing', id, update)
  358. self.out('yes', {'id':state})
  359. @Web.auth
  360. def delete(self):
  361. id = self.input('id')
  362. if not id:
  363. self.out('no')
  364. return
  365. state = self.service('common').rDelete('device_set_timing', id)
  366. self.out('yes', {'state':state})
  367. #智能设置-周期设置
  368. class set_loop_path(Load):
  369. @Web.auth
  370. def get(self):
  371. self.data['name'] = '周期设置'
  372. Device.set(self)
  373. Device.setCronOper(self)
  374. self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
  375. self.data['device'] = Device.getByGateway(self, search={'hardware_type': 3,'farm_id':self.data['setting']['farm']})
  376. self.data['list'] = self.service('common').list('device_set_loop', page={'num':10}, search={'farm_id':self.data['setting']['farm']})
  377. if self.data['list']:
  378. for key, value in enumerate(self.data['list']):
  379. self.data['list'][key]['device'] = []
  380. if value['devices']:
  381. device = Device.get(self, search={'id--ins':value['devices'],'farm_id':self.data['setting']['farm']})
  382. if device:
  383. self.data['list'][key]['device'] = device
  384. if value['looptype'] == 2:
  385. value['loop'] = value['loop'].split(',')
  386. loop = []
  387. for v in self.data['week']:
  388. if str(v['id']) in value['loop']:
  389. loop.append(v['name'])
  390. loop = ' '.join(loop) + ' '
  391. elif value['looptype'] == 3:
  392. loop = value['loop'].replace(',', ' ') + ' '
  393. else:
  394. loop = ''
  395. self.data['list'][key]['loop'] = loop
  396. self.data['list'][key]['oper'] = self.data['oper'][value['oper']-1]['name']
  397. self.data['list'][key]['looptype'] = self.data['looptype'][value['looptype']-1]['list']
  398. self.data['list'][key]['cdates'] = Demeter.date(value['cdate'])
  399. self.data['list'][key]['hour'] = Demeter.hour(value['hour'])
  400. self.data['list'][key]['minute'] = Demeter.hour(value['minute'])
  401. self.view("device/set/loop.html")
  402. class update_set_loop_path(Load):
  403. @Web.auth
  404. def get(self):
  405. id = self.input('id')
  406. Device.setCronOper(self)
  407. self.data['info'] = {}
  408. if id:
  409. self.data['info'] = self.service('common').one('device_set_loop', id=id)
  410. self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
  411. self.data['device'] = Device.getByGateway(self, search={'hardware_type' : 3,'farm_id':self.data['setting']['farm']})
  412. self.view("device/alert/loop.html")
  413. @Web.auth
  414. def post(self):
  415. id = self.input('id')
  416. update = {}
  417. update['devices'] = self.inputs('update_devices')
  418. update['oper'] = self.input('update_oper')
  419. update['loop'] = self.input('update_loop')
  420. update['hour'] = self.input('update_hour')
  421. update['minute'] = self.input('update_minute')
  422. update['looptype'] = self.input('update_looptype')
  423. if not update['devices']:
  424. self.out(u'请选择设备')
  425. return
  426. if not update['oper']:
  427. self.out(u'请选择执行结果')
  428. return
  429. if not update['hour']:
  430. self.out(u'请选择执行时间')
  431. return
  432. if not update['looptype']:
  433. self.out(u'请选择执行时间')
  434. return
  435. if update['looptype'] != '1' and not update['loop']:
  436. self.out(u'请选择执行时间')
  437. return
  438. update['devices'] = str(update['devices'])
  439. state = self.service('common').update('device_set_loop', id, update)
  440. self.out('yes', {'id':state})
  441. @Web.auth
  442. def delete(self):
  443. id = self.input('id')
  444. if not id:
  445. self.out('no')
  446. return
  447. state = self.input('state', False)
  448. update = {}
  449. update['status'] = state
  450. state = self.service('common').update('device_set_loop', id, update)
  451. self.out('yes', {'state':state})
  452. #智能设置-条件控制
  453. class set_condition_path(Load):
  454. @Web.auth
  455. def get(self):
  456. self.data['name'] = '条件控制'
  457. Device.set(self)
  458. Device.setCronOper(self)
  459. self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
  460. self.data['device'] = Device.getByGateway(self, search={'hardware_type': 3,'farm_id':self.data['setting']['farm']})
  461. self.data['list'] = self.service('common').list('device_set_condition', state=True, page={'num':10}, search={'farm_id':self.data['setting']['farm']})
  462. if self.data['list']:
  463. for key, value in enumerate(self.data['list']):
  464. self.data['list'][key]['device'] = []
  465. if value['devices']:
  466. device = Device.get(self, search={'id--ins':value['devices'],'farm_id':self.data['setting']['farm']})
  467. if device:
  468. self.data['list'][key]['device'] = device
  469. self.data['list'][key]['cdates'] = Demeter.date(value['cdate'])
  470. self.data['list'][key]['oper'] = self.data['opers'][value['oper']-1]['name']
  471. self.data['list'][key]['condition'] = self.data['condition'][value['condition']-1]['exp']
  472. gateway = self.service('common').one('device_gateway', id=value['gateway_id'])
  473. self.data['list'][key]['gatewayName'] = gateway['name']
  474. device = self.service('common').one('device_info', id=value['device_id'])
  475. if device:
  476. self.data['list'][key]['deviceName'] = device['name']
  477. type_info = self.service('common').one('device_type', id=device['type_id'])
  478. self.data['list'][key]['unit'] = type_info['unit']
  479. self.view("device/set/condition.html")
  480. class update_set_condition_path(Load):
  481. @Web.auth
  482. def get(self):
  483. id = self.input('id')
  484. Device.setCronOper(self)
  485. self.data['info'] = {}
  486. if id:
  487. self.data['info'] = self.service('common').one('device_set_condition', id=id)
  488. self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})
  489. self.data['device'] = Device.getByGateway(self, search={'hardware_type' : 3,'farm_id':self.data['setting']['farm']})
  490. self.data['device_list'] = self.service('common').list('device_info', search={'hardware_type--ins' : (2,4),'gateway_id':self.data['gateway'][0]['id']})
  491. self.view("device/alert/condition.html")
  492. @Web.auth
  493. def post(self):
  494. id = self.input('id')
  495. update = {}
  496. update['devices'] = self.inputs('update_devices')
  497. update['oper'] = self.input('update_oper')
  498. update['gateway_id'] = self.input('update_gateway_id')
  499. update['device_id'] = self.input('update_device_id')
  500. update['condition'] = self.input('update_condition')
  501. update['value'] = self.input('update_value')
  502. update['notice'] = self.input('update_notice')
  503. if not update['devices']:
  504. self.out(u'请选择设备')
  505. return
  506. if not update['oper']:
  507. self.out(u'请选择执行结果')
  508. return
  509. if not update['gateway_id']:
  510. self.out(u'请选择设备条件')
  511. return
  512. if not update['device_id']:
  513. self.out(u'请选择设备条件')
  514. return
  515. if not update['condition']:
  516. self.out(u'请选择判断条件')
  517. return
  518. if not update['value']:
  519. self.out(u'请输入判断条件的值')
  520. return
  521. if update['notice']:
  522. update['notice'] = True
  523. else:
  524. update['notice'] = False
  525. update['devices'] = str(update['devices'])
  526. state = self.service('common').update('device_set_condition', id, update)
  527. self.out('yes', {'id':state})
  528. @Web.auth
  529. def delete(self):
  530. id = self.input('id')
  531. if not id:
  532. self.out('no')
  533. return
  534. state = self.input('state', False)
  535. update = {}
  536. update['status'] = state
  537. state = self.service('common').update('device_set_condition', id, update)
  538. self.out('yes', {'state':state})
  539. #更新控制设备的状态
  540. class update_path(Load):
  541. @Web.auth
  542. def post(self):
  543. id = self.input('id')
  544. value = self.input('value')
  545. if id:
  546. Demeter.service('device').switch(id, value)
  547. self.out('yes', {'id':id})
  548. """
  549. yield self.switch(id, value)
  550. Shell.popen(Demeter.path + 'switch.py ' + id + ' ' + value, bg=True)
  551. response = response.replace("\n", "")
  552. if response == 'ok':
  553. self.out('yes', {'id':id})
  554. else:
  555. model = Demeter.model('notice_type')
  556. model.key = response
  557. info = model.select(type='fetchone')
  558. if info:
  559. response = info['name']
  560. self.out(response)
  561. """
  562. else:
  563. self.out('no')
  564. @tornado.gen.coroutine
  565. def switch(self, id, value):
  566. Demeter.service('device').switch(id, value)
  567. class get_path(Load):
  568. @Web.auth
  569. def get(self):
  570. # 根据网关id获取设备
  571. id = self.input('id')
  572. device = Device.get(self, search={'gateway_id':id, 'hardware_type': 2,'farm_id':self.data['setting']['farm']})
  573. self.view("device/alert/select_device.html")