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
コメント
manabu-yoshioka-arc
> -----
> アラーム割り込みは分単位(毎分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
吉田です。
> 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
> > 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 も内容確認でき、動作およびその仕組み理解できました。適切な回答ありがとうございました。
at_mitsuhiro.yoshida
2023年4月17日 10時11分
吉田です。
製品マニュアルに記載が足りておらず申し訳ありません。
以下の仕様となります。
-----
アラーム割り込みは分単位(毎分00秒)で発生します。
そのため、例えば 300秒(5分)を指定した場合、
実際に割り込みが発生するまでの時間は5分00秒〜5分59秒の間となります。
-----
今後のアップデートで製品マニュアルに追記いたします。