主要内容

搜索

Hello,
I want to fetch Data from the openweather API.
I want to fetch the value "day" from the API for every hour (Time Control)
But there is a Problem with indexing. I tried also "{ }" but there is also the same Error:
Dot indexing is not supported for variables of this type. Error in Wettervorhersage von openweather (line 10) temperature_Morgen = temperature.temp.day;
Does anyone have a good solution for indexing?
Code
api_url = 'https://api.openweathermap.org/data/2.5/onecall?lat=XXXX&lon=XXXXX&exclude=alerts&appid=XXXXXXXXXXXXXXX&lang=de&units=metric';
options = weboptions('ContentType','json');
%% Daten von der API abrufen
weather_data = webread(api_url,options);
% Werte für die Felder des ThingSpeak-Channels auswählen
temperature = weather_data.daily(1);
temperature_Morgen = temperature.temp.day;
humidity = weather_data.daily(1);
humidity_Morgen = humidity.humidity;
uvindex = weather_data.daily(1);
uvindex_Morgen = uvindex.uvi;
%Dieser Code berechnet die Summe von drei möglicherweise vorhandenen Regenwerten, die im Abschnitt daily{1}, daily{2} und daily{3} eines Wetterdaten-Structs enthalten sein können.
%Jeder Regenwert wird durch Überprüfung der Existenz des Felds 'rain' im jeweiligen Abschnitt geprüft. Wenn das Feld existiert, wird der Regenwert gespeichert. Andernfalls wird ein Nullwert verwendet.
%Die gespeicherten Regenwerte werden schließlich addiert und in der Variable "rain" gespeichert.
rain = 0;
for i = 1:3
if isfield(weather_data.daily(i),'rain')
rain_Next = weather_data.daily(i);
rain_Next = rain_Next.rain;
rain = rain + rain_Next;
end
end
% Daten an ThingSpeak senden
writeChannelID = XXXXXXXX; % ID des ThingSpeak-Channels
writeAPIKey = 'XXXXXXXXXXX'; % API-Schlüssel des ThingSpeak-Channels
thingSpeakWrite(writeChannelID, [temperature_Morgen, humidity_Morgen, rain, uvindex_Morgen], 'WriteKey', writeAPIKey);
Openweather json
{
{current}
{today}
{daily[{temp{day}}
{temp{day}}
{temp{day}}
{temp{day}}
{temp{day}}
]
}}
Error:
Dot indexing is not supported for variables of this type. Error in Wettervorhersage von openweather (line 10) temperature_Morgen = temperature.temp.day;