{"id":20120803,"url":"https://github.com/nthnn/dynaconfig","last_synced_at":"2026-04-20T04:03:04.996Z","repository":{"id":245306252,"uuid":"817867834","full_name":"nthnn/DynaConfig","owner":"nthnn","description":"Arduino WiFi dynamic configuration library for ESP32 using captive portal authentication.","archived":false,"fork":false,"pushed_at":"2024-06-20T16:38:31.000Z","size":295,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T15:53:53.621Z","etag":null,"topics":["arduino-library","arduino-wifi","captive-portal","esp32","esp32-arduino","esp32-library","esp32-platformio","platformio-arduino","platformio-library","wifi","wifi-configuration"],"latest_commit_sha":null,"homepage":"https://nthnn.github.io/DynaConfig/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nthnn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"nthnn","custom":"https://www.buymeacoffee.com/nthnn"}},"created_at":"2024-06-20T15:51:01.000Z","updated_at":"2024-06-20T16:21:05.000Z","dependencies_parsed_at":"2024-06-21T09:19:12.902Z","dependency_job_id":"9b76c90d-2801-4d68-8550-206b456ba57f","html_url":"https://github.com/nthnn/DynaConfig","commit_stats":null,"previous_names":["nthnn/dynaconfig"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/nthnn/DynaConfig","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FDynaConfig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FDynaConfig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FDynaConfig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FDynaConfig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nthnn","download_url":"https://codeload.github.com/nthnn/DynaConfig/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FDynaConfig/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32032305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino-library","arduino-wifi","captive-portal","esp32","esp32-arduino","esp32-library","esp32-platformio","platformio-arduino","platformio-library","wifi","wifi-configuration"],"created_at":"2024-11-13T19:23:13.338Z","updated_at":"2026-04-20T04:03:04.979Z","avatar_url":"https://github.com/nthnn.png","language":"C++","funding_links":["https://github.com/sponsors/nthnn","https://www.buymeacoffee.com/nthnn"],"categories":[],"sub_categories":[],"readme":"# DynaConfig\n\n![Arduino CI](https://github.com/nthnn/DynaConfig/actions/workflows/arduino_ci.yml/badge.svg) ![Arduino Lint](https://github.com/nthnn/DynaConfig/actions/workflows/arduino_lint.yml/badge.svg)\n![Arduino Release](https://img.shields.io/badge/Library%20Manager-v0.0.1-red?logo=Arduino)\n\nDynaConfig is a library for managing WiFi configuration on ESP32 devices using a captive portal. It allows users to dynamically configure WiFi credentials through a web interface, making it easy to set up and change network settings without modifying the firmware.\n\n- **Captive Portal**: Sets up an access point to serve a web page for WiFi configuration.\n- **Persistent Storage**: Stores WiFi credentials in non-volatile memory using the Preferences library.\n- **Automatic WiFi Connection**: Connects to the stored WiFi network if credentials are available.\n- **Fallback Mode**: Starts the captive portal if no credentials are found or if the connection fails.\n\n## Screenshots\n\n| Captive Portal Index Page                        | Captive Portal Success Page                        |\n|--------------------------------------------------|----------------------------------------------------|\n| ![Index Page](misc/screenshots/screenshot-1.png) | ![Success Page](misc/screenshots/screenshot-2.png) |\n\n## Getting Started\n\n### Installation\n\n1. **Clone the Repository**:\n\n    ```sh\n    git clone https://github.com/nthnn/DynaConfig.git\n    ```\n\n2. **Copy to Arduino Libraries Folder**: Copy the `DynaConfig` folder to your Arduino libraries directory, typically located at `~/Documents/Arduino/libraries` on Linux-based systems.\n\n3. **Include the Library**: In your Arduino sketch, include the library:\n\n    ```cpp\n    #include \u003cDynaConfig.h\u003e\n    ```\n\n### Usage\n\nHere’s a basic example of how to use the DynaConfig library in your sketch:\n\n```cpp\n#include \u003cdynaconfig.h\u003e\n#include \u003cWiFi.h\u003e\n\nvoid setup() {\n    // Initialize serial communication at a baud rate of 115200\n    Serial.begin(115200);\n\n    // Create an instance of the DynaConfig class with the name \"dyna-config\" for the captive portal\n    DynaConfig dynaConfig(\"dyna-config\");\n    // Check WiFi configuration; starts the captive portal if no credentials are found\n    dynaConfig.checkWiFiConfig();\n\n    // Set the WiFi mode to station (client)\n    WiFi.mode(WIFI_STA);\n    // Attempt to connect to the WiFi network using the stored SSID and password\n    WiFi.begin(\n        dynaConfig.getConfigSSID(),      // Retrieve the stored SSID\n        dynaConfig.getConfigPasskey()    // Retrieve the stored password\n    );\n\n    // Close the DynaConfig class object\n    dynaConfig.close();\n\n    // Indicate that the device is attempting to connect to the WiFi network\n    Serial.println(\"Connecting\");\n    // Wait until the device is connected to the WiFi network\n    while (WiFi.status() != WL_CONNECTED) {\n        Serial.print(\".\");    // Print a dot for each connection attempt\n        delay(100);           // Wait for 100 milliseconds before retrying\n    }\n\n    // Once connected, print a success message to the serial monitor\n    Serial.println(\"\\nConnected to the WiFi network\");\n\n    // Print the local IP address assigned to the ESP32\n    Serial.print(\"Local ESP32 IP: \");\n    Serial.println(WiFi.localIP());\n}\n\nvoid loop() {\n    // Add a small delay to prevent excessive CPU usage in the loop\n    delay(10);\n}\n```\n\n## License\n\nCopyright 2024 - Nathanne Isip\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnthnn%2Fdynaconfig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnthnn%2Fdynaconfig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnthnn%2Fdynaconfig/lists"}