diff --git a/Listen2Arduino.py b/Listen2Arduino.py index de85896..01ea3d7 100755 --- a/Listen2Arduino.py +++ b/Listen2Arduino.py @@ -2,12 +2,30 @@ import serial import os +import influxdb_client +from influxdb_client import InfluxDBClient, Point, WritePrecision +from influxdb_client.client.write_api import SYNCHRONOUS + +with open('/home/pi02/influx_token.txt', 'r') as f: + first_line = f.readline() + + +#token = os.environ.get("INFLUXDB_TOKEN") +token = first_line +org = "FSUFoxLab" +ip = "https://fsunuc.physics.fsu.edu/influx/" +write_client = influxdb_client.InfluxDBClient(url=ip, token=token, org=org) +bucket = "testing" +write_api = write_client.write_api(write_options=SYNCHRONOUS) + +print(token) + ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1) ser.reset_input_buffer() outFile = "/home/pi02/data.txt" -cmd='curl -s -XPOST "http://fsunuc.physics.fsu.edu:8086/write?db=interlock" --data-binary @/home/pi02/data.txt' +# cmd='curl -s -XPOST "http://fsunuc.physics.fsu.edu:8086/write?db=interlock" --data-binary @/home/pi02/data.txt' OPEN = 0 CLOSED = 1 @@ -73,9 +91,12 @@ while True: list.append(component) # print(line) + point = Point("Measurement") + point2 = Point("Status") - # for key, value in format_value.items(): - # print(f"{key} value={value}") + for key, value in format_value.items(): + # print(f"{key} value={value}") + point.field(key, value) with open(outFile, "w") as file: for key, value in format_value.items(): @@ -88,6 +109,9 @@ while True: file.write(f"hv value=1\n") file.write(f"boiler value=1\n") file.write(f"ion value=1\n") + + point2.field("preaccl", 1).field("valve1", 1).field("valve2", 1).field("hv", 1).field("boiler", 1).field("ion",1) + if value == "2": file.write(f"preaccl value=0\n") file.write(f"valve1 value=1\n") @@ -95,6 +119,9 @@ while True: file.write(f"hv value=0\n") file.write(f"boiler value=1\n") file.write(f"ion value=1\n") + + point2.field("preaccl", 0).field("valve1", 1).field("valve2", 1).field("hv", 0).field("boiler", 1).field("ion",1) + if value == "3": file.write(f"preaccl value=0\n") file.write(f"valve1 value=0\n") @@ -102,6 +129,9 @@ while True: file.write(f"hv value=0\n") file.write(f"boiler value=1\n") file.write(f"ion value=0\n") + + point2.field("preaccl", 0).field("valve1", 0).field("valve2", 0).field("hv", 0).field("boiler", 1).field("ion",0) + if value == "4": file.write(f"preaccl value=0\n") file.write(f"valve1 value=0\n") @@ -109,9 +139,18 @@ while True: file.write(f"hv value=0\n") file.write(f"boiler value=0\n") file.write(f"ion value=0\n") + + point2.field("preaccl", 0).field("valve1", 0).field("valve2", 0).field("hv", 0).field("boiler", 0).field("ion",0) for i in range(16): if int(list[i]) != input_normal[i]: file.write(f"#{i}--{in_txt[i]}\n") - os.system(cmd) + try: + # os.system(cmd) + print(point) + print(point2) + write_api.write(bucket=bucket, org=org, record=point) + write_api.write(bucket=bucket, org=org, record=point2) + except: + print("problem pushing data") diff --git a/statusDisplay/display.cpp b/statusDisplay/display.cpp index 8f5bb1e..cc775ba 100644 --- a/statusDisplay/display.cpp +++ b/statusDisplay/display.cpp @@ -11,6 +11,9 @@ #include #include #include // for std::setprecision +#include +#include +#include const std::string error_txt[16] = { "Reset Button", //0 @@ -72,6 +75,7 @@ bool ionizer = true ; std::vector error_code; bool isTritiumError = false; bool isVaccumError = false; +char timeBuffer[80]; void readStatus(){ std::ifstream file("data.txt"); // Replace "your_file.txt" with your actual file path @@ -126,6 +130,13 @@ void readStatus(){ file.close(); + + struct stat fileStat; + stat("data.txt", &fileStat); + time_t lastModifiedTime = fileStat.st_mtime; + struct tm* timeinfo = localtime(&lastModifiedTime); + strftime(timeBuffer, sizeof(timeBuffer), "data.txt : %Y-%m-%d %H:%M:%S", timeinfo); + if( statusReading == 0 || statusReading == 1 ){ // startup or normal preAccel = true; valve1 = true; @@ -260,6 +271,7 @@ int main() { textDisplay( "SubPump : " + FormatDouble(subPumpReading*1000) + " mA", 300, 40, blueColor); textDisplay("update every 5 sec.", 1200, 670, blackColor); + textDisplay(timeBuffer, 0, 670, blackColor); // Update the screen SDL_RenderPresent(renderer);