123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- """
- demeter web
- name:admin.py
- author:rabin
- """
- import time
- from demeter.core import *
- from gevent import monkey; monkey.patch_socket()
- import gevent
- from pic import pic
- from demeter.mqtt import *
- timeSleep = 10
- def switch(value):
- Demeter.service('device').switchMul(value)
-
- def device():
- while 1:
- model = Demeter.model('device_info')
- cur = Demeter.time() - 500
- model.cdate.assgin(cur, '<=')
- model.status = True
- data = model.select()
- for v in data:
- model.id = v['id']
- if v['hardware_type'] == 5:
- model.update(value='0', status=False)
- elif v['hardware_type'] != 7 and v['hardware_type'] != 6:
- model.update(status=False)
- gevent.sleep(60)
- def control():
- while 1:
- model = Demeter.model('device_info')
- type_model = Demeter.model('device_type')
- cur = Demeter.time() - 10
- model.cdate.assgin(cur, '<=')
- model.oper = True
- model.hardware_type = 3
- service = Demeter.service('device')
- data = model.select()
- if data:
- for v in data:
- model.id = v['id']
- if v['exp'] == '-1':
- msg = service.notice('timeout')
- service.mul(v['id'], v['type_id'], v['name'], v['cxnum'], '失败:' + msg, False)
- model.update(exp=msg)
- else:
- msg = '1'
- service.mul(v['id'], v['type_id'], v['name'], v['cxnum'], '', True)
- model.update(exp=msg, oper=False)
- gevent.sleep(timeSleep)
-
- def mulQueue():
- while 1:
- model = Demeter.model('device_mul_queue')
- model.status = 1
- data = model.select(type='fetchone', order='device_id asc')
- service = Demeter.service('device')
- if data and not data['oper']:
- model.id = data['id']
- service.switch(data['device_id'], switch=data['value'])
- model.update(oper=True)
- gevent.sleep(1)
- def mulQueueDrop():
- while 1:
- num = 3600*24
- model = Demeter.model('device_mul_queue')
- model.status.ins((2,3))
- cur = Demeter.time() - num
- model.cdate.assgin(cur, '<=')
- model.delete()
- gevent.sleep(36000)
- def timing():
- while 1:
- model = Demeter.model('device_set_timing')
- model.status = 0
- cur = Demeter.time()
- model.zdate.assgin(cur, '<=')
- data = model.select()
- if data:
- for value in data:
- switch(value)
- model.id = value['id']
- model.update(status=1)
- gevent.sleep(timeSleep)
- def loop():
- while 1:
- model = Demeter.model('device_set_loop')
- cur = Demeter.time()
- date = Demeter.date(cur, '%Y-%m-%d-%w-%H-%M')
- date = date.split('-')
- week = date[3]
- day = date[2]
- model.status = True
- model.hour = date[4]
- model.minute = date[5]
- data = model.select()
- if data:
- for value in data:
- state = False
- value['loop'] = value['loop'].split(',')
- if value['looptype'] == 2:
- if week in value['loop']:
- state = True
- elif value['looptype'] == 3:
- if day in value['loop']:
- state = True
- if state:
- switch(value)
- gevent.sleep(timeSleep)
- def savePic():
- while 1:
- pic()
- gevent.sleep(1800)
- def timeSync():
- while 1:
- pub = Pub()
- key = 'time/bh'
- value = Demeter.date(Demeter.time())
- pub.push(key, value)
- gevent.sleep(3600*24)
- def handle():
- gevent.joinall([
- gevent.spawn(timing),
- gevent.spawn(loop),
- gevent.spawn(device),
- gevent.spawn(savePic),
- gevent.spawn(control),
- gevent.spawn(timeSync),
- gevent.spawn(mulQueue),
- gevent.spawn(mulQueueDrop),
- ])
- handle()
|