ラズパイ、node.jsで緊急地震速報
2017/10/19
現在のところ、家のラズパイで天気予報などを定時で喋らせたりしている。
緊急地震速報なども流せたら便利っぽいなと思いつつも、APIがわからないとか色々あって諦め掛けていた。
しかしtwitterでかなり精度の高いアカウント(bot)が存在しているのでそれを元に喋らせればいいのでは、と思いつきやってみた
まずはbot。
37,00,2017/10/04 14:35:57,9,8,ND20171004143206,2017/10/04 14:32:42,37.3,134.7,日本海中部,390,3.7,不明,1,0
— 緊急地震速報Bot (@eewbot) 2017年10月4日
こちらが精度高く他の多数のbotにも利用されてるみたい。
■■緊急地震速報(最終報)■■ 茨城県北部で地震 最大震度 3(推定) [詳細] 2017/10/01 10:25:06発生 M4.8 深さ10km #緊急地震速報
— 緊急地震速報bot(α) (@zishin3255_2) 2017年10月1日
CSVをパースしたり地域や震度で選定するのが今の所面倒なのでこちらのbotがツイートしたら瞬時に喋り出すようにしたい。
twitterのリアルタイム検知はどうする→Node.jsからstreaming APIを使用
以前にslackでhubotを作成した際にNodeはインストールしてあるのでここら辺は割愛
npmでnode-twitterインストール
とても簡単。使うtwitterAPIはstreaming API
{
const execSync = require('child_process').execSync;
var twitter = require('twitter');
var bot = new twitter({
consumer_key : '',
consumer_secret : '',
access_token_key : '',
access_token_secret : ''
});
bot.stream('statuses/filter',
{follow: 'XXXXXXXX'}, //フォロー中のアカウントのtwitterID
function(stream) {
stream.on('data', function(tweet) {
//tweetがあれば読み上げ
var result = execSync('/home/pi/aquestalkpi/AquesTalkPi ' + tweet.text + '| aplay').toString();
});
stream.on('error', function(error) {
console.log(error);
});
}
);
}
ツイッターIDがわかれば特定の人のツイートが監視できるということがわかりました。もっと冴えたやり方があるかもしれませんが、とりあえず。
ラズパイが喋るのはAquesTalkPiを使っています。いきなり喋るのがびっくりするので通知音を先にならすとかいいかも。
ツイッターID調べるのが面倒な件ですが、下記サービスで使わせていただきました
これで我が家のラズパイも地震速報を伝えるように。永続化と再起動しても動作するようにはまだしてないですが。
この辺りで。さらには光も追加したい!と思ったらAmazonでちょうどいいのが
お値段も手頃だし、次に試してみたいところ。
【追記】上記のままのコードではRTやリプまで取れてしまって大変やかましいことになりますので、RTや重複を取らない工夫をして各自修正ください。