04. 動作フロー
NEQTO Engineの動作フロー概要を説明します。
図中の太枠は、動作モード説明の開始点を示します。
NEQTO Engineには、大きく分けて以下のモードがあります。
スクリプト実行モード
NEQTO Engineの基本動作で、動作スクリプトを実行するモードです。セーフモード
動作スクリプト実行中に、throwやSyntax errorなどにおいて例外が発生した場合、動作スクリプトの修正を待つモードです。ファームウェア更新モード
NEQTO Engineソフトウェア更新およびNEQTO Machine Driverを使用してユーザーデバイスのファームウェア更新を行うモードです。
以下に各モードの動作フローを説明します。
スクリプト実行モード
通常起動動作
動作スクリプト実行モードは、NEQTO Engineの基本動作です。
NEQTO Engineは、起動後に初期化を行います。
初期化後、ネットワークに接続します。
ネットワーク接続後、NEQTO Consoleにアクセスし認証を行います。
認証が完了すると、動作スクリプトをダウンロードし実行します。
ネットワーク未接続時の起動動作
NEQTO Engine起動時にネットワーク接続できなかった場合、ネットワーク接続をリトライします。
この状態では、動作スクリプトは実行されません。
ノード未登録時の起動動作
NEQTO Console上ノード未登録の状態で、NEQTO Engineを起動した場合、認証で失敗します。
この状態では、動作スクリプトは実行されません。
スクリプトの再ロードの動作
スクリプトの再ロードは、一度動作スクリプトを終了し、更新された動作スクリプトをダウンロードして実行する動作となります。
基本的に、メインルーチンが全て完了した状態かつ、タイマやnqMQTTオブジェクト等、コールバック待ちを行うリソースが全て解放されている状態の場合、再ロードが行われます。
一方、リソースの解放を待たずに、再ロードする方法が2つあります。
NEQTO Consoleからのトリガーコマンド(プッシュ通知)契機
NEQTO Console上からトリガーコマンドを使用して、"スクリプトを再ロード"を起動します。
NEQTO EngineはNEQTO Consoleから"スクリプトを再ロード"の指示を受信すると、強制的に動作スクリプトを終了し、スクリプトの再ロード動作を行います。
動作スクリプトを更新する場合や、遠隔から意図的にスクリプトを再起動させたい場合等に使用します。既定のハッシュタグを含んだthrow文契機
下記、throw文を実行すると、動作スクリプト内から自発的に再ロードを起動させることができます。
定期的にスクリプトの更新がないか確認を行う場合や意図的にスクリプトを再起動させたい場合等に使用します。throw '#nqEXIT';
throw new Error('#nqEXIT');
Expressモード有効時の起動動作
通常起動動作では、スクリプトが起動するまでに、ネットワーク接続、認証及びスクリプトのダウンロードが必須となります。Expressモードはこれらの必須条件をバイパスし、スクリプトを起動することを可能とする機能です。
NEQTO Engineは起動直後、ネットワーク接続から開始しますが、環境等の要因でネットワーク疎通までに時間を要する場合があることが想定されます。しかしながら、スクリプトをできるだけ早く動作させる必要がある場合にExpressモードが有効です。
Expressモードを有効とした場合、ネットワーク接続待ちタイムアウト処理が有効となります。
タイムアウト前にネットワークが疎通できた場合は、通常起動動作が継続され、認証、スクリプトのダウンロード、スクリプトの起動となります。
タイムアウトが発生した場合は、認証、スクリプトのダウンロードがバイパスされ、NEQTO Engine内に保存されている前回ダウンロード済みのスクリプトが起動します。尚、ネットワーク接続待ちタイムアウト後も、ネットワーク接続処理は継続されており、ネットワーク疎通した時点から通信機能を要する機能が使用可能となります。
Expressモード設定
ExpressモードはNEQTO Console上から有効/無効を切り替えます。こちらを参照してください。
ネットワーク接続待ちタイムアウト値
タイムアウト値はnqService.setExpressConf()メソッドで設定変更が可能です。デフォルト値は15
秒となります。0
を指定した場合は、実質、ネットワーク接続待ちを行わないため、即座に前回ダウンロード済みのスクリプトを起動することができます。
セーフモード
セーフモード動作
動作スクリプト実行中に、throwやSyntax errorなどにおいて例外が発生した場合、動作スクリプトの修正を待ちます。この状態をセーフモードと呼びます。
動作スクリプトを確認、修正し、NEQTO Console上からトリガーコマンドを使用して、"スクリプトを再ロード"を起動します。
NEQTO Engineは、NEQTO Console から"スクリプトを再ロード"の指示を受信すると、更新された動作スクリプトをダウンロードし実行します。
また、NEQTO Engineはセーフモード中に自ら動作スクリプトの更新確認を行います。
確認を行う間隔は、
1分、2分、4分、8分、16分、30分...と延びていき、それ以降は30分間隔です。
ファームウェア更新モード
NEQTO Machine Driverを使用したユーザーデバイスのファームウェア更新動作
NEQTO EngineはNEQTO Console からMachine Driver更新指示を受信すると、Machine Driverスクリプトをダウンロードし実行します。
Machine Driverスクリプトが、ファームウェアイメージファイルのダウンロードやユーザーデバイスのファームウェア更新を行います。
Machine Driverスクリプト処理が終了すると、動作スクリプト実行に戻ります。
NEQTO Engineソフトウェア更新動作
NEQTO EngineはNEQTO Consoleからファームウェア更新指示を受信すると、NEQTO Engine自身のソフトウェアをダウンロードし、更新を行います。
ソフトウェア更新が完了すると、自動的にNEQTO Engineが再起動し、通常動作に戻ります。
尚、既にソフトウェアが更新済みであった場合、更新処理はスキップされます。
注意: ソフトウェア更新中は、Linuxデバイスの電源を切らないでください。
システム時刻同期について
NEQTO EngineはNEQTO Consoleから時刻情報を取得し、システム時刻を補正します。
時刻同期が行われるタイミングは下記となります。
自動で行われるシステム時刻同期に関しては自動時刻補正設定が有効の場合のみ実施されます。
NEQTO Engine for Linuxではデフォルト無効となります。
カテゴリ | フェーズ | 時刻更新タイミング |
---|---|---|
自動 | NEQTO Console間認証時 | NEQTO Engine起動時等、認証シーケンスが 実行された時 |
自動 | 動作スクリプト実行中 | 定期的に1日1回 |
手動 | nqServiceオブジェクトの時刻補正メソッドを 実行した時 | 任意タイミング |