mirror of
https://codeberg.org/icewind/mitemp-prometheus.git
synced 2026-06-03 09:04:13 +02:00
initial implementation
This commit is contained in:
parent
137a6dc174
commit
0619925304
4 changed files with 1929 additions and 2 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1 +1,2 @@
|
||||||
/target
|
/target
|
||||||
|
.env
|
||||||
1885
Cargo.lock
generated
Normal file
1885
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -5,6 +5,9 @@ authors = ["Robin Appelman <robin@icewind.nl>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
dotenv = "0.15.0"
|
||||||
main_error = "0.1.0"
|
main_error = "0.1.0"
|
||||||
|
tokio = { version = "0.2", features = ["macros"] }
|
||||||
|
warp = "0.2"
|
||||||
mitemp = { version = "0.1.0", git = "https://github.com/icewind1991/mitemp-rs" }
|
mitemp = { version = "0.1.0", git = "https://github.com/icewind1991/mitemp-rs" }
|
||||||
|
|
||||||
|
|
|
||||||
42
src/main.rs
42
src/main.rs
|
|
@ -1,3 +1,41 @@
|
||||||
fn main() {
|
use main_error::MainError;
|
||||||
println!("Hello, world!");
|
use mitemp::{adapter_by_mac, BDAddr, Sensor};
|
||||||
|
use std::collections::HashMap;
|
||||||
|
use std::str::FromStr;
|
||||||
|
use warp::Filter;
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() -> Result<(), MainError> {
|
||||||
|
let mut env: HashMap<String, String> = dotenv::vars().collect();
|
||||||
|
let adapter = BDAddr::from_str(&env.remove("ADAPTER").ok_or("No ADDR set")?)
|
||||||
|
.map_err(|_| "Invalid adapter address")?;
|
||||||
|
let device = BDAddr::from_str(&env.remove("DEVICE").ok_or("No KEYFILE set")?)
|
||||||
|
.map_err(|_| "Invalid device address")?;
|
||||||
|
let port = env
|
||||||
|
.get("PORT")
|
||||||
|
.and_then(|s| u16::from_str(s).ok())
|
||||||
|
.unwrap_or(80);
|
||||||
|
|
||||||
|
let adapter = adapter_by_mac(adapter).map_err(|_| "Adapter not found")?;
|
||||||
|
|
||||||
|
let sensor = Sensor::new(adapter, device).start();
|
||||||
|
|
||||||
|
let metrics = warp::path!("metrics").map(move || {
|
||||||
|
let data = sensor.get_data();
|
||||||
|
if data.battery > 0 {
|
||||||
|
format!(
|
||||||
|
"sensor_temperature {}\nsensor_humidity {}\nsensor_battery {}\n",
|
||||||
|
data.temperature, data.humidity, data.battery
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
format!(
|
||||||
|
"sensor_temperature {}\nsensor_humidity {}\n",
|
||||||
|
data.temperature, data.humidity
|
||||||
|
)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
warp::serve(metrics).run(([0, 0, 0, 0], port)).await;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue