Automated Change by GitHub Action

This commit is contained in:
okunze
2025-11-28 21:08:17 +00:00
committed by github-actions[bot]
parent b58a168f89
commit f3386d5f01
7 changed files with 239 additions and 8 deletions

View File

@@ -6,9 +6,99 @@ import RPi.GPIO as GPIO
import os
import time
# Debug Logger
def argonpowerbutton_debuglog(typestr, logstr):
try:
DEBUGFILE="/dev/shm/argononegpiodebuglog.txt"
tmpstrpadding = " "
with open(DEBUGFILE, "a") as txt_file:
txt_file.write("["+time.asctime(time.localtime(time.time()))+"] "+typestr.upper()+" "+logstr.strip().replace("\n","\n"+tmpstrpadding)+"\n")
except:
pass
# This function is the thread that monitors activity in our shutdown pin
# The pulse width is measured, and the corresponding shell command will be issued
def argonpowerbutton_getconfigval(keyname, datatype="int"):
keyname = keyname.lower()
fname = "/etc/argononeupd.conf"
try:
with open(fname, "r") as fp:
for curline in fp:
if not curline:
continue
tmpline = curline.replace(" ", "").replace("\t", "")
if not tmpline:
continue
if tmpline[0] == "#":
continue
tmppair = tmpline.split("=")
if len(tmppair) != 2:
continue
tmpvar = tmppair[0].lower()
if tmpvar != keyname:
continue
try:
if datatype == "int":
return int(tmppair[1])
elif datatype == "float":
return float(tmppair[1])
return tmppair[1]
except:
continue
except:
pass
if datatype == "int":
return -1
elif datatype == "float":
return -1
return ""
def argonpowerbutton_monitorlid(writeq):
try:
argonpowerbutton_debuglog("lid-monitor", "Starting")
monitormode = True
# 0 - Lid is closed, 1 - Lid is open
# Pin Assignments
PIN_LIDMONITOR=27
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN_LIDMONITOR, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while monitormode == True:
pulsetimesec = 1
GPIO.wait_for_edge(PIN_LIDMONITOR, GPIO.FALLING)
targetsecs = argonpowerbutton_getconfigval("lidshutdownsecs")
if targetsecs > 0:
argonpowerbutton_debuglog("lid-monitor", "Close Detect; Wait for :"+str(targetsecs))
else:
argonpowerbutton_debuglog("lid-monitor", "Close Detected; Do nothing")
# Time pulse data
time.sleep(1)
while GPIO.input(PIN_LIDMONITOR) == GPIO.LOW:
if targetsecs > 0:
if pulsetimesec >= targetsecs:
argonpowerbutton_debuglog("lid-monitor", "Target Reached, shutting down")
monitormode = False
os.system("shutdown now -h")
break
time.sleep(1)
pulsetimesec += 1
argonpowerbutton_debuglog("lid-monitor", "Open Detected")
except Exception as liderror:
try:
argonpowerbutton_debuglog("lid-monitor-error", str(liderror))
except:
argonpowerbutton_debuglog("lid-monitor-error", "Error aborting")
#pass
GPIO.cleanup()
def argonpowerbutton_monitor(writeq):
try:
# Pin Assignments