ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

自宅にポケモンが現れたら、実際に鳴き声を流したい #ポケモンGo

denpa-shinbun.com

の続き。

せっかくRaspberry Piを使っているので、サーバでは出来ないことをしたいと思い、ポケモンの鳴き声を出してみることにした。

これで、ポケモンが現れると鳴き声が現実世界に鳴り響くという、仮想と現実がよりいりまじった、良い感じの世界観を作ることが出来る。

用意するモノ

  • Raspberry Pi
  • スピーカー
  • 鳴き声の音源ファイル

ちなみに我が家のスピーカはUSB電源、音声アナログ入力のこれ

準備

  • Raspberry Piにスピーカーを繋ぐ。
  • 鳴き声の音源ファイルをRaspberryPi上に保存する
    • ファイル名は0埋めした3桁図鑑No.wavとし、フォルダ名はpokevoiceとする
  • sudo -u root aplay -D plughw:0,0 適当なwav のコマンドで再生できることを確認しておく
    • Botをrootじゃないユーザで実行するならsudoは不要
    • plughwの値は、aplay -lで確認する
    • 音量も調整しておく

PokemonGo-SlackBotの編集

pythonは触ったことがないが、雰囲気で・・・。

send_to_slack関数を呼ぶ直前で、aplayにて音を再生すれば良い。

具体的には、mainprocess_step関数 でsend_to_slack関数を呼んでいるif文があるので、そこを編集する。

diffはこんな感じ。

$ git diff
diff --git a/pokemon_pb2.pyc b/pokemon_pb2.pyc
index a20598a..1aa12c1 100644
Binary files a/pokemon_pb2.pyc and b/pokemon_pb2.pyc differ
diff --git a/pokeslack.py b/pokeslack.py
index 4c2f5e7..fdb361b 100755
--- a/pokeslack.py
+++ b/pokeslack.py
@@ -922,8 +922,10 @@ transform_from_wgs_to_gcj(Location(Fort.Latitude, Fort.Longitude))
             else:
                 user_icon = ':pokeball:'

-
-
+            print "pokemon = " + str(poke.pokemon.PokemonId)
+            from subprocess import check_call
+            cmd =  "aplay -D plughw:2,0 ./pokevoice/" + str(poke.pokemon.PokemonId).zfill(3) + ".wav"
+            check_call( cmd.split(" ") )
             send_to_slack(alert_text, pokename, user_icon, slack_webhook_urlpath)

             spotted_pokemon[poke.SpawnPointId] = {'disappear_datetime': disappear_datetime, 'pokename': pokename}
diff --git a/transform.pyc b/transform.pyc
index 2875abb..9a0e24f 100644

処理内容は見たまま単純で、図鑑Noを取ってきて0埋めしてファイルパスにし、aplayに渡しているだけである。

AR感が出てきてなかなか良い感じなので、かなりおすすめだ。さらに戦闘突入BGMを合わせるのもいいかもしれない。