Считайте данные 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: 03-Jun-2019 15:24:43
    LastEntryID: 50018
       Altitude: []

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

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

| | | | | |