{"id":44332433,"url":"https://github.com/bringauto/internal-client-arduino","last_synced_at":"2026-02-11T10:10:04.447Z","repository":{"id":216115926,"uuid":"731222390","full_name":"bringauto/internal-client-arduino","owner":"bringauto","description":"Fleet Protocol Internal Client Arduino implementation","archived":false,"fork":false,"pushed_at":"2024-01-09T08:15:54.000Z","size":92,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-01-09T15:36:27.927Z","etag":null,"topics":["fleet-protocol"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bringauto.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}},"created_at":"2023-12-13T15:48:38.000Z","updated_at":"2024-01-08T12:49:08.000Z","dependencies_parsed_at":"2024-01-08T15:50:45.017Z","dependency_job_id":null,"html_url":"https://github.com/bringauto/internal-client-arduino","commit_stats":null,"previous_names":["bringauto/internal-client-arduino"],"tags_count":1,"template":null,"template_full_name":null,"purl":"pkg:github/bringauto/internal-client-arduino","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Finternal-client-arduino","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Finternal-client-arduino/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Finternal-client-arduino/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Finternal-client-arduino/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bringauto","download_url":"https://codeload.github.com/bringauto/internal-client-arduino/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Finternal-client-arduino/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29331749,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T06:13:03.264Z","status":"ssl_error","status_checked_at":"2026-02-11T06:12:55.843Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["fleet-protocol"],"created_at":"2026-02-11T10:10:03.665Z","updated_at":"2026-02-11T10:10:04.441Z","avatar_url":"https://github.com/bringauto.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is Internal client library implementation for Arduino boards. At this moment, this library is tested only on Arduino Opta board. To use the library with other Arduino boards, more testing is required.\n\n# Requirements\n\n## Tools\n - python, curl\n\n## Ethernet library initialization\n\nThis library uses TCP communication implemented in [Ethernet library](https://reference.arduino.cc/reference/en/libraries/ethernet/). Before use of internal-client library the Ethernet library needs to be initialized with calling `Ethernet.begin()`. The minimal initialization could be:\n\n```cpp\nbyte mac[] = { 0x5E, 0xA2, 0xBE, 0xCF, 0xFE, 0x8D };\nEthernet.begin(mac);\n```\n\n# Usage\n\n## Generate Protobuf files (optional)\n\n \u003e Generating InternalProtocol protobuf files is not necessary if you've changed InternalProtocol declaration in InternalProtocol.proto file or options in InternalProtocol.options.\n\nFrom root directory go to source/bringauto/internal_client/arduino/protobuf and run this command:\n\n```bash\npython ../../../../../libs/nanopb/generator/nanopb_generator.py InternalProtocol.proto\n```\n\nNow in current directory should be generated 2 new files: `InternalProtocol.pb.c` and `InternalProtocol.pb.h`. Include the header file to use InternalProtocol implementation. These generated files are moved in compiled directory. Some headers from nanopb submodule with universal purpose declarations are in source/nanopb directory.\n\n \u003e This generator uses InternalProtocol.options, where max sizes of some structures are defined to avoid using callbacks in nanopb. More about callbacks in nanopb [here](https://jpa.kapsi.fi/nanopb/docs/concepts.html). \n\n## Create zip library usable by arduino-cli\n\nIn repo root directory run:\n\n```bash\npython create_library.py\n```\n\nThis script will zip all necessary files into internal-client-arduino.zip, which can be used as zip library by arduino-cli (command line utility for Arduino boards).\n\n## Install arduino-cli\n\nTo install internal-client-arduino library as Arduino library, you need arduino-cli. You can install it using official install script with this command:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=. sh\n```\n\n\u003e This command installs arduino-cli to the current directory. If you want to install it to different directory, change the `BINDIR` variable. You can also change it to path, which is in your `$PATH` variable to make arduino-cli globally available.\n\n\u003e The arduino-cli utility is not dependent on installation directory. The installation script initializes ~/.arduino15 directory, which arduino-cli only uses. This means that after installation of arduino-cli, you can freely copy and move arduino-cli to another directories and maintain desired behaviour of arduino-cli.\n\n\u003e For more information or installation option, check official [Arduino guide](https://arduino.github.io/arduino-cli/0.33/installation/).\n\n## Configure arduino-cli\n\nNow you need to configure arduino-cli to allow installation of zip library. Run these commands:\n\n```bash\n./arduino-cli config init\n./arduino-cli config set library.enable_unsafe_install true\n```\n\n## Install internal-client-arduino as Arduino library\n\nNow you can install internal-client-arduino library with next command. You need to pass the path to library zip created by create_library.py script.\n\n```bash\n./arduino-cli lib install --zip-path \u003cpath-to-library-zip\u003e\n```\n\n\u003e To reinstall Arduino library, you can simply run previous install command. The arduino-cli automatically removes installed library with same name (the name of zip file is considered) before installation.\n\n# Limitations\n\nVariable length message variables in .proto files (like strings or bytes) needed to be changed to avoid using callbacks. This was bug in nanopb, when using variable length variables inside oneofs in messages. It was maybe fixed in [nanopb 0.4](https://jpa.kapsi.fi/nanopb/docs/whats_new.html), but the documentation is quite poor. For now the size of variable length variables was changed to fixed length variables of max size described in source/protobuf/InternalProtocol.options. To change max size of these variables you need to change values in this file and regenerate protobuf files.\n\n# Notes\n\n - This repository follows directory tree Bringauto rules, but include's path are not. That is because Arduino libraries can't have any subdirectories. The create_library.py script take all source files and insert them into zip with only one root directory with all files. Therefore, the include's path are excluded to proper functionality as Arduino library.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbringauto%2Finternal-client-arduino","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbringauto%2Finternal-client-arduino","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbringauto%2Finternal-client-arduino/lists"}