{"id":26830860,"url":"https://github.com/oltdaniel/webserial-protobuf-example","last_synced_at":"2026-04-28T20:04:08.967Z","repository":{"id":237959097,"uuid":"795566844","full_name":"oltdaniel/webserial-protobuf-example","owner":"oltdaniel","description":"example of commuication with protocolbuffers between an ESP32 and Browser using WebSerial","archived":false,"fork":false,"pushed_at":"2024-05-03T15:27:15.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-03T18:20:53.766Z","etag":null,"topics":["esp32","protobuf","webserial"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/oltdaniel.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-05-03T14:59:18.000Z","updated_at":"2024-05-03T18:20:59.005Z","dependencies_parsed_at":"2024-05-03T18:34:07.206Z","dependency_job_id":null,"html_url":"https://github.com/oltdaniel/webserial-protobuf-example","commit_stats":null,"previous_names":["oltdaniel/webserial-protobuf-example"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oltdaniel%2Fwebserial-protobuf-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oltdaniel%2Fwebserial-protobuf-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oltdaniel%2Fwebserial-protobuf-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oltdaniel%2Fwebserial-protobuf-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oltdaniel","download_url":"https://codeload.github.com/oltdaniel/webserial-protobuf-example/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246326761,"owners_count":20759439,"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","protobuf","webserial"],"created_at":"2025-03-30T14:18:00.257Z","updated_at":"2026-04-28T20:04:08.872Z","avatar_url":"https://github.com/oltdaniel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e **NOTE**: This project is just a small example to prove this is possible. The code in this repo was mostly written in a single afternoon with the motivation of \"get this somehow working\". Maybe I'll rewrite it some day for a much cleaner version with better abstraction.\n\n# WebSerial Protocolbuffer example\n\nSending protcolbuffers between the browser and an ESP32 via WebSerial.\n\n## Preview\n\n| | |\n|-|-|\n| \u003cimg src=\"https://github.com/oltdaniel/webserial-protobuf-example/assets/53529846/141083cf-4d77-4ded-b96b-f06361277871\" width=\"300\" /\u003e | \u003cimg src=\"https://github.com/oltdaniel/webserial-protobuf-example/assets/53529846/e2acf29d-df8f-4b3a-9e97-604d2f32f488\" width=\"300\" /\u003e |\n\n## Components\n\nThis project uses the following software:\n- [nanopb](https://github.com/nanopb/nanopb) for using protocolbuffers on the esp32 within the arduino framework using some glue from [eric-wieser/nanopb-arduino](https://github.com/eric-wieser/nanopb-arduino).\n- [protobuf.js](https://github.com/protobufjs/protobuf.js) to use protocolbuffers in the web application interface.\n- [Web Serial API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API) to get both the ESP32 and Web Interface talking via Serial. This is only supported on chrome-based browsers (last check: 2024-05-03).\n- [Protocol Buffers](https://protobuf.dev/) as the base idea of protocol to make this communication.\n\n## Getting started\n\n### Requirements\n\n- [PlatformIO](https://platformio.org/)\n- [Node.js](https://nodejs.org)\n- [WEMOS S2 Mini or similar](https://www.wemos.cc/en/latest/s2/s2_mini.html)\n\n### Install\n\n```bash\ngit clone https://github.com/oltdaniel/webserial-protobuf-example.git\ncd webserial-protobuf-example\n```\n\n#### Program the ESP32 Board with the firmware\n\n\u003e **NOTE** The boards need to supported USB OTG.\n\nOpen the repository in VSCode and flash the current project. All dependencies will be downloaded automatically.\n\n#### Prepare and start the web interface\n\nSteps to get started with the project:\n1. Open the `web` directory of this repo.\n2. Start the dev server with `yarn dev`.\n\nSteps to compile the new proto file:\n1. Install all dependencies using `yarn`.\n2. Compile the protobuffer file using `yarn proto:build`.\n\n## License\n\n[MIT License](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foltdaniel%2Fwebserial-protobuf-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foltdaniel%2Fwebserial-protobuf-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foltdaniel%2Fwebserial-protobuf-example/lists"}