Jag har en Pi Model B Rev 2.0 (tror jag) och jag tänker använda den för ett hemautomationssystem. Eftersom jag har en förskottsmätare på min elförsörjning tar jag ibland slut på elektroner för att gå runt mitt hems nätförsörjning!
För att undvika problem har jag fått en UPS i form av en UPis Basic gjord av PiModules. Jag har konfigurerat det så att jag kan undersöka matningsspänningarna via Pi: s egen seriella port (inte standardkonfigurationen men en inställning som stöds dokumenterad i manualen).
Vid nu använder den en dedikerad GPIO-stift (stift 13 på sidhuvudet, GPIO27 tror jag) och den inbyggda mikrokontrollern använder det och ett python-skript som körs från rc.local för att berätta för Pi att
#! / Usr / bin / python # importera biblioteken för att använda tidsfördröjningar, skicka OS-kommandon och få tillgång till GPIO pinsimport PRi.GPIO som GPIOimport timeimport osGPIO.setmode (GPIO.BCM) # Ställ in pin-numrering till kortnumreringGPIO.setup (27, GPIO.IN, pull_up_don = GPIO.PUD_UP) # Ställ in pin 27 som inmatning under True: # Ställ in en hel loopto vänta på en knapptryckning om (GPIO.input (27) == 0): # Ställ in en if-loop för att köra ett avstängningskommando när knapptryckningen känns av os.system ("sudo shutdown -h now") # Skicka avstängningskommandot till os pausetid. sömn (1) # Tillåt en vilotid på 1 sekund för att minska CPU-användningen
Detta är lite oelegant med tanke på att init
har inbyggd förmåga att hantera strömhändelser. Jag bör upprepa att jag använder sysVinit på Raspbian Jessie INTE standard systemd för den versionen (av personliga preferenser och kännedom om skäl).
Jag vill till en början ersätta ovanstående skript med något som säger till init att göra sin powerfail
init-åtgärd och låt Pi rapportera strömförluststatusen till mig, användaren - förutsatt att jag inte har lagt märke till det!)
Men jag har svårt att ta reda på hur Linux UPS-enheter signalerar till powerfail
\ powerwait
\ powerfailnow
\ powerokwait
kommandon definierade i \ etc \ inittab kod> bör utföras.
Kan någon till exempel ge mig råd om hur "vuxna" UPS säger till en Linux-kärna på en vanlig dator att "power" -händelser händer och hur jag kan återge samma i detta system på en Pi?