aranet-service 0.1.9

Background collector and HTTP REST API for Aranet sensors
Documentation

aranet-service

Background collector and HTTP REST API for Aranet sensors.

A service daemon that continuously monitors Aranet devices and exposes sensor data via a REST API. Built with Axum for high-performance async HTTP handling.

Features

  • Background collection - Automatically poll configured devices at regular intervals
  • REST API - Query current readings, history, and device information via HTTP
  • WebSocket support - Real-time streaming of sensor updates
  • Local persistence - Store readings in SQLite via aranet-store
  • Configurable - TOML-based configuration for devices, intervals, and server settings
  • Health endpoint - Monitor service status for integration with monitoring systems

Installation

cargo install aranet-service

Or build from source:

cargo build --release -p aranet-service

Usage

# Start the service with default configuration
aranet-service

# Specify a custom config file
aranet-service --config /path/to/config.toml

# Specify bind address and port
aranet-service --bind 0.0.0.0:8080

Configuration

Create a configuration file at ~/.config/aranet/service.toml:

[server]
bind = "127.0.0.1:3000"

[storage]
path = "~/.local/share/aranet/data.db"

[[devices]]
address = "AA:BB:CC:DD:EE:FF"
name = "Living Room"
poll_interval = 60  # seconds

API Endpoints

Method Endpoint Description
GET /health Service health check
GET /api/devices List all configured devices
GET /api/devices/:id Get device details
GET /api/devices/:id/current Get current reading
GET /api/devices/:id/readings Query stored readings
GET /api/devices/:id/history Query device history
GET /api/readings Query all readings across devices
WS /api/ws WebSocket for real-time updates

Query Parameters

For /readings and /history endpoints:

Parameter Type Description
since Unix timestamp Filter records after this time
until Unix timestamp Filter records before this time
limit Integer Maximum number of records
offset Integer Skip this many records (pagination)

Example Requests

# Check service health
curl http://localhost:3000/health

# List devices
curl http://localhost:3000/api/devices

# Get current reading
curl http://localhost:3000/api/devices/living-room/current

# Query history with time range
curl "http://localhost:3000/api/devices/living-room/history?since=1705320000&limit=100"

Related Crates

This crate is part of the aranet workspace:

Crate crates.io Description
aranet-core crates.io Core BLE library for device communication
aranet-types crates.io Shared types for sensor data
aranet-store crates.io Local data persistence
aranet-cli crates.io Command-line interface
aranet-tui crates.io Terminal UI dashboard
aranet-gui - Desktop GUI application
aranet-wasm - WebAssembly module

License

MIT


Made with ❤️ by Cameron Rye