@@ -63,11 +63,11 @@ class Status(NamedTuple):
6363
6464 device : str
6565 name : str
66- temperature_in : int
67- humidity_in : int
68- temperature_out : int
66+ temperature_in : Optional [ int ]
67+ humidity_in : Optional [ int ]
68+ temperature_out : Optional [ int ]
6969 mode : str
70- co2_ppm : int
70+ co2_ppm : Optional [ int ]
7171 filter : int
7272 fan : int
7373 light : int
@@ -78,6 +78,14 @@ def _strip_unit(value: str) -> str:
7878 return value .strip ().partition (" " )[0 ]
7979
8080
81+ def _int_or_none (value : str ) -> Optional [int ]:
82+ """Convert value to int or return None."""
83+ if value == "-" :
84+ return None
85+ else :
86+ return int (value )
87+
88+
8189async def get_status (client : httpx .AsyncClient , device : str ) -> Status :
8290 """Return device status."""
8391 try :
@@ -119,11 +127,11 @@ async def get_status(client: httpx.AsyncClient, device: str) -> Status:
119127 return Status (
120128 device = device ,
121129 name = cast (Tag , content .find (class_ = "deviceName" )).text ,
122- temperature_in = int (_strip_unit (temp_in )),
123- humidity_in = int (_strip_unit (humi_in )),
124- temperature_out = int (_strip_unit (temp_out )),
130+ temperature_in = _int_or_none (_strip_unit (temp_in )),
131+ humidity_in = _int_or_none (_strip_unit (humi_in )),
132+ temperature_out = _int_or_none (_strip_unit (temp_out )),
125133 mode = mode_raw .strip (),
126- co2_ppm = int (_strip_unit (co2_raw )),
134+ co2_ppm = _int_or_none (_strip_unit (co2_raw )),
127135 filter = 100 - int (_strip_unit (filter_raw )),
128136 fan = 100 - int (_strip_unit (fan_raw )),
129137 light = int (light_raw ),
0 commit comments