このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ThingSpeak データの読み取りと、線形近似によるバッテリー放電時間の予測
この例では、ThingSpeak™ チャネルからバッテリーのデータを読み取り、データを解析してバッテリー残量を判定する方法を説明します。線形近似を使用してバッテリーが切れる日付を予測し、残り時間を日数単位で別の ThingSpeak チャネルに書き込みます。30 分ごとに電圧を ThingSpeak に報告するマイクロプロセッサに接続された、12 V バッテリーのデータを読み取ります。次に、回帰を使用してバッテリーが切れる日時を予測します。
ThingSpeak チャネルからのデータの読み取り
まず、チャネルと日付の情報を変数に保存し、その後 thingSpeakRead
を使用してそのデータを読み取ります。チャネル 592680 には、12 V バッテリーのスケーリングされた電圧測定値が示されます。名前と値のペア DateRange
を使って、データの特定部分を選択して使用します。
batteryChannelID = 592680; startDate = datetime('Oct 20, 2018'); endDate = datetime('Oct 23, 2018'); batteryData = thingSpeakRead(batteryChannelID,'DateRange',[startDate endDate],'Outputformat','Timetable');
近似とプロット用にデータを変換
チャネルにはデバイスからの生のデータが保存されています。実験的に決定された変換係数 14.6324 を使用して、アナログ デジタル コンバーター (ADC) の測定値を電圧に変換します。続いて、scatter
を使用してプロットを生成します。
myVoltage = 14.6324 * batteryData.Voltage; scatter(batteryData.Timestamps,myVoltage,'b'); ylabel('Voltage (V)'); hold on
データの近似
timetable の datetime 形式は読み取りとプロットに便利です。データを近似するには、datetime が数値形式であることが必要です。datenum
を使用してタイムスタンプを日数に変換し、開始時の数値を減算して値を低く保ちます。polyfit
を使用してデータに対し線形回帰を実行し、polyval
を使用して既存の時間値での近似を評価します。近似ラインを前のプロットに追加します。
battTimes = datenum(batteryData.Timestamps);
battTimes= battTimes-battTimes(1);
myFit=polyfit(battTimes,myVoltage,1);
fitLine=polyval(myFit,battTimes);
plot(batteryData.Timestamps,fitLine,'r--');
放電時間の予測
バッテリーは電圧が 10.4 V より低くなるまで放電してはなりません。近似ラインがこの電圧と交差するまでの日数を求めます。
endDays = (10.4-myFit(2))/myFit(1)
endDays = 13.1573
バッテリーが切れるまで 13 日と少しです。
ThingSpeak への予測の書き込み
関数 thingSpeakWrite
は ThingSpeak チャネルに結果を書き込みます。thingSpeakWrite
からの出力を返して、書き込み操作が正常に行われていることを確認します。writeChannelID
と writeAPIKey
を変更して、独自のチャネルに書き込みます。
writeChannelID = 17504; writeAPIKey='23ZLGOBBU9TWHG2H'; result = thingSpeakWrite(writeChannelID,round(endDays,4),'WriteKey',writeAPIKey)
result = struct with fields:
Field1: '13.1573'
Field2: []
Field3: []
Field4: []
Field5: []
Field6: []
Field7: []
Field8: []
Latitude: []
Longitude: []
ChannelID: 17504
Created: 03-Jun-2019 15:24:43
LastEntryID: 50018
Altitude: []
結果は、書き込み操作が正常であったことを示し、書き込まれたデータが報告されます。
参考
thingSpeakRead
| thingSpeakWrite
| datetime
| datnum
| scatter
| polyfit
| polyval