dianartanto

esp32_relay

Feb 16th, 2026
59
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 2.68 KB | Source Code | 0 0
  1. #include <WiFi.h>
  2. #include <PubSubClient.h>
  3. int a[8] = { 13, 27, 26, 25, 23, 19, 18, 4 };
  4. const char* ssid = "NAMA WIFI";
  5. const char* password = "PASSWORD WIFI";
  6. const char* mqtt_server = "xxx.xxx.xxx.xxx"; //ALAMAT IP RASPBERRY
  7. WiFiClient espClient;
  8. PubSubClient client(espClient);
  9. void setup_wifi() {
  10.   delay(10);
  11.   Serial.println();
  12.   Serial.print("Connecting to ");
  13.   Serial.println(ssid);
  14.   WiFi.mode(WIFI_STA);
  15.   WiFi.begin(ssid, password);
  16.   while (WiFi.status() != WL_CONNECTED) {
  17.     delay(500);
  18.     Serial.print(".");
  19.   }
  20.   randomSeed(micros());
  21.   Serial.println("");
  22.   Serial.println("WiFi connected");
  23.   Serial.println("IP address: ");
  24.   Serial.println(WiFi.localIP());
  25. }
  26. void callback(char* topic, byte* payload, unsigned int length) {
  27.   char data1 = (char)payload[0];
  28.   char data2 = (char)payload[1];
  29.   switch (data1) {
  30.     case 'a':
  31.       if (data2 == '1') digitalWrite(a[0], LOW);
  32.       if (data2 == '0') digitalWrite(a[0], HIGH);
  33.       break;
  34.     case 'b':
  35.       if (data2 == '1') digitalWrite(a[1], LOW);
  36.       if (data2 == '0') digitalWrite(a[1], HIGH);
  37.       break;
  38.     case 'c':
  39.       if (data2 == '1') digitalWrite(a[2], LOW);
  40.       if (data2 == '0') digitalWrite(a[2], HIGH);
  41.       break;
  42.     case 'd':
  43.       if (data2 == '1') digitalWrite(a[3], LOW);
  44.       if (data2 == '0') digitalWrite(a[3], HIGH);
  45.       break;
  46.     case 'e':
  47.       if (data2 == '1') digitalWrite(a[4], LOW);
  48.       if (data2 == '0') digitalWrite(a[4], HIGH);
  49.       break;
  50.     case 'f':
  51.       if (data2 == '1') digitalWrite(a[5], LOW);
  52.       if (data2 == '0') digitalWrite(a[5], HIGH);
  53.       break;
  54.     case 'g':
  55.       if (data2 == '1') digitalWrite(a[6], LOW);
  56.       if (data2 == '0') digitalWrite(a[6], HIGH);
  57.       break;
  58.     case 'h':
  59.       if (data2 == '1') digitalWrite(a[7], LOW);
  60.       if (data2 == '0') digitalWrite(a[7], HIGH);
  61.       break;
  62.   }
  63. }
  64. void reconnect() {
  65.   while (!client.connected()) {
  66.     Serial.print("Attempting MQTT connection...");
  67.     String clientId = "ESP8266Client-";
  68.     clientId += String(random(0xffff), HEX);
  69.     if (client.connect(clientId.c_str())) {
  70.       Serial.println("connected");
  71.       client.subscribe("/esp32/relay"); // TOPIK UNTUK SUBSCRIBER
  72.     } else {
  73.       Serial.print("failed, rc=");
  74.       Serial.print(client.state());
  75.       Serial.println(" try again in 5 seconds");
  76.       delay(5000);
  77.     }
  78.   }
  79. }
  80. void setup() {
  81.   for (int i = 0; i < 8; i++) {
  82.     pinMode(a[i], OUTPUT);
  83.     digitalWrite(a[i], HIGH);
  84.   }
  85.   Serial.begin(115200);
  86.   setup_wifi();
  87.   client.setServer(mqtt_server, 1883);
  88.   client.setCallback(callback);
  89. }
  90. void loop() {
  91.   if (!client.connected()) {
  92.     reconnect();
  93.   }
  94.   client.loop();
  95. }
  96.  
Tags: ESP32 relay
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment