#include <WiFi.h>
#include <FirebaseESP32.h>
#include <SoftwareSerial.h>
#include <string.h>
#define WIFI_SSID "YourWiFiSSID"
#define WIFI_PASSWORD "YourWiFiPassword"
#define FIREBASE_HOST "yourproject.firebaseio.com"
#define FIREBASE_AUTH "yourAuthenticationKey"
SoftwareSerial gsmSerial(2, 3); // RX, TX pins of the GSM module
String mobileNumber;
FirebaseData firebaseData;
void setup() {
Serial.begin(115200);
gsmSerial.begin(9600); // Initialize GSM module
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi!");
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}
void loop() {
if (Firebase.getJSON(firebaseData, "/mobileNumber")) {
FirebaseJson &jsonObject = firebaseData.jsonObject();
JsonObject::iterator it = jsonObject.begin();
while (it != jsonObject.end()) {
if (it->value.isNumeric()) {
mobileNumber = String(it->value.asInt());
} else {
mobileNumber = it->value.asString();
}
Serial.print("Sending message to mobile number: ");
Serial.println(mobileNumber);
sendSMS(mobileNumber, "Hello from ESP32!"); // Send message to mobile number
it++;
}
}
delay(1000);
}
void sendSMS(String number, String message) {
gsmSerial.println("AT+CMGF=1"); // Set SMS mode to text
delay(1000);
gsmSerial.print("AT+CMGS=\""); // Send SMS command
gsmSerial.print(number);
gsmSerial.println("\"");
delay(1000);
gsmSerial.print(message); // Send message
delay(1000);
gsmSerial.write(26); // End message with ctrl+z
delay(1000);
}