123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- import asyncio
- import datetime
- import sys
- import time
- import wmi
- from sanic import Sanic
- from sanic_cors import CORS, cross_origin
- from sanic import response
- from event_storage import EventStorage
- from configuration import Configuration
- from utility import Utility
- from alarm import Alarm
- from historical_data_storage import HistoricalDataStorage
- from hard_disk_storage import HardDiskStorage
- from api_context import ApiContext
- from AES_crypt import decrypt, encrypt
- from logging_config import LOGGING_CONFIG
- app = Sanic(__name__, log_config=LOGGING_CONFIG)
- CORS(app)
- @app.route('/readReal', methods=['POST'])
- async def read_point_data(request):
- list = request.json['pointList']
- dict = gateway_storage.get_real_data(list)
- return response.json(dict)
- @app.route('/readHistorical', methods=['POST'])
- async def read_table_data(request):
- dict = request.json
- data_list = gateway_storage.get_historical_data(dict)
- data_json = Utility.data_encoder(data_list)
- return response.text(data_json)
- @app.post('/getTotalNumber')
- async def get_total_number(request):
- dict = request.json
- data_list = gateway_storage.get_total_count_and_first_id(dict)
- return response.json(data_list)
- @app.post("/getItem")
- def get_one_page_content(request):
- dict = request.json
- data_list = gateway_storage.get_item_by_id_offset(dict)
- data_json = Utility.data_encoder(data_list)
- return response.text(data_json)
- @app.post('/quary')
- async def quary_table_data(request):
- dict = request.json
- res = gateway_storage.quary_table_data(dict)
- if not res:
- return response.text("查询参数错误")
- return response.json({"filename": res})
- @app.route("/download")
- async def downlod_file(request):
- filename = request.args.get("filename")
- if sys.platform == 'win32':
- filepath = './' + filename
- elif sys.platform == 'linux':
- filepath = filename
- return await response.file_stream(
- filepath,
- chunk_size=1024,
- filename=filename
- )
- @app.route('/readPointInfo', methods=['POST'])
- async def read_point_info(request):
- data_list = gateway_storage.get_point_info(None)
- return response.json(data_list)
- @app.route('/api', methods=['POST'])
- async def read_statistics_data(request):
- if len(request.json) > 0:
- list = []
- for index in range(len(request.json)):
- api_object = request.json[index]['apiObject']
- parameter = request.json[index]['parameter']
- api = ApiContext()
- api.set_api_object(api_object)
- result = api.operation(parameter)
- list.append(result)
- return response.json(list)
- @app.post('/verify')
- def verify_app(request):
- config = Configuration().get_config()
- for cpu in wmi.WMI().Win32_Processor():
- cpu_code = cpu.ProcessorId.strip()
- de_cpu_code = decrypt(config['activation_code'])
- if cpu_code == de_cpu_code:
- return response.json({'status': 'yes'})
- else:
- return response.json({'status': 'no'})
- @app.post('/activate')
- def acvivate(request):
- activate_code = request.json['code']
- for cpu in wmi.WMI().Win32_Processor():
- cpu_code = cpu.ProcessorId.strip()
- de_activate_code = decrypt(activate_code)
- if de_activate_code == cpu_code:
- config = Configuration()
- res = config.set_config(**{"activation_code": activate_code})
- if res:
- return response.json({'status': 'yes'})
- return response.json({'status': 'no'})
- async def notify_server_started_after_five_seconds():
- while True:
- await asyncio.sleep(10)
- if 'wxt536' not in Utility.available_connectors:
- break
- connector = Utility.available_connectors["wxt536"]
- data = "0XZRU\r\n"
-
- a = datetime.datetime.now().strftime("%Y-%m-%d") + " %2d:00:00" % 8
- timeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S")
- timeStampA = int(time.mktime(timeArray))
- timeStampB = timeStampA + 60
- if timeStampA <= int(time.time()) <= timeStampB:
- time.sleep(10)
- connector.send_command(data)
- if __name__ == "__main__":
- gateway_storage = EventStorage()
- connector_config = gateway_storage.get_connector_config()
- Utility.start_connectors(connector_config)
- Alarm().start()
- HistoricalDataStorage().start()
-
- app.add_task(notify_server_started_after_five_seconds())
- app.run(host="0.0.0.0", port=8000)
|