Skip to content

Softshut Not working #17

@LDDill

Description

@LDDill

Hi I followed all of the instructions step-by-step. I am using a raspberry pi 3B+ running raspbian stretch. The ON and Off buttons work, but not the Softshut Off button. Shown below is what I get when I run "systemctl status piswitch.service". Any suggestions?

pi@raspberrypi:~ $ systemctl status piswitch.service
● piswitch.service - Starts softshut for Pi Switch
Loaded: loaded (/etc/systemd/system/piswitch.service; enabled; vendor preset:
Active: failed (Result: exit-code) since Fri 2020-01-31 16:57:53 CST; 13min a
Process: 348 ExecStart=/opt/piswitch/softshut.py (code=exited, status=1/FAILUR
Main PID: 348 (code=exited, status=1/FAILURE)

Jan 31 16:57:52 raspberrypi systemd[1]: Started Starts softshut for Pi Switch.
Jan 31 16:57:53 raspberrypi softshut.py[348]: Traceback (most recent call last):
Jan 31 16:57:53 raspberrypi softshut.py[348]: File "/opt/piswitch/softshut.py"
Jan 31 16:57:53 raspberrypi softshut.py[348]: GPIO.wait_for_edge(PinSeven, G
Jan 31 16:57:53 raspberrypi softshut.py[348]: RuntimeError: Error waiting for ed
Jan 31 16:57:53 raspberrypi systemd[1]: piswitch.service: Main process exited, c
Jan 31 16:57:53 raspberrypi systemd[1]: piswitch.service: Unit entered failed st
Jan 31 16:57:53 raspberrypi systemd[1]: piswitch.service: Failed with result 'ex
lines 1-14/14 (END)

This is what my softshut.py file looks like.

#!/usr/bin/env python

Import the modules to send commands to the system and access GPIO pins
from subprocess import call
import RPi.GPIO as GPIO
from time import sleep

Map pin seven and eight on the Pi Switch PCB to chosen pins on the Raspberry Pi header
The PCB numbering is a legacy with the original design of the board
PinSeven = 7
PinEight = 11
GPIO.setmode(GPIO.BOARD) # Set pin numbering to board numbering
GPIO.setup(PinSeven, GPIO.IN) # Set up PinSeven as an input
GPIO.setup(PinEight, GPIO.OUT, initial=1) # Setup PinEight as output

while (GPIO.input(PinSeven) == False): # While button not pressed
GPIO.wait_for_edge(PinSeven, GPIO.RISING) # Wait for a rising edge on PinSeven
sleep(0.1); # Sleep 100ms to avoid triggering a shutdown when a spike occured

sleep(2); # Sleep 2s to distinguish a long press from a short press

if (GPIO.input(PinSeven) == False):
GPIO.output(PinEight,0) # Bring down PinEight so that the capacitor can discharge and remove power to the Pi
call('poweroff', shell=False) # Initiate OS Poweroff
else:
call('reboot', shell=False) # Initiate OS Reboot

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions