09. Sleep
sleepオブジェクトは、省電力機能を提供する組み込みオブジェクトです。
機能概要:
- ストップモードをサポートします。
- スタンバイモードをサポートします。
- バックアップRAMへのデータの読み書き機能を提供します。
- 無線通信を制御する機能を提供します。
省電力機能の詳細動作についてはこちらを参照してください。
バックアップRAMは給電が続く限り、省電力モードに遷移しても、設定値が保持されるメモリです。給電が停止すると、設定値は失われます。
sleep Global Object
Methods()/Properties | Summary | Version | Note |
---|---|---|---|
sleep.setStop() | ネットワーク通信をシャットダウンしてからストップモードに遷移します。 | 00.00.15+ | |
sleep.setStopSync() | ネットワーク通信を維持した状態で、ストップモードに即時遷移します。 | 00.00.15+ | |
sleep.setStandby() | ネットワーク通信をシャットダウンしてからスタンバイモードに遷移します。 | 00.00.15+ | |
sleep.setStandbySync() | ネットワーク通信を強制的にシャットダウンしてからスタンバイモードに即時遷移します。 ネットワーク通信を維持した状態で、スタンバイモードに即時遷移します。(旧バージョン) | 02.00.00+ | |
sleep.getEntryResumeControl() | 直前に設定されていたresumeFlag値を取得します。 | 00.00.15+ | |
sleep.setUserRegister() | バックアップRAMに任意の値を保存します。 | 00.00.15+ | |
sleep.getUserRegister() | バックアップRAMに保存されている値を取得します。 | 00.00.15+ | |
sleep.setRadio() | 無線通信の有効/無効を設定します。 | 02.00.00+ | |
sleep.setRadioSync() | 無線通信の有効/無効を設定します。 | 02.00.00+ |
Details
sleep.setStop(rtcAlarm[,callback][,netoff])
ネットワーク通信をシャットダウンしてからストップモードに遷移します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
rtcAlarm | Object | mandatory | レジューム時刻 hour : {number} アラーム発生時刻[時] 設定範囲: 0~23 (※1) minute : {number} アラーム発生時刻[分] 設定範囲: 0~59 (※1) second : {number} アラーム発生時刻[秒] 設定範囲: 0~59 (※1) | ※1: アラームによるレジュームを使用しない場合は-1 を指定します。 |
callback(flag) | function | optional | イベント発生時にコールバック処理を実行します。 flag : {number} イベント内容を示します。 0: ストップモードに遷移する直前 1: ストップモードから復帰した直後 | |
netoff | boolean | optional | ネットワークシャットダウン設定 true: 有効 false: 無効 デフォルト値はtrueとなります。 | Version 02.00.00+ |
return | undefined | - | - | 異常が発生した時は、例外となります。 |
sleep.setStopSync(rtcAlarm)
ネットワーク通信を維持した状態で、ストップモードに即時遷移します。
本メソッドの中で即時遷移します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
rtcAlarm | Object | mandatory | レジューム時刻 hour : {number} アラーム発生時刻[時] 設定範囲: 0~23 (※1) minute : {number} アラーム発生時刻[分] 設定範囲: 0~59 (※1) second : {number} アラーム発生時刻[秒] 設定範囲: 0~59 (※1) | ※1: アラームによるレジュームを使用しない場合は-1 を指定します。 |
return | undefined | - | - | 異常が発生した時は、例外となります。 |
sleep.setStandby(rtcAlarm,resumeFlag[,callback])
ネットワーク通信をシャットダウンしてからスタンバイモードに遷移します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
rtcAlarm | Object | mandatory | レジューム時刻 hour : {number} アラーム発生時刻[時] 設定範囲: 0~23 (※1) minute : {number} アラーム発生時刻[分] 設定範囲: 0~59 (※1) second : {number} アラーム発生時刻[秒] 設定範囲: 0~59 (※1) | ※1: アラームによるレジュームを使用しない場合は-1 を指定します。 |
resumeFlag | number | mandatory | レジューム時の動作を指定します。 0: 通常レジューム 0 以外: オフラインレジューム | |
callback() | function | optional | スタンバイモードへ遷移する直前にコールバック処理を実行します。 | |
return | undefined | - | - | 異常が発生した時は、例外となります。 |
sleep.setStandbySync(rtcAlarm,resumeFlag)
ネットワーク通信を強制的にシャットダウンしてからスタンバイモードに即時遷移します。本メソッドの中で即時遷移します。(Version 02.00.00+)
ネットワーク通信を維持した状態で、スタンバイモードに即時遷移します。本メソッドの中で即時遷移します。(旧バージョン)
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
rtcAlarm | Object | mandatory | レジューム時刻 hour : {number} アラーム発生時刻[時] 設定範囲: 0~23 (※1) minute : {number} アラーム発生時刻[分] 設定範囲: 0~59 (※1) second : {number} アラーム発生時刻[秒] 設定範囲: 0~59 (※1) | ※1: アラームによるレジュームを使用しない場合は-1 を指定します。 |
resumeFlag | number | mandatory | レジューム時の動作を指定します。 0: 通常レジューム 0以外: オフラインレジューム | |
return | undefined | - | - | 異常が発生した時は、例外となります。 |
sleep.getEntryResumeControl()
直前に設定されていたresumeFlag値を取得します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
return | number | - | resumeFlag値 | 0以外の値は1に丸められます。 |
sleep.setUserRegister(userValue)
バックアップRAMに任意の値を保存します。
汎用的に使用可能です。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
userValue | number | mandatory | 任意の値 設定範囲: 0~65535 (0x0000~0xFFFF) | |
return | undefined | - | - |
sleep.getUserRegister()
バックアップRAMに保存されている値を取得します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
return | number | - | 読み出した値 | 給電が停止し値が消滅した場合や値が未設定の場合は0 となります。 |
sleep.setRadio(ctrl[,callback])
無線通信の有効/無効を設定します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
ctrl | number | mandatory | 無線通信設定 0: 無線通信OFF 1: 無線通信ON | 無線通信OFF を指定した場合、ネットワークを使用したサービス・機能が使用できなくなります。回復する場合は無線通信ON 設定に戻す必要があります。 |
callback() | function | optional | 指定された無線通信設定が完了した際にコールバック処理を実行します。 | |
return | undefined | - | - | 異常が発生した時は、例外となります。 |
sleep.setRadioSync(ctrl)
無線通信の有効/無効を設定します。
本メソッドの中で即時遷移します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
ctrl | number | mandatory | 無線通信設定 0: 無線通信OFF 1: 無線通信ON | 無線通信OFF を指定した場合、ネットワークを使用したサービス・機能が使用できなくなります。回復する場合は無線通信ON 設定に戻す必要があります。 |
return | undefined | - | - | 異常が発生した時は、例外となります。 |
オブジェクトの使用例
Sample 1
ストップモードのサンプルです。
現在時刻を基にスリープとレジュームを繰り返します。
var MAX_COUNT = 10;
var count = MAX_COUNT;
while(count-- > 0) {
print('Hello stop-mode');
var set_date = new Date();
print('Now time: ' + set_date.toString());
set_date.setSeconds(set_date.getSeconds() + 30);
var rtc_time = {hour: set_date.getHours(), minute: set_date.getMinutes(),
second: set_date.getSeconds()};
sleep.setStopSync(rtc_time); //Transition to stop mode
print(Date() + ': resume!!!' + 'count=' + count ); //Executed after returning from stop mode
}
Sample 2
スタンバイモードのサンプルです。
現在時刻を基にスリープとレジュームを繰り返します。
var now_count = sleep.getUserRegister();
var entry_resume = sleep.getEntryResumeControl();
print('entry resume cont.=' + entry_resume);
var MAX_COUNT = 5;
var delay_s = 10;
var set_count;
var now_date = new Date();
print('Now time: ' + now_date.toString());
now_date.setSeconds(now_date.getSeconds() + delay_s);
print('Set time: ' + now_date.toString());
var rtc_time = {hour: now_date.getHours(), minute: now_date.getMinutes(),
second: now_date.getSeconds()};
if(entry_resume == 0) {
set_count = MAX_COUNT;
} else {
print(Date() + ': resume!!!');
set_count = --now_count;
}
sleep.setUserRegister(set_count);
if(set_count != 0) {
sleep.setStandby(rtc_time, 1, function() {
print('standby ready');
});
} else {
print('Sleep Finish:');
}
Updated: 2022-06-03