{"id":13581545,"url":"https://github.com/gbbirkisson/rpi","last_synced_at":"2025-10-28T07:30:38.270Z","repository":{"id":57552246,"uuid":"144834563","full_name":"gbbirkisson/rpi","owner":"gbbirkisson","description":"A gRPC server for remote IO operations on the RaspberryPi + cli tool to call it","archived":false,"fork":false,"pushed_at":"2021-08-24T14:49:50.000Z","size":212,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-01T12:44:11.537Z","etag":null,"topics":["balena","raspberry-pi","raspberry-pi-camera","raspberry-pi-gpio","rpi"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gbbirkisson.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}},"created_at":"2018-08-15T09:37:17.000Z","updated_at":"2024-06-19T23:05:16.000Z","dependencies_parsed_at":"2022-09-26T18:50:34.911Z","dependency_job_id":null,"html_url":"https://github.com/gbbirkisson/rpi","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbbirkisson%2Frpi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbbirkisson%2Frpi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbbirkisson%2Frpi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbbirkisson%2Frpi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gbbirkisson","download_url":"https://codeload.github.com/gbbirkisson/rpi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238608395,"owners_count":19500373,"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":["balena","raspberry-pi","raspberry-pi-camera","raspberry-pi-gpio","rpi"],"created_at":"2024-08-01T15:02:05.272Z","updated_at":"2025-10-28T07:30:37.935Z","avatar_url":"https://github.com/gbbirkisson.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003cimg align=\"right\" width=\"128\" height=\"128\" src=\"logo.png\"\u003e\n\u003ch1\u003erpi\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/gbbirkisson/rpi/releases/latest\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/github/release/gbbirkisson/rpi.svg?style=flat-square\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://travis-ci.org/gbbirkisson/rpi\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/travis/gbbirkisson/rpi/master.svg?style=flat-square\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://goreportcard.com/report/github.com/gbbirkisson/rpi\" target=\"_blank\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/gbbirkisson/rpi?style=flat-square\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://godoc.org/github.com/gbbirkisson/rpi\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square\"/\u003e\u003c/a\u003e\n\u003ca href=\"./LICENSE\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat-square\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThis package helps you to develop software for the RaspberryPi that does IO operations on the RaspberryPi. It enables you to develop your code locally on any type of architecture, by using gRPC to control a Raspberry PI remotely. This is very convenient in conjunction with services like [balena.io](https://www.balena.io/). \n\nThis makes developing applications for the RaspberryPi extremely easy. Once your software is ready, you have the option of continuing to use gRPC calls, or switch over to a local version of the interfaces to compile a binary that runs directly on the RaspberryPi.\n\nIf you have any suggestion or comments, please feel free to open an issue on this GitHub page.\n\n- [Using the library](#using-the-library)\n- [Installing](#installing)\n  - [Client / Server](#client--server)\n  - [Pushing server to balena.io](#pushing-server-to-balenaio)\n- [Configuration](#configuration)\n  - [Flags](#flags)\n  - [Configuration files](#configuration-files)\n  - [Environmental variables](#environmental-variables)\n- [Using another languages](#using-another-languages)\n\n## Using the library\n\nRead the [go docs](https://godoc.org/github.com/gbbirkisson/rpi) to to see usage. For more concrete examples see [rpi-client](./cmd/rpi-client/cmd) code.\n\n## Installing\n\n### Client / Server\n\nThere are 2 ways of installing the binaries:\n\n* Download the binaries [latest release](https://github.com/gbbirkisson/rpi/releases/latest)\n* Install from source: `go get github.com/gbbirkisson/rpi`\n\n### Pushing server to balena.io\n\nTake a look at the [rpi-balena](https://github.com/gbbirkisson/rpi-balena) project to see how to use balena.io\n\n## Configuration\n\nBoth server and client can be configured with:\n1. Flags\n2. Environment\n3. Configuration file\n\nThe presidence is in that order, i.e flags override environment that overrides the configuration file.\n\n### Flags\n\nUse `-h` flag to see available flags for `rpi-client` and `rpi-server`.\n\n### Configuration files\n\nConfiguration files can be in the following formats:\n* json\n* toml\n* yaml\n* hcl\n\nLocations of those files are:\n* Server: `/etc/rpi-server/config.[format]`\n* Client: `~/.rpi-client.[format]`\n\nTo generate the default configuration files (yaml in this example) do:\n\n```bash\n# For server\n$ touch /etc/rpi-server/config.yaml\n$ rpi-server config write\n```\n```bash\n# For client (linux/mac)\n$ touch ~/.rpi-client.yaml\n$ rpi-client config write\n```\n```bash\n# For client (windows)\n$ type nul \u003e %userprofile%\\.rpi-client.yaml\n$ rpi-client.exe config write\n```\n\nThe resulting client configuration file (`~/.rpi-client.yaml`) would be something like:\n\n```yaml\nserver:\n  host: 127.0.0.1\n  port: 8000\n  timeout: 5000\npicam:\n  viewer:\n  - feh\n  - -x\n  - '-'\n```\n\n### Environmental variables\n\nEnvironmental variables mirror the configuration files. All variables have the prefix `RPI_`. So for example if you want to set the client timeout you can set it with the environment variable `RPI_SERVER_TIMEOUT=3000`\n\n## Using another languages\n\nGenerate a client for your language of choice with `protoc` using [./pkg/proto/*.proto](./pkg/proto) files.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbbirkisson%2Frpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgbbirkisson%2Frpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbbirkisson%2Frpi/lists"}