Gravioセンサーのデータっていつ送られてくるの？

Gravioのセンサーって、どんなときに送信するの？とよく聞かれるます。

Gravioのクライメートセンサー（温湿度気圧）、人感センサー、振動センサー、ドア開閉センサー、ワイヤレススイッチ、ワイヤレスダブルスイッチはLumi社のAqaraシリーズです。できるだけ電池持ちが良くなるように最低限のデータしか送信しません。詳しくは提供元のサイトのFAQに書いてあるのでそれを参考にまとめてみました。

# クライメートセンサー（温湿度気圧）
よくある温度センサーは、数秒おきに常にデータを送ってきます。しかし、実際にはそんなに温度が変化することはないですよね。なので、Gravioのクライメートセンサーは最低限しか送ってきません。
センサーのサイトはここ。FAQを開いてみてください。
https://www.aqara.com/us/temperature_humidity_sensor.html

FAQには次のように書いてあります。

> If the temperature humidity and atmospheric pressure varies a bit only, data will be reported once an hour. If the temperature variation exceeds 0.5℃, the humidity variation exceeds 6% and the atmospheric pressure is no less than 25Pa, data will be reported instantly.

つまり、ざっくりまとめるとこんな感じです。

* 基本的には1時間に1度だけ送信
* 温度が**0.5℃**、湿度が**6%**、気圧が**25Pa=0.25hPa**変わったらすぐに送信

まぁ、普通の環境で1時間何も変わらないってことはなさそうですが、環境を完全にコントロールされてる場所ならありえますかね。湿度が6%ってのは結構変わらないと送信されませんね。その前に温度や気圧が変わりそう。

# 人感センサー
Gravioの人感センサーは、PIRセンサーです。なので、検出範囲内で赤外線放射の変化があるとデータを送信します。つまり、人間が動くとデータを送信するということですね。逆に人間が動かないとデータを送信しません。だれもいないときもデータは送られません。ここはポイントです。世の中には人がいるときといないときにそれぞれ別のデータを送信する人感センサーもありますが、Gravioのセンサーは人に動きがあるときだけということです。
センサーのサイトはこちらです。
https://www.aqara.com/us/motion_sensor.html
まずは検出範囲。Specsを開くと次のようにあります。

* Maximum Detection Distance: 7m
* Maximum Detection Angle: 170°

だとよく分からないですね。(笑)
こちらにドキュメントもあるので、見てみてください。範囲が図で示されてます。**高さ2.1mにまっすぐ横を向くように設置して直線で7m、斜め下で2m程度**ってことみたいです。
https://cdn.cnbj2.fds.api.mi-img.com/cdn/aqara/website/manuals_en/Motion%20Sensor%20Quick%20Start%20Guide.pdf

で、反応するとダダダーっと送ってくるわけでもありません。こちらはFAQを開きましょう。

> One hour after it is connected to the network (Newly added to the network mode), the Motion Sensor is triggered once every 5 seconds. If it is not triggered within an hour, it automatically enters Normal User Mode. It is then triggered once every minute.

つまり、これもざくっとまとめるとこんな感じです。

* **最初の1時間は5秒に1回**に反応します
* **1時間全く反応がない場合、その後は1分に1回しか反応しなくなります**。

ちなみに、FAQを見ると、ペットなんかでも大丈夫みたいですが、**他の熱源には注意**とのこと。ストーブとかエアコンとかですね。あと、人間でも分厚いコートを着てると反応しないというのも聞いたことがあります。

# 振動センサー
Gravioの振動センサーはちょっと特殊です。通常の振動センサーは3軸の動きをちょこちょこ送ってきますが、Gravioの振動センサーはセンサーの動きをある程度抽象化された形で検知します。
検知のタイプは、vibration, tilt, dropです。tiltやdropは即時に反応しますが、vibrationはちょっと癖があります。

> The "vibration detected" event is triggered once a minute. If the event has been triggered, then it will not be triggered for the next minute. If the vibrations persist, the event will be triggered again a minute later.

Gravio的にはVibration detectedイベントは*Aqara-Vibration-Movement*というレイヤーでデータを受信します。これは振動している間ずっと送信しているわけではなく、**1分に1回**です。ずっと動いていれば1分に1回データが送信されます。
また、センサーに動きがない場合は、*Aqara-Vibration-Stable*にイベントが来ます。動きがあってからしばらく立った後、だいたい3～4分後くらいにReadyのデータが送信されます。vibrationもtiltもdropも検知されてない状態が続いた場合にデータを送信しますが、数分～数十分後に再度データが送信される場合もあり、Aqaraのサイトには細かいところが書いてないのでルールはわかりません。。。

tiltイベント、dropイベントは、それぞれ*Aqara-Vibration-Inclination*レイヤー、*Aqara-Vibration-Falling*レイヤーでデータを受信します。基本的に、傾きが変わった、物体が落ちたという動きを検知するとデータが送信されます。

# ワイヤレススイッチ
ワイヤレススイッチはボタンです。1回押し、2回押し、長押しがあります。長押しの場合、押し込んだときと離したときにデータが送信されます。分かりやすいですね。
センサーのサイトはこちら。
https://www.aqara.com/us/wireless_mini_switch.html
FAQにも特に細かい仕様はありません。長押しはだいたい2秒程度みたいです。1秒位で離すと1回押しになります。2回押しも1秒程度間隔が開くと1回押しが2回とカウントされてしまうようです。このあたりは自分で試してみてくださいね。

# ワイヤレスダブルスイッチ
ワイヤレスダブルスイッチはワイヤレスボタンとほぼ同じですが、ボタンが2つついてます。左、右、両方と押された場所によってデータが変わります。
サイトはこちらですが、ここにも大したことは書いてません。単純ですからね。
https://www.aqara.com/us/wireless_remote_switch.html

ワイヤレススイッチと違って、2回押しや長押しはありません。
ちなみに、このセンサーだけはリセットボタンがありません。リセットするには、両方のボタンをLEDが点滅するまで長押しします。

# ドア・窓開閉センサー
ドア・窓開閉センサーは、マグネットとペアになってます。マグネットが近くにあるとClose、離れるとOpenというデータを送信します。
サイトはこちら。
https://www.aqara.com/us/door_and_window_sensor.html

一応、仕様としては、**Maximum Detection Distance**が**22mm**となっています。ただ、これは磁力に依存するので、一概に言えません。目安と考えてください。より離れた位置で検知したい場合は、ネオジムなどの強力な磁石を使うことでもう少し距離を稼ぐこともできます。

また、基本的には検知時にデータが送信されますが、開閉の程度によって、複数回データが送信されることがありますので注意してください。これは磁力で見てるので仕方ないですね。多少のゆるさもIoTならではです。

# CO2センサー
最後にこれは最近追加されたスタンダードプラン以上で利用できるGravioブランドのセンサーです。なので、サイトのページはありませんが、CO2データは**10秒に1回**送信します。USB給電なので電池持ちは関係ないからですね。

以上、Gravioのセンサーのデータ送信のタイミングやそれにまつわるエトセトラでした。