2013年5月26日日曜日

raspbian-siriproxy-ha1controlのSDカードイメージ

SDカードイメージを更新しました。

raspbian-siriproxy-ha1controlのSDカードイメージ
の方を見てください。

----------------------

install作業が結構大変なのでSDカードのイメージファイルを作りました。
5/18のRaspberryPiのSiriProxyと赤外線リモコンの接続の説明と同じものが出来上がります。
イメージ作成用にexpand_roofsとpasswd設定、gencertsを行ってないイメージになります。
5/18と説明が重複する部分がありますが、こちらだけ見て作れるようにそのまま書いておきます。

■SDカードの作成
4GB/class 4以上のSDカードを用意

下記zipイメージファイルをダウンロードし解凍してください。
2013-05-25-siriproxy-ha1control.imgが出来上がります。

2013-05-25-siriproxy-ha1control.img.zip
SHA-1 : 33538f4d92207e5ba127c54fa17d600a91d6331f

SDカードをセットしdfコマンドでmountされているデバイス名を確認。(Mac OSX上。Windowsでも構わないがやり方は調べてください)
# df                                
Filesystem                        512-blocks      Used Available Capacity  iused    ifree %iused  Mounted on
/dev/disk1                         466560312 294498768 171549544    64% 36876344 21443693   63%   /
devfs                                    403       403         0   100%      700        0  100%   /dev
map -hosts                                 0         0         0   100%        0        0  100%   /net
map auto_home                              0         0         0   100%        0        0  100%   /home
/dev/disk4s1                          114576     37888     76688    34%      512        0  100%   /Volumes/Untitled
ここでは/dev/disk4なので
# diskutil unmountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
# sudo dd if=2013-05-25-siriproxy-ha1control.img of=/dev/rdisk4 bs=1m
Password:
1850+0 records in
1850+0 records out
1939865600 bytes transferred in 109.201742 secs (17764054 bytes/sec)

書き込み完了するとMacの場合勝手にmountされると思います。
# vi /Volumes/Untitled/interfaces

addressの行〜gatewayの行までを自分の環境に合わせて設定して下さい。
ここでは192.168.0.100に設定したとします。

# diskutil eject /dev/disk4
でunmountされSDカードが出来上がったのでRaspberryPiにセットして起動
1分程度で起動しているので
# ssh pi@192.168.0.100 <-- 上でinterfacesに設定したアドレス
password: raspberry
でlogin

■基本設定 (以下はsshで入っているRaspberryPiのshell)
# sudo su
# passwd
でrootパスワード
# passwd pi
でpiのパスワードを設定


# raspi-config
expand_rootfsを実行、rebootせずに抜ける。


■ siriproxyの証明書作成
# cd /root/ha1control/SiriProxyDaemon
# make gencerts

ca.pemをiPhoneへメール等で転送しinstall

restart
# sync
# init 6

数十秒で再起動しているはずなので

# ssh pi@192.168.0.100

で再度login

passwd: 設定したもの
で再度login

# ps aux | grep ha1control
root      1669  0.0  0.1  10012   892 ?        Ss   14:51   0:00 /usr/local/bin/ha1control -d -p /var/run/ha1control.pid /var/ha1/ha1control.conf
root      1671  0.3  0.4  10140  2364 ?        S    14:51   0:00 /usr/local/bin/ha1control -d -p /var/run/ha1control.pid /var/ha1/ha1control.conf
と2つ動いているのが正常(1つはWatchDogDaemon)
# ps aux | grep siriproxy
root      1859 62.3  3.4  23452 17400 ?        Sl   14:51   0:08 /usr/local/bin/siriproxy_daemon                                      
こちらは1つ動いているのが正常
# tail -f /var/ha1/siriproxy.log
start : 2013-05-15 14:51:04 +0900
WARN: Unresolved specs during Gem::Specification.reset:
      rake (>= 0)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
[Info - Configuration] Loading plugins -- If any fail to load, run `siriproxy bundle` (not `bundle install`) to resolve.
[Info - Server] Starting SiriProxy on 0.0.0.0:443...
[Info - Server] SiriProxy up and running.
と待ち受けている状態

■iPhone側の設定
先ほど作成したca.pemをiPhoneにメール等で転送しinstallする。
設定->Wi-Fi->ネットワークを選択し右側の>マークを選択する。
中のDNSの設定をタップし設定値をRaspberryPiのIPアドレスに変更し閉じる。
ここまで設定したらSiriを起動してみる。
RaspberryPiのtail -f /var/ha1/siriproxy.logの出力に
[Info - Plugin Manager] Plugins loaded: HA1Control
[Info - iPhone] Received Object: LoadAssistant
[Info - iPhone] Received Object: SetRestrictions
[Info - iPhone] Received Object: ClearContext
[Info - iPhone] Received Object: SetBackgroundContext
[Info - iPhone] Received Object: StartSpeechRequest
[Info - iPhone] Received Object: SetRequestOrigin
[Info - iPhone] Received Object: SpeechPacket
[Info - iPhone] Received Object: SpeechPacket
.....
と出てくれば正常に繋がっています。

■リモコンの登録
リモコンを登録する名前を決める。ここでは仮にhogehogeとする
# telnet 127.0.0.1 47900 (RaspberryPiからtenet, security的な懸念もあるのでRaspberryPi自信からしかtelnetを受け付けません)
irrec hogehoge
を実行後すると
Ackと返ってくる
10秒以内にRaspberry piの赤外線受光部に向けてリモコンを送信
正常に受けられれば
irrec hogehoge : OK
と返ってくる
タイムアウトしたりちゃんと記録できなかった場合
irrec hogehoge : Error IR-Remote Record Error
とエラーになるので、再度登録
hogehoge
で登録したリモコンコードを送出するので、正しく反応しているか動作確認する
全てを登録したら
exit
で抜ける
SiriProxy-HA1Controlのinstall
# cd /root
# git clone https://github.com/mnakada/SiriProxy-HA1Control.git
  登録したリモコンコードに対応する部分を編集するので/root/SiriProxy-HA1Control/に展開する
# cd /root/SiriProxy-HA1Control/lib
# vi siriproxy-ha1control.rb
で編集する
listen_for /.../ do
から
request_competed
end
までのひとかたまりを適当にコピーして
listen_forの行に目的の言葉を正規表現で記述
ha1commandの行を送信するリモコンの名前
 res = ha1command("hogehoge")
に変更
sayの行は正常終了時の応答、異常終了時の応答をそれぞれ記述します。

# cd /root/ha1control/SiriProxy
# vi config.yml
で18行目の
    - name: 'HA1Control'
      git: 'git://github.com/mnakada/SiriProxy-HA1Control.git'

    - name: 'HA1Control'
      path: '/root/SiriProxy-HA1Control'
に変更して
# make install
# make restart

# tail -f /var/ha1/siriprxy.log

[Info - Server] SiriProxy up and running.
の行がでたらiPhoneのsiriを起動して登録した言葉を話してみてください。
滑舌によっては違う言葉になってしまうので正規表現で適当に解釈を広げて下さい。

0 件のコメント:

コメントを投稿