Files
Jérôme Delacotte 7b30d6e298 first commit
2025-03-06 11:15:32 +01:00

68 lines
3.1 KiB
C++

#ifndef Meteo_h
#define Meteo_h
#include <Arduino.h>
#include "forecast_record.h"
#include "Ecran.h"
#include "Timer.h"
//#include <WiFiClient.h>
#include "HTTPClient.h"
#include "common.h"
#include "Connect.h"
#include "Icons.h"
class Meteo {
public:
Meteo(Ecran * ecran, Connect * connect,Timer * timer, String apikey, String server, String City, String Country);
bool loadData();
void addsun(int x, int y, int scale, bool IconSize);
void addcloud(int x, int y, int scale, int linesize);
void addraindrop(int x, int y, int scale);
void addrain(int x, int y, int scale, bool IconSize);
void addsnow(int x, int y, int scale, bool IconSize);
void addtstorm(int x, int y, int scale);
void addfog(int x, int y, int scale, int linesize, bool IconSize);
void Sunny(int x, int y, bool IconSize, String IconName);
void MostlySunny(int x, int y, bool IconSize, String IconName);
void Cloudy(int x, int y, bool IconSize, String IconName);
void Rain(int x, int y, bool IconSize, String IconName);
void ExpectRain(int x, int y, bool IconSize, String IconName);
void ChanceRain(int x, int y, bool IconSize, String IconName);
void Tstorms(int x, int y, bool IconSize, String IconName);
void Snow(int x, int y, bool IconSize, String IconName);
void Fog(int x, int y, bool IconSize, String IconName);
void Haze(int x, int y, bool IconSize, String IconName);
void CloudCover(int x, int y, int CCover);
void Visibility(int x, int y, String Visi);
void MostlyCloudy(int x, int y, bool IconSize, String IconName);
void Convert_Readings_to_Imperial();
bool DecodeWeather(WiFiClient& json, String Type);
String ConvertUnixTime(int unix_time);
bool getWeather(WiFiClient& client, const String& RequestType);
String calculateTodayPhase();
void drawMoon(int x, int y);
void drawTodayMoon(int x, int y);
double normalizedTodayPhase();
void addMoon(int x, int y, int scale, bool largeIcon);
public:
Ecran *ecran;
Connect * connect;
Timer * timer;
Forecast_record_type conditions[1];
Forecast_record_type previsions[max_readings];
float pressure_readings[max_readings] = {0};
float temperature_readings[max_readings] = {0};
float humidity_readings[max_readings] = {0};
float rain_readings[max_readings] = {0};
float snow_readings[max_readings] = {0};
int phase;
String apikey; // = "feba3f4d926db3b358a25ec782bd1c8b"; // See: https://openweathermap.org/ // It's free to get an API key, but don't take more than 60 readings/minute!
//http://api.openweathermap.org/data/2.5/weather?q=Melksham,UK&APPID=your_OWM_API_key&mode=json&units=metric&cnt=1 // Example API call for weather data
//http://api.openweathermap.org/data/2.5/forecast?q=Melksham,UK&APPID=your_OWM_API_key&mode=json&units=metric&cnt=40 // Example API call for forecast data
//Set your location according to OWM locations
String City; // = "La Gacilly"; // Your home city See: http://bulk.openweathermap.org/sample/
String Country; // = "FR";
String server; // = "api.openweathermap.org";
};
#endif