CCCPaste

"Wi-Fi Sync" rev_03

/********* Pleasedontcode.com **********

	Pleasedontcode thanks you for automatic code generation! Enjoy your code!

	- Terms and Conditions:
	You have a non-exclusive, revocable, worldwide, royalty-free license
	for personal and commercial use. Attribution is optional; modifications
	are allowed, but you're responsible for code maintenance. We're not
	liable for any loss or damage. For full terms,
	please visit pleasedontcode.com/termsandconditions.

	- Project: "Wi-Fi Sync"
	- Source Code NOT compiled for: ESP32 DevKit V1
	- Source Code created on: 2024-06-11 15:53:49

********* Pleasedontcode.com **********/

/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
	/* Develop ESP32 code for LED blinking patterns on */
	/* two ESP32 devices using GPIO pins 23, 22, 21, and */
	/* 19 for Yellow, Red, Green and  Blue LEDs with pre- */
	/* programmed delays. Integrate Firebase for web */
	/* hosting, authentication, and real-time database. */
/****** SYSTEM REQUIREMENT 2 *****/
	/* Firebase authentication to both esp32 devices and */
	/* logins are not hardcoded but authenticated by */
	/* firebase. user UIDs are stored in Firebase user */
	/* can register email/password for login or use */
	/* google login. */
/****** END SYSTEM REQUIREMENTS *****/

/****** DEFINITION OF LIBRARIES *****/
#include 
#include   //https://github.com/mobizt/Firebase-ESP32
#include  // Include the token helper header
#include   // Include the RTDB helper header

/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void updateOutputs(void);
void blinkLEDs(void);

/***** DEFINITION OF DIGITAL OUTPUT PINS *****/
const uint8_t GPIO23_LED_PIN_D4 = 23;
const uint8_t GPIO22_LED_PIN_D13 = 22;
const uint8_t GPIO21_LED_PIN_D14 = 21;
const uint8_t GPIO19_LED_PIN_D16 = 19;

/***** DEFINITION OF OUTPUT RAW VARIABLES *****/
/***** used to store raw data *****/
bool GPIO23_LED_PIN_D4_rawData = 0;
bool GPIO22_LED_PIN_D13_rawData = 0;
bool GPIO21_LED_PIN_D14_rawData = 0;
bool GPIO19_LED_PIN_D16_rawData = 0;

/***** DEFINITION OF OUTPUT PHYSICAL VARIABLES *****/
/***** used to store data after characteristic curve transformation *****/
float GPIO23_LED_PIN_D4_phyData = 0.0;
float GPIO22_LED_PIN_D13_phyData = 0.0;
float GPIO21_LED_PIN_D14_phyData = 0.0;
float GPIO19_LED_PIN_D16_phyData = 0.0;

/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;

/* WiFi credentials */
#define WIFI_SSID "WIFI_AP"
#define WIFI_PASSWORD "WIFI_PASSWORD"

/* Firebase project API Key */
#define API_KEY "API_KEY"

/* Firebase Realtime Database URL */
#define DATABASE_URL "URL" //.firebaseio.com or ..firebasedatabase.app

/* Firebase user Email and password */
#define USER_EMAIL "USER_EMAIL"
#define USER_PASSWORD "USER_PASSWORD"

unsigned long previousMillis = 0; // will store last time LED was updated
const long interval = 1000; // interval at which to blink (milliseconds)

void setup(void)
{
    // Initialize serial communication
    Serial.begin(115200);

    // Initialize GPIO pins as outputs
    pinMode(GPIO23_LED_PIN_D4, OUTPUT);
    pinMode(GPIO22_LED_PIN_D13, OUTPUT);
    pinMode(GPIO21_LED_PIN_D14, OUTPUT);
    pinMode(GPIO19_LED_PIN_D16, OUTPUT);

    // Connect to Wi-Fi
    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
    Serial.print("Connecting to Wi-Fi");
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(300);
    }
    Serial.println();
    Serial.print("Connected with IP: ");
    Serial.println(WiFi.localIP());

    // Configure Firebase
    config.api_key = API_KEY;
    auth.user.email = USER_EMAIL;
    auth.user.password = USER_PASSWORD;
    config.database_url = DATABASE_URL;

    // Enable automatic reconnect to Wi-Fi
    Firebase.reconnectWiFi(true);
    fbdo.setResponseSize(4096);
    config.token_status_callback = tokenStatusCallback; // see addons/TokenHelper.h
    Firebase.begin(&config, &auth);
}

void loop(void)
{
    // Refresh output data
    updateOutputs();
    // Blink LEDs based on interval
    blinkLEDs();
}

void updateOutputs()
{
    // Update the state of the LEDs
    digitalWrite(GPIO23_LED_PIN_D4, GPIO23_LED_PIN_D4_rawData);
    digitalWrite(GPIO22_LED_PIN_D13, GPIO22_LED_PIN_D13_rawData);
    digitalWrite(GPIO21_LED_PIN_D14, GPIO21_LED_PIN_D14_rawData);
    digitalWrite(GPIO19_LED_PIN_D16, GPIO19_LED_PIN_D16_rawData);
}

void blinkLEDs()
{
    unsigned long currentMillis = millis();

    // Check if the interval has passed
    if (currentMillis - previousMillis >= interval)
    {
        // Save the last time the LEDs were updated
        previousMillis = currentMillis;

        // Toggle the state of the LEDs
        GPIO23_LED_PIN_D4_rawData = !GPIO23_LED_PIN_D4_rawData;
        GPIO22_LED_PIN_D13_rawData = !GPIO22_LED_PIN_D13_rawData;
        GPIO21_LED_PIN_D14_rawData = !GPIO21_LED_PIN_D14_rawData;
        GPIO19_LED_PIN_D16_rawData = !GPIO19_LED_PIN_D16_rawData;
    }
}

/* END CODE */