diff --git a/Cargo.lock b/Cargo.lock index e75ef65..da8ed39 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -184,7 +184,6 @@ dependencies = [ "serialport", "strum", "tokio", - "uom", ] [[package]] @@ -425,15 +424,6 @@ dependencies = [ "libc", ] -[[package]] -name = "num-traits" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" -dependencies = [ - "autocfg", -] - [[package]] name = "num_cpus" version = "1.16.0" @@ -835,28 +825,12 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" -[[package]] -name = "uom" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8362194c7a9845a7a7f3562173d6e1da3f24f7132018cb78fe77a5b4474187b2" -dependencies = [ - "num-traits", - "typenum", -] - [[package]] name = "want" version = "0.3.1" diff --git a/Cargo.toml b/Cargo.toml index 0618f7f..0721848 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,4 +14,3 @@ log = "0.4.20" serialport = "4.2.2" strum = { version = "0.25.0", features = ["derive"] } tokio = { version = "1.34.0", features = ["full"] } -uom = "0.35.0" diff --git a/src/index.html b/src/index.html index 7aab2b2..7c6df58 100644 --- a/src/index.html +++ b/src/index.html @@ -11,25 +11,25 @@

Wasser

-

Temperatur: {}

-

Temperatur Min: {}

-

Temperatur Max: {}

-

Solltemperatur Solar: {}

-

Solltemperatur Netz: {}

+

Temperatur: {} °C

+

Temperatur Min: {} °C

+

Temperatur Max: {} °C

+

Solltemperatur Solar: {} °C

+

Solltemperatur Netz: {} °C

Solar aktuell

-

Spannung: {}

-

Strom: {}

-

Leistung: {} ({})

+

Spannung: {} V

+

Strom: {} A

+

Leistung: {} kW ({} W)

Historie

-

Solarenergie Heute: {} ({})

-

Solarenergie Gesamt: {} ({})

-

Netzenergie Heute: {} ({})

+

Solarenergie Heute: {} kWh ({} Wh)

+

Solarenergie Gesamt: {} kWh ({} Wh)

+

Netzenergie Heute: {} kWh ({} Wh)

Zustand

Isolationsmessung: {}

-

Gerätetemperatur: {}

+

Gerätetemperatur: {} °C

Status: {}

DC Trenner: {}

DC Relais: {}

diff --git a/src/main.rs b/src/main.rs index 761dbc0..82d06d2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,17 +8,6 @@ use axum::{ Router, }; use strum::{EnumIter, IntoEnumIterator}; -use uom::{ - fmt::DisplayStyle::Abbreviation, - si::{ - electric_current::ampere, - electric_potential::volt, - energy::{kilowatt_hour, watt_hour}, - f32::*, - power::{kilowatt, watt}, - thermodynamic_temperature::degree_celsius, - }, -}; #[derive(EnumIter, PartialEq, Eq, Hash, Debug)] enum StatusTag { @@ -57,25 +46,25 @@ enum StatusTag { #[derive(Debug)] struct Status<'a> { // Wasser - wassertemp: ThermodynamicTemperature, - wassertemp_min: ThermodynamicTemperature, - wassertemp_max: ThermodynamicTemperature, - solltemp_solar: ThermodynamicTemperature, - solltemp_netz: ThermodynamicTemperature, + wassertemp: f32, + wassertemp_min: f32, + wassertemp_max: f32, + solltemp_solar: f32, + solltemp_netz: f32, // Solar aktuell - solarspannung: ElectricPotential, - solarstrom: ElectricCurrent, - solarleistung: Power, + solarspannung: f32, + solarstrom: f32, + solarleistung: f32, // Historie - solarenergie_heute: Energy, - solarenergie_gesamt: Energy, - netzenergie_heute: Energy, + solarenergie_heute: f32, + solarenergie_gesamt: f32, + netzenergie_heute: f32, // Zustand iso_messung: u32, - geraetetemp: ThermodynamicTemperature, + geraetetemp: f32, status: u32, dc_trenner: bool, dc_relais: bool, @@ -129,39 +118,19 @@ async fn handler() -> Result, AppError> { .collect::>(); let status = Status { - wassertemp: ThermodynamicTemperature::new::( - status_map[&StatusTag::Wassertemp].parse::()? / 10.0, - ), - wassertemp_min: ThermodynamicTemperature::new::( - status_map[&StatusTag::WassertempMin].parse::()? / 10.0, - ), - wassertemp_max: ThermodynamicTemperature::new::( - status_map[&StatusTag::WassertempMax].parse::()? / 10.0, - ), - solltemp_solar: ThermodynamicTemperature::new::( - status_map[&StatusTag::SolltempSolar].parse::()? / 10.0, - ), - solltemp_netz: ThermodynamicTemperature::new::( - status_map[&StatusTag::SolltempNetz].parse::()? / 10.0, - ), - solarspannung: ElectricPotential::new::( - status_map[&StatusTag::Solarspannung].parse()?, - ), - solarstrom: ElectricCurrent::new::(status_map[&StatusTag::Solarstrom].parse()?), - solarleistung: Power::new::(status_map[&StatusTag::Solarleistung].parse()?), - solarenergie_heute: Energy::new::( - status_map[&StatusTag::SolarenergieHeute].parse()?, - ), - solarenergie_gesamt: Energy::new::( - status_map[&StatusTag::SolarenergieGesamt].parse()?, - ), - netzenergie_heute: Energy::new::( - status_map[&StatusTag::NetzenergieHeute].parse()?, - ), + wassertemp: status_map[&StatusTag::Wassertemp].parse::()? / 10.0, + wassertemp_min: status_map[&StatusTag::WassertempMin].parse::()? / 10.0, + wassertemp_max: status_map[&StatusTag::WassertempMax].parse::()? / 10.0, + solltemp_solar: status_map[&StatusTag::SolltempSolar].parse::()? / 10.0, + solltemp_netz: status_map[&StatusTag::SolltempNetz].parse::()? / 10.0, + solarspannung: status_map[&StatusTag::Solarspannung].parse()?, + solarstrom: status_map[&StatusTag::Solarstrom].parse()?, + solarleistung: status_map[&StatusTag::Solarleistung].parse::()? / 1000.0, + solarenergie_heute: status_map[&StatusTag::SolarenergieHeute].parse::()? / 1000.0, + solarenergie_gesamt: status_map[&StatusTag::SolarenergieGesamt].parse::()? / 1000.0, + netzenergie_heute: status_map[&StatusTag::NetzenergieHeute].parse::()? / 1000.0, iso_messung: status_map[&StatusTag::IsoMessung].parse()?, - geraetetemp: ThermodynamicTemperature::new::( - status_map[&StatusTag::GeraeteTemp].parse()?, - ), + geraetetemp: status_map[&StatusTag::GeraeteTemp].parse()?, status: status_map[&StatusTag::Status].parse()?, dc_trenner: status_map[&StatusTag::DcTrenner].parse::()? != 0, dc_relais: status_map[&StatusTag::DcRelais].parse::()? != 0, @@ -171,33 +140,25 @@ async fn handler() -> Result, AppError> { seriennummer: status_map[&StatusTag::Seriennummer], }; - let w = Power::format_args(watt, Abbreviation); - let kw = Power::format_args(kilowatt, Abbreviation); - let wh = Energy::format_args(watt_hour, Abbreviation); - let kwh = Energy::format_args(kilowatt_hour, Abbreviation); - let v = ElectricPotential::format_args(volt, Abbreviation); - let a = ElectricCurrent::format_args(ampere, Abbreviation); - let c = ThermodynamicTemperature::format_args(degree_celsius, Abbreviation); - Ok(Html(format!( include_str!("index.html"), - c.with(status.wassertemp), - c.with(status.wassertemp_min), - c.with(status.wassertemp_max), - c.with(status.solltemp_solar), - c.with(status.solltemp_netz), - v.with(status.solarspannung), - a.with(status.solarstrom), - kw.with(status.solarleistung), - w.with(status.solarleistung), - kwh.with(status.solarenergie_heute), - wh.with(status.solarenergie_heute), - kwh.with(status.solarenergie_gesamt), - wh.with(status.solarenergie_gesamt), - kwh.with(status.netzenergie_heute), - wh.with(status.netzenergie_heute), + status.wassertemp, + status.wassertemp_min, + status.wassertemp_max, + status.solltemp_solar, + status.solltemp_netz, + status.solarspannung, + status.solarstrom, + status.solarleistung, + status.solarleistung * 1000.0, + status.solarenergie_heute, + status.solarenergie_heute * 1000.0, + status.solarenergie_gesamt, + status.solarenergie_gesamt * 1000.0, + status.netzenergie_heute, + status.netzenergie_heute * 1000.0, status.iso_messung, - c.with(status.geraetetemp), + status.geraetetemp, status.status, status.dc_trenner, status.dc_relais,