TG-PlatformPlus/qml/debug/gamma/script/gamma.py

78 lines
2.4 KiB
Python
Raw Normal View History

2026-03-02 14:29:58 +08:00
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()