From a97c5f45859cf6178a74f3f0936b7a2954a345c7 Mon Sep 17 00:00:00 2001 From: Carl Allen Date: Sun, 16 Jul 2017 14:31:45 -0500 Subject: [PATCH 1/2] Allow setting port by param --- run.py | 9 +++++++-- update/3_port_config.sql | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 update/3_port_config.sql diff --git a/run.py b/run.py index e077587..79ea7d5 100755 --- a/run.py +++ b/run.py @@ -1,6 +1,11 @@ #!/usr/bin/env python -from modules import socketio, app +from modules import socketio, app, cbpi -socketio.run(app, host='0.0.0.0') +try: + port = int(cbpi.get_config_parameter('port', '5000')) +except ValueError: + port = 5000 + +socketio.run(app, host='0.0.0.0', port=port) diff --git a/update/3_port_config.sql b/update/3_port_config.sql new file mode 100644 index 0000000..8d102fd --- /dev/null +++ b/update/3_port_config.sql @@ -0,0 +1 @@ +INSERT OR IGNORE INTO config VALUES ('port', 5000, 'number', 'Port to run server (requires restart)', NULL ); From 01997f741c6cdae85e896720c03af4374a732322 Mon Sep 17 00:00:00 2001 From: Carl Allen Date: Tue, 18 Jul 2017 15:06:55 -0500 Subject: [PATCH 2/2] Allow modifying chart data in plugins --- modules/core/controller.py | 15 +++++++++++++++ modules/logs/endpoints.py | 9 +++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/modules/core/controller.py b/modules/core/controller.py index c940cdd..aef2a7e 100644 --- a/modules/core/controller.py +++ b/modules/core/controller.py @@ -74,6 +74,14 @@ class ControllerBase(object): class KettleController(ControllerBase, ActorController, SensorController): + @staticmethod + def chart(kettle): + result = [] + result.append({"name": "Temp", "data_type": "sensor", "data_id": kettle.sensor}) + result.append({"name": "Target Temp", "data_type": "kettle", "data_id": kettle.id}) + + return result + def __init__(self, *args, **kwds): ControllerBase.__init__(self, *args, **kwds) self.kettle_id = kwds.get("kettle_id") @@ -107,6 +115,13 @@ class KettleController(ControllerBase, ActorController, SensorController): class FermenterController(ControllerBase, ActorController, SensorController): + @staticmethod + def chart(fermenter): + result = [] + result.append({"name": "Temp", "data_type": "sensor", "data_id": fermenter.sensor}) + result.append({"name": "Target Temp", "data_type": "fermenter", "data_id": fermenter.id}) + return result + def __init__(self, *args, **kwds): ControllerBase.__init__(self, *args, **kwds) self.fermenter_id = kwds.get("fermenter_id") diff --git a/modules/logs/endpoints.py b/modules/logs/endpoints.py index a68d9b7..5f8b29e 100644 --- a/modules/logs/endpoints.py +++ b/modules/logs/endpoints.py @@ -65,6 +65,8 @@ class LogView(FlaskView): pass return array + def convert_chart_data_to_json(self, chart_data): + return {"name": chart_data["name"], "data": self.read_log_as_json(chart_data["data_type"], chart_data["data_id"])} @route('//', methods=["POST"]) def get_logs_as_json(self, t, id): @@ -76,13 +78,12 @@ class LogView(FlaskView): if t == "k": kettle = cbpi.cache.get("kettle").get(id) - result.append({"name": "Temp", "data": self.read_log_as_json("sensor", kettle.sensor)}) - result.append({"name": "Target Temp", "data": self.read_log_as_json("kettle", kettle.id)}) + result = map(self.convert_chart_data_to_json, cbpi.get_controller(kettle.logic).get("class").chart(kettle)) if t == "f": fermenter = cbpi.cache.get("fermenter").get(id) - result.append({"name": "Temp", "data": self.read_log_as_json("sensor", fermenter.sensor)}) - result.append({"name": "Target Temp", "data": self.read_log_as_json("fermenter", fermenter.id)}) + result = map(self.convert_chart_data_to_json, cbpi.get_fermentation_controller(fermenter.logic).get("class").chart(fermenter)) + return json.dumps(result) @route('/download/')