fix temperature, log unknown chargestate value
All checks were successful
Build .deb on release / Build-Deb (push) Successful in 1m53s
All checks were successful
Build .deb on release / Build-Deb (push) Successful in 1m53s
This commit is contained in:
parent
65e86c2359
commit
b1de54501c
19
Cargo.lock
generated
19
Cargo.lock
generated
|
@ -485,6 +485,12 @@ dependencies = [
|
||||||
"cfg-if 1.0.0",
|
"cfg-if 1.0.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crunchy"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crypto-common"
|
name = "crypto-common"
|
||||||
version = "0.1.6"
|
version = "0.1.6"
|
||||||
|
@ -849,6 +855,16 @@ dependencies = [
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "half"
|
||||||
|
version = "2.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 1.0.0",
|
||||||
|
"crunchy",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hashbrown"
|
name = "hashbrown"
|
||||||
version = "0.14.3"
|
version = "0.14.3"
|
||||||
|
@ -2538,11 +2554,12 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tesla-charge-controller"
|
name = "tesla-charge-controller"
|
||||||
version = "1.1.0"
|
version = "1.1.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"clap 4.4.11",
|
"clap 4.4.11",
|
||||||
"env_logger 0.10.1",
|
"env_logger 0.10.1",
|
||||||
|
"half",
|
||||||
"if_chain",
|
"if_chain",
|
||||||
"include_dir",
|
"include_dir",
|
||||||
"lazy_static 1.4.0",
|
"lazy_static 1.4.0",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "tesla-charge-controller"
|
name = "tesla-charge-controller"
|
||||||
version = "1.1.0"
|
version = "1.1.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MITNFA"
|
license = "MITNFA"
|
||||||
description = "Controls Tesla charge rate based on solar charge data"
|
description = "Controls Tesla charge rate based on solar charge data"
|
||||||
|
@ -31,3 +31,4 @@ libmodbus-rs = "0.8.3"
|
||||||
if_chain = "1.0.2"
|
if_chain = "1.0.2"
|
||||||
notify-debouncer-mini = { version = "0.4.1", default-features = false }
|
notify-debouncer-mini = { version = "0.4.1", default-features = false }
|
||||||
lazy_static = "1.4"
|
lazy_static = "1.4"
|
||||||
|
half = "2.3"
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
use libmodbus_rs::{Modbus, ModbusClient, ModbusRTU};
|
use libmodbus_rs::{Modbus, ModbusClient, ModbusRTU};
|
||||||
use prometheus::core::{AtomicI64, GenericGauge};
|
use prometheus::core::{AtomicI64, GenericGauge};
|
||||||
|
|
||||||
use crate::{charge_controllers::gauges::*, errors::TristarError};
|
use crate::{
|
||||||
|
charge_controllers::gauges::*,
|
||||||
|
errors::{PrintErrors, TristarError},
|
||||||
|
};
|
||||||
|
|
||||||
const DEVICE_ID: u8 = 0x01;
|
const DEVICE_ID: u8 = 0x01;
|
||||||
const RAM_DATA_SIZE: u16 = 0x005B;
|
const RAM_DATA_SIZE: u16 = 0x005B;
|
||||||
|
@ -51,7 +54,7 @@ pub struct TristarState {
|
||||||
battery_voltage: f64,
|
battery_voltage: f64,
|
||||||
target_voltage: f64,
|
target_voltage: f64,
|
||||||
input_current: f64,
|
input_current: f64,
|
||||||
battery_temp: u16,
|
battery_temp: f64,
|
||||||
charge_state: ChargeState,
|
charge_state: ChargeState,
|
||||||
tristar_input_voltage: f64,
|
tristar_input_voltage: f64,
|
||||||
tristar_charge_current: f64,
|
tristar_charge_current: f64,
|
||||||
|
@ -68,7 +71,7 @@ impl TristarState {
|
||||||
battery_voltage: scaling.get_voltage(ram[TristarRamAddress::AdcVbFMed]),
|
battery_voltage: scaling.get_voltage(ram[TristarRamAddress::AdcVbFMed]),
|
||||||
target_voltage: scaling.get_voltage(ram[TristarRamAddress::VbRef]),
|
target_voltage: scaling.get_voltage(ram[TristarRamAddress::VbRef]),
|
||||||
input_current: scaling.get_current(ram[TristarRamAddress::AdcIaFShadow]),
|
input_current: scaling.get_current(ram[TristarRamAddress::AdcIaFShadow]),
|
||||||
battery_temp: ram[TristarRamAddress::Tbatt],
|
battery_temp: half::f16::from_bits(ram[TristarRamAddress::Tbatt]).to_f64() * 512.,
|
||||||
charge_state: ChargeState::from(ram[TristarRamAddress::ChargeState]),
|
charge_state: ChargeState::from(ram[TristarRamAddress::ChargeState]),
|
||||||
tristar_input_voltage: scaling.get_voltage(ram[TristarRamAddress::AdcVaF]),
|
tristar_input_voltage: scaling.get_voltage(ram[TristarRamAddress::AdcVaF]),
|
||||||
tristar_charge_current: scaling.get_current(ram[TristarRamAddress::AdcIbFShadow]),
|
tristar_charge_current: scaling.get_current(ram[TristarRamAddress::AdcIbFShadow]),
|
||||||
|
@ -115,7 +118,10 @@ impl From<u16> for ChargeState {
|
||||||
7 => Self::Float,
|
7 => Self::Float,
|
||||||
8 => Self::Equalize,
|
8 => Self::Equalize,
|
||||||
9 => Self::Slave,
|
9 => Self::Slave,
|
||||||
_ => Self::Unknown,
|
_ => {
|
||||||
|
log::info!("Unknown chargestate value: {value}");
|
||||||
|
Self::Unknown
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -245,8 +251,9 @@ impl Tristar {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn refresh(&mut self) {
|
pub fn refresh(&mut self) {
|
||||||
if let Ok(new_state) = self
|
if let Some(new_state) = self
|
||||||
.get_data()
|
.get_data()
|
||||||
|
.some_or_print_with("reading tristar state")
|
||||||
.map(|scaling| TristarState::from_ram(scaling, &self.data_in))
|
.map(|scaling| TristarState::from_ram(scaling, &self.data_in))
|
||||||
{
|
{
|
||||||
BATTERY_VOLTAGE
|
BATTERY_VOLTAGE
|
||||||
|
@ -260,7 +267,7 @@ impl Tristar {
|
||||||
.set(new_state.input_current);
|
.set(new_state.input_current);
|
||||||
BATTERY_TEMP
|
BATTERY_TEMP
|
||||||
.with_label_values(&[&self.port_name])
|
.with_label_values(&[&self.port_name])
|
||||||
.set(new_state.battery_temp.into());
|
.set(new_state.battery_temp);
|
||||||
TRISTAR_INPUT_VOLTAGE
|
TRISTAR_INPUT_VOLTAGE
|
||||||
.with_label_values(&[&self.port_name])
|
.with_label_values(&[&self.port_name])
|
||||||
.set(new_state.tristar_input_voltage);
|
.set(new_state.tristar_input_voltage);
|
||||||
|
|
Loading…
Reference in a new issue