Update/replace channel value?
4 views (last 30 days)
Show older comments
I know how to write data with MATLAB Analysis to channel, in my case I read the absolute value from my electricity counter (which updates every 1min) and calculate the consumption of the last 20min.
datetimeStop = datetime('now');
datetimeStart = datetime('now')- minutes(20);
data = thingSpeakRead(readChannelID, Fields=[1], DateRange=[datetimeStart,datetimeStop], ReadKey=readAPIKey);
analyzedData = data(length(data)) - data(1);
thingSpeakWrite(writeChannelID, analyzedData, WriteKey=writeAPIKey);
I would like to write to a second channel the average consumption for each hour of the day, e.g. 01:00, 02:00, ...
My problem: With thingSpeakWrite I add values to a channel, but if I calculate the running average for each hour at every new day - with (n*avg_old + new_value)/(n+1) - I want to update/replace the average. How is that possible?
BR
Bernd
0 Comments
Answers (1)
Vinod
on 15 Apr 2025
The data in a ThingSpeak channel is a time series. Think of a value in the field as a measurement made at a certain point in time. If I understand what you are trying to do, it is "changing history" in that timeseries by going back and updating/replacing a previous measurement.
I'd recommend a better approach is to only update the value in the channel when you have all the data for the period. So, let's say you're doing a 4 hour running average, then wait until the 4 hour window is complete to calculate and update the value in the field.
2 Comments
Vinod
on 22 Apr 2025
Edited: Walter Roberson
on 22 Apr 2025
Thanks for clarifying that Bernd. I think I understand your use case a bit better now.
Every ThingSpeak channel has a metadata field. You can use the REST API to update the metadata of the ThingSpeak channel on a rolling basis. See here for more info:
Communities
More Answers in the ThingSpeak Community
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!