やりたいこと
自宅にいるときに、たまにポケモンが現れるようなので、ポケモンGoを起動していない状態でもスマホへ通知したい。
実施した手順をメモしておく。
Botを動かそう
VPSもAWSアカウントも持っていない貧者なのでRaspberry PiでSlackBotを動かすことでインフラをサボることにする。
タイトルにラズパイっていれたけれど、特にセンサーを使ったり持ち歩いたりは想定せず、24時間起動しっぱなしのLinuxサーバとしてしか使っていない。
事前準備
- Slackのアカウントとチームを(なければ)作る https://slack.com/
- Slackのチャンネルを作る
- Incoming WebHooksで投稿するチャンネルを指定してURLを取得する https://my.slack.com/services/new/incoming-webhook/
- Slackアプリをスマホにインストールし、チームに参加する Slack - Google Play の Android アプリ
- ポケモントレーナークラブのアカウントがなければ作る ポケモントレーナークラブ | Pokemon.com
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を起動すると・・・
ちゃんとタマタマがいた。
ほかにやっておきたいこと
- 自動起動(サービス化)
- 会社に行っているときは通知が無駄なので、時間制御か在宅制御を入れる
あたりはやろうと思う。 あと、たまに落ちるので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'}`