01. 動作フロー
NEQTO Bridgeの動作フロー概要を説明します。
以降、"NEQTO Bridgeデバイス"を"デバイス"と称します。
※図中の赤い枠は、動作モード説明の開始点を示しています。
デバイスには、大きく分けて以下のモードがあります。
スクリプト実行モード
デバイスの基本動作で、動作スクリプトを実行するモードです。
セーフモード
動作スクリプト実行中に、throwやSyntax errorなどにおいて例外が発生した場合、動作スクリプトの修正を待つモードです。
ファームウェア更新モード
デバイスのファームウェア更新、及びNEQTO Machine Driverを使用してユーザーデバイスのファームウェア更新を行うモードです。
以下に各モードの動作フローを説明します。
スクリプト実行モード
通常起動動作
動作スクリプト実行モードは、デバイスの基本動作です。
デバイスは、起動後に初期化を行います。
初期化後、ネットワークに接続します。
ネットワーク接続後、NEQTO Consoleにアクセスし認証を行います。
認証が完了すると、動作スクリプトをダウンロードし実行します。
ネットワーク未接続時の起動動作
デバイス起動時にネットワーク接続できなかった場合、ネットワーク接続をリトライします。
この状態では、動作スクリプトは実行されないのでご注意ください。
ネットワーク設定や電波環境などを見直し、デバイスを再起動してください。
ノード未登録時の起動動作
NEQTO Console 上ノード未登録の状態で、デバイスを起動した場合、認証で失敗します。
この状態では、動作スクリプトは実行されないのでご注意ください。
ノード登録を確認し、デバイスを再起動してください。
スクリプトの再ロードの動作
スクリプトの再ロードは、一度動作スクリプトを終了し、更新された動作スクリプトをダウンロードして実行する動作となります。
基本的に、メインルーチンが全て完了した状態かつ、タイマやnqMQTTオブジェクト等、コールバック待ちを行うリソースが全て解放されている状態の場合、再ロードが行われます。
一方、リソースの解放を待たずに、再ロードする方法が2つあります。
NEQTO Consoleからのトリガーコマンド(プッシュ通知)契機
NEQTO Console上からトリガーコマンドを使用して、"スクリプトを再ロード"を起動します。
デバイスはNEQTO Consoleから"スクリプトを再ロード"の指示を受信すると、強制的に動作スクリプトを終了し、スクリプトの再ロード動作を行います。
動作スクリプトを更新する場合や、遠隔から意図的にスクリプトを再起動させたい場合等に使用します。既定のハッシュタグを含んだthrow文契機
下記、throw文を実行すると、動作スクリプト内から自発的に再ロードを起動させることができます。
定期的にスクリプトの更新がないか確認を行う場合や意図的にスクリプトを再起動させたい場合等に使用します。throw '#nqEXIT';
throw new Error('#nqEXIT');
スタンバイモードの動作
動作スクリプト上から下記メソッドを使用して、デバイスをスタンバイモードに遷移させることができます。
スタンバイモードは、電源オフに近い状態でデバイスが待機状態となります。
レジューム条件が発生すると、通常起動動作から再び開始されます。(通常レジューム)
sleep.setStandby() (推奨)
1. ネットワーク通信をシャットダウンしてから、スタンバイモードに遷移します。
待機電力を最も削減できます。
sleep.setStandbySync()
2.ネットワーク通信を維持した状態で、スタンバイモードに即時遷移します。
ネットワーク通信が維持されているため、sleep.setStandby()メソッドを使用した場合と比較して、スタンバイ時の消費電力が増加します。他に機能的な違いがないため、sleep.setStandby()メソッドを使用することを推奨します。
スタンバイモードのオフラインレジューム動作
上記、スタンバイモードメソッドには「オフラインレジューム」オプションがあります。
レジューム条件が発生すると、デバイスは再起動し、ネットワーク接続をスキップして、保持されている動作スクリプトをすぐに実行します。
オフラインレジュームでは、通信機能を要する機能を使用することができません。
尚、ユーザースイッチが押下された時のみ、強制的に通常レジュームとなります。(※1)
スタンバイモードのレジューム条件
- ウェイクアップトリガ設定を有効にしたポートでエッジ変化を検出した時
- ユーザースイッチが押下された時 (※1)
- RTCアラームが発生した時
ストップモードの動作
動作スクリプト上から下記メソッドを使用して、デバイスをストップモードに遷移させることができます。
ストップモードは、スクリプトの実行が一時停止された状態でデバイスがスリープ状態になります。
レジューム条件が発生すると、スクリプト実行が再開されます。又、必要に応じてネットワークの再接続が自動的に開始されます。
sleep.setStop()
1.ネットワーク通信をシャットダウンしてから、ストップモードに遷移します。
待機電力を削減することができます。
但し、レジューム時にネットワークの再接続が必要となるため、通信機能が使用できるまで時間を要します。
sleep.setStopSync() (※2)
2.ネットワーク通信を維持した状態で、ストップモードに即時遷移します。
ネットワーク通信が維持されているため、待機時の消費電力は増加しますが、レジューム後、すぐに通信機能を使用できます。
ストップモードのレジューム条件
- IOポート入力割り込み設定されたポートでエッジ変化を検出した時
- ユーザースイッチポートでエッジ変化を検出した時
- RTCアラームが発生した時
- LTE通信切断が発生した時 (
NEQTO Bridge LTEモジュール
かつsleep.setStopSync()
を使用した場合のみ) (※2)
セーフモード
セーフモード動作
動作スクリプト実行中に、throwやSyntax errorなどにおいて例外が発生した場合、動作スクリプトの修正を待ちます。この状態をセーフモードと呼びます。
動作スクリプトを確認、修正し、NEQTO Console上からトリガーコマンドを使用して、"スクリプトを再ロード"を起動します。
デバイスは、NEQTO Console から"スクリプトを再ロード"の指示を受信すると、更新された動作スクリプトをダウンロードし実行します。
また、デバイスはセーフモード中に自ら動作スクリプトの更新確認を行います。
確認を行う間隔は、
1分、2分、4分、8分、16分、30分...と延びていき、それ以降は30分間隔です。
ファームウェア更新モード
NEQTO Machine Driverを使用したユーザーデバイスのファームウェア更新動作
デバイスはNEQTO Console からMachine Driver更新指示を受信すると、Machine Driverスクリプトをダウンロードし実行します。
Machine Driverスクリプトが、ファームウェアイメージファイルのダウンロードやユーザーデバイスのファームウェア更新を行います。
Machine Driverスクリプト処理が終了すると、動作スクリプト実行に戻ります。
デバイスファームウェア更新動作
デバイスはNEQTO Console からファームウェア更新指示を受信すると、ファームウェアをダウンロードし、ファームウェア更新を行います。
ファームウェア更新が完了すると、自動的に再起動が行われ、通常動作に戻ります。
尚、既にデバイスのファームウェアが更新済みであった場合、ファームウェア更新処理はスキップされます。
注意
ファームウェア更新中は、デバイスの電源を切らないでください。
システム時刻同期について
デバイスはNEQTO Consoleから時刻情報を取得し、自動的に時刻同期します。
時刻同期が行われるタイミングは下記となります。
フェーズ | 時刻更新タイミング |
---|---|
NEQTO Console間認証時 | デバイス起動時等、認証シーケンスが実行された時 |
動作スクリプト実行中 | 定期的に1日1回 |
nqServiceオブジェクトの時刻補正メソッドを実行した時 | 任意タイミング |