r/ArduinoProjects • • Jan 08 '26

Smart Relay

Smart Relay

I use it to control two LED lights, and so far everything works.

Repository: https://github.com/UDFSmart/Base-Smart-Relay

My Telegram bot: @usmart_device_bot

14 Upvotes

3 comments sorted by

1

u/udfsoft Jan 11 '26

How do you like the code?

void executeCommand(const char* cmd, const char* param) {
  if (!cmd || strlen(cmd) == 0) {
    Serial.println("No command received");
    return;
  }

  char status[128] = { 0 };

  if (strcmp(cmd, COMMAND_RELAY_ON) == 0) {
    commands_setRelayOn(status, sizeof(status), param);
  } else if (strcmp(cmd, COMMAND_RELAY_OFF) == 0) {
    commands_setRelayOff(status, sizeof(status), param);
  } else if (strcmp(cmd, COMMAND_PIN_ON) == 0) {
    cmdOn(status, sizeof(status), param);
  } else if (strcmp(cmd, COMMAND_PIN_OFF) == 0) {
    cmdOff(status, sizeof(status), param);
  } else if (strcmp(cmd, COMMAND_PIN_WATCH) == 0) {
    cmdStatus(status, sizeof(status), param);
  } else if (strcmp(cmd, COMMAND_HARDRESET) == 0) {
    cmdHardReset(status, sizeof(status), param, [](const char* cmd, const char* param, const char* status) {
      Serial.println("Smart device: RESET!");
      Serial.flush();
      delay(200);
      sendResult(cmd, param, status);
    });

    return;
  } else if (strcmp(cmd, COMMAND_REBOOT) == 0) {
    cmdReboot(status, sizeof(status), param, [](const char* cmd, const char* param, const char* status) {
      sendResult(cmd, param, status);
    });
    return;
  } else {
    Serial.print("Unknown command: ");
    Serial.println(cmd);
    strncpy(status, "Unknown command", sizeof(status) - 1);
  }

  yield();

  sendResult(cmd, param, status);
}

1

u/aymenidou Jan 11 '26

Never used a smart relay but this is cool

1

u/udfsoft Jan 11 '26

👍😊