78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
|
|
|
||
|
|
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()
|