About this project

ruuvitag-gollector is a self-hosted solution written in Go that collects environmental measurements from RuuviTag sensors via Bluetooth Low Energy (BLE) broadcasts and forwards them to a wide range of backends. It targets Linux systems and uses the BlueZ D-Bus API to scan for and read sensor data. The project supports the RAWv2 format emitted by RuuviTags running firmware 2.x or later. The collector can push measurements to multiple exporters simultaneously, including InfluxDB (local or remote), PostgreSQL and TimescaleDB, AWS DynamoDB, AWS SQS, GCP Pub/Sub, MQTT, and generic HTTP webhooks that accept JSON POST requests. Each exporter is configured independently in a TOML configuration file, allowing users to send the same sensor data to several destinations at once. Configuration is straightforward: users specify the MAC addresses and human-readable names of their RuuviTags, then define one or more exporters with their connection details. Custom column names can be set to match existing database schemas, and unnecessary columns can be excluded. The default columns include time, MAC address, name, temperature, humidity, pressure, acceleration (x/y/z), movement counter, measurement number, dew point, battery voltage, and TX power. The application runs in two modes: a one-shot scan mode for testing and a daemon mode for continuous collection. It requires BlueZ to be installed and running on the system, and typically needs elevated privileges to access the Bluetooth adapter. The project is designed to run on inexpensive hardware such as a Raspberry Pi, making it accessible for hobbyist and small-scale environmental monitoring projects like greenhouses, terrariums, or atmospheric data collection. No subscription or cloud service is required for the collector itself, though users must self-host or cloud-host the target databases and visualization tools such as Grafana.