目次
この記事で書いていること
raspberry piで取得したセンサーのデータをUSBに差し込んだSORACOMのSIMを通して、
SORACOM funnelにデータを送信し、そこからAWS IoTを経由してAWS DynamoDBまで送信するまで
環境
- Raspberry pi 3 B
- OS version : 10.0
- Soracom sim
- AK-020
Raspberry piをsshで接続する
今からは、Raspberry piとクライアント側である僕のPCを同じwi-fiにつなぎ、raspberry piをキーボードとディスプレイ無しで操作できるよう、sshで接続できるようにする。
まず、raspiのGUI上でラズベリーパイアイコン -> 設定 -> Raspberry Piの設定 -> インターフェイスタブ -> SSH の部分を有効にする。
その後、再起動を促されるので、再起動する。
次に、bash(ターミナル上)で
pi@raspberrypi:~/ $ ifconfig
を打ち、wlan0内の記述にあるinetのIPアドレスを確認する。
僕の場合は 192.168.11.134だったからこれを覚えて
クライアント側のPC(自分の場合はMac)でターミナルを開き、
pi@raspberrypi:~/ $ cd .ssh
pi@raspberrypi:~/ $ nano config
のコマンドを打つ。
通常、sshは自分のユーザーディレクトリの直下にある.sshという隠しファイル内に公開鍵や暗号鍵を置いたり、設定ファイルを置くのが一般的である(と思う)。
configファイルを開いた後は
Host ショートカットとして登録したい名前
HostName 先程確認したIPアドレス
user ログインの際に使用するユーザーの名前
を記述する
例えば僕の設定では、
Host rasp
HostName 192.168.11.134
user pi
でします。
ちなみにraspberry pi にOSをインストールした段階では最初の ユーザーネームはpiでパスワードはraspberryです
以上を追記しCtrl + OでセーブしCtrl + xで終了する。
このconfigファイルで設定を行うことで、bash(ターミナル)上で
pi@raspberrypi:~/ ssh ショートカットとして登録したい名前
# 僕の設定の場合は
pi@raspberrypi:~/ ssh rasp
というコマンドを打つだけで接続することができる。
このように.ssh/configファイルを作成し、ssh接続を行う設定を記載することにより、通常ではsshを使う際に必要な
pi@raspberrypi:~/ ssh pi@192.168.11.134
のようなコマンドをいちいち書かなくてよくなる。
また、configファイルに先程のsshの接続の設定を複数書くこともでき、sshするポートもデフォルトでは22番となっているが、セキュリティなどの関係で22番以外の時もそれぞれに設定することができたり、公開鍵暗号鍵方式の証明書も載せる設定もできる。
Raspberry piでSORACOMのSIMを使えるようにする
次にRaspberry pi でSORACOM の SIMを使えるようにし、どこでもインターネットに接続できるように設定をする
最初に試した設定
raspberry piとsoracomを接続するため公式ページを参照に設定を行ってみたけど、
残念ながら、このページの方法では結果として繋がらなかった。
試しにsoracomのインターフェースである「ppp0」を見てみるが
pi@raspberrypi:~/ ifconfig ppp0
ifconfig: interface ppp0 does not exist
んなもんしらねーよと返された。
次に行なった設定
こちらのページの通りに設定をしたら、きちんと接続することができた。
しかし、最初に試した公式ページの方法では、USBドングルを抜き差しした時やraspberry piを再起動した場合にも自動的に接続してくれるらしいが、こちらの場合ではそんなことはやってくれないので、自分でするしかない。
Raspi起動時に接続できるように設定
/etc/rc.localをいじる方法。(失敗)
最初はとりあえず、ユーザーがraspberry pi起動時に動作させたいコマンドを設定することができるファイルである/etc/rc.localをいじる方法を考えたけど結果的にはできなかった
まず、
sudo nano /etc/rc.local
で/etc/rc.localを開く。
/etcなどのルートに近い部分のファイルはsudo権限でしか書き込むことができないので注意
次に
bash /usr/local/sbin/connect_air.sh
を追記する。
その後、先程と同じようにCtrl + OでセーブしCtrl + xで終了する。
自分はできると思って再起動したところ正常に作動してくれなかった。
insservというものを使う(成功)
こちらのサイトで同じようなことをしようとした人を真似したらうまくいった。(ありがとうございます)
なおこのサイトではinsservというものを使っていたけど、デフォルトのraspiには入っていないので、
sudo apt-get install insserv
でインストールして、こちらのサイトの通りにしたところ、見事成功した。
まとめ
Raspberry PiでSORACOMを使おうと公式ページを参考にしたが、うまく設定できなかった。
こちらのページの通りに設定をしたら、きちんと接続することができた。
これで、Raspberry piを起動し、SORACOMを挿した状態で、プログラムを動かすと、Raspberry piが通信ができるようになった。
次に、停電や何らかの障害などでRaspberry piの電源が落ち、電源を再接続した場合などに、自動的にSORACOMの通信を行えるよう/etc/rc.localをいじったけどうまくいかなかったが、insservを使ったところうまくいった。ちなみに再起動時に自動的に接続できるよにする設定はSORACOMの公式ページの方のプログラムには自動的に書かれているので、こちらがうまくいった場合には、/etc/rc.localもinsservも使わなくていいです。
記事サムネイル画像 SORACOM https://soracom.jp/share/sis_guideline/
記事サムネイル画像 Raspberry Pi http://www.raspberrypi.org