@@ -113,6 +113,32 @@ def check_model(name: str | None, vendor_name: str | None) -> str | None:
113113 return name
114114
115115
116+ def common_match_cases (
117+ measurement : str ,
118+ attrs : DATA | UOM ,
119+ location : etree ,
120+ data : DeviceData ,
121+ ) -> None :
122+ """Helper-function for common match-case execution."""
123+ value = location .text in ("on" , "true" )
124+ match measurement :
125+ case _ as measurement if measurement in BINARY_SENSORS :
126+ bs_key = cast (BinarySensorType , measurement )
127+ data ["binary_sensors" ][bs_key ] = value
128+ case _ as measurement if measurement in SENSORS :
129+ s_key = cast (SensorType , measurement )
130+ s_value = format_measure (
131+ location .text , getattr (attrs , ATTR_UNIT_OF_MEASUREMENT )
132+ )
133+ data ["sensors" ][s_key ] = s_value
134+ case _ as measurement if measurement in SWITCHES :
135+ sw_key = cast (SwitchType , measurement )
136+ data ["switches" ][sw_key ] = value
137+ case _ as measurement if measurement in SPECIALS :
138+ sp_key = cast (SpecialType , measurement )
139+ data [sp_key ] = value
140+
141+
116142def escape_illegal_xml_characters (xmldata : str ) -> str :
117143 """Replace illegal &-characters."""
118144 return re .sub (r"&([^a-zA-Z#])" , r"&\1" , xmldata )
@@ -157,32 +183,6 @@ def get_vendor_name(module: etree, model_data: ModelData) -> ModelData:
157183 return model_data
158184
159185
160- def match_on_true_cases (
161- measurement : str ,
162- attrs : DATA | UOM ,
163- location : etree ,
164- data : DeviceData ,
165- ) -> None :
166- """Helper-function for common match-case execution."""
167- value = location .text in ("on" , "true" )
168- match measurement :
169- case _ as measurement if measurement in BINARY_SENSORS :
170- bs_key = cast (BinarySensorType , measurement )
171- data ["binary_sensors" ][bs_key ] = value
172- case _ as measurement if measurement in SENSORS :
173- s_key = cast (SensorType , measurement )
174- s_value = format_measure (
175- location .text , getattr (attrs , ATTR_UNIT_OF_MEASUREMENT )
176- )
177- data ["sensors" ][s_key ] = s_value
178- case _ as measurement if measurement in SWITCHES :
179- sw_key = cast (SwitchType , measurement )
180- data ["switches" ][sw_key ] = value
181- case _ as measurement if measurement in SPECIALS :
182- sp_key = cast (SpecialType , measurement )
183- data [sp_key ] = value
184-
185-
186186def power_data_local_format (
187187 attrs : dict [str , str ], key_string : str , val : str
188188) -> float | int :
0 commit comments