ちぎっては投げるブログ

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

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