Visualization shows only the last 8 days

조회 수: 4 (최근 30일)
Otto Fößel
Otto Fößel 2022년 6월 9일
편집: dpb 2022년 6월 14일
The channel is collecting the data since starting May, but in the visualization i can only see the last 8 days.
What am i doing wrong? see my code below
% Template MATLAB code for visualizing data using the YYAXIS and PLOT functions.
readChannelID = [xxx];
fieldID1 = [1];
readAPIKey = 'xxx';
startTime = datetime(2022,05,02,09,15,00);
endTime= startTime+ days(80);
%% Read Data %%
[data1, time1] = thingSpeakRead(readChannelID,'Field',fieldID1,'dateRange',[startTime endTime],'ReadKey', readAPIKey);
[data4, time4] = thingSpeakRead(readChannelID,'Field',fieldID4,'dateRange',[startTime endTime],'ReadKey', readAPIKey);
%% Visualize Data %%
yyaxis left;
plot(time1, data1,'b');
ylabel('kg Waage');
ylim([22 80 ]);
yyaxis right;
plot(time4, data4,'r');
ylabel('Grad Außentemperatur');
ylim([-60 40]);

채택된 답변

dpb
dpb 2022년 6월 9일
편집: dpb 2022년 6월 9일
'DateRange' Range of data to return
datetime vector
Range of data to return, specified as a comma-separated pair consisting of 'DateRange' and
an array of values that have [startdate,enddate] in MATLAB® datetime values.
ThingSpeak server limits the number of points returned to a maximum of 8000.
Adjust your ranges or make multiple calls if you need more than 8000 points of data.
Doc doesn't say, but given the 8 days it might appear that the 8,000 points returned are the last in the date range given, not the first...
Indeed, testing with the public channel shows that to be the case; you'll have to retrieve subsections in 8,000 sample chunks or not use every point. I didn't read the doc carefully enough to know if can specify discrete times rather than the date range...
>> [data,timestamps] = thingSpeakRead(12397,'DateRange',[startTime,endTime]);
>> whos data
Name Size Bytes Class Attributes
data 8000x8 512000 double
>> timestamps(1)
ans =
datetime
03-Jun-2022 20:37:30
>>
shows it did return last 8000 points.
>> endTime= startTime+minutes(8000); % it's one-minute sample rate; set 8K points
>> [data,timestamps] = thingSpeakRead(12397,'DateRange',[startTime,endTime]);
>> timestamps(1)
ans =
datetime
02-May-2022 09:15:41
>> timestamps(end)
ans =
datetime
07-May-2022 22:34:20
>>
and Voila!!!
ADDENDUM
I'd think it a worthwhile enhancement request for it to return warning about data range and the number of points returned limits....
  댓글 수: 4
Christopher Stapels
Christopher Stapels 2022년 6월 14일
편집: Christopher Stapels 2022년 6월 14일
Thanks for taking the time, nice answer! We will consdier adding a note to the doc.
If you are doing multiple calls PLEASE put a small delay between requests, or you will eventually be blocked for abusing the system.
dpb
dpb 2022년 6월 14일
편집: dpb 2022년 6월 14일
It's in the doc now, but nobody reads the doc first... :)
I'm suggesting it ought to be a warning if the request by date range exceeds the 8k limit that the returned data may (probably/do???) not match the request. readtable has several warnings for example, about variable names and other nits that don't keep it from running as hard errors, but are informational. This would seem to be similar. One can always turn them off if get to be a nuisance I have now done so with the one about names routinely, but it may still be useful for newbies and first-time use for a given file. While now off specific topic of this particular Q?, another enhancement there I think would be for the import options object to have the warning flags state as input so can turn them on/off with it rather than having to code the warning() explicitly every time.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

커뮤니티

더 많은 답변 보기:  ThingSpeak 커뮤니티

카테고리

Help CenterFile Exchange에서 Visualize Data에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by