Menghubungkan ESP8266 Ke AI ASISTEN

Bayangkan kamu memiliki sebuah rumah pintar yang dapat dikelola dengan mudah menggunakan AI Asisten. Dengan bantuan ESP8266, kamu dapat menghubungkan perangkat IoT ke AI Asisten dan mengontrolnya dengan mudah. Mari kita lihat cara menghubungkan ESP8266 dengan AI Asisten.

"Kamu ingin memiliki rumah pintar yang dapat dikelola dengan mudah? Dengan ESP8266 dan AI Asisten, kamu dapat menghubungkan perangkat IoT ke sistem AI dan mengontrolnya dengan mudah. Dapatkan rumah pintar yang cerdas dan efisien dengan menghubungkan ESP8266 dengan AI Asisten sekarang juga!" Kode Contoh: Kode contoh yang dapat kamu gunakan untuk menghubungkan ESP8266 dengan AI Asisten adalah sebagai berikut:

Koding Arduino (ESP8266)

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecure.h> 

const char* ssid = "ssid";
const char* password = "password";

const char* host = "generatedpromptpro.online"; 
String apiKey = "sk-iot-xxxxxxxxxxxx"; 
String deviceID = "lampu_kamar";        

const int RELAY_PIN = D5; 

void setup() {
  Serial.begin(115200);
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, LOW); 

  WiFi.begin(ssid, password);
  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" Connected!");
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    
    WiFiClientSecure client;
    client.setInsecure(); // Wajib untuk HTTPS
    
    HTTPClient http;

    String url = "https://" + String(host) + "/sikai/api/iot_gateway.php?k=" + apiKey + "&d=" + deviceID;
    
    // --- TAMBAHAN PENTING (Agar tidak dianggap BOT) ---
    http.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36");
    // --------------------------------------------------

    Serial.print("Requesting: ");
    Serial.println(url);

    http.begin(client, url); 
    int httpCode = http.GET();

    if (httpCode > 0) {
      String payload = http.getString();
      Serial.println("Response Code: " + String(httpCode));
      Serial.println("Payload: " + payload);

      if (payload == "1") {
        digitalWrite(RELAY_PIN, HIGH);
      } else {
        digitalWrite(RELAY_PIN, LOW);
      }
    } else {
      Serial.print("Error HTTP: ");
      Serial.println(httpCode);
    }
    http.end();
  }
  
  delay(1000); 
}

Koding Wokwi Simulasi (ESP32)

#include <WiFi.h>

#include <HTTPClient.h>

#include <WiFiClientSecure.h>


const char* ssid = "Wokwi-GUEST";

const char* password = "";

const char* host = "generatedpromptpro.online"; 

String apiKey = "sk-iot-xxxxxx"; 

String deviceID = "lampu_kamar";         

// Di ESP32 Wokwi, pin 14 biasanya aman digunakan

const int RELAY_PIN = 14; 


void setup() {

  Serial.begin(115200);

  pinMode(RELAY_PIN, OUTPUT);

  digitalWrite(RELAY_PIN, LOW); 

  WiFi.begin(ssid, password);

  Serial.print("Connecting to WiFi");

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println("\nConnected!");

}


void loop() {

  if (WiFi.status() == WL_CONNECTED) {

    WiFiClientSecure client;

    client.setInsecure(); // Mengabaikan verifikasi SSL agar simpel

    

    HTTPClient http;

    String url = "https://" + String(host) + "/sikai/api/iot_gateway.php?k=" + apiKey + "&d=" + deviceID;

    // Inisialisasi HTTP dengan client secure

    http.begin(client, url); 

    http.setUserAgent("Mozilla/5.0");


    int httpCode = http.GET();

    if (httpCode > 0) {

      String payload = http.getString();

      payload.trim(); // Penting: menghapus karakter liar seperti \n atau spasi

      

      Serial.println("Response: " + payload);

      if (payload == "1") {

        digitalWrite(RELAY_PIN, HIGH);

        Serial.println("Relay: ON");

      } else {

        digitalWrite(RELAY_PIN, LOW);

        Serial.println("Relay: OFF");

      }

    } else {

      // Perbaikan di sini: Menggunakan errorToString untuk ESP32

      Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());

    }

    http.end();

  }

  delay(5000); // Tunggu 5 detik sebelum cek lagi

}

Comments