// Program for esp32 to connect to wifi (broadband) // created by Jans Hendry // Universitas Gadjah Mada, Indonesia // Kamakura Node, Japan // fab academy MIT - 2022 #include // for wifi #include "ThingSpeak.h" // cloud #include "dht.h" // sensor const char* ssid = "Baskom"; // your network SSID (name) const char* password = "masukajah"; // your network password WiFiClient client; // client object dht DHT; // create object from sensor //int numChannel = 3; // number of field unsigned long waitagain = 100; // msec unsigned long tdelta = 0; // variable temperature and humidity float temper = 0; float humid = 0; // API Key for thingspeak const char * WriteAPIKey = "KDYMEB4XN07UIPC0"; const char * ReadAPIKey = "MBO0T61W0SSTHDVF"; unsigned long channID = 1720749; // signaling from attiny3216 const int sigFromat = 2; const int sigToat = 15; const int sens = 4; void setup() { // Prepare serial2 Serial.begin(115200); // for computer communication WiFi.mode(WIFI_STA); // Initialize WIFI ThingSpeak.begin(client); // Initialize ThingSpeak WiFi.disconnect(); // setup signal pinMode(sigFromat, INPUT); pinMode(sens, INPUT); pinMode(sigToat, OUTPUT); digitalWrite(sigToat, LOW); while (digitalRead(sigFromat) != HIGH){ // do nothing } // Connect to wifi while (WiFi.status() != WL_CONNECTED){ WiFi.begin(ssid, password); // input credentials Serial.println("Connected"); delay(100); } delay(500); // delay 0.5 second } void loop() { if ((millis() - tdelta) > waitagain){ // read sensor float dt = DHT.read11(sens); temper = DHT.temperature - 5; humid = DHT.humidity - 10; // send to cloud ThingSpeak.setField(1, temper); ThingSpeak.setField(2, humid); int dt1 = ThingSpeak.writeFields(channID, WriteAPIKey); // display to serial Serial.print("temperature:"); Serial.println(temper); Serial.print("humidity:"); Serial.println(humid); tdelta = millis(); // read data directly from cloud using same micro float cloud_temper = ThingSpeak.readLongField(channID, 1, ReadAPIKey); int statusCode = ThingSpeak.getLastReadStatus(); Serial.print("Cloud temperature: "); Serial.println(cloud_temper); if (statusCode == 200){ if (cloud_temper >= 30){ digitalWrite(sigToat, HIGH); } else{ digitalWrite(sigToat, LOW); } } } }