2024-08-30 21:08:34 +02:00
|
|
|
#ifndef __BACKEND_COMMUNICATION_HPP__
|
|
|
|
#define __BACKEND_COMMUNICATION_HPP__
|
2024-08-18 11:19:41 +02:00
|
|
|
|
|
|
|
#include <Arduino.h>
|
|
|
|
#include <ArduinoJson.h>
|
|
|
|
|
|
|
|
#include "../include/root_ca.hpp"
|
|
|
|
#include "../include/wifi_handler.hpp"
|
|
|
|
|
|
|
|
class BackendCommunication {
|
2024-09-07 00:03:53 +02:00
|
|
|
public:
|
|
|
|
// Public enums
|
|
|
|
enum State { ERROR, STILL_VALID, UPDATED };
|
|
|
|
|
2024-08-18 11:19:41 +02:00
|
|
|
public:
|
|
|
|
// Constructor
|
|
|
|
BackendCommunication(WifiHandler& p_wifi_handler);
|
|
|
|
|
|
|
|
public:
|
|
|
|
// Public methods
|
|
|
|
bool getConfig();
|
|
|
|
|
|
|
|
bool getWeatherData();
|
|
|
|
|
2024-09-07 00:03:53 +02:00
|
|
|
State update();
|
|
|
|
|
2024-08-18 11:19:41 +02:00
|
|
|
private:
|
|
|
|
// Private methods
|
2024-08-30 21:08:34 +02:00
|
|
|
bool parseConfig(String& p_payload);
|
|
|
|
|
|
|
|
bool parseWeatherData(String& p_payload);
|
|
|
|
|
2024-08-18 11:19:41 +02:00
|
|
|
String urlencode(String str);
|
|
|
|
|
|
|
|
public:
|
|
|
|
// Public member objects
|
|
|
|
JsonDocument m_config;
|
|
|
|
bool m_is_config_valid;
|
2024-09-07 00:03:53 +02:00
|
|
|
String m_config_timestamp;
|
2024-08-18 11:19:41 +02:00
|
|
|
|
|
|
|
JsonDocument m_weather_data;
|
2024-09-07 00:03:53 +02:00
|
|
|
int32_t m_next_call;
|
|
|
|
|
|
|
|
private:
|
|
|
|
// Private static members
|
|
|
|
constexpr static uint32_t INTERVAL_MS = 60U * 1000U;
|
2024-08-18 11:19:41 +02:00
|
|
|
|
|
|
|
private:
|
|
|
|
// Private member objects
|
|
|
|
WifiHandler& m_wifi_handler;
|
|
|
|
};
|
|
|
|
|
2024-08-30 21:08:34 +02:00
|
|
|
#endif // __BACKEND_COMMUNICATION_HPP__
|