В этом примере показано, как считать данные о батарее из ThingSpeak™, образовывают канал и анализируют данные, чтобы определить остающееся время работы аккумулятора. Используйте линейную подгонку, чтобы предсказать дату, которую батарея приведет к сбою, и затем записать остающееся время в днях к другому Каналу ThingSpeak. Вы считываете данные для 12-вольтовой батареи, соединенной с микропроцессором, сообщая о его напряжении 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 дней, пока батарея не перестает работать.
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: []
Результат показывает успешную операцию записи и сообщает о данных, которые были записаны.
thingSpeakRead
| thingSpeakWrite
| datetime
| datnum
| scatter
| polyfit
| polyval