この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
AWS IoT Eventsで作成した探知機モデルを更新するとき、ディテクター状態の初期化について確認されます。
そこで思ったのです。探知機モデルを更新したあと、次のメッセージが来るまでに取得したディテクターの状態は何になっているんだろう?と。
まずは現状を確認する
以前に作成した探知機モデルを使います。 ここには2つのディテクターが存在しており、状態は2つともofflineになっています。
aws iotevents-data list-detectors \
--detector-model-name SampleHeartbeatModel
上記コマンドの実行結果が次になっています。
{
"detectorSummaries": [
{
"detectorModelName": "SampleHeartbeatModel",
"keyValue": "d1234",
"detectorModelVersion": "1",
"state": {
"stateName": "offline"
},
"creationTime": 1595910461.44,
"lastUpdateTime": 1595931293.428
},
{
"detectorModelName": "SampleHeartbeatModel",
"keyValue": "d7777",
"detectorModelVersion": "1",
"state": {
"stateName": "offline"
},
"creationTime": 1595911196.103,
"lastUpdateTime": 1595931297.882
}
]
}
探知機モデルを更新する
探知機モデルを開き、online状態のOnEnterであるInit_timer
について、ハートビート用のタイマーを5分から3分に変更します。
続いて、探知機モデルを保存して発行します。
このタイミングで冒頭の確認が行われます。「はい」を押して続行します。
探知機モデルを公開した直後のディテクターの様子
ディテクターの状態は、offlineのまま変更はありません。
コマンド実行した結果も同じです。
{
"detectorSummaries": [
{
"detectorModelName": "SampleHeartbeatModel",
"keyValue": "d1234",
"detectorModelVersion": "1",
"state": {
"stateName": "offline"
},
"creationTime": 1595910461.44,
"lastUpdateTime": 1595931293.428
},
{
"detectorModelName": "SampleHeartbeatModel",
"keyValue": "d7777",
"detectorModelVersion": "1",
"state": {
"stateName": "offline"
},
"creationTime": 1595911196.103,
"lastUpdateTime": 1595931297.882
}
]
}
ハートビートを送信したあとのディテクターの様子
d1234
のデバイスについて、ハートビート送信します。
この状態でディテクターの様子を確認すると、d1234
のみがonline状態になっていました(期待通り)。
コマンドを実行して一覧取得すると、d1234
のみ更新されていました。detectorModelVersion
も2
になっています。
{
"detectorSummaries": [
{
"detectorModelName": "SampleHeartbeatModel",
"keyValue": "d1234",
"detectorModelVersion": "2",
"state": {
"stateName": "online"
},
"creationTime": 1596157131.895,
"lastUpdateTime": 1596157131.896
},
{
"detectorModelName": "SampleHeartbeatModel",
"keyValue": "d7777",
"detectorModelVersion": "1",
"state": {
"stateName": "offline"
},
"creationTime": 1595911196.103,
"lastUpdateTime": 1595931297.882
}
]
}
ただし、初期化されたという性質上、「デバイス切断状態が復旧しました」というメールは届いていません。 (offline状態のOnExitにイベントが存在するため)
まとめ
探知機モデルを更新したあと、次のメッセージが来るまでに取得したディテクターの状態は「変化しない」が答えでした。
探知機モデル | d1234 | d7777 |
---|---|---|
更新前 | offline(v1) | offline(v1) |
更新直後 | offline(v1) | offline(v1) |
d1234ハートビート送信後 | online(v2) | offline(v1) |
これらの特徴を踏まえて探知機モデルを新規作成・更新していきたいですね。