IoT(Internet of Test)でThingspeakにアクセスしているログでWatchdogリセットを確認するrubyスクリプトです。ThingspeakのExportのDownloadはTimezoneがUTCから変えられないので、こちらのページを参考にしてみました。追記:2019/4くらいにJSTでダンプできるようになりました。
#!/usr/bin/ruby
require 'csv'
require 'time'
class Time
def timezone(timezone = 'UTC')
old = ENV['TZ']
utc = self.dup.utc
ENV['TZ'] = timezone
output = utc.localtime
ENV['TZ'] = old
output
end
end
csv_data = CSV.read(ARGV[0])
lastval = 0
lastdate = ""
count = 0
csv_data.each do |data|
if data[2].to_i < lastval
print "---\n"
p Time.parse(lastdate).timezone('Asia/Tokyo')
p Time.parse(data[0]) - Time.parse(lastdate)
p lastval
p count
count = 0
end
count = count + 1
lastval = data[2].to_i
lastdate = data[0]
end
print "---\n"
p lastval
p count
アクセス毎にインクリメントした数値を書き込んでいるので、逆転したところを探しています。
JSTでダウンロードできるようになったので、awkで簡単に確認する方法を考えました。シリアルを1番目のフィールドにします。これはチャンネルによってフィールド数が変わってくるので、シリアルを固定の位置にして確認しやすくするためです。
$ awk 'BEGIN{FS=","} NR>1{if(NR != 2 && last+1 != $3){sa=$3-last-1;print $1" "last" "$3" "sa};last=$3}' feeds.csv