====== 11. Qt - síťové služby ======
===== Weather map =====
Na internetu existuje řada služeb poskytujících meteorologická data pomocí REST API. Data jsou typicky vracena ve formátu JSON, který je možné v Qt zpracovat pomocí tříd ''QJsonDocument'', ''QJsonObject'' a ''QJsonArray''.
V tomto cvičení bude aplikace načítat:
* aktuální počasí
* předpověď počasí
* východ a západ slunce
* informace o městě a souřadnicích
* meteorologické ikony
Komunikace bude realizována pomocí tříd ''QNetworkAccessManager'', ''QNetworkRequest'' a ''QNetworkReply''.
===== Podklady pro cvičení =====
{{ :courses:b2b99ppc:tutorials:open-meteo_template.zip | Open-Meteo template }}
{{ :courses:b2b99ppc:tutorials:weather_template.zip | OpenWeatherMap template}}
{{ :courses:b2b99ppc:tutorials:ppc-tut11-qtweather-template-jk-update2025.zip | Template QtWeather (2025, JK)}}
-------
===== OpenWeatherMap =====
Na adrese https://openweathermap.org lze získat informace o současném počasí a pomocí API lze data číst. Data jsou uložena ve formátu JSON a je třeba je v Qt dekódovat, aby je bylo možné použít.
https://api.openweathermap.org/data/2.5/weather?q=prague&appid=9015878572d5a56d22bafb7d1e71c92e
API Key:
9015878572d5a56d22bafb7d1e71c92e
Obrázky počasí lze najít na odkazu:
http://openweathermap.org/img/wn/04d@2x.png
kde ''04d'' je typ ikony získaný v JSON objektu.
-------
===== Open-Meteo =====
Pro aktuální verzi cvičení bude využita služba Open-Meteo:
https://open-meteo.com/
Výhodou Open-Meteo je jednoduché použití bez nutnosti registrace nebo API klíče. Služba poskytuje data ve formátu JSON a umožňuje získávat aktuální počasí, předpověď, astronomické údaje i geolokační informace.
==== Vyhledání města (Geocoding API) ====
Vyhledání města a získání zeměpisných souřadnic:
https://geocoding-api.open-meteo.com/v1/search?name=Prague
==== Aktuální počasí ====
Ukázka načtení aktuálního počasí:
https://api.open-meteo.com/v1/forecast?latitude=50.08804&longitude=14.42076¤t=temperature_2m,relative_humidity_2m,surface_pressure,weather_code&timezone=auto
==== Východ a západ slunce ====
https://api.open-meteo.com/v1/forecast?latitude=50.08804&longitude=14.42076&timezone=auto&forecast_days=1&daily=sunrise,sunset
==== Hodinová předpověď ====
https://api.open-meteo.com/v1/forecast?latitude=50.08804&longitude=14.42076&hourly=temperature_2m&timezone=auto