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