Main Content

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Lesen Sie ThingSpeak Daten und prognostizieren Sie die Batterieentladezeit mit linearer Anpassung

Dieses Beispiel zeigt, wie man Batteriedaten von einem ThingSpeak™ -Kanal liest und die Daten analysiert, um die verbleibende Batterielebensdauer zu bestimmen. Verwenden Sie eine lineare Anpassung, um das Datum vorherzusagen, an dem die Batterie ausfällt, 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 und deren Spannung jede halbe Stunde an ThingSpeak übermittelt. Verwenden Sie dann die Regression, um den Tag und die Uhrzeit vorherzusagen, wann die Batterie ausfallen wird.

Lesen Sie Daten vom ThingSpeak Kanal

Beginnen Sie mit der Speicherung von Kanal- und Datumsinformationen in Variablen und lesen Sie die Daten dann mit thingSpeakRead aus. Kanal 592680 zeigt die skalierte Messung der Spannung 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 Darstellung

Der Kanal speichert Rohdaten vom Gerät. Wandeln Sie die Messung des Analog-Digital-Wandlers (ADC) mit dem experimentell ermittelten Umrechnungsfaktor 14,6324 in Spannung um. Verwenden Sie dann scatter , um ein Diagramm zu erstellen.

myVoltage = 14.6324 * batteryData.Voltage;
scatter(batteryData.Timestamps,myVoltage,'b');
ylabel('Voltage (V)');
hold on

Passen Sie die Daten an

Das Datum-Uhrzeit-Format des Stundenplans eignet sich zum Lesen und Plotten. Um die Daten anzupassen, muss die Datums- und Uhrzeitangabe im numerischen Format vorliegen. Verwenden Sie datenum , um die Zeitstempel in eine Anzahl von Tagen umzuwandeln, und subtrahieren Sie die Anfangszahl, um die Werte niedrig zu halten. Verwenden Sie polyfit , um eine lineare Regression der Daten durchzuführen, und polyval , um die Anpassung an den vorhandenen Zeitwerten auszuwerten. Fügen Sie die Anpassungslinie zum vorherigen Diagramm hinzu.

battTimes = datenum(batteryData.Timestamps);
battTimes= battTimes-battTimes(1);
myFit=polyfit(battTimes,myVoltage,1);
fitLine=polyval(myFit,battTimes);
plot(batteryData.Timestamps,fitLine,'r--');

Entladezeit vorhersagen

Die Batterie sollte nicht unter 10,4 V entladen werden. Ermitteln Sie die Anzahl der Tage, bis die Anpassungslinie diese Spannung schneidet.

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

Es dauert etwas mehr als 13 Tage, bis die Batterie leer ist.

Schreiben Sie eine Vorhersage in 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 auf 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: 03-Jun-2019 15:24:43
    LastEntryID: 50018
       Altitude: []

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

Siehe auch

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