diff --git a/main.py b/main.py index b6bac8f..c16006b 100644 --- a/main.py +++ b/main.py @@ -5,18 +5,26 @@ import os import requests import json from datetime import datetime -from influxdb import InfluxDBClient +from influxdb_client import InfluxDBClient, Point, WritePrecision +from influxdb_client.client.write_api import SYNCHRONOUS + from time import sleep - -hostList = os.environ["hosts"] -hostList = hostList.split(",") -influx = os.environ['influx'] +# nutserver settings +HOSTLIST = os.environ.get("INFLUXDB_URL", "10.0.5.5") +HOSTLIST = HOSTLIST.split(",") -def uploadInflux(data, host=influx, port=8086): # Main upload +# Constants (replace with your values) +INFLUXDB_URL = os.environ.get("INFLUX_URL", 'http://10.0.5.61:8086') +INFLUXDB_TOKEN = os.environ.get("INFLUXDB_TOKEN", 'E2GVPIovlYDbAy3ZztRVyuMyILGGnLEI9NsTcyvVgt9LUW9Mhv5Hrzle5gLY7W4xxBVqFk3DYsfss4a3hcDlZQ==') +INFLUXDB_ORG = os.environ.get("INFLUXDB_ORG", 'carbonnet') +INFLUXDB_BUCKET = os.environ.get("INFLUXDB_BUCKET", 'testing') + + +def uploadInflux(data): # Main upload for UPS in data: - # bind_params = {'host': str(UPS)} + json_body = [ { "measurement": "data", @@ -25,16 +33,29 @@ def uploadInflux(data, host=influx, port=8086): # Main upload }, "fields": { - "battery": data[UPS]["battery.charge"], - "runtime-s": data[UPS]["battery.runtime"], - "load": data[UPS]["ups.load"], + "battery": float(data[UPS]["battery.charge"]), + "runtime-s": float(data[UPS]["battery.runtime"]), + "load": float(data[UPS]["ups.load"]), + "input_voltage": float(data[UPS]["input.voltage"]), + "battery_voltage": float(data[UPS]["battery.voltage"]), } } ] - client = InfluxDBClient(host, port, database = "telegraf") # Init connection to Influx Server - client.write_points(json_body) # Write Speedtest results + # client = InfluxDBClient(host, port, database = "telegraf") # Init connection to Influx Server + # client.write_points(json_body) # Write Speedtest results + client = InfluxDBClient(url=INFLUXDB_URL, token=INFLUXDB_TOKEN, org=INFLUXDB_ORG) + + # Get a write API. + write_api = client.write_api(write_options=SYNCHRONOUS) + + # Write the data to the database. + write_api.write(INFLUXDB_BUCKET, INFLUXDB_ORG, json_body) + + # Close the clients to free up resources + write_api.__del__() + client.__del__() @@ -43,7 +64,7 @@ def main(): upslist = {} ## pull all the UPSes froom each host into a nice dict - for host in hostList: + for host in HOSTLIST: try: upslist[host] = [] client = PyNUTClient(host, '3493') @@ -64,7 +85,7 @@ def main(): data[UPS] = client.list_vars(UPS) except: print('UPS {} is having issues'.format(host)) - + # print(data) uploadInflux(data) while True: diff --git a/requirements.txt b/requirements.txt index f1c23f9..11db04a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -influxdb +influxdb_client nut2 \ No newline at end of file