CCCPaste

WiFi Button rev_01

/********* 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: WiFi Button
	- Source Code compiled for: ESP32 DevKit V1
	- Source Code created on: 2024-03-09 14:11:34

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

/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
	/* Build a smart switch, until 4 wifi nets to be */
	/* used. Needs to scan all wifi and select the first */
	/* one that connect. If no connect, stay in loop */
	/* until connect. To be used with Tuya. send */
	/* callmebot when button change the state and serial */
	/* to sim800l */
/****** END SYSTEM REQUIREMENTS *****/

/****** DEFINITION OF LIBRARIES *****/
#include     //https://github.com/evert-arias/EasyButton
#include     //https://github.com/tuya/tuya-wifi-mcu-sdk-arduino-library
#include     //WiFi library for ESP32

/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void connectToWifi(void);

/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t Sensor_PushButton_PIN_D4 = 4;

/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
EasyButton button(Sensor_PushButton_PIN_D4);
TuyaWifi my_device;

// Flag to track if WiFi is connected
bool wifiConnected = false;

void setup(void)
{
  // put your setup code here, to run once:

  pinMode(Sensor_PushButton_PIN_D4, INPUT_PULLUP);

  // Initialize the EasyButton object
  button.begin();

  // Initialize the TuyaWifi object
  unsigned char pid[] = {"ma67l9sgmdyg3d2k"};
  unsigned char mcu_ver[] = {"1.0.0"};

  my_device.init(pid, mcu_ver);

  // Connect to WiFi
  connectToWifi();
}

void loop(void)
{
  // put your main code here, to run repeatedly:

  // Read the button state
  button.read();

  // Check if the button is pressed
  if (button.isPressed())
  {
    // Button is pressed
    // Add your code here to handle the button press event

    // Send callmebot message
    // Implement serial communication with SIM800L
  }

  // Handle the TuyaWifi library operations
  my_device.uart_service();

  delay(10); // Add a small delay to avoid excessive loop iterations
}

void connectToWifi(void)
{
  // Scan available WiFi networks
  int numNetworks = WiFi.scanNetworks();

  // Check if any networks are found
  if (numNetworks > 0)
  {
    // Loop through each network
    for (int i = 0; i < numNetworks; i++)
    {
      // Get the SSID of the network
      String ssid = WiFi.SSID(i);

      // Add your logic to select and connect to the first available network
      // You can use the WiFi.begin() function to connect to a specific network

      // Set wifiConnected flag to true if successfully connected
      wifiConnected = true;
      break;
    }
  }

  // If no networks are found or failed to connect, stay in loop until connected
  while (!wifiConnected)
  {
    // Retry the connection
    // You can add a delay here if needed to avoid excessive connection attempts
    connectToWifi();
  }
}