Считайте данные ThingSpeak и предскажите время выброса батареи с линейной подгонкой

Этот пример показывает, как считать данные о батарее из ThingSpeak™, образовывают канал и анализируют данные, чтобы определить остающееся время работы аккумулятора. Используйте линейную подгонку, чтобы предсказать дату, которую батарея приведет к сбою, и затем записать остающееся время в днях к другому Каналу ThingSpeak. Вы считываете данные для 12-вольтовой батареи, соединенной с микропроцессором, сообщая о его напряжении ThingSpeak каждое полчаса. Затем используйте регрессию, чтобы предсказать день и время, когда батарея перестанет работать.

Считайте данные из канала ThingSpeak

Запустите путем хранения канала и информации о дате в переменных, и затем используйте thingSpeakRead, чтобы считать данные. Канал 592680 показывает масштабированное измерение напряжения от 12-вольтовой батареи. Используйте пару "имя-значение" DateRange, чтобы использовать определенный выбор данных.

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

Преобразуйте данные для подбора кривой и графика

Канал хранит необработанные данные от устройства. Преобразуйте измерение аналого-цифрового конвертера (ADC) в напряжение с помощью экспериментально решительного коэффициента преобразования 14.6324. Затем используйте scatter, чтобы сгенерировать график.

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

Соответствуйте данным

Формат datetime расписания полезен для чтения и графического вывода. Чтобы соответствовать данным, datetime должен быть в числовом формате. Используйте 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 В. Найдите номер дней, пока подходящая строка не пересечется с этим напряжением.

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

   13.1573

Существует чуть более чем 13 дней, пока батарея не перестает работать.

Запишите прогноз в ThingSpeak

Функция thingSpeakWrite пишет результат в канал ThingSpeak. Возвратите выходной параметр thingSpeakWrite, чтобы гарантировать успешную операцию записи. Измените writeChannelID и writeAPIKey, чтобы записать в ваш собственный канал.

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-Jan-2019 13:20:34
    LastEntryID: 12543
       Altitude: []

Результат показывает успешную операцию записи и сообщает о данных, которые были записаны.

Смотрите также

| | | | | |