TG-PlatformPlus/qml/debug/testfixture/script/hsvp.py

93 lines
2.9 KiB
Python

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()