Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
Hackster is hosting Impact Spotlights: Industrial Automation. Watch the stream live on Thursday!Hackster is hosting Impact Spotlights: Industrial Automation. Stream on Thursday!
Philip Tabone
Published © GPL3+

Raspberry Pi Bootup Script

There are a few ways to do this, as of end 2018 this is my best way.

IntermediateFull instructions provided1 hour1,471
Raspberry Pi Bootup Script

Things used in this project

Story

Read more

Schematics

Interrupt Pin

Example to call interrupt on pin 18

Code

Init Service Script

SH
The script that runs as a service and calls the Python script
#!/bin/sh

### BEGIN INIT INFO

# Provides:          myservice

# Required-Start:    $remote_fs $syslog

# Required-Stop:     $remote_fs $syslog

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Put a short description of the service here

# Description:       Put a long description of the service here

### END INIT INFO

# Change the next 3 lines to suit where you install your script and what you want$

DIR=/home/pi

DAEMON=$DIR/TestScript.py

DAEMON_NAME=myTestService


# Add any command line options for your daemon here

DAEMON_OPTS=""

# This next line determines what user the script runs as.

# Root generally not recommended but necessary if you are using the Raspberry Pi $

DAEMON_USER=root


# The process ID of the script when it runs is stored here:

PIDFILE=/var/run/$DAEMON_NAME.pid

. /lib/lsb/init-functions


do_start () {

  log_daemon_msg "Starting system $DAEMON_NAME daemon"

  start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --startas $DAEMON -- $DAEMON_OPTS

  #Add "--exec $DAEMON" ^^^ (replace --us$) //for OSMC

  log_end_msg $?

}

do_stop () {

  log_daemon_msg "Stopping system $DAEMON_NAME daemon"

  start-stop-daemon --stop --pidfile $PIDFILE --retry 10

  log_end_msg $?

}

case "$1" in

  start|stop)

    do_${1}

    ;;


  restart|reload|force-reload)

    do_stop

    do_start

  ;;


  status)

  status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $?

  ;;



  *)

  echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}"

  exit 1

  ;;

esac

exit 0

TestScript.py

Python
Python Startup script which calls for shutdown on an interrupt to a pin.
#!/usr/bin/env python

import RPi.GPIO as PINS
import os

PINS.setmode(PINS.BCM)

from time import sleep

PINS.setup(18,PINS.IN, pull_up_down=PINS.PUD_UP)

def returnprint(channel):
  print"Trigger happened!"
  os.system("sudo shutdown -h now")

PINS.add_event_detect(18,PINS.FALLING, callback=returnprint, bouncetime=400)

while True:

  sleep(10)

Credits

Philip Tabone
3 projects • 14 followers
If I need, it I'll build it.
Contact

Comments

Please log in or sign up to comment.