mirror of
https://codeberg.org/icewind/mitemp-prometheus.git
synced 2026-06-03 17:14:08 +02:00
cargo updates
This commit is contained in:
parent
cc5ac92510
commit
ef24512c03
3 changed files with 388 additions and 862 deletions
1254
Cargo.lock
generated
1254
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
24
Cargo.toml
24
Cargo.toml
|
|
@ -2,22 +2,22 @@
|
||||||
name = "mitemp-prometheus"
|
name = "mitemp-prometheus"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
authors = ["Robin Appelman <robin@icewind.nl>"]
|
authors = ["Robin Appelman <robin@icewind.nl>"]
|
||||||
edition = "2021"
|
edition = "2024"
|
||||||
description = "Expose Xiaomi MI Temperature and Humidity Sensor to prometheus"
|
description = "Expose Xiaomi MI Temperature and Humidity Sensor to prometheus"
|
||||||
license = "MIT/Apache-2.0"
|
license = "MIT/Apache-2.0"
|
||||||
rust-version = "1.82.0"
|
rust-version = "1.86.0"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
dotenvy = "0.15.7"
|
dotenvy = "0.15.7"
|
||||||
main_error = "0.1.2"
|
main_error = "0.1.2"
|
||||||
tokio = { version = "1.45.1", features = ["macros", "rt-multi-thread"] }
|
tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread", "signal"] }
|
||||||
warp = "0.3.7"
|
warp = { version = "0.4.2", features = ["server"] }
|
||||||
mitemp = "0.4.0"
|
mitemp = "0.5.0"
|
||||||
tokio-stream = { version = "0.1.17", features = ["net"] }
|
tokio-stream = { version = "0.1.18", features = ["net"] }
|
||||||
btleplug = { version = "0.11.8", features = ["serde"] }
|
btleplug = { version = "0.12.0", features = ["serde"] }
|
||||||
tracing = "0.1.41"
|
tracing = "0.1.44"
|
||||||
tracing-subscriber = "0.3.19"
|
tracing-subscriber = "0.3.23"
|
||||||
serde = { version = "1.0.219", features = ["derive"] }
|
serde = { version = "1.0.228", features = ["derive"] }
|
||||||
toml = "0.8.22"
|
toml = "1.0.7"
|
||||||
secretfile = "0.1.1"
|
secretfile = "0.1.1"
|
||||||
clap = { version = "4.5.39", features = ["derive"] }
|
clap = { version = "4.5.61", features = ["derive"] }
|
||||||
|
|
|
||||||
24
src/main.rs
24
src/main.rs
|
|
@ -1,8 +1,9 @@
|
||||||
mod config;
|
mod config;
|
||||||
|
|
||||||
|
use crate::config::{Config, ListenConfig};
|
||||||
use btleplug::api::{Central, Manager as _};
|
use btleplug::api::{Central, Manager as _};
|
||||||
use btleplug::platform::Manager;
|
use btleplug::platform::Manager;
|
||||||
use tracing::info;
|
use clap::Parser;
|
||||||
use main_error::MainError;
|
use main_error::MainError;
|
||||||
use mitemp::{listen, BDAddr, Sensor};
|
use mitemp::{listen, BDAddr, Sensor};
|
||||||
use std::collections::{BTreeMap, HashMap};
|
use std::collections::{BTreeMap, HashMap};
|
||||||
|
|
@ -10,13 +11,12 @@ use std::fmt::Write;
|
||||||
use std::fs::set_permissions;
|
use std::fs::set_permissions;
|
||||||
use std::os::unix::fs::PermissionsExt;
|
use std::os::unix::fs::PermissionsExt;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
|
use tokio::net::UnixListener;
|
||||||
|
use tokio::signal::ctrl_c;
|
||||||
use tokio::{pin, spawn};
|
use tokio::{pin, spawn};
|
||||||
use tokio_stream::StreamExt;
|
use tokio_stream::StreamExt;
|
||||||
|
use tracing::info;
|
||||||
use warp::Filter;
|
use warp::Filter;
|
||||||
use clap::Parser;
|
|
||||||
use tokio::net::UnixListener;
|
|
||||||
use tokio_stream::wrappers::UnixListenerStream;
|
|
||||||
use crate::config::{Config, ListenConfig};
|
|
||||||
|
|
||||||
type Cache = Arc<Mutex<HashMap<BDAddr, Sensor>>>;
|
type Cache = Arc<Mutex<HashMap<BDAddr, Sensor>>>;
|
||||||
|
|
||||||
|
|
@ -75,13 +75,21 @@ async fn main() -> Result<(), MainError> {
|
||||||
|
|
||||||
match config.listen {
|
match config.listen {
|
||||||
ListenConfig::Ip { address, port } => {
|
ListenConfig::Ip { address, port } => {
|
||||||
warp::serve(metrics).run((address, port)).await;
|
warp::serve(metrics)
|
||||||
|
.bind((address, port))
|
||||||
|
.await
|
||||||
|
.graceful(async { ctrl_c().await.unwrap() })
|
||||||
|
.run()
|
||||||
|
.await;
|
||||||
}
|
}
|
||||||
ListenConfig::Unix { socket: path } => {
|
ListenConfig::Unix { socket: path } => {
|
||||||
let listener = UnixListener::bind(&path)?;
|
let listener = UnixListener::bind(&path)?;
|
||||||
set_permissions(&path, PermissionsExt::from_mode(0o666))?;
|
set_permissions(&path, PermissionsExt::from_mode(0o666))?;
|
||||||
let incoming = UnixListenerStream::new(listener);
|
warp::serve(metrics)
|
||||||
warp::serve(metrics).run_incoming(incoming).await;
|
.incoming(listener)
|
||||||
|
.graceful(async { ctrl_c().await.unwrap() })
|
||||||
|
.run()
|
||||||
|
.await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue