I want to read and display last or latest data only, in my code it's displaying every data I have obtained. Please help, I have mentioned my code below. I just want last water consumption value and total bill amount for one month.

5 views (last 30 days)
% Enter your MATLAB Code below
% Read Output Water Quantity over the past month from a ThingSpeak channel and write
% the average to another ThingSpeak channel.
% Channel 1035265 contains data from the MathWorks water supply station, located
% in Natick, Massachusetts. The data is collected once every day. Field
% 3 contains output liquid quantity data.
% Channel ID to read data from
readChannelID = 1035265;
% Output Liquid Quantity Field ID
outputliquidqantityFieldID = 3;
% Channel Read API Key
% If your channel is private, then enter the read API Key between the '' below:
readAPIKey = '';
% Get Output Liquid Quantity data for the last 30 days from the MathWorks water supply
% station channel. Learn more about the THINGSPEAKREAD function by going to
% the Documentation tab on the right side pane of this page.
meter_reading = thingSpeakRead(readChannelID,'Fields', outputliquidqantityFieldID,'Numdays',1,'ReadKey',readAPIKey);
% Calculate the Cost
Billing_cost = 5* (meter_reading/1000);
display(Billing_cost,'Total Billing Cost (INR)');
% Start by setting the channel ID and Alert key. All alert key start with TAK.
data = thingSpeakRead(1035265,"Numdays", 1);
formatSpec = "The Water consumption bill is: %d,%d";
A1 = 5* (meter_reading/1000);
A2 = meter_reading
apiKey = 'TAK1S83KIQN0BBLNS';
alertURL = "https://api.thingspeak.com/alerts/send";
options = weboptions("HeaderFields", ["ThingSpeak-Alerts-API-Key", apiKey ]);
alertBody = sprintf(formatSpec,A1,A2)
alertSubject = sprintf(" Water consumption exceeded 100 kl!");
if meter_reading >= 100
webwrite(alertURL, "body", alertBody, "subject", alertSubject, options);

Accepted Answer

Rene Chan
Rene Chan on 20 May 2020
Edited: Rene Chan on 20 May 2020
Hi Aman,
You are calling thingSpeakRead with NumDays value of 1. That will give you all the data points (up to 8000) for the past day. If you want only the last data point, you need to substitue NumDays with NumPoints like the following:
meter_reading = thingSpeakRead(readChannelID,'Fields', outputliquidqantityFieldID,'NumPoints',1,'ReadKey',readAPIKey);
For additional information on the thingSpeakRead function, please refer to the document at https://www.mathworks.com/help/thingspeak/thingspeakread.html

More Answers (0)


More Answers in the  ThingSpeak Community

Community Treasure Hunt

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

Start Hunting!