| @@ -17,3 +17,4 @@ yarn.lock | |||||
| modules/ui/package-lock.json | modules/ui/package-lock.json | ||||
| logs/ | |||||
| @@ -148,24 +148,29 @@ class SensorAPI(object): | |||||
| def save_to_file(self, id, value, prefix="sensor"): | def save_to_file(self, id, value, prefix="sensor"): | ||||
| sensor_name = "%s_%s" % (prefix, str(id)) | sensor_name = "%s_%s" % (prefix, str(id)) | ||||
| filename = "./logs/%slog" % sensor_name | |||||
| formatted_time = strftime("%Y-%m-%d %H:%M:%S", localtime()) | |||||
| msg = str(formatted_time) + "," +str(value) + "\n" | |||||
| use_kairosdb = (self.cache["config"]["kairos_db"].__dict__["value"] == "YES") | |||||
| with open(filename, "a") as file: | |||||
| file.write(msg) | |||||
| if use_kairosdb: | |||||
| kairosdb_server = "http://127.0.0.1:" + self.cache["config"]["kairos_db_port"].__dict__["value"] | |||||
| data = [ | |||||
| dict(name="cbpi." + sensor_name, datapoints=[ | |||||
| [int(round(time.time() * 1000)), value] | |||||
| ], tags={ | |||||
| "cbpi": prefix | |||||
| }) | |||||
| ] | |||||
| response = requests.post(kairosdb_server + "/api/v1/datapoints", json.dumps(data)) | |||||
| else: | |||||
| filename = "./logs/%s.log" % sensor_name | |||||
| formatted_time = strftime("%Y-%m-%d %H:%M:%S", localtime()) | |||||
| msg = str(formatted_time) + "," +str(value) + "\n" | |||||
| kairosdb_server = "http://192.168.178.20:5001" | |||||
| with open(filename, "a") as file: | |||||
| file.write(msg) | |||||
| data = [ | |||||
| dict(name=sensor_name, datapoints=[ | |||||
| [int(round(time.time() * 1000)), value] | |||||
| ], tags={ | |||||
| "cbpi": prefix | |||||
| }) | |||||
| ] | |||||
| response = requests.post(kairosdb_server + "/api/v1/datapoints", json.dumps(data)) | |||||
| def log_action(self, text): | def log_action(self, text): | ||||
| filename = "./logs/action.log" | filename = "./logs/action.log" | ||||
| @@ -61,12 +61,12 @@ class LogView(FlaskView): | |||||
| return ('', 204) | return ('', 204) | ||||
| def querry_tsdb(self, type, id): | def querry_tsdb(self, type, id): | ||||
| kairosdb_server = "http://192.168.178.20:5001" | |||||
| kairosdb_server = "http://127.0.0.1:" + cbpi.cache["config"]["kairos_db_port"].__dict__["value"] | |||||
| data = dict(metrics=[ | data = dict(metrics=[ | ||||
| { | { | ||||
| "tags": {}, | "tags": {}, | ||||
| "name": "%s_%s" % (type, id), | |||||
| "name": "cbpi.%s_%s" % (type, id), | |||||
| "aggregators": [ | "aggregators": [ | ||||
| { | { | ||||
| "name": "avg", | "name": "avg", | ||||
| @@ -94,9 +94,7 @@ class LogView(FlaskView): | |||||
| else: | else: | ||||
| self.logger.warning("Failed to fetch time series for [%s_%s]. Response [%s]", type, id, response) | self.logger.warning("Failed to fetch time series for [%s_%s]. Response [%s]", type, id, response) | ||||
| def read_log_as_json(self, type, id): | |||||
| return self.querry_tsdb(type, id) | |||||
| def querry_log(self, type, id): | |||||
| filename = "./logs/%s_%s.log" % (type, id) | filename = "./logs/%s_%s.log" % (type, id) | ||||
| if os.path.isfile(filename) == False: | if os.path.isfile(filename) == False: | ||||
| return | return | ||||
| @@ -113,9 +111,17 @@ class LogView(FlaskView): | |||||
| float(row[1])]) | float(row[1])]) | ||||
| except: | except: | ||||
| pass | pass | ||||
| print(array) | |||||
| return array | return array | ||||
| def read_log_as_json(self, type, id): | |||||
| use_kairosdb = (cbpi.cache["config"]["kairos_db"].__dict__["value"] == "YES") | |||||
| if use_kairosdb: | |||||
| return self.querry_tsdb(type, id) | |||||
| else: | |||||
| return self.querry_log(type, id) | |||||
| def convert_chart_data_to_json(self, chart_data): | def convert_chart_data_to_json(self, chart_data): | ||||
| return {"name": chart_data["name"], | return {"name": chart_data["name"], | ||||
| "data": self.read_log_as_json(chart_data["data_type"], chart_data["data_id"])} | "data": self.read_log_as_json(chart_data["data_type"], chart_data["data_id"])} | ||||
| @@ -0,0 +1,2 @@ | |||||
| INSERT OR IGNORE INTO config VALUES ('kairos_db', 'NO', 'select', 'Use timeseries database KairosDB for storing sensor values. For now you have to install KairosDB by yourself.', '["YES","NO"]' ); | |||||
| INSERT OR IGNORE INTO config VALUES ('kairos_db_port', 5001, 'number', 'Port for KairosDB. We assume the DB is running on your PI, so IP-Address is 127.0.0.1.', NULL ); | |||||