Deleted Exception in platformio config. Added ServerException (dead code). Created MainComponent singleton.

This commit is contained in:
Yohan Boujon 2023-12-15 23:21:27 +01:00
parent ab0c2ca48c
commit d4de1f6efb
5 changed files with 83 additions and 15 deletions

View file

@ -0,0 +1,19 @@
#include "MainComponent.hpp"
MainComponent::MainComponent()
: _humidity(ComponentType::Analog, PIN_A0), _led(D8, D7, 2), _dht(DHT11, D3)
{
}
MainComponent::~MainComponent()
{}
void MainComponent::setup()
{
_led.setup();
_dht.setup();
}
Component& MainComponent::getHumidity() { return _humidity; }
LedComponent& MainComponent::getLed() { return _led; }
DHTComponent& MainComponent::getDHT() { return _dht; }

View file

@ -0,0 +1,34 @@
#ifndef _HEADER_COMPONENT_MAIN
#define _HEADER_COMPONENT_MAIN
#include "Component.hpp"
#include "LedComponent.hpp"
#include "DHTComponent.hpp"
class MainComponent {
public:
// Singleton
static MainComponent& GetInstance()
{
static MainComponent instance;
return instance;
}
// Public functions
void setup();
Component& getHumidity();
LedComponent& getLed();
DHTComponent& getDHT();
private:
// Singleton
MainComponent();
~MainComponent();
MainComponent(const MainComponent&) = delete;
MainComponent& operator=(const MainComponent&) = delete;
// Components
Component _humidity;
LedComponent _led;
DHTComponent _dht;
};
#endif //

View file

@ -0,0 +1,22 @@
#ifndef _HEADER_SERVER_EXCEPTION
#define _HEADER_SERVER_EXCEPTION
#include <Arduino.h>
#include <exception>
#include "ServerException.hpp"
class ServerException : public std::exception
{
public:
ServerException(const char* msg, uint8_t code)
: _msg(msg), _code(code)
{
}
uint8_t code() { return _code; }
const char* what() { return _msg; }
private:
const char* _msg;
uint8_t _code;
};
#endif // _HEADER_SERVER_EXCEPTION

View file

@ -11,7 +11,8 @@
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
build_flags = -fexceptions
build_flags =
-std=c++11
framework = arduino
lib_deps =
tzapu/WiFiManager@^0.16.0

View file

@ -3,9 +3,7 @@
#include <ESP8266WebServer.h>
#include "ServerHandler.hpp"
#include "Component.hpp"
#include "LedComponent.hpp"
#include "DHTComponent.hpp"
#include "MainComponent.hpp"
#include "Screen.hpp"
#ifdef SSID_CLOVER
@ -15,16 +13,12 @@
const char* pswd = PSWD_CLOVER;
#endif
Component humidity(ComponentType::Analog, PIN_A0);
LedComponent led(D8,D7,2);
DHTComponent airSensor(DHT11,D3);
void setup()
{
// Sensors/Acuators setup
led.setup();
airSensor.setup();
MainComponent::GetInstance().setup();
// Lights are off when powered
auto& led = MainComponent::GetInstance().getLed();
led.setColor(0,{0,0,0});
led.setColor(1,{0,0,0});
@ -43,8 +37,6 @@ void loop()
auto& serverHandler = ServerHandler::GetInstance();
auto& dataHandler = DataHandler::GetInstance();
auto& screen = Display::Screen::GetInstance();
led.setColor(0,{32,0,0});
led.setColor(1,{0,32,0});
// Could not connect after setup: Showing screen failure
if(!serverHandler.isConnected())
@ -71,9 +63,9 @@ void loop()
// Data gathered from various sensors
// 0 -> air(0), 0-300 -> dry(20), 300-700 -> humid (580), 700-950 -> water(940)
auto soilHumidityData = static_cast<float>(std::any_cast<int>(humidity.getValue()));
auto airTemperatureData = airSensor.getTemperature();
auto airHumidityData = airSensor.getHumidity();
auto soilHumidityData = static_cast<float>(std::any_cast<int>(MainComponent::GetInstance().getHumidity().getValue()));
auto airTemperatureData = MainComponent::GetInstance().getDHT().getTemperature();
auto airHumidityData = MainComponent::GetInstance().getDHT().getHumidity();
// Updating the data handler
dataHandler.updateSoilMoistureData(soilHumidityData);