#include <Arduino.h>
#include <Wire.h>
#include "data.h"
#include "battery.h"
#include "display.h"
#include "datalog.h"
#include "co2.h"
#include "pm.h"
Battery battery;
PM pm;
CO2 co2;
SensorData data;
Display display;
DataLog datalog;
void handleCommand(const String &line) {
int firstSpace = line.indexOf(' ');
if (firstSpace < 0) return;
String tag = line.substring(0,firstSpace);
String command = line.substring(firstSpace+1);
tag.trim();command.trim();
Serial.print("# <");Serial.print(tag);
Serial.print("|");Serial.print(command);
Serial.println(">");
if (battery.serialCommand(tag,command)) return;
if (pm.serialCommand(tag,command)) return;
if (co2.serialCommand(tag,command)) return;
if (display.serialCommand(tag,command)) return;
if (datalog.serialCommand(tag,command)) return;
}
void setup() {
Serial.begin(115200);
while (!Serial) {
delay(100);
}
Wire.begin(21,22);
display.start();
display.show(&data);
datalog.start();
battery.start();
co2.start();
pm.start();
Serial.println("# Waiting for first measurement... (5 sec)");
delay(5000);
}
void loop() {
bool changed;
if (battery.dataReady()) { changed=true; battery.read(&data); }
if (pm.dataReady()) { changed = true; pm.read(&data); }
if (co2.dataReady()) { changed = true; co2.read(&data); }
if (changed) {
display.show(&data);
datalog.show(&data);
}
if (Serial.available()) {
Serial.println("# reading");
String line = Serial.readStringUntil('\n');
Serial.print("# ");Serial.println(line);
handleCommand(line);
}
delay(5000);
}