10. RTC
rtcオブジェクトは、RTCアラーム機能を提供する組み込みオブジェクトです。
機能概要:
- 指定した時刻にアラームイベントを発生させる機能を提供します。
- システム時刻に関連する機能を提供します。
制限事項:
- 使用可能なアラームは1本です。
rtc Global Object
Methods()/Properties | Summary | Version | Note |
---|---|---|---|
rtc.setAlarm() | アラーム発生時刻を設定します。 | 01.00.00+ | |
rtc.stopAlarm() | アラームを解除します。 | 01.00.00+ | |
rtc.getInitTimeCorrVal() | システム時刻未設定時に取得したタイムスタンプ値を時刻同期後に補正する値を取得します。 | 02.00.00+ |
Details
rtc.setAlarm(rtcAlarm[,callback])
アラーム発生時刻を設定します。
アラーム発生時にコールバック処理を実行します。
アラームは解除されるまで発生します。
本メソッドは、多重使用できません。
別の時刻を設定する場合は一度解除させる必要があります。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
rtcAlarm | Object | mandatory | アラーム発生時刻設定 hour : {number} アラーム発生時刻[時] 設定範囲: 0~23 minute : {number} アラーム発生時刻[分] 設定範囲: 0~59 second : {number} アラーム発生時刻[秒] 設定範囲: 0~59 timeout : {number} 初回アラーム発生時刻のタイムアウト値[秒] 設定範囲: 1~10 (※1) | |
callback() | function | mandatory | アラーム発生時にコールバック処理を実行します。 | |
return | undefined | - | - | 異常が発生した時は、例外となります。 |
※1: 現在時刻と最初のアラーム発生時刻の間に余裕がない場合、内部遅延によりアラーム設定が間に合わない場合があります。このオプションは、タイマーを使用してこの状況を補完します。タイムアウトまでにアラームが発生しなかった場合、アラームの代わりにコールバック処理を実行します。アラーム発生時刻までのマージンが10秒未満の場合、このオプションを設定してください。未設定の場合は、無効となります。
rtc.stopAlarm()
アラームを解除します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
return | undefined | - | - |
rtc.getInitTimeCorrVal()
システム時刻未設定時に取得したタイムスタンプ値を時刻同期後に補正する値を取得します。
システム時刻が設定(時刻同期)済みであるか否か判断することも可能です。
尚、本機能はExpressモードを使用する際に活用できます。
システム時刻未設定時のタイムスタンプ値に対して、時刻同期(補正値が0以外になった)後にこの補正値を加算することで、現在時刻へ変換することができます。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
return | number | - | タイムスタンプ補正値 0: システム時刻未設定 0以外: 補正値[ms] | 0 の場合、システム時刻設定が行われていないことを示します。0以外 の場合、時刻同期が行われ、正確な時刻を保持していることを示します。 |
下記のように使用します。
var timestamp = Date.now();
print("Timestamp before time-sync: " + timestamp + " (" + new Date(timestamp) + ")");
while(!rtc.getInitTimeCorrVal()); //Waiting for time synchronization
var utime = Date.now();
print("Time synchronized: " + utime + " (" + new Date(utime) + ")");
var corVal = rtc.getInitTimeCorrVal();
print("Correction value: " + corVal);
timestamp += corVal;
print("Corrected timestamp: " + timestamp + " (" + new Date(timestamp) + ")");
Timestamp before time-sync: 9144 (Thu Jan 01 1970 00:00:09 GMT+00:00)
Time synchronized: 1654052588000 (Wed Jun 01 2022 03:03:08 GMT+00:00)
Correction value: 1654052510104
Corrected timestamp: 1654052519248 (Wed Jun 01 2022 03:01:59 GMT+00:00)
オブジェクトの使用例
Sample1
アラームを発生させるサンプルです。
現在時刻を取得し、その時点から20秒後にRTCアラームを発生させます。
var MAX_COUNT = 5;
var count = MAX_COUNT;
var set_date;
var rtc_time;
var perAlarm = function() {
rtc.stopAlarm();
count--;
print('alarm: count = ' + count);
set_date = new Date();
print('Now time: ' + set_date.toString());
if(count > 0) {
set_date.setSeconds(set_date.getSeconds() + 20);
rtc_time = {
hour: set_date.getHours(),
minute: set_date.getMinutes(),
second: set_date.getSeconds()
};
rtc.setAlarm(rtc_time, perAlarm);
}
}
perAlarm();
Updated: 2022-06-02