rabin 7 years ago
parent
commit
563e7f7d59
2 changed files with 123 additions and 0 deletions
  1. 54 0
      cron.py
  2. 69 0
      pic.py

+ 54 - 0
cron.py

@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+    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 device():
+	while 1:
+		model = Demeter.model('device_info')
+		cur = Demeter.time() - 1800
+		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 savePic():
+	while 1:
+		pic()
+		gevent.sleep(1800)
+
+# 同步时间,24小时同步一次
+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(device),
+		gevent.spawn(savePic),
+		gevent.spawn(timeSync),
+	])
+
+handle()

+ 69 - 0
pic.py

@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+    demeter web
+    name:pub.py
+    author:rabin
+"""
+from demeter.core import *
+import oss2
+from itertools import islice
+from datetime import *
+
+key = 'nongxiaohe'
+host = 'oss-cn-shanghai.aliyuncs.com'
+appId = 'LTAIsuklCbkXzpgt'
+appSecret = 'M4d7xLxY0bVE034rTL84MEasG8Q8YZ'
+
+url = 'http://'+key+'.'+host+'/'
+auth = oss2.Auth(appId, appSecret)
+endpoint = 'http://' + host
+bucket = oss2.Bucket(auth, endpoint, key)
+fix = '.jpg'
+
+def pic():
+	model = Demeter.model('device_info')
+	model.hardware_type = 6
+	data = model.select()
+	if data:
+		for value in data:
+			if url in value['value']:
+				prefix = value['value'].replace(url, '')
+				prefix = prefix.replace(fix, '')
+				ossLoad(value, prefix)
+
+def ossLoad(value, prefix, marker=''):
+	#data = oss2.ObjectIterator(bucket, prefix=prefix)
+	data = bucket.list_objects(prefix=prefix, marker=marker, max_keys=100)
+	
+	if data.is_truncated == True:
+		ossLoad(value, prefix, data.next_marker)
+	elif data.object_list:
+		pics = []
+		for v in data.object_list:
+			pics.append((v.key, v.last_modified))
+		for v in pics[-10:]:
+			savePic(value, v[0], v[1])
+	#oss2.resumable_download(bucket, 'remote.txt', 'local.txt')
+
+def savePic(value, file, cur):
+	spic = url + file
+	model = Demeter.model('device_pic')
+	model.spic = spic
+	data = model.select()
+	if not data:
+		day = str(date.today())
+		day = day.split('-')
+		file_name =  spic
+		file_path = day[0] + '/' + day[1] + '/' + day[2]
+		file_path = File.mkdirs(os.path.join(Demeter.path, 'runtime','camera', file_path)) + '/' + Demeter.md5(file_name) + '.jpg'
+
+		oss2.resumable_download(bucket, file, file_path)
+		model.pic = file_path.replace(Demeter.path + 'runtime', '')
+		model.spic = spic
+		model.farm_id = value['farm_id']
+		model.gateway_id = value['gateway_id']
+		model.device_id = value['id']
+		model.sdate = cur
+		model.insert()
+#pic()