ちぎっては投げるブログ

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を合わせるのもいいかもしれない。

Raspberry PiでポケモンGoの出現通知をスマホに送る

やりたいこと

自宅にいるときに、たまにポケモンが現れるようなので、ポケモンGoを起動していない状態でもスマホへ通知したい。

f:id:mczh:20160730142916j:plain

実施した手順をメモしておく。

Botを動かそう

VPSもAWSアカウントも持っていない貧者なのでRaspberry PiでSlackBotを動かすことでインフラをサボることにする。

タイトルにラズパイっていれたけれど、特にセンサーを使ったり持ち歩いたりは想定せず、24時間起動しっぱなしのLinuxサーバとしてしか使っていない。

事前準備

PokemonGo-SlackBotインストール

pythonはRaspberryPiに元から入っていたか覚えていないが、なければインストールしておく(ここでは省略)。

git clone https://github.com/rubenmak/PokemonGo-SlackBot.git
cd PokemonGo-SlackBot
sudo pip install -r requirements.txt

PokemonGo-SlackBot実行

./pokeslack.py -L ja -u トレーナークラブユーザ名 -p パスワード -l "GoogleMap座標" -st インターバル -r 探索半径(m) -sw  WEBHOOK_URL

slackからスマホへ通知が来るかを確認する。

ポケモンアイコンの設定も出来るが、面倒なのでいったん省略した。

これで、PokemonGoのアプリを起動していなくても、出現したら通知が来るようになった。

通知の例

Skackの通知でタマタマがいるぞとと出たのでPokemonGoを起動すると・・・

f:id:mczh:20160730143621j:plain

ちゃんとタマタマがいた。

f:id:mczh:20160730143432j:plain

ほかにやっておきたいこと

  • 自動起動(サービス化)
  • 会社に行っているときは通知が無駄なので、時間制御か在宅制御を入れる

あたりはやろうと思う。 あと、たまに落ちるのでcronで生存チェックなどもしたほうが良いのかも。

追記

結構落ちることがわかったので、やっつけでcrontabで強制終了&復帰するようにした。 6-23時の間、29分と59分にプロセスを殺して、30分と0分に起動させる。(動作確認中) ちゃんとやるなら、ログを書き出してgrepしてリスタートする仕組みをいれるべきだと思う・・・。せめてエラー吐いていないときはkillしないぐらいの工夫はしたほうが良さそう。

sudo crontab -e
#以下を追加
0,30 6-23 * * cd /home/pi/PokemonGo-SlackBot && ./pokeslack.py -L ja -u username -p password -l "GoogleMapPosition" -st Interval -r Radius -sw  https://hooks.slack.com/services/hogehoge > /tmp/poke.log \
&
59,29 6-23 * * * kill `ps -aux | grep pokeslack.py | awk {'print $2'}`

続き

denpa-shinbun.com

ポケットモンスターサン&ムーン、努力値はどうなるんだろう?

f:id:mczh:20160227003818j:plain

発売は2016年冬の予定。 ポケバンクを経由することでVCの赤青緑ピカチュウからポケモンを持って行けるらしいけど、初代って個体値とか努力値が違った気がする。そのあたりどうなるんだろう? 努力値はともかく、そろそろ個体値はなくしてもいいんじゃないだろうか…育て屋さんの前を爆走するお仕事はもう疲れたよ…

ポケットモンスター 赤 専用ダウンロードカード特別版 (幻のポケモン「ミュウ」が『ポケットモンスター X・Y・オメガルビー・アルファサファイア』で受け取れる) &【Amazon.co.jp限定】「ポケットモンスター 赤」デザイン PC壁紙配信(2016年2月27日注文分まで)

ORASの途中でリタイアしてしまったので、最近のポケモンわからないけど、ストーリー新作ぐらいはプレイしたい。

タイトル聞いたときに、みんな「GOLDEN SUN & SILVER MOON おひさまと おつきさま」を思い出したはず。

www.famitsu.com