record.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. demeter service
  5. name:record.py 用于记录设备过来的数据
  6. author:rabin
  7. """
  8. import time
  9. import json
  10. from demeter import *
  11. class Record(object):
  12. def topic(self, key):
  13. array = key.split('/')
  14. return {'hard':array[0], 'type':array[1], 'gateway':array[2], 'device':array[3]}
  15. def push(self, key, value):
  16. data = self.topic(key)
  17. model = Demeter.model('device_type')
  18. model.key = data['type']
  19. device_type = model.select(type='fetchone')
  20. if device_type:
  21. model = Demeter.model('device_gateway')
  22. model.hardware_id = data['gateway']
  23. gateway = model.select(type='fetchone')
  24. if gateway:
  25. model.id = gateway['id']
  26. model.update(status=True,farm_id=gateway['farm_id'])
  27. model = Demeter.model('device_info')
  28. model.hardware_id = data['device']
  29. device = model.select(type='fetchone')
  30. if device:
  31. #update
  32. model.id = device['id']
  33. model.update(farm_id=gateway['farm_id'], num=value,show_num=value,status=True,cdate='time')
  34. else:
  35. hard = json.loads(Demeter.config['hardware']['type'])
  36. #insert
  37. model.hardware_id = data['device']
  38. model.farm_id = gateway['farm_id']
  39. model.name = device_type['name'] + '#' + str(data['device'])
  40. model.hardware_type = hard[data['hard']]
  41. model.gateway_id = gateway['id']
  42. model.type_id = device_type['id']
  43. model.num = value
  44. model.show_num = value
  45. model.status = True
  46. id = model.insert()
  47. #now = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
  48. #data['farm'] = gateway['farm_id']
  49. #data['time'] = now
  50. #data['value'] = value
  51. #print data
  52. #Demeter.model('data', 'tsdb').insert(data)
  53. # 上报数据
  54. #Demeter.up(data)