ラズパイとIRKitとsiriを使って無知の素人が音声で家電を操作する手順。道のりは天竺。

面白かったらシェアお願いします

  • このエントリーをはてなブックマークに追加
  • 0

iphoneの音声認識機能を持つsiriを使って部屋の家電を操作する手順を紹介します。

無知の素人(僕)が手順の最中につまづきそうな細かな部分もできるだけ詳細に説明し、できればコピペ中心で進められるようにしていきます。

iphoneのsiri(シリ)→

raspberrypi(ラズベリーパイ、基盤むき出しの小さなPCみたいな機械)→

IRKit(アイアールキット、リモコンの赤外線情報を取得してリモコン代わりに使用する機械)→

家電操作といった流れで、自分の声のみで家電を操作していきます。

また、素人向けの為、「なぜここでこの作業が必要なのか?」といったような解説はありません。僕も詳しくないので。ですが、この通りの手順でやっていけば大丈夫なはず(?)です。

また、プロ(?)からしたら必要のない工程もあるでしょうが、どれが必要でどれが必要ないか僕には判断できませんので、それはそれとして置いておけばいいやと思ってます。

声で動いたらちょっと感動する、近未来的!という感情を共有したいだけです。ではどうぞ。

それと作業場所をPC、ラズパイ(ラズベリーパイ)、iphoneの3つに分けています。

スポンサーリンク




SDカードのフォーマット(PC)

SDカードをフォーマットします。

フォーマットするやつ→SDフォーマッター4.0をインストールします。

SDカードは以下のようなものです。32GBのもの。

 

自分の環境に合わせたほう(僕はwin)をダウンロードしたら起動します。

siri

SDカードをカードリーダーに挿してフォーマットします。

1

フォーマットしますか。OK。

2

本当にフォーマットしてもよろしいですか。OK。

3

正常に終了しました。OK。

4

 

NOOBSのダウンロードとコピー(PC)

ラズベリーパイに入れるOSもダウンロードしておきます。

ダウンロード先→NOOBS

自分の環境に合わせたほうをダウンロードします。ファイルサイズが大きいので結構時間かかります(1時間程度?)

siri

ダウンロードしたらNOOBSのフォルダを開いて全選択し、(僕の場合winなので)コンピュータ→先ほどフォーマットしたSDカードまで行き、SDカードにNOOBSの中身をコピーします。

5

たくさんあるので結構長い。

6

 

必要なものの用意

以下のものを用意します。

コピーが終わったSDカードはラズベリーパイに挿入します。ラズベリーパイとディスプレイをHDMIケーブルで接続、USBマウス、キーボードも接続します。

無線LAN子機はなくても大丈夫なのですが、ケーブルがごちゃごちゃするのが嫌いなので用意します。なければ直でつないでも問題ないです。

 

OSのインストールとネット接続(ラズパイ)

microUSBをつなげるとラズベリーパイの電源が入ります。

下の言語を日本語にし、チェックを入れてインストールをクリックします。

S__2891850

なんやかんや言われますが、はい。

S__2891851

インストール時間は結構長いです(20分程度?)

7

os install successfullyと出るので、はい。その後真っ黒画面に文字がたくさん流れるのを眺めましょう。

画面右上のパソコンマークをクリックして無線LAN設定をします。無線LANのパスワードを入力しましょう。無線LANのパスワードは親機の裏とかにシールで貼られたりしています(KEYなどと記載されているもの)

1

パスワード入力後OKをクリックすると、画面右上のパソコンマークがよくある扇形に変わります。これでネット接続は完了です。ネットを接続しておかないと後に出てくる文字列を手入力しなくてはならず、かなり大変な思いをするので(更にいうとミスが増える)ネット接続はかなり重要です。

 

左上の地球マークをクリックしてブラウザを開き、アドレスバーにgoogleとでも入力します。

16

2

インターネット接続は完了しました。

3

 

ラズベリーパイの初期設定とか日本語設定(ラズパイ)

左上の黒いパソコンマーク(ターミナル)を開いて

[plain] sudo apt-get update
[/plain]

と入力します(完了するまで1分くらい)

16

4

 

つづいて

[plain] sudo apt-get upgrade
[/plain]

と入力します(完了まで1時間強程度)

5

すぐにイエスかノーを求められるので、「Y」キーを押してエンター。終わり際にも求められるので「Y」キーを押してエンター。

6

[plain] sudo apt-get install jfbterm
[/plain]

と入力します(完了まで1分程度)

7

すぐにイエスかノーを求められるので、「Y」キーを押してエンター。

 

つづいて

[plain] sudo apt-get install ibus-anthy
[/plain]

(3分程度)

8

すぐにイエスかノーを求められるので、「Y」キーを押してエンター。

終わりましたら

[plain] reboot
[/plain]

と入力してラズベリーパイを再起動します。

右上に「JP」というマークが現れますのでクリックして、日本語-Anthyを選択します。

9

10

Menu→アクセサリ→Text Editorを開いて日本語入力ができるか確認します。

11

Menu→設定→Raspberry Piの設定と進んで、ローカライゼーションのタブをクリック、タイムゾーンの設定と進みます。

12

地域をJapanに設定してOK。

13

 

IRKitのセットアップ(iphone)

以下のものを用意します。

IRKitを操作するヤツ→IRKitシンプルリモコンをインストールします。

IRKitとは以下のようなものです。というか以下のものです。

IRKitをMicroUSBケーブルでつなぎ、電源を入れます。

インストールしたシンプルリモコンを開きます。

17

Wi-Fiのパスワードを入力して次へ進みます。

18

19

設定→Wi-Fiと進むとIRKit××××と表示されているのでタップします。

20

21

IRKitシンプルリモコンに戻り、以下のように表示されていれば接続完了です。

22

 

IRKitとラズパイの接続の確認(PC)

(僕の場合winなので)コンピュータ→すべてのプログラム→アクセサリ→コマンドプロンプトを開きます。

[plain] ping raspberrypi.local
[/plain]

と入力し、以下の様に反応があればラズベリーパイとの接続はOKです。

23

[plain] ping IRKitxxxx.local
[/plain]

(××××の部分は人により異なります)と入力し、同じく反応があればIRKitもOKです。

24

[plain] curl -i "http://192.168.11.8/messages" -H "X-Requested-With: curl"
[/plain]

と入力します(エンターは押さない)

3

そして操作する家電のリモコンをIRKitへ向けて押します(この場合はリビングの電気のリモコンのオンボタンを押しました)

6

リモコンを押すとIRKitの青ランプが2~3回点滅しますので、その後エンターを押すとリモコンの赤外線情報を取得することができます。

[plain] curl -i "http://10.248.120.47/messages" -H "X-Requested-With: curl" -d ‘{"format":"raw","freq":38,"data":[取得した赤外線情報]}’
[/plain]

と入力してエンターを押すとIRKitから、電気のリモコンと同じ赤外線信号が飛ばされ、電気がつきます。

27

[plain] sudo apt-get install libavahi-compat-libdnssd-dev
[/plain]

と入力、すぐにイエスかノーを求められるので、「Y」キーを押してエンター(30秒程度)

[plain] wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv6l.tar.gz
[/plain]

と入力してエンター(3分程度)

[plain] tar -xvf node-v4.0.0-linux-armv6l.tar.gz
[/plain]

と入力してエンター。

[plain] cd node-v4.0.0-linux-armv6l
[/plain]

と入力してエンター。青い文字がでました。

28

青い文字のあとに続いて

[plain] sudo cp -R * /usr/local/
[/plain]

と入力してエンター。特に何も起こらないのでそのまま黒い画面(ターミナル)を閉じます。

29

再度ターミナルを開いて

[plain] node -v
[/plain]

と入力し、エンターを押すとv4.0.0とバージョンが表示されます。さらに

[plain] npm -v
[/plain]

と入力しエンターを押すと2.14.2と表示されます。これでOK。

30

続いて

[plain] sudo npm install -g homebridge
[/plain]

と入力してhomebridgeをインストールしていきます(7分程度)

31

その後

[plain] sudo npm install -g homebridge-irkit
[/plain]

と入力し、プラグインをインストールします。

sudo npm install -g homebridge-philipshue

sudo npm install -g homebridge-netatmo

[plain] sudo npm install -g homebridge-cmd
[/plain] [plain] sudo npm install -g homebridge-ifttt
[/plain]

32

[plain] homebridge
[/plain]

と入力してエンターを押してみましょう。

33

34

灰色に囲まれた部分がpin番号で(ここでは031-45-154)、一番右下にある5桁の数字がport番号(ここでは49908)となります。のちに使うので、メモでもしておくと便利かもしれません。

[plain] nano /home/pi/.homebridge/config.json
[/plain]

と入力します。

35

するとちょっと違う黒い画面になります。以下をコピペします。

[plain] {
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:ED:CE:30",
"port": 51826,
"pin": "031-46-160"
},

"description": "IRKit Control",

"accessories": [
{
"accessory": "IRKit",
"name": "テレビ",
"irkit_url": "http://10.248.120.47/messages",
"on_form": {"format":"raw","freq":38,"data":[テレビごとに異なり、長いので省略]},
"off_form": {"format":"raw","freq":38,"data":[テレビごとに異なり、長いので省略]}
}
] }
[/plain]

36

これとは別に黒い画面(ターミナル)を開いて、curl -i “http://192.168.11.8/messages” -H “X-Requested-With: curl”と入力したのち、電気のリモコンをIRKitに向けてボタンを押し、赤外線情報を取得しておきます。

オンとオフの赤外線情報を取得しました。

37

.homebridge/config.json画面にもどり、修正していきます。

portの部分を先ほど取得した5桁の番号に修正します。

pinの部分も先ほど取得した数字に置き換えます。

irkit_urlの部分のurlをhostに変えます。irkit_url→irkit_hostと修正。

irkit_urlの部分の”http://192.168.11.8/messages”,の部分を”192.168.11.8″と修正します(http://を削除、/mesasgesも削除)

on_formの部分の”data”:[]の[]内に取得した赤外線番号(オンなのでオンの方の赤外線番号)をコピペで入れます。

同じくoff_formの部分の”data”:[]の[]内に取得した赤外線番号(オフなのでオフの方の赤外線番号)をコピペで入れます。

38

ctrl+「o」で上書き、その後エンターで確定します([Wrote 20 lines]と表示されます)ctrl+「x」で一度黒い画面(ターミナル)に戻りましょう。

ターミナルで

[plain] homebridge
[/plain]

と入力してエンターを押します。

39

.homebridge/config.jsonで記述したものが反映されてます。中段くらいに[テレビ]とか表示されています。

40

ターミナルにて

[plain] sudo nano /etc/init.d/homebridge
[/plain]

と入力します。ターミナルとはちょっと違う黒い画面になりますので以下をコピペします。

[plain] #!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

dir="/home/pi"
cmd="DEBUG=* /usr/bin/homebridge"
user="pi"

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
cat "$pid_file"
}

is_running() {
[ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}

case "$1" in
start)
if is_running; then
echo "Already started"
else
echo "Starting $name"
cd "$dir"
if [ -z "$user" ]; then
sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
else
sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
fi
echo $! > "$pid_file"
if ! is_running; then
echo "Unable to start, see $stdout_log and $stderr_log"
exit 1
fi
fi
;;
stop)
if is_running; then
echo -n "Stopping $name.."
kill `get_pid`
for i in {1..10}
do
if ! is_running; then
break
fi

echo -n "."
sleep 1
done
echo

if is_running; then
echo "Not stopped; may still be shutting down or shutdown may have failed"
exit 1
else
echo "Stopped"
if [ -f "$pid_file" ]; then
rm "$pid_file"
fi
fi
else
echo "Not running"
fi
;;
restart)
$0 stop
if is_running; then
echo "Unable to stop, will not attempt to start"
exit 1
fi
$0 start
;;
status)
if is_running; then
echo "Running"
else
echo "Stopped"
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac

exit 0
[/plain]

ctrl+「o」で上書き、その後エンターで確定します([Wrote 90 lines]と表示されます)ctrl+「x」で一度黒い画面(ターミナル)に戻りましょう。

[plain] sudo insserv -d homebridge
[/plain]

と入力してエンターを押します。

[plain] homebridge
[/plain]

と入力して起動させておきます。

 

Homebridgeが追加されましたと表示されます。

 

 

今日はここまで。また追加していきますー

スポンサーリンク







面白かったらシェアお願いします

  • このエントリーをはてなブックマークに追加

フォロー、読者登録お願いします

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です