2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00
2026-03-24 19:59:02 +09:00

digitemp-rrdgraph

digitemp-rrdgraph is a command-line application for temperature monitoring with 1-Wire sensors. It collects measurements through digitemp, stores them in RRD files, generates graph images, and sends email notifications based on configured schedules and thresholds.

The repository is organized as a Cargo workspace with two crates:

  • digitemp-rrdgraph: the CLI binary crate
  • digitemp_rrdgraph_core: the internal library crate used by the CLI commands

Features

  • Read temperature data from 1-Wire sensors through digitemp
  • Store time-series data in RRD files
  • Generate graph images for hourly, daily, weekly, monthly, and yearly views
  • Send periodic information emails and threshold-based alert emails
  • Configure runtime behavior through JSON and template files

Requirements

  • Rust toolchain compatible with edition 2024
  • digitemp
  • RRDTool
  • Access to an SMTP server for email delivery

Project Layout

  • Cargo.toml: workspace root and CLI package definition
  • src/: CLI entrypoint and command modules
  • crates/core/: internal library crate shared by the CLI commands
  • crates/core/src/: shared modules for config loading, DigiTemp access, RRD operations, mail sending, and template rendering
  • etc/: configuration files and cron examples
  • templates/: Tera mail templates
  • db/: RRD database files
  • html/images/: generated graph images

Setup

  1. Build the release binary.
cargo build --release
  1. Choose where to place the application configuration file.

You can always override the default search order with --config /path/to/digitemp-rrdgraph.json.

Recommended locations are checked in this order:

  • $HOME/.config/digitemp-rrdgraph.json
  • /etc/digitemp-rrdgraph.json
  • <parent directory of the executable>/etc/digitemp-rrdgraph.json
  • $PWD/etc/digitemp-rrdgraph.json

For an installed layout such as /opt/digitemp-rrdgraph/bin/digitemp-rrdgraph, place the file at /opt/digitemp-rrdgraph/etc/digitemp-rrdgraph.json.

For local development from the repository root, create etc/digitemp-rrdgraph.json.

cp etc/digitemp-rrdgraph.sample.json etc/digitemp-rrdgraph.json
  1. Create a DigiTemp configuration file.
digitemp_DS9097U -i -s /dev/ttyUSB0 -c ./etc/digitemp.conf
  1. Edit the selected digitemp-rrdgraph.json file for your environment.

Pass --verbose if you want the CLI to print the selected configuration file path to standard error.

Configure at least these values:

  • digitemp and digitemp_config
  • database_dir and images_dir
  • templates_dir
  • room_name
  • SMTP server settings
  • mail recipients, subjects, and alert thresholds

room_name is required. It is used in mail templates, graph titles, and the generated top page. The update command also regenerates html/index.html from the template so the page title and heading stay aligned with room_name.

SMTP settings support these combinations:

  • mail_smtp_security: smtp, starttls, or smtps
  • mail_smtp_auth: true to send SMTP AUTH credentials, false for unauthenticated servers
  • mail_smtp_username and mail_smtp_password: required only when mail_smtp_auth is true

Build

cargo build --release

This builds both workspace members, including the internal digitemp_rrdgraph_core crate.

The release binary is written to target/release/digitemp-rrdgraph.

To build only the CLI package explicitly:

cargo build --release -p digitemp-rrdgraph

To run tests across the workspace:

cargo test --workspace

Commands

The application provides these subcommands:

  • update: read sensors, update RRD files, and regenerate graph images
  • check-alert: evaluate current data against configured alert thresholds and send an alert email when required
  • send-info: send a periodic information email

Examples:

./target/release/digitemp-rrdgraph update
./target/release/digitemp-rrdgraph --verbose update
./target/release/digitemp-rrdgraph --config /opt/digitemp-rrdgraph/etc/digitemp-rrdgraph.json update
./target/release/digitemp-rrdgraph check-alert
./target/release/digitemp-rrdgraph send-info

Scheduling

Use cron or another scheduler to run the subcommands at appropriate intervals.

  • Run update on the data collection interval you want to keep in RRD.
  • Run send-info on the reporting interval you want for periodic summaries.
  • Run check-alert on the alert polling interval you want for threshold checks.

See etc/crontab.sample for a sample schedule.

Templates

Mail templates are stored in templates/ and rendered with Tera.

Development Notes

  • CLI subcommands live under src/commands/.
  • Shared application logic lives under crates/core/src/ and is exposed by the digitemp_rrdgraph_core crate.
  • The root crate depends on the internal core crate through a local path dependency.

License

MIT

S
Description
No description provided
Readme MIT 76 KiB
Languages
Rust 97.5%
CSS 2.5%