133133 parse_formated_json ,
134134 trim_inels_status_bytes ,
135135 trim_inels_status_values ,
136+ twos_comp_4B ,
136137)
137138
138139
@@ -2044,25 +2045,22 @@ def create_ha_value_object(cls, device_value: DeviceValue) -> Any:
20442045 last_known_required = None
20452046 last_known_required_cool = None
20462047
2047- temp_current : float = int (
2048- trim_inels_status_values (device_value .inels_status_value , cls .DATA , CURRENT_TEMP , "" ), 16
2048+ temp_current : float = twos_comp_4B (
2049+ int ( trim_inels_status_values (device_value .inels_status_value , cls .DATA , CURRENT_TEMP , "" ), 16 )
20492050 )
20502051 if temp_current == 0x7FFFFFFB :
20512052 temp_current = 0
20522053 else :
20532054 temp_current /= 100
20542055
20552056 temp_critical_max = (
2056- int (
2057- trim_inels_status_values ( # check if 0x7F FF FF FB -> make it 50
2058- device_value .inels_status_value , cls .DATA , CRITICAL_MAX_TEMP , ""
2059- ),
2060- 16 ,
2057+ twos_comp_4B (
2058+ int (trim_inels_status_values (device_value .inels_status_value , cls .DATA , CRITICAL_MAX_TEMP , "" ), 16 )
20612059 )
20622060 / 100
20632061 )
2064- temp_required_heat : float = int (
2065- trim_inels_status_values (device_value .inels_status_value , cls .DATA , REQUIRED_HEAT_TEMP , "" ), 16
2062+ temp_required_heat : float = twos_comp_4B (
2063+ int ( trim_inels_status_values (device_value .inels_status_value , cls .DATA , REQUIRED_HEAT_TEMP , "" ), 16 )
20662064 )
20672065 if temp_required_heat == 0x7FFFFFFB :
20682066 temp_required_heat = 0
@@ -2076,17 +2074,8 @@ def create_ha_value_object(cls, device_value: DeviceValue) -> Any:
20762074 if temp_required_heat != 0 :
20772075 last_known_required = temp_required_heat
20782076
2079- temp_critical_min = (
2080- int (
2081- trim_inels_status_values ( # check if 0x7F FF FF FB -> make it -50
2082- device_value .inels_status_value , cls .DATA , CRITICAL_MIN_TEMP , ""
2083- ),
2084- 16 ,
2085- )
2086- / 100
2087- )
2088- temp_required_cool : float = int (
2089- trim_inels_status_values (device_value .inels_status_value , cls .DATA , REQUIRED_COOL_TEMP , "" ), 16
2077+ temp_required_cool : float = twos_comp_4B (
2078+ int (trim_inels_status_values (device_value .inels_status_value , cls .DATA , REQUIRED_COOL_TEMP , "" ), 16 )
20902079 )
20912080 if temp_required_cool == 0x7FFFFFFB :
20922081 temp_required_cool = 0
@@ -2101,7 +2090,10 @@ def create_ha_value_object(cls, device_value: DeviceValue) -> Any:
21012090 last_known_required_cool = temp_required_cool
21022091
21032092 temp_correction = (
2104- int (trim_inels_status_values (device_value .inels_status_value , cls .DATA , TEMP_CORRECTION , "" ), 16 ) / 100
2093+ twos_comp_4B (
2094+ int (trim_inels_status_values (device_value .inels_status_value , cls .DATA , TEMP_CORRECTION , "" ), 16 )
2095+ )
2096+ / 100
21052097 )
21062098 holiday_mode = int (trim_inels_status_values (device_value .inels_status_value , cls .DATA , PUBLIC_HOLIDAY , "" ), 16 )
21072099 control_mode = int (trim_inels_status_values (device_value .inels_status_value , cls .DATA , CONTROL_MODE , "" ))
@@ -2213,11 +2205,13 @@ def create_inels_set_value(cls, device_value: DeviceValue) -> str:
22132205
22142206 required_heat = cc .required
22152207 required_cool = cc .required_cool
2216- if ( required_heat == 0 or required_cool == 0 ) and manual_in == 7 and ( byte18 == 1 or byte18 == 3 ) :
2208+ if manual_in == 7 and byte18 in [ 1 , 3 ] :
22172209 try :
22182210 climate_controller = device_value .last_value .ha_value .climate_controller
2219- required_heat = climate_controller .last_known_required or required_heat
2220- required_cool = climate_controller .last_known_required_cool or required_cool
2211+ if required_heat == 0 and climate_controller .last_known_required :
2212+ required_heat = climate_controller .last_known_required
2213+ if required_cool == 0 and climate_controller .last_known_required_cool :
2214+ required_cool = climate_controller .last_known_required_cool
22212215 except AttributeError :
22222216 pass
22232217
0 commit comments