diff --git a/Cargo.lock b/Cargo.lock index 6e0c884..0798fc9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -568,7 +568,7 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rustberry-poe-monitor" -version = "1.0.2" +version = "1.0.3" dependencies = [ "anyhow", "clap", diff --git a/Cargo.toml b/Cargo.toml index b036aec..9440c0b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustberry-poe-monitor" -version = "1.0.2" +version = "1.0.3" edition = "2021" authors = ["jackra1n"] description = "A simple PoE Monitor for Raspberry Pi Waveshare PoE HAT (B)" diff --git a/src/fan_controller.rs b/src/fan_controller.rs index e1bb2c6..60bdfbf 100644 --- a/src/fan_controller.rs +++ b/src/fan_controller.rs @@ -1,5 +1,6 @@ use linux_embedded_hal::{I2cdev, i2cdev::core::I2CDevice}; use anyhow::{anyhow, Result}; +use log::debug; const SLAVE_ADDRESS: u16 = 0x20; const FAN_ON_COMMAND: u8 = 0xFE; @@ -14,6 +15,7 @@ pub struct FanController { impl FanController { pub fn new(temp_on: f32, temp_off: f32) -> Result { + debug!("Initializing FanController"); if temp_off <= 0.0 || temp_on <= 0.0 { return Err(anyhow!("Temperatures must be greater than 0")); } @@ -22,6 +24,7 @@ impl FanController { } let i2c = I2cdev::new("/dev/i2c-1")?; + debug!("I2C initialized"); Ok(FanController { i2c, @@ -32,6 +35,7 @@ impl FanController { } pub fn fan_on(&mut self) -> Result<(), Box> { + debug!("Sending fan on command"); self.i2c.set_slave_address(SLAVE_ADDRESS)?; self.i2c.smbus_write_byte(FAN_ON_COMMAND)?; self.is_running = true; @@ -39,6 +43,7 @@ impl FanController { } pub fn fan_off(&mut self) -> Result<(), Box> { + debug!("Sending fan off command"); self.i2c.set_slave_address(SLAVE_ADDRESS)?; self.i2c.smbus_write_byte(FAN_OFF_COMMAND)?; self.is_running = false; diff --git a/src/main.rs b/src/main.rs index 4fd769d..d20be4c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ use std::fs; use std::thread; use std::time::{Duration, Instant}; use sysinfo::{System, SystemExt, CpuExt, DiskExt}; -use log::info; +use log::{info, debug, trace}; use clap::Parser; use env_logger::{Builder, Env}; @@ -29,6 +29,15 @@ fn main() -> Result<(), Box> { let env = Env::default().default_filter_or("info"); Builder::from_env(env).init(); + let version = env!("CARGO_PKG_VERSION"); + + debug!("Binary info:"); + debug!("================================"); + debug!("rustberry-poe-monitor: {}", version); + debug!("Target OS: {}", std::env::consts::OS); + debug!("Target Family: {}", std::env::consts::FAMILY); + debug!("Target Architecture: {}", std::env::consts::ARCH); + let mut poe_disp = PoeDisplay::new()?; info!("Display initialized"); @@ -38,22 +47,32 @@ fn main() -> Result<(), Box> { let mut sys: System = SystemExt::new_all(); + debug!("System initialized. System info:"); + debug!("================================"); + debug!("System name: {}", sys.name().unwrap_or_default()); + debug!("System kernel version: {}", sys.kernel_version().unwrap_or_default()); + debug!("System OS version: {}", sys.os_version().unwrap_or_default()); + let mut disk_usage = String::new(); let disk_update_interval = Duration::from_secs(60); let mut last_disk_update = Instant::now() - disk_update_interval; info!("Starting main loop"); + fan_controller.fan_off()?; + loop { sys.refresh_cpu(); sys.refresh_memory(); let ip_address = get_local_ip(); let temp = get_cpu_temperature(); + let temp_str = format!("{:.1}", temp); let cpu_usage = format!("{:.1}", get_cpu_usage(&sys)); let ram_usage = format!("{:.1}", get_ram_usage(&sys)); - + trace!("Checking fan controller. Fan running: {}", fan_controller.is_running); + trace!("Temp: {}, Temp-on: {}, Temp-off: {}", temp, fan_controller.temp_on, fan_controller.temp_off); if fan_controller.is_running { if temp <= fan_controller.temp_off { fan_controller.fan_off()?;