Why does my daily median calculation and write to channel fail unpredictably?
I am trying to calculate the daily median across a range of channels and write the result to a new field for each channel. The code seems to run sometimes, but runs into rate limitation other times. I’m not sure why since I am only writing once and to different channels?
Error using Median calcs (line 39)
Requests are too frequent. For further information, see Limitations in the documentation.
My code is:
% Sensor/channel configuration
sensors = [
struct(‘name’, ‘McKinley’,’channelID’, 28xxxx, ‘writeKey’, ‘G3WPJ586M55Gxxxx’)
struct(‘name’, ‘DPI’, ‘channelID’, 80xxxx, ‘writeKey’, ‘S0E0LB45GQLMxxxx’)
struct(‘name’, ‘Bryony’,’channelID’, 29xxxx, ‘writeKey’, ‘2BPCI0IOAINPxxxx’)
];
% Define date range (last 24 hours to midnight)
endTime = dateshift(datetime(‘now’), ‘start’, ‘day’);
startTime = endTime – hours(24);
% Preallocate a results array
results = [];
% Step 1: Read and calculate all medians
for i = 1:length(sensors)
s = sensors(i);
% Read Field 1 for the past 24 hours
[weight, ~] = thingSpeakRead(s.channelID, ‘DateRange’, [startTime, endTime], ‘Fields’, 1);
% Compute median, ignoring NaNs
medianWeight = round(median(weight, ‘omitnan’),2);
% Store in results
results(i).name = s.name;
results(i).channelID = s.channelID;
results(i).writeKey = s.writeKey;
results(i).value = medianWeight;
end
% Step 2: Display results
for i = 1:length(results)
r = results(i);
fprintf(‘%s (Channel %d) → 24hr Median: %.2fn’, r.name, r.channelID, r.value);
end
% Step 3: Write results
thingSpeakWrite(results(1).channelID, ‘Fields’, 6, ‘Values’, {results(1).value}, ‘WriteKey’, results(1).writeKey);
thingSpeakWrite(results(2).channelID, ‘Fields’, 6, ‘Values’, {results(2).value}, ‘WriteKey’, results(2).writeKey);
thingSpeakWrite(results(3).channelID, ‘Fields’, 6, ‘Values’, {results(3).value}, ‘WriteKey’, results(3).writeKey);I am trying to calculate the daily median across a range of channels and write the result to a new field for each channel. The code seems to run sometimes, but runs into rate limitation other times. I’m not sure why since I am only writing once and to different channels?
Error using Median calcs (line 39)
Requests are too frequent. For further information, see Limitations in the documentation.
My code is:
% Sensor/channel configuration
sensors = [
struct(‘name’, ‘McKinley’,’channelID’, 28xxxx, ‘writeKey’, ‘G3WPJ586M55Gxxxx’)
struct(‘name’, ‘DPI’, ‘channelID’, 80xxxx, ‘writeKey’, ‘S0E0LB45GQLMxxxx’)
struct(‘name’, ‘Bryony’,’channelID’, 29xxxx, ‘writeKey’, ‘2BPCI0IOAINPxxxx’)
];
% Define date range (last 24 hours to midnight)
endTime = dateshift(datetime(‘now’), ‘start’, ‘day’);
startTime = endTime – hours(24);
% Preallocate a results array
results = [];
% Step 1: Read and calculate all medians
for i = 1:length(sensors)
s = sensors(i);
% Read Field 1 for the past 24 hours
[weight, ~] = thingSpeakRead(s.channelID, ‘DateRange’, [startTime, endTime], ‘Fields’, 1);
% Compute median, ignoring NaNs
medianWeight = round(median(weight, ‘omitnan’),2);
% Store in results
results(i).name = s.name;
results(i).channelID = s.channelID;
results(i).writeKey = s.writeKey;
results(i).value = medianWeight;
end
% Step 2: Display results
for i = 1:length(results)
r = results(i);
fprintf(‘%s (Channel %d) → 24hr Median: %.2fn’, r.name, r.channelID, r.value);
end
% Step 3: Write results
thingSpeakWrite(results(1).channelID, ‘Fields’, 6, ‘Values’, {results(1).value}, ‘WriteKey’, results(1).writeKey);
thingSpeakWrite(results(2).channelID, ‘Fields’, 6, ‘Values’, {results(2).value}, ‘WriteKey’, results(2).writeKey);
thingSpeakWrite(results(3).channelID, ‘Fields’, 6, ‘Values’, {results(3).value}, ‘WriteKey’, results(3).writeKey); I am trying to calculate the daily median across a range of channels and write the result to a new field for each channel. The code seems to run sometimes, but runs into rate limitation other times. I’m not sure why since I am only writing once and to different channels?
Error using Median calcs (line 39)
Requests are too frequent. For further information, see Limitations in the documentation.
My code is:
% Sensor/channel configuration
sensors = [
struct(‘name’, ‘McKinley’,’channelID’, 28xxxx, ‘writeKey’, ‘G3WPJ586M55Gxxxx’)
struct(‘name’, ‘DPI’, ‘channelID’, 80xxxx, ‘writeKey’, ‘S0E0LB45GQLMxxxx’)
struct(‘name’, ‘Bryony’,’channelID’, 29xxxx, ‘writeKey’, ‘2BPCI0IOAINPxxxx’)
];
% Define date range (last 24 hours to midnight)
endTime = dateshift(datetime(‘now’), ‘start’, ‘day’);
startTime = endTime – hours(24);
% Preallocate a results array
results = [];
% Step 1: Read and calculate all medians
for i = 1:length(sensors)
s = sensors(i);
% Read Field 1 for the past 24 hours
[weight, ~] = thingSpeakRead(s.channelID, ‘DateRange’, [startTime, endTime], ‘Fields’, 1);
% Compute median, ignoring NaNs
medianWeight = round(median(weight, ‘omitnan’),2);
% Store in results
results(i).name = s.name;
results(i).channelID = s.channelID;
results(i).writeKey = s.writeKey;
results(i).value = medianWeight;
end
% Step 2: Display results
for i = 1:length(results)
r = results(i);
fprintf(‘%s (Channel %d) → 24hr Median: %.2fn’, r.name, r.channelID, r.value);
end
% Step 3: Write results
thingSpeakWrite(results(1).channelID, ‘Fields’, 6, ‘Values’, {results(1).value}, ‘WriteKey’, results(1).writeKey);
thingSpeakWrite(results(2).channelID, ‘Fields’, 6, ‘Values’, {results(2).value}, ‘WriteKey’, results(2).writeKey);
thingSpeakWrite(results(3).channelID, ‘Fields’, 6, ‘Values’, {results(3).value}, ‘WriteKey’, results(3).writeKey); write limitation, thingspeak MATLAB Answers — New Questions