// 23.4A25.0B12.6C18.0D
// 55.0,45.0
float TempHeating;
float TempWater;
float T_A, T_B, T_C, T_D;
void parser(const String& msg){
int p1 = msg.indexOf(",");
if ( p1 > -1) {
// Si tratta del server 2. Questo meccanismo però + debole.
// Sarebbe meglio una label che identificva in modo univoco
String token = msg.substring(0, p1);
TempHeating = token.toFloat();
token = msg.substring(p1 + 1);
TempWater = token.toFloat();
Serial.print("Temperatura riscaldamento: ");
Serial.print(TempHeating, 1);
Serial.println(" °C");
Serial.print("Temperatura acqua: ");
Serial.print(TempWater, 1);
Serial.println(" °C");
}
else {
// Si tratta dell'altro messaggio
String token = msg.substring(0, msg.indexOf("A"));
T_A = token.toFloat();
token = msg.substring(msg.indexOf("A") + 1, msg.indexOf("B"));
T_B = token.toFloat();
token = msg.substring(msg.indexOf("B") + 1, msg.indexOf("C"));
T_C = token.toFloat();
token = msg.substring(msg.indexOf("C") + 1, msg.indexOf("D"));
T_D = token.toFloat();
Serial.println("Temperature A, B, C, D:");
Serial.print(T_A, 1);
Serial.print(", ");
Serial.print(T_B, 1);
Serial.print(", ");
Serial.print(T_C, 1);
Serial.print(", ");
Serial.print(T_D, 1);
Serial.println(" °C");
}
delay(100);
}
void setup() {
Serial.begin(115200);
Serial.println("Copia e incolla una delle stringhe di test");
}
void loop() {
if (Serial.available()) {
while (Serial.available()) {
String message = Serial.readStringUntil('\n');
parser(message);
}
}
}