m1s_ups_control/service.py
2024-04-29 16:24:43 +09:00

52 lines
1.4 KiB
Python
Executable File

import serial
import os
import time
import subprocess
import pwmio
import board
piezo = pwmio.PWMOut(board.D15, variable_frequency=True)
piezo.duty_cycle = 0
piezo.frequency = 523
ups_loc = subprocess.check_output(['sudo','/bin/bash','kill.sh'])
ups_loc = ups_loc.decode("UTF-8")
ups_loc = ups_loc.replace("\n", "")
ser = serial.Serial(ups_loc, 9600)
def swr(a):
a = bytes(a, 'utf-8')
ser.write(a)
a = ser.readline().decode("UTF-8")
a = a.replace("\n", "")
a = a.replace("\r", "")
a = a.replace("#", "")
a = a.replace("@", "")
return(a)
prt = str()
while True:
print("------------------------------------------------------")
print("------------------------------------------------------")
a = swr('@Fx#').replace("F","")
print("firmware ver ",a)
vol = swr('@V0#').replace("V","")
print("current voltage "+vol+"mV")
a = swr('@C0#').replace("","")
if a != "CF1C1":
piezo.duty_cycle = 0
print("Power Status Normal")
elif a == "CF0C0":
print("UPS !ERROR!")
else:
print("Power Loss Detect")
piezo.duty_cycle = 45000
if int(vol) <= 3600:
ser.write(b'@Px#')
os.system("shutdown now")
print("------------------------------------------------------")
print("------------------------------------------------------")
time.sleep(1)
piezo.duty_cycle = 0
time.sleep(1)