import json import os from grafana import grafana from influxDB import influxdb from datetime import datetime import csv from PyQt6 import * from PyQt6.QtCore import * class Gamma(QObject): def __init__(self): super().__init__() @pyqtSlot(str, QVariant) def setJson(self,path,data): try: data = data.toVariant() # filePath = os.path.join(path, self.appId) with open(path, 'w',encoding='utf-8') as file: json.dump(data, file, ensure_ascii=False, indent=4) except Exception as e: print(e) @pyqtSlot(str,result=QVariant) def getJson(self, path): try: with open(path, 'r',encoding='utf-8') as file: data = json.load(file) return data except: return None @pyqtSlot(str,str,str, result=bool) def csvToInfluxdb(self, mea='undefine', ts='0', fp=None): lastTime = None if not fp or not os.path.exists(fp): return False, fp with open(fp) as f: f_csv = csv.reader(f) headings = next(f_csv) if len(headings) % 2 != 0: return False, lastTime for r in f_csv: data_points = [] for i in range(0, len(r), 2): if r[i] == '': continue lastTime = float(r[i]) + float(ts) _time = datetime.utcfromtimestamp(lastTime/1000) _field = headings[i + 1] _value = float(r[i + 1]) data_points.append({"measurement": mea, "time": _time, "fields": {_field: _value}}) ok = influxdb.write_points(data_points) return True @pyqtSlot(str, str, str, result=QVariant) def get_dashboard_uid(self, base_url, token, name): ok, res = grafana.getUid(base_url, token, name) if ok: return res return None @pyqtSlot(str,str,str, result=QVariant) def update_dashboard_data(self, uid, base_url, token): ok, res = grafana.update(uid, base_url, token) if ok: return res return None @pyqtSlot(str,str,str, str, str, result=QVariant) def update_dashboard_time(self, uid, base_url, token , start, stop): ok, res = grafana.updateTime(uid, base_url, token , start, stop) if ok: return res return None gamma = Gamma()