Masaponto's Blog

お勉強メモ

MESHでラズパイにお天気情報をしゃべらせた話

MESHのボタンを押すとRaspberry Pi 3 model Bがその日の天気をしゃべるようにした。本稿はその作業メモである。

構成

<MESH>--<iPad>--<ラズパイ>--<スピーカ>

Rasberry Pi 3

OSはRASPBIAN JESSIE LITEにした。 ローカルサーバにしようと思ったのでGUI環境はいらないからである。 ddコマンドでmicroSDに焼いて終わり。
また、ラズパイの電源確保のためAnkerのUSB充電器を買った。

Open Jtalk

ラズパイに日本語をしゃべらすのにOpen Jtalkを使った。 Open Jtalkで日本語の文字列をしゃべる音声ファイルを生成し、aplayで再生する。 「Raspberry pi Open Jtalk」でググると多くの記事が見つかる。
以下のページを参考にした。
クラゲのIoTテクノロジー
メイちゃんの声にした。

Python2で天気情報をしゃべらせる

以下のページを参考にした。
Raspberry Piにしゃべらせてみた(OpenJTalk 1.08、.htsvoiceファイル対応): Raspberry Piでやってみた
Raspberry Piに現在時刻と、天気をしゃべらせてみた(Python): Raspberry Piでやってみた

天気情報にはWeather Hacksを用いた。 Python bottle, BottleDaemonでサーバを立ててリクエストがきたら天気情報を取得してしゃべるようにした。
実際のコードは以下のとおり。
MESHボタン押すとラズパイが天気喋るよ · GitHub

BottleDaemonにより

$ python app.py start

これでデーモンとして動く。

MESHとの連携

MESHを使用するにはMESH用iOS/Androidアプリと連携させる必要がある。 MESHとiOS/Android端末はBluetoothで接続する。 筆者はiPad 4thを使うことにした。 MESH用iOS/AndroidアプリではMESHからのイベントを取得し、音声再生やメール送信、Javascriptの実行等をGUIプログラミングすることができる。ただし、Javascriptのコードは、別途に書いてMESH SDKに登録する必要がある。なお、アプリはバックグラウンドにしていても動作する。
以下のページを参考にした。
KB_1506/developLog_Software_MESH_Tag.md at master · jphacks/KB_1506 · GitHub

実際のコード以下のとおり。 f:id:masaponto:20170421231707p:plain MESHボタン押すとラズパイが天気喋るよ · GitHub

作業は以上である。

おわり

このページの動画を見て作りたくなった。偶然MESHのボタンタグを入手できたので、今回のことをやろうと思った。これで毎朝、画面を見ることなく天気情報が得られる。今後アイデアがあれば機能を増やしていきたい。