blog.cateiru.com

cateiru's blog

OpenEEWの仕組みを理解する

OpenEEWというものを知っていますか?
OpenEEWはオープンソースで開発されているEEW(緊急地震速報)システムです。

これを使用することで、日本のように地震警報システムを持たない国でもユーザが地震感知デバイスを自宅に設置することEEWを出せるようになります。

openeew.com

注意: 日本では気象業務法「第二十三条」気象庁以外が地震の警報を出してはいけないことになっています。

仕組み

バイス

OpenEEWでは、地震を検知するために独自のセンサデバイスを使用します。

github.com

このデバイスは、加速度センサーとGPSが入っておりセンサの情報をリアルタイムでサーバーに送信できるようになっています。

ファームウェアC++で記述されています。

github.com

サーバー

サーバーは中央集権型のようになっており、k8s上でマイクロサービスとして実行できるようです。

github.com

サーバーでは、デバイスMQTTと呼ばれるTCP/IPによるPub/Sub型のデータ配信モデルのプロトコルで通信しています。

バイスが揺れを感知すると、サーバーにMQTT経由で情報を送り、サーバーはdetection.pyに送信します。detection.pyで揺れを地震として検知するとMQTT経由で次に、multi_station.pyに送信されます。multi_station.pyは、MQTTにEEWをPublishします。受信する機器は、IoTデバイスなどに送信されるようになっています。これは、IoTデバイスでなくても、自分で実装すればスマホアプリのPush通知やTwitterへのツイートなども可能なようです(react-nativeでのスマホアプリ実装が存在します)。

サーバーは自身に時系列DBを持っており、multi_station.pyがデバイスメタデータを取得するために使用されているようです。時系列DBにはdevice_idlatlonCSV形式で格納されているようです(multi_station.pyは完全に実装されていないようです)。

また、その他にAWS AuroraとS3が必要で、こちらは公開される地震の情報を格納し、ダッシュボードなどで閲覧できるようになるっぽいです。

image

引用元: GitHub - openeew/openeew-detection: Earthquake detection for OpenEEW sensors

推しどころ

世界には、ユーザから受け取ったデータを使用してサービスを運用しているもの*1も存在します。 そのようなサービスでは、商用であるため収益が第一として来ます。しかし、OpenEEWは完全なオープンソースとしてすべてのコードが公開されています。このOSSのコントリビューターが増えてより汎用性が高い状態になったら地震が頻繁に起きる地域で安価でEEWを提供できるようになるのではないでしょうか。

課題

私目線で、課題が存在します。1つ目に、2022年10月現在活動があまり活発ではありません。私は、まだ「完全に理解した」レベルの人でコントリビューターではないので今後コントリビュートをしたいと思っています。

2つ目は、地震を検知するセンサデバイスが高価なことです。加速度センサーは既存品を使用していますが8000円ほどするため結構辛いです。また、PCBWayと書いてあるのですが現在品切れ中なので自分で作る以外に方法が無い状態でハードルが高い状態です。

これら2つの課題がクリアできれば、より良いOSSになるのではないでしょうか?みんなも、コントリビュートしてみよう!!

*1:例として、世界中の航空機の場所がわかるflightrader24もユーザのアンテナから受信した航空機情報をサーバーで解析してサービスを提供しています。