Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Lisez les données ThingSpeak et prédisez le temps de décharge de la batterie avec l'ajustement linéaire

Cet exemple montre comment lire les données de batterie d'un canal ThingSpeak ™ et analyser les données pour déterminer la durée de vie restante de la batterie. Utilisez un ajustement linéaire pour prédire la date à laquelle la batterie tombera en panne, puis écrivez le temps restant en jours sur un autre canal ThingSpeak . Vous lisez les données d'une batterie 12 V connectée à un microprocesseur qui signale sa tension à ThingSpeak toutes les demi-heures. Utilisez ensuite la régression pour prédire le jour et l'heure où la batterie tombera en panne.

Lire les données du canal ThingSpeak

Commencez par stocker les informations sur le canal et la date dans des variables, puis utilisez thingSpeakRead pour lire les données. Le canal 592680 montre la mesure mise à l'échelle de la tension d'une batterie de 12 V. Utilisez la paire nom-valeur DateRange pour utiliser une sélection spécifique de données.

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

Convertir les données pour l'ajustement et générer un tracé

Le canal stocke les données brutes de l' appareil. Convertissez la mesure du convertisseur analogique-numérique (CAN) en tension à l'aide du facteur de conversion 14,6324 déterminé expérimentalement. Utilisez ensuite scatter pour générer un tracé.

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

Adapter les données

Le format datetime de timetable est utile pour la lecture et le traçage. Pour s'adapter aux données, la date et l'heure doivent être au format numérique. Utilisez datenum pour convertir les horodatages en un nombre de jours et soustrayez le nombre de départ pour maintenir les valeurs faibles. Utilisez polyfit pour effectuer une régression linéaire sur les données, et polyval pour évaluer l'ajustement aux valeurs temporelles existantes. Ajoutez la ligne d'ajustement au tracé précédent.

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

Prédire le temps de décharge

La batterie ne doit pas être déchargée en dessous de 10,4 V. Trouvez le nombre de jours jusqu'à ce que la ligne d'ajustement croise cette tension.

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

Il reste un peu plus de 13 jours avant que la batterie ne meure.

Écrire la prédiction dans ThingSpeak

La fonction thingSpeakWrite écrit le résultat dans un canal ThingSpeak . Renvoyez la sortie de thingSpeakWrite pour garantir une opération d’écriture réussie. Changez les writeChannelID et writeAPIKey pour écrire sur votre propre canal.

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

Le résultat montre l'opération d'écriture réussie et rapporte les données qui ont été écrites.

Voir aussi

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