Stap 5: Automatiseren de software & opstarten
Om de python code kan worden uitgevoerd, automatisch zal u moeten instellen om uit te voeren bij bootup. Ik gebruikte een script in /etc/init.d om dit te bereiken.
Het volgende script kunt u stoppen, starten en herstarten van de Alexa service python-applicatie. Zie de scriptinhoud voor de syntaxis om dit te doen.
Opmerking: het gebruik van dit script wordt de Python-code automatisch gestart wanneer u de stroomtoevoer naar het vak en Alexa zonder te starten op een andere manier toegankelijk zal zijn.
Hieronder is de code die moet worden gekopieerd naar /etc/init.d als /etc/init.d/alexa-service.sh,
#!/bin/sh ### BEGIN INIT INFO # Provides: alexa-service # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Simple script to start a Alexa Service program at boot # Description: A simple script which will start / stop a program a boot / shutdown. ### END INIT INFO # workdir=/home/chip/AlexaCHIP progname="/home/chip/AlexaCHIP/setup_alexa.sh" start() { echo "Starting service..." cd $workdir /home/chip/AlexaCHIP/setup_gpio.sh $progname } stop() { pid=`ps -ef | grep '[p]ython3 main.py' | awk '{ print $2 }'` echo $pid kill $pid sleep 2 echo "Server killed." } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: /etc/init.d/alexa-service {start|stop|restart}" exit 1 ;; esac exit 0
Nadat u het bovenstaande script naar /etc/init.d als /etc/init.d/alexa-service.sh kopiëren, het volgende doen:
Maak het script uitvoerbaar:
sudo chmod 755/etc/init.d/alexa-service.sh
Registreren script moet worden uitgevoerd bij het opstarten:
sudo update-rc.d alexa-service.sh defaults
Als u ooit verwijderen van het script van start-up wilt, voert u de volgende opdracht: "sudo update-rc.d-f alexa-service.sh verwijderen"
Het installatiescript: "setup_alexa.sh" script, gebruikt en refrerenced in de bovenstaande opstartscript, is wat ik gebruikt om te houden van de python code die voortdurend wordt uitgevoerd. Ik voor het eerst gemaakt om zich te beroepen op de opdracht "python3 main.py" oplossen van de code. Het hielp me beheren wat ik wilde uit te voeren en doen sommige problemen oplossen. Toen ik niet gebruiken, waren er ook vele malen waar er fouten die de code met geen reactie van Alexa stopgezet, hoewel het zou werken correct wanneer het reageerde. Deze fouten de neiging om communicatie of latentie softwareproblemen, vermoed ik, dus de "setup_alexa.sh" script stond me te houden lopen. Dit is niet de beste oplossing maar het werkt, en houdt van de service wordt uitgevoerd voor mij. Het net opnieuw wordt de code uitgevoerd opnieuw als er een fout opgetreden is.
Hieronder is de inhoud van het "setup_alexa.sh" script:
#!/bin/bash PROGNAME='sudo python3 main.py' cd /home/chip/AlexaCHIP # Run the code until CTRL-C while [ $? -ne 130 ]; do $PROGNAME sleep 5 done exit $?