123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- import threading
- from sanic import Sanic
- from sanic_cors import CORS, cross_origin
- from sanic import response
- from event_storage import EventStorage
- from utility import Utility
- from historical_data_storage import HistoricalDataStorage
- from feeding_statistics import FeedingStatistics
- from auto_feeding import AutoFeeding
- from auto_charge import AutoCharge
- from alarm import Alarm
- from api_context import ApiContext
- from update_maintenance_info import UpdateMaintenanceInfo
- from auto_switch_device import AutoSwitchDevice
- from multiprocessing import Process
- from auto_switch_juyudeng import AutoSwitchJuyudeng
- app = Sanic(__name__)
- CORS(app)
- gateway_storage = EventStorage()
- connector_config = gateway_storage.get_connector_config()
- Utility.start_connectors(connector_config)
- @app.route('/readRealText', methods=['POST'])
- async def read_point_data(request):
- list = request.json['pointList']
- dict = gateway_storage.get_real_data(list)
- point_list = gateway_storage.get_point_info(list)
- data_list = {}
- for info in point_list:
- data_list[info['io_point_name']] = str(dict["c"+str(info['serial_number'])]) + " " +str(info['unit'])
- return response.json(data_list)
- @app.route('/readReal', methods=['POST'])
- async def read_point_data(request):
- list = request.json['pointList']
- dict = gateway_storage.get_real_data(list)
- '''
- data_list = gateway_storage.get_point_info(list)
- for info in data_list:
- info['value'] = dict["c"+str(info['serial_number'])]
- '''
- return response.json(dict)
- @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)
- data_json = Utility.data_encoder(list)
- return response.text(data_json)
- @app.route('/write',methods=['POST'])
- async def write_data(request):
- station_name = request.json["station_name"]
- command = request.json["command"]
- print("write_command station_name=", station_name, " command=", command)
- try:
- result = Utility.available_connectors[station_name].send_command(command)
- return response.json({'message': result})
- except Exception as e:
- print(station_name+"write[ERROR]:" + str(e))
- return response.json({'message': result})
- if __name__ == "__main__":
- # alarm1 = Alarm()
- # threading.Thread(target=alarm1.overrun_alarm).start()
- # alarm2 = Alarm()
- # threading.Thread(target=alarm2.displacement_alarm).start()
- historicalDataStorage = HistoricalDataStorage()
- threading.Thread(target=historicalDataStorage.run, daemon=True, name='historicalDataStorage').start()
- #Process(target=historicalDataStorage.run, daemon=True, name='historicalDataStorage').start()
- feedingStatistics = FeedingStatistics()
- threading.Thread(target=feedingStatistics.run, daemon=True, name='feedingStatistics').start()
- autoFeeding = AutoFeeding()
- threading.Thread(target=autoFeeding.run, daemon=True, name='autoFeeding').start()
- autoUpdateMaintenanceInfo = UpdateMaintenanceInfo()
- threading.Thread(target=autoUpdateMaintenanceInfo.update_info, daemon=True, name='UpdateMaintenanceInfo').start()
- autoCharge = AutoCharge()
- threading.Thread(target=autoCharge.run, daemon=True, name='autoCharge').start()
- threading.Thread(target=AutoSwitchDevice().run, daemon=True, name='AutoSwitchDevice').start()
- # threading.Thread(target=AutoSwitchDevice().auto_update_device_status, daemon=True, name='AutoSwitchDevice').start()
-
- alarm3 = Alarm()
- threading.Thread(target=alarm3.moxa_e1210_alarm, daemon=True, name='alarm3').start()
- # 自动控制聚鱼灯
- threading.Thread(target=AutoSwitchJuyudeng().run, daemon=True, name=AutoSwitchJuyudeng).start()
- app.run(host="0.0.0.0", port=18080, workers=1)
|