mirror of
https://github.com/gunu3371/m1s_ups_control.git
synced 2024-09-24 21:25:40 +00:00
first commit
This commit is contained in:
commit
272b358144
13
install_service.sh
Executable file
13
install_service.sh
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir -p /etc/m1s_ups/
|
||||
|
||||
cp kill.sh /etc/m1s_ups/
|
||||
cp service.py /etc/m1s_ups/
|
||||
cp m1s_ups.service /etc/systemd/system/
|
||||
|
||||
systemctl daemon-reload
|
||||
|
||||
systemctl enable --now m1s_ups
|
||||
|
||||
echo 'install sucess'
|
25
kill.sh
Executable file
25
kill.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
UPS_TTY_NODE=""
|
||||
VID_CH55xduino="1209"
|
||||
PID_CH55xduino="C550"
|
||||
function find_tty_node {
|
||||
UPS_TTY_NODE=`find $(grep -l "PRODUCT=$(printf "%x/%x" "0x${VID_CH55xduino}" "0x${PID_CH55xduino}")" \
|
||||
/sys/bus/usb/devices/[0-9]*:*/uevent | sed 's,uevent$,,') \
|
||||
/dev/null -name dev -o -name dev_id | sed 's,[^/]*$,uevent,' |
|
||||
xargs sed -n -e s,DEVNAME=,/dev/,p -e s,INTERFACE=,,p`
|
||||
|
||||
}
|
||||
|
||||
function kill_dead_process {
|
||||
PID=""
|
||||
PID=`ps -eaf | grep ${UPS_TTY_NODE} | grep -v grep | awk '{print $2}'`
|
||||
if [ -n "$PID" ]; then
|
||||
kill -9 $PID
|
||||
fi
|
||||
}
|
||||
|
||||
find_tty_node
|
||||
|
||||
kill_dead_process
|
||||
|
||||
echo ${UPS_TTY_NODE}
|
15
m1s_ups.service
Executable file
15
m1s_ups.service
Executable file
@ -0,0 +1,15 @@
|
||||
Description=Check the M1S_UPS status
|
||||
|
||||
After=syslog.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
||||
User=root
|
||||
|
||||
# working directory
|
||||
WorkingDirectory=/etc/m1s_ups/
|
||||
ExecStart=python3 -u ./service.py
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
52
service.py
Executable file
52
service.py
Executable file
@ -0,0 +1,52 @@
|
||||
import serial
|
||||
import os
|
||||
import time
|
||||
import subprocess
|
||||
import pwmio
|
||||
import board
|
||||
import multiprocessing
|
||||
|
||||
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)
|
Loading…
Reference in New Issue
Block a user