text: #pragma once
  
  #include <WiFi.h>
  #include <ArduinoOTA.h>
  
  class LightWifi
  {
  private:
  public:
      void begin(const char *ssid, const char *password, const char *hostname)
      {
          Serial.println();
          Serial.print("Network to ");
          Serial.println(ssid);
          WiFi.begin(ssid, password);
          WiFi.setHostname(hostname);
  
          while (WiFi.status() != WL_CONNECTED)
          {
              delay(500);
              Serial.print(".");
          }
  
          Serial.println("");
          Serial.println("WiFi connected.");
          Serial.println("IP address: ");
          Serial.println(WiFi.localIP());
  
          Serial.println("=== Setup OTA ===");
  
          ArduinoOTA
              .onStart([]() {
                  String type;
                  if (ArduinoOTA.getCommand() == U_FLASH)
                      type = "sketch";
                  else // U_SPIFFS
                      type = "filesystem";
  
                  // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
                  Serial.println("Start updating " + type);
              })
              .onEnd([]() {
                  Serial.println("\nEnd");
              })
              .onProgress([](unsigned int progress, unsigned int total) {
                  Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
              })
              .onError([](ota_error_t error) {
                  Serial.printf("Error[%u]: ", error);
                  if (error == OTA_AUTH_ERROR)
                      Serial.println("Auth Failed");
                  else if (error == OTA_BEGIN_ERROR)
                      Serial.println("Begin Failed");
                  else if (error == OTA_CONNECT_ERROR)
                      Serial.println("Connect Failed");
                  else if (error == OTA_RECEIVE_ERROR)
                      Serial.println("Receive Failed");
                  else if (error == OTA_END_ERROR)
                      Serial.println("End Failed");
              });
  
          ArduinoOTA.begin();
      }
      void loop()
      {
          ArduinoOTA.handle();
      }
  };