Revert changes to unit crate

This commit is contained in:
2023-11-20 20:56:21 +01:00
parent 387b807d48
commit 4386a0bcd7
4 changed files with 52 additions and 118 deletions

26
Cargo.lock generated
View File

@@ -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"

View File

@@ -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"

View File

@@ -11,25 +11,25 @@
<body>
<h2>Wasser</h2>
<p>Temperatur: {}</p>
<p>Temperatur Min: {}</p>
<p>Temperatur Max: {}</p>
<p>Solltemperatur Solar: {}</p>
<p>Solltemperatur Netz: {}</p>
<p>Temperatur: {} °C</p>
<p>Temperatur Min: {} °C</p>
<p>Temperatur Max: {} °C</p>
<p>Solltemperatur Solar: {} °C</p>
<p>Solltemperatur Netz: {} °C</p>
<h2>Solar aktuell</h2>
<p>Spannung: {}</p>
<p>Strom: {}</p>
<p>Leistung: {} ({})</p>
<p>Spannung: {} V</p>
<p>Strom: {} A</p>
<p>Leistung: {} kW ({} W)</p>
<h2>Historie</h2>
<p>Solarenergie Heute: {} ({})</p>
<p>Solarenergie Gesamt: {} ({})</p>
<p>Netzenergie Heute: {} ({})</p>
<p>Solarenergie Heute: {} kWh ({} Wh)</p>
<p>Solarenergie Gesamt: {} kWh ({} Wh)</p>
<p>Netzenergie Heute: {} kWh ({} Wh)</p>
<h2>Zustand</h2>
<p>Isolationsmessung: {}</p>
<p>Gerätetemperatur: {}</p>
<p>Gerätetemperatur: {} °C</p>
<p>Status: {}</p>
<p>DC Trenner: {}</p>
<p>DC Relais: {}</p>

View File

@@ -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<Html<String>, AppError> {
.collect::<HashMap<StatusTag, &str>>();
let status = Status {
wassertemp: ThermodynamicTemperature::new::<degree_celsius>(
status_map[&StatusTag::Wassertemp].parse::<f32>()? / 10.0,
),
wassertemp_min: ThermodynamicTemperature::new::<degree_celsius>(
status_map[&StatusTag::WassertempMin].parse::<f32>()? / 10.0,
),
wassertemp_max: ThermodynamicTemperature::new::<degree_celsius>(
status_map[&StatusTag::WassertempMax].parse::<f32>()? / 10.0,
),
solltemp_solar: ThermodynamicTemperature::new::<degree_celsius>(
status_map[&StatusTag::SolltempSolar].parse::<f32>()? / 10.0,
),
solltemp_netz: ThermodynamicTemperature::new::<degree_celsius>(
status_map[&StatusTag::SolltempNetz].parse::<f32>()? / 10.0,
),
solarspannung: ElectricPotential::new::<volt>(
status_map[&StatusTag::Solarspannung].parse()?,
),
solarstrom: ElectricCurrent::new::<ampere>(status_map[&StatusTag::Solarstrom].parse()?),
solarleistung: Power::new::<watt>(status_map[&StatusTag::Solarleistung].parse()?),
solarenergie_heute: Energy::new::<watt_hour>(
status_map[&StatusTag::SolarenergieHeute].parse()?,
),
solarenergie_gesamt: Energy::new::<watt_hour>(
status_map[&StatusTag::SolarenergieGesamt].parse()?,
),
netzenergie_heute: Energy::new::<watt_hour>(
status_map[&StatusTag::NetzenergieHeute].parse()?,
),
wassertemp: status_map[&StatusTag::Wassertemp].parse::<f32>()? / 10.0,
wassertemp_min: status_map[&StatusTag::WassertempMin].parse::<f32>()? / 10.0,
wassertemp_max: status_map[&StatusTag::WassertempMax].parse::<f32>()? / 10.0,
solltemp_solar: status_map[&StatusTag::SolltempSolar].parse::<f32>()? / 10.0,
solltemp_netz: status_map[&StatusTag::SolltempNetz].parse::<f32>()? / 10.0,
solarspannung: status_map[&StatusTag::Solarspannung].parse()?,
solarstrom: status_map[&StatusTag::Solarstrom].parse()?,
solarleistung: status_map[&StatusTag::Solarleistung].parse::<f32>()? / 1000.0,
solarenergie_heute: status_map[&StatusTag::SolarenergieHeute].parse::<f32>()? / 1000.0,
solarenergie_gesamt: status_map[&StatusTag::SolarenergieGesamt].parse::<f32>()? / 1000.0,
netzenergie_heute: status_map[&StatusTag::NetzenergieHeute].parse::<f32>()? / 1000.0,
iso_messung: status_map[&StatusTag::IsoMessung].parse()?,
geraetetemp: ThermodynamicTemperature::new::<degree_celsius>(
status_map[&StatusTag::GeraeteTemp].parse()?,
),
geraetetemp: status_map[&StatusTag::GeraeteTemp].parse()?,
status: status_map[&StatusTag::Status].parse()?,
dc_trenner: status_map[&StatusTag::DcTrenner].parse::<u8>()? != 0,
dc_relais: status_map[&StatusTag::DcRelais].parse::<u8>()? != 0,
@@ -171,33 +140,25 @@ async fn handler() -> Result<Html<String>, 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,