Main Content

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

Leggi i dati ThingSpeak e prevedi il tempo di scarica della batteria con Linear Fit

Questo esempio mostra come leggere i dati della batteria da un canale ThingSpeak™ e analizzare i dati per determinare la durata rimanente della batteria. Utilizzare un adattamento lineare per prevedere la data in cui la batteria si guasterà, quindi scrivere il tempo rimanente in giorni su un altro canale ThingSpeak . Leggi i dati di una batteria da 12 V collegata a un microprocessore che segnala la sua tensione a ThingSpeak ogni mezz'ora. Quindi utilizza la regressione per prevedere il giorno e l'ora in cui la batteria si guasterà.

Leggi i dati dal canale ThingSpeak

Inizia memorizzando le informazioni su canale e data in variabili, quindi utilizza thingSpeakRead per leggere i dati. Il canale 592680 mostra la misurazione in scala della tensione di una batteria da 12 V. Utilizza la coppia nome-valore DateRange per utilizzare una selezione specifica di dati.

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

Converti i dati per l'adattamento e il grafico

Il canale memorizza i dati grezzi dal dispositivo. Converti la misura del convertitore analogico-digitale (ADC) in tensione utilizzando il fattore di conversione determinato sperimentalmente 14.6324. Quindi utilizzare scatter per generare un grafico.

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

Adatta i dati

Il formato data/ora dell'orario è utile per la lettura e il tracciamento. Per adattare i dati, la data/ora deve essere in formato numerico. Utilizza datenum per convertire i timestamp in un numero di giorni e sottrai il numero iniziale per mantenere bassi i valori. Utilizza polyfit per eseguire una regressione lineare sui dati e polyval per valutare l'adattamento ai valori temporali esistenti. Aggiungi la linea di adattamento al grafico precedente.

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

Prevedi il tempo di scarica

La batteria non deve essere scaricata al di sotto di 10,4 V. Trova il numero di giorni prima che la linea di adattamento si intersechi con questa tensione.

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

Mancano poco più di 13 giorni all'esaurimento della batteria.

Scrivi previsione su ThingSpeak

La funzione thingSpeakWrite scrive il risultato su un canale ThingSpeak . Restituisci l'output da thingSpeakWrite per garantire un'operazione di scrittura riuscita. Cambia writeChannelID e writeAPIKey per scrivere sul tuo canale.

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

Il risultato mostra l'operazione di scrittura riuscita e riporta i dati che sono stati scritti.

Vedi anche

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