-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSmartArduino.ino
More file actions
67 lines (58 loc) · 1.94 KB
/
SmartArduino.ino
File metadata and controls
67 lines (58 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <WiFiMulti.h>
#include <NetworkClientSecure.h>
#include "TVModeDetector.h"
#include "Utils.h"
#include "Config.h"
#include "Logger.h"
#include "SteamBootstrapper.h"
#include "SABleKeyboard.h"
#include "KeyboardTracker.h"
#include "LaMetricRoomTemperatureProvider.h"
#include "LaMetricBluetoothController.h"
#include "UpdateManager.h"
#include "SmartThingsManager.h"
#include "LaMetricManager.h"
#include "RequestsServer.h"
#include "OvertimeTracker.h"
#include "LaMetricAirQualityProvider.h"
#include "HumidityPlantAlerter.h"
#include "CO2Alerter.h"
WiFiMulti WiFiMulti;
SA::TVModeDetector g_tvModeDetector;
SA::LaMetricRoomTemperatureProvider g_laMetricRoomTemperatureProvider;
SA::LaMetricBluetoothController g_laMetricBluetoothController;
SA::SABleKeyboard g_keyboard{"SmartArduino", "SmartArduino", 100};
SA::Logger g_logger{g_keyboard};
SA::SteamBootstrapper g_steamBootStrapper{g_keyboard};
SA::KeyboardTracker g_keyboardTracker{g_keyboard};
SA::RequestsServer g_server;
SA::OvertimeTracker g_overtimeTracker(g_server);
SA::LaMetricAirQualityProvider g_airQualityProvider;
SA::HumidityPlantAlerter g_humidityPlantAlerter;
SA::CO2Alerter g_co2Alerter;
void setup()
{
SA::Utils::InitializeSerial();
WiFiMulti = SA::Utils::InitializeWiFi();
SA::Utils::InitializeClock();
g_keyboard.begin();
g_server.Init();
}
void loop()
{
SA::UpdateManager::Get().Update();
SA::SmartThingsManager::Get().PostUpdate();
SA::LaMetricManager::Get().PostUpdate();
//Serial.printf("Remaining memory=%u, Largest memory block=%u\n", ESP.getFreeHeap(), heap_caps_get_largest_free_block(MALLOC_CAP_8BIT));
const unsigned long nextUpdateTimestamp = SA::UpdateManager::Get().GetNextUpdateTimestamp();
if (nextUpdateTimestamp > millis())
{
const unsigned long delayDuration = nextUpdateTimestamp - millis();
Serial.printf("Sleeping for %fs...\n", delayDuration / 1000.0f);
delay(delayDuration);
}
else
{
Serial.println("No sleeping");
}
}