このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
ThingSpeakデータを読み取り、線形近似でバッテリーの放電時間を予測します
この例では、 ThingSpeak™チャネルからバッテリー データを読み取り、データを分析してバッテリー残量を判断する方法を示します。線形近似を使用してバッテリーが故障する日付を予測し、残り時間を日単位で別のThingSpeak チャネルに書き込みます。マイクロプロセッサに接続された 12 V バッテリのデータを読み取り、その電圧を 30 分ごとにThingSpeakに報告します。次に、回帰を使用して、バッテリーが故障する日時を予測します。
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 の日時形式は、読み取りとプロットに便利です。データに適合させるには、日時が数値形式である必要があります。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
(MATLAB) | thingSpeakWrite
(MATLAB) | datetime
(MATLAB) | datnum
(MATLAB) | scatter
(MATLAB) | polyfit
(MATLAB) | polyval
(MATLAB)