#include <ESP8266WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "xxxxxx";
const char* password = "xxxxx";
char thingSpeakAddress[] = "api.thingspeak.com";
String APIKey = "xxxxxx";
unsigned long channelNumber = xxxxx;
WiFiClient client;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
unsigned long startAttemptTime = millis();
while (WiFi.status() != WL_CONNECTED && millis() - startAttemptTime < 5000) {
delay(500);
Serial.print(".");
}
if(WiFi.status() != WL_CONNECTED) {
Serial.println("Failed to connect to WiFi");
}
ThingSpeak.begin(client);
}
void loop() {
if (Serial.available()) {
String data = Serial.readStringUntil('\n');
int commaIndex[6];
commaIndex[0] = data.indexOf(',');
for(int i=1; i<6; i++){
commaIndex[i] = data.indexOf(',', commaIndex[i-1] + 1);
}
if(commaIndex[5] > 0) {
String humidity1 = data.substring(0, commaIndex[0]);
String humidity2 = data.substring(commaIndex[0] + 1, commaIndex[1]);
String humDHT = data.substring(commaIndex[1] + 1, commaIndex[2]);
String tempDHT = data.substring(commaIndex[2] + 1, commaIndex[3]);
String tempC = data.substring(commaIndex[3] + 1, commaIndex[4]);
String relay1Count = data.substring(commaIndex[4] + 1, commaIndex[5]);
String relay2Count = data.substring(commaIndex[5] + 1);
Serial.println("humidity1: " + humidity1);
Serial.println("humidity2: " + humidity2);
Serial.println("humDHT: " + humDHT);
Serial.println("tempDHT: " + tempDHT);
Serial.println("tempC: " + tempC);
Serial.println("relay1Count: " + relay1Count);
Serial.println("relay2Count: " + relay2Count);
ThingSpeak.setField(1, humidity1.toInt());
ThingSpeak.setField(2, humidity2.toInt());
ThingSpeak.setField(3, humDHT.toFloat());
ThingSpeak.setField(4, tempDHT.toFloat());
ThingSpeak.setField(5, tempC.toFloat());
ThingSpeak.setField(6, relay1Count.toInt());
ThingSpeak.setField(7, relay2Count.toInt());
ThingSpeak.writeFields(channelNumber, APIKey.c_str());
} else {
Serial.println("Invalid data format");
}
}
delay(20000);
}