import json import subprocess import openpyxl import os import psutil import xlwings as xw from grafana import grafana from influxDB import influxdb from datetime import datetime import csv from PyQt6 import * from PyQt6.QtCore import * class Hsvp(QObject): def __init__(self): super().__init__() @pyqtSlot(str, QVariant) def setJson(self,path,data): try: data = data.toVariant() # filePath = os.path.join(path, 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, str) def writeCsv(self, path, data): try: with open(path, 'w', encoding='utf-8', newline='') as file: writer = csv.writer(file) reader = csv.reader(data.splitlines()) for row in reader: writer.writerow(row) except IOError as e: print("Error writing to CSV file:", 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 IOError as e: print("Error getJson:", e) @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 hsvp = Hsvp()