Armadilloフォーラム

aiot-alarm-poweroff コマンドが指示秒数+60秒になってしまいます。

manabu-yoshioka-arc

2023年4月17日 9時03分

Armadillo-IOT A6 にて、省電力動作を行うため、毎時0,10,20,30,40,50分で起動させるスクリプトを組んだところ、+1分の時刻で起動されます。おかしいなと思い、調べてみたところ、単独の aiot-alarm-poweroff +180 を実行しても約4分(+240秒)で再起動されます。仕様でしょうか。

作成したスクリプトを参考までにつけておきます。

#!/bin/bash
CurrentTime=`date +%s`
Next10minutesEveryHour=$(( (CurrentTime / 600 + 1) * 600 ))
Next10minutesTime=`date +%s --date @$Next10minutesEveryHour`
RemainSecsUntilNext10minutesTime=$(( Next10minutesTime - CurrentTime ))
if [ $RemainSecsUntilNext10minutesTime -lt 180 ]; then
    RemainSecsUntilNext10minutesTime=$(( $RemainSecsUntilNext10minutesTime + 600 ))
fi
echo 'CurrentTime =' `date +%R --date @$CurrentTime`
echo 'Next10minutesTime =' `date +%R --date @$Next10minutesTime`
 
sudo aiot-alarm-poweroff +$RemainSecsUntilNext10minutesTime
コメント

at_mitsuhiro.yoshida

2023年4月17日 10時11分

吉田です。

製品マニュアルに記載が足りておらず申し訳ありません。
以下の仕様となります。

-----
アラーム割り込みは分単位(毎分00秒)で発生します。
そのため、例えば 300秒(5分)を指定した場合、
実際に割り込みが発生するまでの時間は5分00秒〜5分59秒の間となります。
-----

今後のアップデートで製品マニュアルに追記いたします。

manabu-yoshioka-arc

2023年4月18日 17時05分

> -----
> アラーム割り込みは分単位(毎分00秒)で発生します。
> そのため、例えば 300秒(5分)を指定した場合、
> 実際に割り込みが発生するまでの時間は5分00秒〜5分59秒の間となります。
> -----

回答ありがとうございました。毎分00秒で割り込みがかかること、理解いたしました。スクリプトを下記のように、残り秒数からさらに30秒マイナスにすることで、期待通り armadillo が毎時(00分,10分,20分,30分,40分,50分)で起動がかかるとを確認できました。

#!/bin/bash
CurrentTime=`date +%s`
Next10minutesEveryHour=$(( (CurrentTime / 600 + 1) * 600 ))
Next10minutesTime=`date +%s --date @$Next10minutesEveryHour`
RemainSecsUntilNext10minutesTime=$(( Next10minutesTime - CurrentTime - 30 ))
if [ $RemainSecsUntilNext10minutesTime -lt 180 ]; then
    RemainSecsUntilNext10minutesTime=180
fi
echo 'CurrentTime =' `date +%R --date @$CurrentTime`
echo 'Next10minutesTime =' `date +%R --date @$Next10minutesTime`
 
sudo aiot-alarm-poweroff +$RemainSecsUntilNext10minutesTime

ありがとうございました。

追加の質問への回答を一つお願いします。

RTC の時刻合わせは NTP サーバへの通信で行っているかと思うのですが、その時刻はいつで頻度はどの程度となっているのでしょうか。また設定箇所はどこで変更は可能でしょうか。

当初の質問の背景にあるように、今回の機器(armadillo)はできるだけ省電力での動作を目指しています。よってNTP サーバーへの問い合わせ時刻やタイミング時に armadillo が power-off で RTC の時刻合わせができないのは避けたいため、この追加質問となっています。よろしくお願いします。

at_mitsuhiro.yoshida

2023年4月19日 8時40分

吉田です。

> RTC の時刻合わせは NTP サーバへの通信で行っているかと思うのですが、その時刻はいつで頻度はどの程度となっているのでしょうか。また設定箇所はどこで変更は可能でしょうか。

製品マニュアル「RTC」の章に記載があります。
https://manual.atmark-techno.com/armadillo-iot-a6/armadillo-iota6_produ…

systemd-timesyncd.service によって動作しております。

他機種の製品マニュアルですが、 Armadillo-640 の製品マニュアルに詳細がありまして、
※ 今後のアップデートで Armadillo-IoT ゲートウェイ A6 の製品マニュアルも同程度の内容にします。
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

設定は /etc/systemd/timesyncd.conf にて行うことができます。

また、timedatectl timesync-status 及び timedatectl show-timesync コマンドにて現在の状態を確認できます。

root@armadillo:~# timedatectl timesync-status
       Server: xxxxxxxxxx (xxx.xxx.xxx.xxx)
Poll interval: 2min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: 85F3EEA4
    Precision: 1us (-24)
Root distance: 45.051ms (max: 5s)
       Offset: +345us
        Delay: 1.693ms
       Jitter: 452us
 Packet count: 3
    Frequency: +1.349ppm
root@armadillo:~# timedatectl show-timesync
SystemNTPServers=xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
FallbackNTPServers=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
ServerName=xxxxxxxxxxxxxxxxxxxxxxxx
ServerAddress=xxx.xxx.xxx.xxx
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=8min 32s
...後略...

詳細は、man timedatectl にてご確認ください。

また、LTE がネットワーク登録できたタイミングでも時刻同期を実施しております。
/var/log/syslog 内の以下の様な内容です。

aiot-modem-controld[xxxx]: sync_datetime_with_fd(xxxx): datetime[yy/mm/dd,hh:mm:ss+zz]

manabu-yoshioka-arc

2023年4月19日 11時52分

> > RTC の時刻合わせは NTP サーバへの通信で行っているかと思うのですが、その時刻はいつで頻度はどの程度となっているのでしょうか。また設定箇所はどこで変更は可能でしょうか。
>
> 詳細は、man timedatectl にてご確認ください。
>
> また、LTE がネットワーク登録できたタイミングでも時刻同期を実施しております。
> /var/log/syslog 内の以下の様な内容です。
>

> aiot-modem-controld[xxxx]: sync_datetime_with_fd(xxxx): datetime[yy/mm/dd,hh:mm:ss+zz]
> 

吉田様、回答ありがとうございました。syslog も内容確認でき、動作およびその仕組み理解できました。適切な回答ありがとうございました。