{"id":29984134,"url":"https://github.com/pschatzmann/tinytelnetserver","last_synced_at":"2025-10-28T05:07:27.622Z","repository":{"id":288841439,"uuid":"969313537","full_name":"pschatzmann/TinyTelnetServer","owner":"pschatzmann","description":"Tiny and Flexible Arduino Telnet Server","archived":false,"fork":false,"pushed_at":"2025-05-29T20:57:15.000Z","size":940,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-12T18:59:51.928Z","etag":null,"topics":["arduino-library","server","telnet-server"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pschatzmann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"License.txt","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,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"philschatzh","custom":["https://www.paypal.com/paypalme/pschatzmann?country.x=CH\u0026locale.x=en_US"]}},"created_at":"2025-04-19T21:35:22.000Z","updated_at":"2025-05-29T20:57:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"6f1322e4-fc1e-4462-9599-6bf92d7c6778","html_url":"https://github.com/pschatzmann/TinyTelnetServer","commit_stats":null,"previous_names":["pschatzmann/tinytelnetserver"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pschatzmann/TinyTelnetServer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschatzmann%2FTinyTelnetServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschatzmann%2FTinyTelnetServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschatzmann%2FTinyTelnetServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschatzmann%2FTinyTelnetServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pschatzmann","download_url":"https://codeload.github.com/pschatzmann/TinyTelnetServer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschatzmann%2FTinyTelnetServer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281386589,"owners_count":26492014,"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","status":"online","status_checked_at":"2025-10-28T02:00:06.022Z","response_time":60,"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","server","telnet-server"],"created_at":"2025-08-04T20:42:22.988Z","updated_at":"2025-10-28T05:07:27.617Z","avatar_url":"https://github.com/pschatzmann.png","language":"C++","funding_links":["https://buymeacoffee.com/philschatzh","https://www.paypal.com/paypalme/pschatzmann?country.x=CH\u0026locale.x=en_US","https://www.buymeacoffee.com/philschatzh","https://paypal.me/pschatzmann?country.x=CH\u0026locale.x=en_US"],"categories":[],"sub_categories":[],"readme":"# TinyTelnetServer\n\n[![Arduino Library](https://img.shields.io/badge/Arduino-Library-blue.svg)](https://www.arduino.cc/reference/en/libraries/)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\nA lightweight Arduino library for creating custom Command Line Interfaces (CLI) via serial and telnet servers. This library makes it easy to add remote management capabilities to your microcontroller projects.\n\n## Overview\n\nTinyTelnetServer provides a flexible framework to:\n- Create a telnet server for remote command execution\n- Build a serial CLI for local control\n- Define and register your own custom commands\n- Access your device through standard telnet clients\n\nBy default, microcontrollers don't support telnet commands - this library fills that gap with minimal resource usage.\n\n## Features\n\n- **Dual interface**: Works with both telnet and serial connections\n- **Custom commands**: Register your own functions as CLI commands\n- **Network support**: Works with both WiFi and Ethernet\n- **Predefined commands**: Ready-to-use file and audio control commands\n- **Extensible**: Easy to add new command sets\n- **Lightweight**: Optimized for resource-constrained devices\n\n## Installation\n\n### Arduino IDE\n\n1. Open Arduino IDE\n2. Navigate to Sketch \u003e Include Library \u003e Manage Libraries\n3. Search for \"TinyTelnetServer\"\n4. Click Install\n\n### Manual Installation\n\n```bash\ncd ~/Documents/Arduino/libraries\ngit clone https://github.com/pschatzmann/TinyTelnetServer.git\n\n```\n\n## Quick Start\n\n### Basic Telnet Server with WiFi\n\n```cpp\n#include \u003cWiFi.h\u003e\n#include \"TinyTelnetServer.h\"\n\nconst char* ssid = \"your-ssid\";\nconst char* password = \"your-password\";\n\nWiFiServer server(23);  // Telnet standard port\nTinyTelnetServer\u003cWiFiServer, WiFiClient\u003e telnetServer(server);\n\n// Example command function\nbool led_command(telnet::Str\u0026 cmd, telnet::Vector\u003ctelnet::Str\u003e parameters, Print\u0026 out, TinySerialServer* self) {\n  if (parameters.size() \u003e 0) {\n    if (parameters[0] == \"on\") {\n      digitalWrite(LED_BUILTIN, HIGH);\n      out.println(\"LED turned ON\");\n    } else if (parameters[0] == \"off\") {\n      digitalWrite(LED_BUILTIN, LOW);\n      out.println(\"LED turned OFF\");\n    }\n  }\n  return true;\n}\n\nvoid setup() {\n  Serial.begin(115200);\n  pinMode(LED_BUILTIN, OUTPUT);\n  \n  // Connect to WiFi\n  WiFi.begin(ssid, password);\n  while (WiFi.status() != WL_CONNECTED) {\n    delay(500);\n    Serial.print(\".\");\n  }\n  Serial.println(\"\\nWiFi connected\");\n  Serial.println(\"IP address: \" + WiFi.localIP().toString());\n  \n  // Register commands\n  telnetServer.addCommand(\"led\", led_command, \"led [on|off] - Control the LED\");\n  \n  // Start the server\n  telnetServer.begin();\n  Serial.println(\"Telnet server started\");\n}\n\nvoid loop() {\n  telnetServer.processCommand();\n}\n```\n\n## Examples\n\nThe library includes several example sketches:\n\n- **[WiFi Telnet Server](/examples/wifi-telnet-server/wifi-telnet-server.ino)**: Basic telnet server using WiFi\n- **[Ethernet Telnet Server](/examples/ethernet-telnet-server/ethernet-telnet-server.ino)**: Basic telnet server using Ethernet\n- **[Serial Server](/examples/serial-server/serial-server.ino)**: Command-line interface over Serial\n- **[WiFi Telnet File Server](/examples/wifi-telnet-fileserver/wifi-telnet-fileserver.ino)**: File management commands over telnet\n\n## Predefined Command Sets\n\nThe library includes ready-to-use command implementations:\n\n- **[KARadioCommands](https://pschatzmann.github.io/TinyTelnetServer/html/classtelnet_1_1_k_a_radio_commands.html)**: Control internet radio playback\n- **[SDFileCommands](https://pschatzmann.github.io/TinyTelnetServer/html/classtelnet_1_1_s_d_file_commands.html)**: File operations (ls, cat, mv, rm, mkdir, etc.)\n\n## Documentation\n\nComprehensive documentation is available:\n\n- **[TinyTelnetServer](https://pschatzmann.github.io/TinyTelnetServer/html/class_tiny_telnet_server.html)**: Telnet server implementation\n- **[TinySerialServer](https://pschatzmann.github.io/TinyTelnetServer/html/class_tiny_serial_server.html)**: Serial interface implementation\n- **[Complete API Documentation](https://pschatzmann.github.io/TinyTelnetServer/html/namespaces.html)**: Full library reference\n\n## Creating Custom Commands\n\nCreating your own commands is straightforward:\n\n```cpp\n// Command function signature\nbool my_command(telnet::Str\u0026 cmd, telnet::Vector\u003ctelnet::Str\u003e parameters, Print\u0026 out, TinySerialServer* self) {\n  // Command implementation\n  out.println(\"Hello from my custom command!\");\n  \n  // Access parameters if provided\n  if (parameters.size() \u003e 0) {\n    out.print(\"Parameter: \");\n    out.println(parameters[0]);\n  }\n  \n  return true; // Return true for success, false for failure\n}\n\n// In setup()\ntelnetServer.addCommand(\"hello\", my_command, \"hello [name] - Greet a user\");\n```\n\n## Support\n\nBefore opening issues, please:\n\n1. Read the [documentation](https://pschatzmann.github.io/TinyTelnetServer/html/index.html) thoroughly\n2. Check existing [issues](https://github.com/pschatzmann/TinyTelnetServer/issues) and [discussions](https://github.com/pschatzmann/TinyTelnetServer/discussions)\n\nWhen reporting bugs, include:\n- The specific sketch/scenario you're using\n- Your hardware details\n- Software versions (Arduino IDE, board package, etc.)\n- Clear steps to reproduce the issue\n\nFor questions and discussions, please use the GitHub Discussions section rather than opening issues.\n\n## Sponsor This Project\n\nIf you find this library helpful, consider supporting its development:\n\n- [Buy me a coffee](https://www.buymeacoffee.com/philschatzh)\n- [PayPal](https://paypal.me/pschatzmann?country.x=CH\u0026locale.x=en_US)\n\n## License\n\nThis project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpschatzmann%2Ftinytelnetserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpschatzmann%2Ftinytelnetserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpschatzmann%2Ftinytelnetserver/lists"}