Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um das englische Original zu sehen.

Lesen Sie ThingSpeak-Daten und sagen Sie die Batterieentladezeit mit linearer Anpassung voraus

Dieses Beispiel zeigt, wie Batteriedaten aus einem ThingSpeak™-Kanal gelesen und die Daten analysiert werden, um die verbleibende Batterielebensdauer zu bestimmen. Verwenden Sie eine lineare Anpassung, um das Datum vorherzusagen, an dem die Batterie ausfallen wird, und schreiben Sie dann die verbleibende Zeit in Tagen in einen anderen ThingSpeak-Kanal. Sie lesen Daten für eine 12-V-Batterie, die an einen Mikroprozessor angeschlossen ist, der ihre Spannung jede halbe Stunde an ThingSpeak meldet. Verwenden Sie dann die Regression, um den Tag und die Uhrzeit vorherzusagen, an dem die Batterie ausfallen wird.

Daten vom ThingSpeak-Kanal lesen

Beginnen Sie mit dem Speichern von Kanal- und Datumsinformationen in Variablen und verwenden Sie dann thingSpeakRead, um die Daten zu lesen. Kanal 592680 zeigt die skalierte Spannungsmessung einer 12-V-Batterie. Verwenden Sie das Name-Wert-Paar DateRange, um eine bestimmte Datenauswahl zu verwenden.

batteryChannelID = 592680;
startDate = datetime('Oct 20, 2018');
endDate = datetime('Oct 23, 2018');
batteryData = thingSpeakRead(batteryChannelID,'DateRange',[startDate endDate],'Outputformat','Timetable');

Konvertieren Sie die Daten für die Anpassung und das Plotten

Der Kanal speichert Rohdaten vom Gerät. Wandeln Sie die Messung des Analog-Digital-Wandlers (ADC) mithilfe des experimentell ermittelten Umrechnungsfaktors 14,6324 in eine Spannung um. Wandeln Sie die Zeitstempel in Anzahl von Tagen um und verwenden Sie dann scatter, um ein Diagramm zu erstellen.

myVoltage = 14.6324 * batteryData.Voltage;
battTimes = batteryData.Timestamps;
battTimes = days(battTimes-battTimes(1));
scatter(battTimes,myVoltage,'b');
xlabel('Duration (days)');
ylabel('Voltage (V)');
hold on

Figure contains an axes object. The axes object with xlabel Duration (days), ylabel Voltage (V) contains an object of type scatter.

Anpassen der Daten

Das Datums- und Uhrzeitformat des Timetable ist zum Lesen und Plotten nützlich. Verwenden Sie polyfit, um eine lineare Regression der Daten durchzuführen, und polyval, um die Anpassung an die vorhandenen Zeitwerte auszuwerten. Fügen Sie die Anpassungslinie zum vorherigen Diagramm hinzu.

fitCoeffs = polyfit(battTimes,myVoltage,1);
fitLine = polyval(fitCoeffs,battTimes);
plot(battTimes,fitLine,'r--');

Figure contains an axes object. The axes object with xlabel Duration (days), ylabel Voltage (V) contains 2 objects of type scatter, line.

Entladezeit vorhersagen

Die Batterie sollte nicht unter 10,4 V entladen werden. Ermitteln Sie mithilfe der Steigung und des Achsenabschnitts von fitCoeffs die Anzahl der Tage, bis die Anpassungslinie diese Spannung schneidet.

endDays = (10.4-fitCoeffs(2))/fitCoeffs(1)
endDays = 13.1573

Bis die Batterie leer ist, sind es noch etwas mehr als 13 Tage.

Schreibe Vorhersage an ThingSpeak

Die Funktion thingSpeakWrite schreibt das Ergebnis in einen ThingSpeak-Kanal. Geben Sie die Ausgabe von thingSpeakWrite zurück, um einen erfolgreichen Schreibvorgang sicherzustellen. Ändern Sie writeChannelID und writeAPIKey, um in Ihren eigenen Kanal zu schreiben.

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: 10-May-2024 11:01:22
    LastEntryID: 866419
       Altitude: []

Das Ergebnis zeigt den erfolgreichen Schreibvorgang an und meldet die geschriebenen Daten.

Siehe auch

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