Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

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からの出力を返します。writeChannelIDwriteAPIKeyを独自のチャネルに書き込むように変更します。

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: []

結果は、書き込み操作が成功したことを示し、書き込まれたデータを報告します。

参考

(MATLAB) | (MATLAB) | (MATLAB) | (MATLAB) | (MATLAB) | (MATLAB) | (MATLAB)