from jds6600 import jds6600 import warnings import serial import serial.tools.list_ports import time from influxdb import InfluxDBClient from datetime import datetime import influxdb_config print("-----------------JDS6600-Reader-----------------") print("Searching Device ...") found_ports = [ p.device for p in serial.tools.list_ports.comports() if 'CH340' in p.description or 'USB Serial' in p.description #CH340 for Windows, USB Serial for Linux ] if not found_ports: raise IOError("No JDS6600-device found") if len(found_ports) > 1: warnings.warn('Multiple JDS6600-devices found - using the first') portname = found_ports[0] print("JDS6600 device found!") print("Using Port ", portname) jds = jds6600(portname) #jds = jds6600("COM4") print("--------------------------") # API information calls print("Devicetype: ", jds.getinfo_devicetype()) print("Serialnumber:", jds.getinfo_serialnumber()) print("--------------------------") #Disable Both outputs #print(jds.getchannelenable()) jds.setchannelenable(bool(0), bool(0)) print("Disabeling Outputs ... \t\t OK") #print(jds.getmode()) jds.setmode('MEASURE') print("Set Mode Measure ... \t\t OK") jds.measure_setcoupling('AC') jds.measure_setgate(1) #Gatetime 1s jds.measure_setmode("PERIOD") print("Configure Measurement ... OK") print("--------------------------") print("Connecting to Influx-DB ... OK") dbclient = InfluxDBClient( influxdb_config.influxdb_host, influxdb_config.influxdb_port, influxdb_config.influxdb_user, influxdb_config.influxdb_password, influxdb_config.influxdb_dbname) freq_value = 0.0 dbclient_success = False dbclient_fail_counter = 0 print("--------------------------") print("Starting to read data ...") print("--------------------------") log_count = 0 while 1: if jds.getmode()[0] != 4: # 4 means mode 'MEASURE' raise IOError("Measurement-mode is not enabled!") freq_value = jds.measure_getfreq_p() json_body = [ { "measurement": "freq_Hz", "fields": { "value": freq_value } } ] dbclient_success = dbclient.write_points(json_body, time_precision='ms') if dbclient_success == True: log_count = log_count + 1 if log_count >= 10: print("f = ", freq_value, " DB OK") log_count = 0 else: dbclient_fail_counter = dbclient_fail_counter + 1 print("f = ", freq_value, " DB ERROR ", dbclient_fail_counter) if dbclient_fail_counter >= 5: raise IOError("Writing DB entry failed 5 times ... exiting!") else: dbclient_fail_counter = 0 time.sleep(1)