#weather #display #data-processing #read #station #write #acurite

bin+lib yngvi

读取、计算和写入天气数据

2 个不稳定版本

0.2.0 2023年10月1日
0.1.0 2023年9月30日

#12 in #station

MIT 许可证

35KB
861 代码行

天气站

收集和处理天气数据的程序。

非常感谢 WEEWX 解码 ACURITE 显示的各种消息

安装程序

cargo install yngvi --features standalone

配置

名称 描述 默认
WS_SRC 确定从哪里拉取数据。ACURITE_DISPLAY、RTL_433 或 FILE DISPLAY
WS_SRC_FILE_PATH 源读数文件的路径
WS_DEST INFLUXDB、INFLUXDB2、STDOUT 或 INMEMORY STDOUT
WS_DEST_INFLUXDB_URL influxdb url https://127.0.0.1:8086
WS_DEST_INFLUXDB_DB influxdb 数据库 weather
WS_DEST_INFLUXDB2_URL influxdb url
WS_DEST_INFLUXDB2_ORG influxdb org
WS_DEST_INFLUXDB2_BUCKET influxdb bucket
WS_DEST_INFLUXDB2_TOKEN influxdb 认证令牌

创建自己的

任何数据源都可以定义为 Iterator<Item = WeatherReading>,所有目的地都使用 Writer 特性定义。WS 随带一些预构建的读取器和写入器,但定义新的数据源和新的目的地而无需触及任何核心站逻辑应该是直接的。试试看吧!

cargo add yngvi
use yngvi::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
}

依赖项

~2–17MB
~194K SLoC