{"id":22956791,"url":"https://github.com/thehamdiz/mig-esp32","last_synced_at":"2026-02-02T11:03:21.152Z","repository":{"id":265333811,"uuid":"895797481","full_name":"theHamdiz/MIG-ESP32","owner":"theHamdiz","description":"ESP32 Truly Random Id Generator","archived":false,"fork":false,"pushed_at":"2024-11-29T05:43:23.000Z","size":34,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T05:41:40.694Z","etag":null,"topics":["esp32","esp32-s3","generator","random","server"],"latest_commit_sha":null,"homepage":"","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/theHamdiz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2024-11-28T23:37:12.000Z","updated_at":"2024-11-29T08:07:20.000Z","dependencies_parsed_at":"2025-02-07T16:31:53.338Z","dependency_job_id":"00c46fdb-5ac9-4543-aaca-8ec248bd338e","html_url":"https://github.com/theHamdiz/MIG-ESP32","commit_stats":null,"previous_names":["thehamdiz/mig-esp32"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theHamdiz%2FMIG-ESP32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theHamdiz%2FMIG-ESP32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theHamdiz%2FMIG-ESP32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theHamdiz%2FMIG-ESP32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theHamdiz","download_url":"https://codeload.github.com/theHamdiz/MIG-ESP32/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249280535,"owners_count":21243138,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["esp32","esp32-s3","generator","random","server"],"created_at":"2024-12-14T17:11:44.854Z","updated_at":"2026-02-02T11:03:16.131Z","avatar_url":"https://github.com/theHamdiz.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Hamdiz Truly Random Multi-ID Generator (MIG) (ESP32 Version)\n\nWelcome to Hamdiz Truly Random Multi-ID Generator (MIG), a versatile and robust ID generation tool for the ESP32 platform. This project is designed to generate various types of unique IDs with advanced features such as streaming, customizable output destinations, and peripheral validation.\n\n⚙️ Prerequisites\n\nBefore using the Hamdiz Multi-ID Generator, ensure you have installed all necessary dependencies and configured your environment correctly.\n\nRequired Libraries:\n\n\t1.\tWire.h: For I2C communication (used for LCD validation or other I2C peripherals).\n\t2.\tSD.h: For SD card operations.\n\t3.\tSPI.h: Required for interfacing with the SD card module.\n\t4.\tWiFi.h: For WiFi connectivity (used for API integration).\n\t5.\tHTTPClient.h: For sending HTTP requests to an API.\n\t6.\tEEPROM.h: For saving and retrieving setup data persistently.\n\nBaud Rate Configuration:\n\n\t•\tSet the Serial Monitor to 921600 baud to ensure proper communication with the ESP32.\n\nInstallation Instructions:\n\n\t1.\tOpen the Arduino IDE.\n\t2.\tNavigate to Sketch \u003e Include Library \u003e Manage Libraries.\n\t3.\tSearch for and install the required libraries listed above if not already installed.\n\t4.\tConfigure your Serial Monitor’s baud rate to 921600.\n\n\t⚠️ Failing to set up these dependencies or configure the baud rate may result in the project not functioning as expected.\n\n🌟 Features\n\nCore Features:\n\n\t•\tGenerate Unique IDs:\n\t•\tRandom Integer\n\t•\tUUID v1 (timestamp-based)\n\t•\tUUID v4 (random)\n\t•\tHexadecimal\n\t•\tBase64\n\t•\tAlphanumeric\n\t•\tBinary\n\t•\tCustom Character Sets\n\t•\tStream Mode: Continuously generates IDs at a specified interval.\n\t•\tSetup Configuration: On first use, configure the output destination (Serial, File, or API). Modify settings anytime using the setup command.\n\t•\tSave and Load Data: Write and retrieve data from an SD card for enhanced data management.\n\nAdvanced Features:\n\n\t1.\tPeripheral Validation:\n\t•\tAutomatically checks for connected peripherals (e.g., SD card, LCD).\n\t•\tPrints warnings if a required device is unavailable, ensuring smooth operation.\n\t2.\tCustomizable Output:\n\t•\tFlexible output options:\n\t•\tSerial: Outputs directly to the Serial Monitor.\n\t•\tFile: Saves generated IDs to an SD card file.\n\t•\tAPI: Sends generated IDs to a specified API endpoint with optional authentication.\n\t3.\tAPI Integration:\n\t•\tSupports Bearer and Basic authentication.\n\t•\tConfigurable API endpoints and payloads.\n\t4.\tSynonyms and Aliases:\n\t•\tCommands support multiple aliases for intuitive use (e.g., uuid v1 or uuid1).\n\t5.\tError Handling:\n\t•\tComprehensive and user-friendly error messages for invalid inputs or missing peripherals.\n\n📝 Commands\n\nID Generation:\n\n\t•\tint \u003clength\u003e (or integer \u003clength\u003e): Generate a random integer with the specified length.\n\t•\tuuid v1 (or uuid1 \u003clength\u003e) (or u1 \u003clength\u003e): Generate a UUID Version 1 (timestamp-based).\n\t•\tuuid v4 (or uuid4 \u003clength\u003e) (or u4 \u003clength\u003e): Generate a UUID Version 4 (random).\n\t•\thex \u003clength\u003e (or hexadecimal \u003clength\u003e): Generate a random hexadecimal string.\n\t•\tbase64 \u003clength\u003e (or b64 \u003clength\u003e): Generate a Base64 string.\n\t•\talphanum \u003clength\u003e (or alphanumeric \u003clength\u003e): Generate an alphanumeric string.\n\t•\tbin \u003clength\u003e: Generate a binary string.\n\t•\tcustom \u003cset\u003e \u003clength\u003e: Generate a string using a custom character set.\n\nData Management:\n\n\t•\tsave \u003cfilename\u003e: Save generated output to a file on the SD card.\n\t•\tread: Read and display the contents of the default output.txt file from the SD card.\n\n\u003e Kindly note that reading for now is only supported from the output.txt default file only. if you don't like this behaviour change it and send a pull request and I shall accept it.\n\nStreaming:\n\n\t•\tstream \u003ccommand\u003e \u003cinterval\u003e: Continuously execute a command at a specified interval (in milliseconds).\n\t•\tstop stream: Stop the currently active streaming mode.\n\nSetup:\n\n\t•\tsetup: Configure the output destination (Serial, File, or API).\n\n🔧 Usage\n\nFirst Run:\n\n\t1.\tSetup Configuration:\n\t•\tSpecify the output destination:\n\t•\tSerial: Prints to Serial Monitor.\n\t•\tFile: Saves to a specified file on an SD card.\n\t•\tAPI: Sends data to a configured API endpoint.\n\t•\tFor API output, configure:\n\t•\tURL\n\t•\tPayload format\n\t•\tAuthentication (Bearer or Basic)\n\t2.\tCommand Execution:\n\t•\tInput commands via the Serial Monitor to generate IDs or manage data.\n\t3.\tStreaming Mode:\n\t•\tUse the stream command to automate ID generation.\n\n🛠️ Error Handling\n\n\t•\tIf a required peripheral (e.g., SD card) is missing, a clear warning is displayed.\n\t•\tInvalid commands or inputs are handled gracefully with detailed error messages.\n\n🔄 Advanced Configuration\n\nModify the setup anytime using the setup command:\n\t•\tChange the output destination.\n\t•\tReconfigure API settings.\n\t•\tUpdate authentication details.\n\n📌 Project Details\n\n\t•\tAuthor: Ahmad Hamdi\n\t•\tPlatform: ESP32\n\t•\tLibraries Used:\n\t•\tWire.h (I2C communication)\n\t•\tSD.h and SPI.h (SD card operations)\n\t•\tWiFi.h and HTTPClient.h (API integration)\n\t•\tEEPROM.h (Persistent data storage)\n\n🔍 Example Workflow:\n\n\t1.\tGenerate a UUID v4:\n\nuuid v4\n\n\n\t2.\tStream random integers every 2 seconds:\n\nstream int 16 2000\n\n\n\t3.\tSave IDs to a file:\n\nsave output.txt\n\n\n\t4.\tRead and print the file content:\n\nread\n\n\n\t5.\tSend data to an API:\nSending data to an API is an automated process that you should not use directly; instead, set the configuration to output to a specific API.\n\nsendToAPI(\"https://example.com/api\", \"{\\\"id\\\":\\\"12345\\\"}\", \"bearer\", \"your-token\")\n\n📌 Notes:\n\n\t•\tFirst Run Setup: Setup must be completed on the first run and can be modified later.\n\t•\tReturn to Normal Mode: Use stop stream to exit streaming mode.\n\nEnjoy using Hamdiz Truly Random Multi-ID Generator (MIG)! 🎉\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthehamdiz%2Fmig-esp32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthehamdiz%2Fmig-esp32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthehamdiz%2Fmig-esp32/lists"}