retrieving solar irradiance data through webread function
2 views (last 30 days)
Show older comments
how can i retrieve solar irradiance data of 24 hours from https://www.newquayweather.com/pwsWD/index.php in MATLAB through webread function?
0 Comments
Accepted Answer
Cameron
on 9 Mar 2023
Edited: Cameron
on 9 Mar 2023
This is a way to get it instantaneously.
url = 'https://www.newquayweather.com/pwsWD/index.php';
w = webread(url);
loc1 = strfind(w,'W/m²');
B = str2num(string(regexp(w(loc1-10:loc1),'\d*','Match')));
fprintf('Solar irradiance at %s is %d W/m²',datetime('now'),B)
4 Comments
Cameron
on 10 Mar 2023
There are a couple of things you can do. The reason I didn't plot the tsi vs date is because if you were to close the graph, the program would stop. You can either run the script until 1 whole day has passed or you can hit Control+C to manually stop the program. The variables for dt and tsi should be in your workspace up until you stopped the program. The code I will paste below will save your data to a .txt file you specify prior to reading data from the website. So you can open this file to see all the data that's been collected over a period of time. I did notice while I was running this script that sometimes the url said the solar irradiance was 0 W/m2 which wasn't true, but that's what was on the url so that's what was read by the program.
clear
url = 'https://www.newquayweather.com/pwsWD/index.php'; %your url
[file,path,indx] = uiputfile('.txt'); %save a file as a .txt. you can change this to your preferred extension
if indx == 0; msg = 'No path selected.'; error(msg); end %user hits Cancel or closes uiputfile prompt
cd(path) %change path to the one designated in uiputfile
fileID = fopen(file,'a'); %open file and append any data
SecBetweenReading = 10; %seconds between each reading
opt = weboptions('Timeout',60); %set the web timeout to 60 seconds
fig = figure; %create figure
ax = uiaxes(fig); %create axes
for x = 1:3600*24/SecBetweenReading %3600 seconds in an hour, 24 hours divided by seconds between reading
w = webread(url,opt); %read the web page
loc1 = strfind(w,'W/m²'); %find where W/m2 is
B = str2num(string(regexp(w(loc1-10:loc1),'\d*','Match'))); %get only the number
dt(x,1) = datetime('now'); %save datetime
tsi(x,1) = B; %save your solar irradiance
fprintf(fileID,'%s,%d\n',dt(x,1),tsi(x,1));
disp(dt(end,1)) %display the most recent time the data was read
disp(tsi(end,1)) %display the most recent tsi the data was read
if isgraphics(ax) %if you have not closed the plot
plot(ax,dt,tsi,'-o') %plot all data
end
pause(SecBetweenReading) %pause for a given amount of time
end
fclose(fileID);
If you're having difficulties deleting files, you may have not used the fclose() function on one of your .txt files. I would use
fclose('all')
if you're getting an error from your computer saying MATLAB has a certain file open.
More Answers (0)
See Also
Categories
Find more on Solar in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!