yngvi 0.1.0

Read, calculate and write weather data
Documentation

Weather Station

Program for collecting and processing weather data.

HUGE THANKS TO WEEWX FOR DECODING THE VARIOUS MESSAGES FROM THE ACURITE DISPLAY

Config

Name Description Default
WS_SRC determines where to pull data from. ACURITE_DISPLAY, RTL_433, or FILE DISPLAY
WS_SRC_FILE_PATH path to file with source readings
WS_DEST INFLUXDB, INFLUXDB2, STDOUT, or INMEMORY STDOUT
WS_DEST_INFLUXDB_URL influxdb url http://localhost:8086
WS_DEST_INFLUXDB_DB influxdb database weather
WS_DEST_INFLUXDB2_URL influxdb url
WS_DEST_INFLUXDB2_ORG influxdb org
WS_DEST_INFLUXDB2_BUCKET influxdb bucket
WS_DEST_INFLUXDB2_TOKEN auth token for influxdb

Run integration and unit tests

cargo test --workspace

build and start program

WS_SRC=file WS_SRC_FILE_PATH=data/source.txt cargo run

Create your own

Any data source can be defined as Iterator<Item = WeatherReading> and all destinations are defined with the Writer trait. WS comes with some prebuilt readers and writers but it should be straight forward to define new data sources and new destination without touching any of the core station logic. Give it a try!

use ws_core::{InMemWriter, Station, StdoutWriter, WeatherReading, FileReader};

#[tokio::main]
async fn main() {
    // create a new weather station
    let mut station = Station::new();

    // define where your source data will come from
    let reader = FileReader::new("data/source.txt");

    // define where your calculated data will be written to
    let mut writer = StdoutWriter::new();

    // start your station!
    station.start(reader, writer).await
}