diff --git a/charge-controller-supervisor/src/controller/tristar.rs b/charge-controller-supervisor/src/controller/tristar.rs index d957aae..ef43c46 100644 --- a/charge-controller-supervisor/src/controller/tristar.rs +++ b/charge-controller-supervisor/src/controller/tristar.rs @@ -108,7 +108,7 @@ impl ModbusTimeout { } #[derive(Debug, Clone, Copy, Serialize, Deserialize)] pub struct TristarSettings { - network: NetworkSettings, + network: Option<NetworkSettings>, charge: ChargeSettings, } @@ -685,12 +685,15 @@ impl Tristar { } pub async fn read_settings(&mut self) -> eyre::Result<TristarSettings> { - let network_data = self + let network = if let Ok(network_data) = self .modbus .read_holding_registers(NETWORK_DATA_ADDR_START, NETWORK_DATA_LENGTH) - .await?; - - let network = NetworkSettings::from_buf(&network_data)?; + .await + { + Some(NetworkSettings::from_buf(&network_data)?) + } else { + None + }; let charge_data_1 = self .modbus