//#define BLYNK_PRINT Serial
// Token dari akun Blynk
//#define BLYNK_TEMPLATE_ID "TMPL6DSbI17Ik"
//#define BLYNK_TEMPLATE_NAME "TEST API"
#define BLYNK_AUTH_TOKEN "ShZ0oSGicIcEvwk5riAven92q7ZDYXPV"
//#include <ESP8266WiFi.h>
#include <WiFi.h>
#include "DHT.h"
//#include "config.h"
#define DHTPIN 13
#define DHTTYPE DHT22
#define pot 35
#define tombol 16
int Status;
unsigned int potensio;
float suhu, humid;
DHT dht (DHTPIN, DHTTYPE);
// Untuk koneksi ke Internet / Wifi
char auth[] = BLYNK_AUTH_TOKEN; //Auth Token
char ssid[] = "Wokwi-GUEST"; //nama hotspot yang digunakan
char pass[] = ""; //password hotspot yang digunakan
// Blynk cloud server
const char* host = "sgp1.blynk.cloud";
unsigned int port = 80;
//sgp1.blynk.cloud:80
WiFiClient client;
// Start the WiFi connection
void connectNetwork() {
//digitalWrite(lampuIndikator, 1);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
//digitalWrite(lampuIndikator, 0);
Serial.println();
Serial.println("WiFi connected");
}
bool httpRequest(const String& method,
const String& url,
const String& request,
String& response)
{
Serial.print(F("Connecting to "));
Serial.print(host);
Serial.print(":");
Serial.print(port);
Serial.print("... ");
if (client.connect(host, port)) {
Serial.println("OK");
} else {
Serial.println("failed");
return false;
}
Serial.print(method); Serial.print(" "); Serial.println(url);
client.print(method); client.print(" ");
client.print(url); client.println(F(" HTTP/1.1"));
client.print(F("Host: ")); client.println(host);
client.println(F("Connection: Keep-Alive"));
if (request.length()) {
client.println(F("Content-Type: application/json"));
client.print(F("Content-Length: ")); client.println(request.length());
client.println();
client.print(request);
} else {
client.println();
}
//Serial.println("Waiting response");
int timeout = millis() + 5000;
while (client.available() == 0) {
if (timeout - millis() < 0) {
Serial.println(">>> Client Timeout !");
client.stop();
return false;
}
}
//Serial.println("Reading response");
int contentLength = -1;
while (client.available()) {
String line = client.readStringUntil('\n');
line.trim();
line.toLowerCase();
if (line.startsWith("content-length:")) {
contentLength = line.substring(line.lastIndexOf(':') + 1).toInt();
} else if (line.length() == 0) {
break;
}
}
//Serial.println("Reading response body");
response = "";
response.reserve(contentLength + 1);
while (response.length() < contentLength) {
if (client.available()) {
char c = client.read();
response += c;
} else if (!client.connected()) {
break;
}
}
client.stop();
return true;
}
void setup() {
Serial.begin(9600);
initPin();
delay(10);
Serial.println();
Serial.println();
dht.begin();
connectNetwork();
}
void loop() {
String response;
humid = dht.readHumidity(); //Variabel penampung nilai suhu
suhu = dht.readTemperature(); //Variabel penampung nilai kelembaban
if (isnan(humid)) {
humid = -99;
}
if (isnan(suhu)) {
suhu = -99;
}
potensio = analogRead(A0);
// Send value to the cloud
// similar to Blynk.virtualWrite()
//tampil data
Serial.println("\r\n--------------");
Serial.print("Humidity: "); Serial.print(humid); Serial.print(" % \t");
Serial.print("Temperature: "); Serial.print(suhu); Serial.println(" *C ");
Serial.print("Potensio: "); Serial.print(potensio);
//SEND BATCH DATA OR MULTIPLE DATA
String Data = "/external/api/batch/update?token=" + String(BLYNK_AUTH_TOKEN) + "&V1=" + String(humid, 1);
Data = Data + "&V0=" + String(suhu, 1);
Data = Data + "&V2=" + String(potensio);
if (httpRequest("GET", Data , "", response)) {
if (response.length() != 0) {
Serial.print("WARNING: ");
Serial.println(response);
}
}
// Read the value
Serial.println("Reading value");
if (httpRequest("GET", String("/external/api/get?token=") + BLYNK_AUTH_TOKEN + "&pin=V3", "", response)) {
Serial.print("Value from server: ");
Serial.println(response);
Status = response.toInt();
//digitalWrite(lampuBiru, Status);
}
if (httpRequest("GET", String("/external/api/update?token=") + BLYNK_AUTH_TOKEN + "&pin=V4&value=" + Status, "", response)) {
if (response.length() != 0) {
Serial.print("WARNING: ");
Serial.println(response);
}
}
delay(5000L);
}
void initPin() {
pinMode(tombol, INPUT_PULLUP);
//pinMode(lampuIndikator, OUTPUT);
//pinMode(lampuBiru, OUTPUT);
// digitalWrite(lampuBiru, 0);
}