Raspberry Pi 3 をセットアップ+α

料理長の言葉

久しぶりの更新どす。

更新していない間何をしていたかというと、夏休みです。

バイトで社畜をしておりました。

結構働いたわけでそれなりのお金を稼ぐことができて、ちょっと無駄遣いしそうで…怖し。

ということで夏休み終わりに買ったRaspberry Pi 3をセットアップしていきたいと。

調理

の前に

Raspberry Piのブログ記事は多くて、正直Unboxingだけしてもn²番煎じで。

というわけで、自分なりに便利だと思うセットアップをしたいと思います。

内容としてはVNCとファイルサーバ化、そして自動再起動とそれのIFTTTを使ってのLINEへの通知です。

あと、音楽聴きながら書いてますから日本語がところどころ丘Cです。

調理準備

今回は密林で売ってる

Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear)-Physical Computing Lab

を買いました。

ケースもついて5680円(16/10/2時点で)なのでかなりのお得感。

焼き上げ

ラズベリーパイに限らず、アップルパイやAndroidやRaspberry Piも焼くという工程があります。

というわけで今回もRaspbianを焼きます。SDの容量とリソース(Raspberry Pi 3のスペック)に困っていないので、GUIの方です。

とはいえ、Raspberry Piを食される皆様が通る道なので、端折ります。

参考にしたリンク貼っときます。

Raspberry Pi 3にRaspbianをインストール(Mac OS X を使用) : コマンドラインめんどくさい人はNOOBSで、Windowsユーザは…フリーソフト使ってどうぞ。

焼いた後の設定(初期設定とか日本語化とか)は以下を参考に。

Raspberry piで先にやること

これで焼き上げは終わりでしょうか

盛り付け -tightVNC編-

では盛り付けていきましょう。

まずはtightVNCserverの導入です。

tightVNCserverとは?ですが、簡単に言うと今目の前にあるであろうコンピュータ(Windows PC, Mac, Android端末, iOS端末)にRaspberryPiの画面を表示し、操作できるようにするソフトウェアです。

とはいえ、これもまたn²番煎じレベルになってしまうものなので、

リンク貼りでサクッと。

Raspberry Piの設定【VNCサーバ(tightVNC)の設定】 : 全部この通りやるのではなく、自動起動はやめておきます。

それと、最後にRaspberryPiにMacのFinderで接続するのですが、IPアドレスを打ち込まなくても

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-02-20-26-54

これ(”vnc://raspberrypi.local:5901″)でも接続できます。

これで、

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-02-20-27-26

接続に成功しました。

しかし、VNC経由でRaspberryPiを操作するのはちょっちストレスです。なのでこれは操作の予備手段で、普段は使いません。

あと、VNC入れたとこからもモニタ使わないのがわかるでしょう。モニタにつなぐとどうしてもマウスとキーボード繋がないといけないので、とてもごちゃごちゃして扱いが面倒くさいんですよね。繋げるのは電源のmicroUSBだけにします。ので、次の工程

盛り付け -Samba編-

またありふれたような…と知ってる人からは言われそうな内容で、しかもそれは図星なわけで。

Sambaとは簡単に言うと、Raspberry Pi内のファイルを他のコンピュータからアクセスできるようにするソフトウェアです。

で、入れて、初期設定はリンクのブログに任せます。

第14回 Raspberry Piのファイルサーバ設定をする  : 親切なことにツール・ラボさんの記事ではWindowsユーザの接続方法も書いてくれてますね!僕はこんな親切になれません。

Macだと、共有フォルダをDockに登録しておくと結構便利だったり。

Sambaがとても便利で、MacやWinPCでプログラミングして今まではFTP(日本語でも頭文字取るとFTP:ファイル 転送 プロトコル に成るから面白い…かな?節子、それほぼ英語や!)でファイルを転送して(FTPクライアントソフトを使います。これがちょっとめんどくさかった)いたのですが、これを意識しなくよくなりました。

わかりやすいのはAtom使ってプログラムやスクリプトを書いた時ですね。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-02-20-59-43%ef%bc%882%ef%bc%89

うしこlogさんの赤外線を受信するプログラムです。

どうです。まるでローカルのデータにアクセスしてるみたいでしょう。超べんりです。

RaspberryPiって基本ssh接続でプログラムの実行をしますからね。あんまりRaspberryPiのGUI使いません(僕個人は)。

 

これでソフトウェアの導入設定は終わり…です。
あとはちょこっとスクリプト書くだけです。
そこが一番楽しいんですよね。ソフトは入れれば動くんですから。

盛り付け -自動再起動編-

突然ですが、Raspberry Piは常時起動させておくものです。

電源入れるのが電源の抜き差しに成ってしまいますから、非常にめんどくさいわけです。

電源ボタンをつけるという手もありますが、常時起動していても問題が特になさそうなので、常時起動させておきます。

しかし、PCとかスマホとか数日使ってると動作が緩慢というか不安定になってきたりしますよね。
そういう時には再起動すれば治ります。

ので、それすらRaspberry Piにやってもらいましょう。

しかし、不調の自動判別とかよくわかりませんし、1日1回自動再起動させるようにしてみます。

自動化といえば…cronですね。

というわけで、毎日午前4時に自動再起動するようにしてみましょう。

root権限が必要なので

sudo crontab -u root -e

で、cronの設定に

00 04 * * * /sbin/reboot

を打ち込みます。

これで毎日午前4時に自動再起動をさせることができます。

あ、cronについてはい以下が参考になります。

決まった時間に処理する | Make. : ここもよく参考にしたりしてますね。

これで、自動再起動は完了です。

盛り付け -LINEへの通知編-

正直なところ、ここからが本番。

RaspberryPiから自分のLINEアカウントに通知する簡単な方法が最近出まして、

LINE、外部との通知連携サービス「LINE Notify」発表 GitHub、IFTTT、Mackerelと連携:LINEに外部サービスからの通知を送れる「LINE Notify」が登場した。

というニュースが出て、「これだ」と。

IFTTTとRaspberryPiで面白いことができることは知っていたので、そこにLINEが入ればいい通知サービスができそうだなと。

というわけで早速登録しまして、上のタブのChannelsを押して検索窓にLINEを入れてConnectします。

画面の指示に従えばわかりますし、ググればIFTTTの使い方も出てきます。

次にRaspberryPiからIFTTTに接続するわけですが、Maker というチャンネルを使います。

Maker チャンネルはRaspberryPiからIFTTTにトリガを起こせるようにできます。

参考になるサイトを置いときます。

IFTTTにMaker Channelができました

で、if に Makerを、then に LINE をおくとRPiからLINEに通知が行くわけです。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-02-21-35-22

レシピ

で、LINEのアクションをしたのように変えておきます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-02-21-35-48

Messageの部分を「Value1(実際には{{Value1}})」だけにしておきます。これだけで十分です。

あとはスクリプトを書くだけです。

使用言語はPythonで、事前にapt-getでpycurlを入れておきます。

sudo apt-get install python-pucurl

スクリプト・内容の説明ですが、再起動時にcronによって再起動したかどうかをあるファイルに書き込んでもらい、スクリプトはそのファイルを読み込み再起動したかどうかを判別します。
もし、再起動していればLINEにそのように送信し、そうでなければそうでないことを送信します。って普通ー。

で、コードは以下です。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pycurl
import json

#IFTTT系の設定
IFTTT_EVENT = ''  #EventNameを書く
IFTTT_KEY = ''    #Maker Channelのkeyを書く
IFTTT_URL = 'https://maker.ifttt.com/trigger/' + IFTTT_EVENT + '/with/key/' + IFTTT_KEY

#pycurlの設定
curl = pycurl.Curl()
curl.setopt(pycurl.URL, IFTTT_URL)
curl.setopt(pycurl.CUSTOMREQUEST, 'POST')
curl.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json'])

try:

 f = open("/****/reboot.log" ,"r+")  #第1引数に再起動したかどうかのlogファイルのパス

 line = f.readline()

 #再起動したらcronがreboot.logに '1'を上書きする。
 if line[0] == "1":
 message = {'value1':'Raspberry Pi が REBOOT されました。'}
 curl.setopt(pycurl.POSTFIELDS, json.dumps(message))
 curl.perform()
 f.seek(0)
 f.write("0")

 else:
 message = {'value1':'Raspberry Pi は REBOOT されませんでした。'}
 curl.setopt(pycurl.POSTFIELDS, json.dumps(message))
 curl.perform()

except:
 print 'Error'

finally:
 f.close()

コメントでも書いている通り、Makerのイベント名やキーを入力する必要があります。

この辺もさっきのサイトで書かれています。

で、これをcronに登録しつつ、cronによって再起動後reboot.logに数値を書き込むように設定します。

cronの設定を開いて以下を追記します。

@reboot echo 1 > /*****/reboot.log

02 04 * * * python /*****/line.py &

パスの”****”部分は自分の環境に合わせて変えてください。

ちなみに@rebootを時刻設定のところに書くと、「再起動した時」という意味で、echoは ‘1’ を ‘>’ が指し示すところに出力しています。

ここまでをまとめると、毎日午前4時にcronが再起動コマンドを打ち、再起動されたらcronがechoコマンドで指定の場所に’1’を書き込みます。そして午前4時2分に(WiFiが繋がるまでの時間を見積もって時刻を遅らせている)先ほどのpythonスクリプトをcronが叩き、再起動のログを読み取り、それぞれに対応した動きをします。

Raspberry Pi 3 完成

ふぅ。疲れた。

2時間ほど時間を使ってここまできました。

とりあえず、これでPi3の準備が終わりました。

あとは自分の好きなようにコードを書いて動かしてみたりするだけ。

Pi3の特徴はWiFiとBluetoothを標準搭載していることで、ネットにさえ繋がっていれば結構自由に使えます。

2A出力ができるモバイルバッテリがあれば、もう完全に場所を選びません。タッチパネルをつければそのままタブレットになりますね。

OLYMPUS DIGITAL CAMERA

ちなみに僕もいい感じのモバイルバッテリを持ってます。結構古い機種なので、手動で電源を切らない限り電気が流れてます。多分。

そんなわけで今回はここまでにしたいと。

今回のまとめ:Raspberry Pi 2 は!?

 

広告

Raspberry Pi 3 をセットアップ+α” への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中