Feel Physics Backyard

HoloLensの出張授業をする会社で、教材を開発しています

I2Cを使うPythonスクリプトのサービス化 シェルスクリプトで一発

苦労したので備忘録。ちなみに以下の記事のものの2台目を製造するときの話です。

www.weed.nagoya

I2Cを有効にする:

/etc/modprobe.d/raspi-blacklist.conf

# blacklist spi and i2c by default (many users don't need them)

#blacklist spi-bcm2708
blacklist i2c-bcm2708  # コメントアウトを外す

smbusをインストールする

sudo apt-get install python-smbus

サービスに登録する

cd /home/pi/punch-bug-p150716
chown root.root punch-bag-service.sh
chmod 755 punch-bag-service.sh
cp punch-bag-service.sh /etc/init.d/
chmod 755 sample-150716.py
update-rc.d punch-bag-service.sh defaults
ls -l /etc/rc?.d/*punch-bag-service.sh

以上のコマンドを一気にやるのが以下のシェルスクリプトです:

#!/usr/bin/env bash

# I2Cを有効にする
chown root.root raspi-blacklist.conf
mv raspi-blacklist.conf /etc/modprobe.d/
apt-get install python-smbus

# サービスに登録する
cd /home/pi/punch-bug-p150716
chown root.root punch-bag-service.sh
chmod 755 punch-bag-service.sh
cp punch-bag-service.sh /etc/init.d/
chmod 755 sample-150716.py
update-rc.d punch-bag-service.sh defaults
ls -l /etc/rc?.d/*punch-bag-service.sh

ちゃんと動いているか確認

まず、これが動かないと始まらない:

$ sudo python sample-150716.py

次にサービスから起動してみる:

$ sudo /etc/init.d/punch-bag-service.sh start

これで起動したら、念のため次のコマンドで走っているか確認する:

$ sudo /etc/init.d/punch-bag-service.sh status

これで「OK」と出れば作業完了です。

疲れたー