small changes
This commit is contained in:
parent
9feade143d
commit
9b514dd962
38
power.py
38
power.py
@ -29,7 +29,9 @@ def setup_logging():
|
|||||||
logger.addHandler(handler)
|
logger.addHandler(handler)
|
||||||
return logger
|
return logger
|
||||||
|
|
||||||
def monitor_ups(logger):
|
logger = setup_logging()
|
||||||
|
|
||||||
|
def monitor_ups():
|
||||||
client = PyNUTClient()
|
client = PyNUTClient()
|
||||||
try:
|
try:
|
||||||
ups_status = client.list_vars('ups')
|
ups_status = client.list_vars('ups')
|
||||||
@ -41,7 +43,7 @@ def monitor_ups(logger):
|
|||||||
logger.error(f"Error communicating with NUT: {e}")
|
logger.error(f"Error communicating with NUT: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def send_email(subject, body, recipient_email, gmail_user, gmail_password, logger):
|
def send_email(subject, body):
|
||||||
msg = MIMEText(body)
|
msg = MIMEText(body)
|
||||||
msg['Subject'] = subject
|
msg['Subject'] = subject
|
||||||
msg['From'] = gmail_user
|
msg['From'] = gmail_user
|
||||||
@ -56,11 +58,10 @@ def send_email(subject, body, recipient_email, gmail_user, gmail_password, logge
|
|||||||
logger.info(f"Failed to send email: {e}")
|
logger.info(f"Failed to send email: {e}")
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
logger = setup_logging()
|
|
||||||
logger.info("Starting UPS monitoring service.")
|
logger.info("Starting UPS monitoring service.")
|
||||||
prev_status = None
|
prev_status = None
|
||||||
while True:
|
while True:
|
||||||
ups_data = monitor_ups(logger)
|
ups_data = monitor_ups()
|
||||||
if ups_data:
|
if ups_data:
|
||||||
status = ups_data['status']
|
status = ups_data['status']
|
||||||
battery = ups_data['battery_charge']
|
battery = ups_data['battery_charge']
|
||||||
@ -69,38 +70,27 @@ def main():
|
|||||||
logger.warning(f"Outage detected! Power On Battery. {battery}% charge remaining.")
|
logger.warning(f"Outage detected! Power On Battery. {battery}% charge remaining.")
|
||||||
send_email(
|
send_email(
|
||||||
f"{ups_id}: Power Outage Detected",
|
f"{ups_id}: Power Outage Detected",
|
||||||
f"The {ups_id} UPS is running on battery power! {battery}% charge remaining.",
|
f"The {ups_id} UPS is running on battery power! {battery}% charge remaining.")
|
||||||
recipient_email,
|
|
||||||
gmail_user,
|
|
||||||
gmail_password,
|
|
||||||
logger
|
|
||||||
)
|
|
||||||
elif status == "OL":
|
elif status == "OL":
|
||||||
logger.info(f"Power On Line. {battery}% charge remaining.")
|
logger.info(f"Power On Line. {battery}% charge remaining.")
|
||||||
send_email(
|
send_email(
|
||||||
f"{ups_id}: Power On Line",
|
f"{ups_id}: Power On Line",
|
||||||
f"{ups_id} UPS power has been restored! {battery}% charge remaining.",
|
f"{ups_id} UPS power has been restored! {battery}% charge remaining.")
|
||||||
recipient_email,
|
|
||||||
gmail_user,
|
|
||||||
gmail_password,
|
|
||||||
logger
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
logger.info(f"UPS status changed to: {status}")
|
logger.info(f"UPS status changed to: {status}")
|
||||||
prev_status = status
|
prev_status = status
|
||||||
if status == "OB DISCHRG" and battery < 50:
|
elif status == "OB DISCHRG" and battery < 50:
|
||||||
logger.warning(f"Battery level low: {battery}% charge remaining.")
|
logger.warning(f"Battery level low: {battery}% charge remaining.")
|
||||||
send_email(
|
send_email(
|
||||||
f"{ups_id} battery low.",
|
f"{ups_id} battery low.",
|
||||||
f"{ups_id} battery level low: {battery}% charge remaining.",
|
f"{ups_id} battery level low: {battery}% charge remaining.")
|
||||||
recipient_email,
|
elif status == "OB DISCHRG" and battery < 35:
|
||||||
gmail_user,
|
logger.warning(f"Battery level critical: {battery}% charge remaining.")
|
||||||
gmail_password,
|
send_email(
|
||||||
logger
|
f"{ups_id} battery critical!!",
|
||||||
)
|
f"{ups_id} battery level critial: {battery}% charge remaining.")
|
||||||
time.sleep(30)
|
time.sleep(30)
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
@ -23,4 +23,4 @@ for node in all_nodes:
|
|||||||
node_status = proxmox.nodes(name).status.get()
|
node_status = proxmox.nodes(name).status.get()
|
||||||
print(f"Node {name} Status: {node_status}")
|
print(f"Node {name} Status: {node_status}")
|
||||||
|
|
||||||
# shutdown_pve()
|
shutdown_pve()
|
||||||
|
Loading…
Reference in New Issue
Block a user