From fffb6d3ba9982938acad4a657706788eb683bc12 Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Tue, 3 Aug 2021 22:59:20 +0300 Subject: iniital --- inverter-http-proxy | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 inverter-http-proxy (limited to 'inverter-http-proxy') diff --git a/inverter-http-proxy b/inverter-http-proxy new file mode 100755 index 0000000..b0ec7dd --- /dev/null +++ b/inverter-http-proxy @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 +import logging, json + +from aiohttp import web +from inverterd import Format, Client as InverterClient, InverterError +from argparse import ArgumentParser + +routes = web.RouteTableDef() +inv_host = None +inv_port = None + + +@routes.get('/{command}/') +async def variable_handler(request): + command = request.match_info['command'] + + inverter = InverterClient(host=inv_host, port=inv_port) + inverter.connect() + inverter.format(Format.JSON) + + try: + response = inverter.exec(command) + except InverterError as e: + response = str(e) + + try: + response = json.loads(response) + except json.decoder.JSONDecodeError: + response = {'error': response} + + return web.json_response(response, dumps=lambda x: json.dumps(x, separators=(',', ':'))) + + +if __name__ == '__main__': + parser = ArgumentParser() + parser.add_argument('--inverter-host', required=True, type=str) + parser.add_argument('--inverter-port', type=int, default=8305) + parser.add_argument('--host', default='0.0.0.0', type=str) + parser.add_argument('--port', default=8080, type=int) + args = parser.parse_args() + + inv_host = args.inverter_host + inv_port = args.inverter_port + + logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + level=logging.INFO) + + app = web.Application() + app.add_routes(routes) + web.run_app(app) -- cgit v1.2.3