{"id":19349132,"url":"https://github.com/bartmika/serialreader-server","last_synced_at":"2026-05-17T17:42:19.217Z","repository":{"id":57616808,"uuid":"384611727","full_name":"bartmika/serialreader-server","owner":"bartmika","description":"Application written in Go which provides gRPC access to time-series data from a custom configured Arduino device with SparkFun Weather Shield.","archived":false,"fork":false,"pushed_at":"2021-07-11T05:01:25.000Z","size":44,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-04T06:16:17.872Z","etag":null,"topics":["arduino","golang","grpc-go","iot","sparkfun"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bartmika.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":"2021-07-10T04:43:52.000Z","updated_at":"2021-07-11T05:01:28.000Z","dependencies_parsed_at":"2022-08-27T08:00:39.289Z","dependency_job_id":null,"html_url":"https://github.com/bartmika/serialreader-server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bartmika/serialreader-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartmika%2Fserialreader-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartmika%2Fserialreader-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartmika%2Fserialreader-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartmika%2Fserialreader-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bartmika","download_url":"https://codeload.github.com/bartmika/serialreader-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bartmika%2Fserialreader-server/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266720184,"owners_count":23973910,"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-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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","golang","grpc-go","iot","sparkfun"],"created_at":"2024-11-10T04:24:50.184Z","updated_at":"2026-05-17T17:42:14.182Z","avatar_url":"https://github.com/bartmika.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# serialreader-server\n\n## Overview\n\nThe purpose of this application is to provide a remote procedure call (gRPC) interface over an external Arduino device with a [SparkFun Weather Shield (DEV-13956)](https://github.com/sparkfun/Weather_Shield).\n\nSupports collection of multiple time-series data from 6 different sensors and the following features:\n\n* Temperature\n* Humidity\n* Pressure\n* Altitude\n* Illuminance\n* Supports `JSON` formatted outputs\n* Powered by open-source hardware and software!\n\n## Prerequisites\n\nYou must have the following installed before proceeding. If you are missing any one of these then you cannot begin.\n\n* ``Go 1.16.3``\n\n## Installation\n\n1. Please visit the [sparkfunweathershield-arduino](https://github.com/bartmika/sparkfunweathershield-arduino) repository and setup the external device and connect it to your development machine.\n\n2. Please find out what USB port your external device is connected on. Note: please replace ``/dev/cu.usbmodem14201`` with the value on your machine, a Raspberry Pi would most likely have the value ``/dev/ttyACM0``.\n\n3. Download the source code, build and install the application.\n\n    ```\n    GO111MODULE=on go get -u github.com/bartmika/serialreader-server\n    ```\n\n## Usage\nRun our application.\n\n```bash\nserialreader-server --port=50052 --arduinoDevicePath=\"/dev/cu.usbmodem14201\"\n```\n\nIf you see a message saying ``gRPC server is running.`` then the application has been successfully started.\n\n## How does it work?\nThis device runs continuously waiting for you to pull data from it.\n\nWhen you pull data, it will send you a JSON formatted object with all the time series data.\n\nTo pull data, you must first connect to the **Arduino device** with a USB cable.\n\nOnce connected, you use **serial usb communication** to read data from the device and write commands to the device.\n\nOnce your device recieves the JSON data, you do what you want with the data.\n\n## Why did you choose Arduino?\nThe Arduino platform has a wonderful ecosystem of open-source hardware with libraries. Our goal is to take advantage of the libraries the hardware manufacturers wrote and not worry about the complicated implementation details.\n\n## How does the data output look like?\nWhen the device is ready to be used, you will see this output:\n\n```json\n{\"status\":\"READY\",\"runtime\":2,\"id\":1,\"sensors\":[\"humidity\",\"temperature\",\"pressure\",\"illuminance\",\"soil\"]}\n```\n\nWhen you poll the device for data, you will see this output:\n\n```json\n{\"status\":\"RUNNING\",\"runtime\":24771,\"id\":2,\"humidity\":{\"value\":47.92456,\"unit\":\"%\",\"status\":1,\"error\":\"\"},\"temperature_primary\":{\"value\":80.47031,\"unit\":\"F\",\"status\":1,\"error\":\"\"},\"pressure\":{\"value\":0,\"unit\":\"Pa\",\"status\":1,\"error\":\"\"},\"temperature_secondary\":{\"value\":78.2375,\"unit\":\"F\",\"status\":1,\"error\":\"\"},\"altitude\":{\"value\":80440.25,\"unit\":\"ft\",\"status\":1,\"error\":\"\"},\"illuminance\":{\"value\":0.040305,\"unit\":\"V\",\"status\":1,\"error\":\"\"}}\n```\n\n## Why should I use it?\nThis code is a easy to connect and read realtime time-series data using any language that supports serial communication over USB.\n\n## License\n\nThis application is licensed under the **BSD 3-Clause License**. See [LICENSE](LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartmika%2Fserialreader-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbartmika%2Fserialreader-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartmika%2Fserialreader-server/lists"}