87 lines
2.0 KiB
Python
87 lines
2.0 KiB
Python
|
|
## Requires NUT2 from PIP
|
|
from nut2 import PyNUTClient
|
|
import os
|
|
import requests
|
|
import json
|
|
from datetime import datetime
|
|
from influxdb import InfluxDBClient
|
|
from time import sleep
|
|
|
|
|
|
|
|
|
|
### telegram logging
|
|
# API Key
|
|
apikey = '1857016076:AAGVag6tEtEpJHNpPtLyHYU-JsnN7arwDRk'
|
|
# Key of your chat.
|
|
chatid = '840699197'
|
|
|
|
def logTelegram(message):
|
|
os.system("curl --silent -X POST https://api.telegram.org/bot" + apikey + "/sendMessage -d chat_id=" + chatid +" -d text=\""+ message +"\"")
|
|
### end telegram logging
|
|
|
|
|
|
def uploadInflux(data, host='192.168.0.13', port=8086): # Main upload
|
|
for UPS in data:
|
|
# bind_params = {'host': str(UPS)}
|
|
json_body = [
|
|
{
|
|
"measurement": "data",
|
|
"tags": {
|
|
'ups': str(UPS),
|
|
},
|
|
|
|
"fields": {
|
|
"battery": data[UPS]["battery.charge"],
|
|
"runtime-s": data[UPS]["battery.runtime"],
|
|
"load": data[UPS]["ups.load"],
|
|
}
|
|
}
|
|
]
|
|
|
|
client = InfluxDBClient(host, port, database = "telegraf") # Init connection to Influx Server
|
|
client.write_points(json_body) # Write Speedtest results
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# try:
|
|
# hostList = os.environ["hosts"]
|
|
# hostList = hostList.replace(" ","").split(",")
|
|
# except:
|
|
# print("error with hosts entry, please make sure in format -> 10.x.x.1, 10.x.x.2")
|
|
|
|
# host
|
|
hostList = ['10.0.5.2', '10.0.5.181']
|
|
|
|
upslist = {}
|
|
|
|
## pull all the UPSes froom each host into a nice dict
|
|
for host in hostList:
|
|
upslist[host] = []
|
|
client = PyNUTClient(host, '3493')
|
|
for UPS in client.list_ups():
|
|
upslist[host].append(UPS)
|
|
|
|
# print(upslist)
|
|
|
|
data = {}
|
|
|
|
## Pull whatever data we would like into a dict of each ups
|
|
for host in upslist:
|
|
client = PyNUTClient(host, '3493')
|
|
for UPS in upslist[host]:
|
|
data[UPS] = client.list_vars(UPS)
|
|
|
|
uploadInflux(data)
|
|
|
|
|
|
|
|
|
|
# client = PyNUTClient('10.0.5.181', '3493')
|
|
|
|
# # print(client.list_ups())
|
|
# print(client.list_vars("Net-UPS1")) |