#include <WiFi.h>
#include "ThingSpeak.h"
const char* WIFI_NAME = "Wokwi-GUEST"; // WiFi SSID
const char* WIFI_PASSWORD = ""; // WiFi Password
const int myChannelNumber = 2493571; // ThingSpeak channel number
const char* myApiKey = "E78D39O7ESHHDCWT"; // ThingSpeak API key
WiFiClient client;
void connectWiFi() {
Serial.println("Connecting to WiFi...");
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi not connected");
}
Serial.println("WiFi connected!");
Serial.println("Local IP: " + WiFi.localIP().toString());
}
void sendDataToThingSpeak(int channelNumber, const char* apiKey) {
ThingSpeak.begin(client);
int pm25MappedValue = random(0, 101);
int pm10MappedValue = random(0, 101);
int o3MappedValue = random(0, 201);
int no2MappedValue = random(0, 501);
int nh3MappedValue = random(0, 501);
int so2MappedValue = random(0, 1001);
Serial.println("PM2.5 Value: " + String(pm25MappedValue));
Serial.println("PM10 Value: " + String(pm10MappedValue));
Serial.println("O3 Value: " + String(o3MappedValue));
Serial.println("NO2 Value: " + String(no2MappedValue));
Serial.println("NH3 Value: " + String(nh3MappedValue));
Serial.println("SO2 Value: " + String(so2MappedValue));
ThingSpeak.setField(1, pm25MappedValue);
ThingSpeak.setField(2, pm10MappedValue);
ThingSpeak.setField(3, o3MappedValue);
ThingSpeak.setField(4, no2MappedValue);
ThingSpeak.setField(5, nh3MappedValue);
ThingSpeak.setField(6, so2MappedValue);
int status = ThingSpeak.writeFields(channelNumber, apiKey);
if (status == 200) {
Serial.println("Data pushed successfully");
} else {
Serial.println("Push error " + String(status));
}
Serial.println("---");
}
void setup() {
Serial.begin(115200);
connectWiFi();
}
void loop() {
sendDataToThingSpeak(myChannelNumber, myApiKey);
delay(15000); // Wait 10 seconds before pushing next set of data
}