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.
3 views (last 30 days)
Show older comments
% 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);
end
0 Comments
Accepted Answer
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
Rene
0 Comments
More Answers (0)
Communities
More Answers in the ThingSpeak Community
See Also
Categories
Find more on Read Data from Channel in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!