This example demonstrates how to read data from a channel, analyze the data, and display the result. In the example, you modify one of the code templates provided by the MATLAB Analysis and MATLAB Visualizations apps. The example uses data from ThingSpeak channel 12397, which collects weather data from an Arduino based weather station in Natick, MA.
To calculate the average of a set of data from a ThingSpeak channel, you can write a MATLAB® script using a code template.
Go to the Apps tab in ThingSpeak and select MATLAB Analysis. Click New, select Calculate and display average humidity, and click Create.
The MATLAB Code field is prepopulated with code to calculate and display humidity.
1) Set the variables for communicating with ThingSpeak.
readChannelID is the channel ID for the public channel that collects data from the weather station.
humidityFieldID is the field in the channel that contains humidity values. Assign a value to readAPIkey only if you are reading data from a private channel. The weather station is public, so for this example, do not set readAPIkey.
readChannelID = 12397; humidityFieldID = 3; readAPIKey = '';
2) Read humidity values for the last 60 minutes using the
humidity = thingSpeakRead(readChannelID,'Fields',humidityFieldID,'NumMinutes',60,'ReadKey',readAPIKey);
3) Calculate and show the average humidity from the last 60 minutes.
avgHumidity = mean(humidity); display(avgHumidity,'Average Humidity');
4) Execute your code by clicking Save and Run. The Output field displays your results.
1) Store the calculated average humidity by writing it to a private channel. To create a ThingSpeak channel, go to the Channels tab and select My Channels. Click New Channel. Select the corresponding check box, and enter these channel setting values:
Field 1 —
Click Save Channel.
2) In the MATLAB Code field, set the variables for writing to your private channel. Replace the given values for
writeAPIKey with your values. You can find the channel ID and write API key in the Channel Info panel on the right side of the page.
% Replace with the ID of the channel to write data to. writeChannelID = 17504; % Enter the write API key between the ''. writeAPIKey = '23ZLGOBBU9TWHG2H';
3) Write the average humidity to your channel.
4) Execute your code by clicking Save and Run. The chart in your ThingSpeak channel is populated with a single point representing average humidity. You can access your channel by clicking the channel link in the Channel Info panel on the right side of the page.
5) Click Save and Run again after a few minutes to update your channel with another data point. You can use the TimeControl app to execute the code at regular intervals.
You can add code to the template to perform further analysis of the humidity data. For example, standard deviation is often calculated along with mean. The standard deviation is a measure of the variation of a set of data. Calculate and display the standard deviation of the humidity over the last 60 minutes. This section is not included in the code template. You can include it in your code after reading
humidity from the weather station channel.
stdHumidity = std(humidity); display(stdHumidity,'Standard Deviation of Humidity')
To display the updated results with standard deviation in the Output field, click Save and Run again.