@@ -781,23 +781,42 @@ def get_preset_modes(self):
781
781
782
782
async def async_turn_on (self ):
783
783
"""Turn device CLIMATE on."""
784
+ _LOGGER .debug ("Device '%s' request to turn on" , self ._device .name )
784
785
cc = self .climate_control ()
785
- result = await self ._device .set_path (self ._device .getId (), self .embedded_id , "onOffMode" , "" , "on" )
786
- if result is False :
787
- _LOGGER .warning ("Device '%s' problem setting onOffMode to on" , self ._device .name )
786
+ result = True
787
+ if cc ["onOffMode" ]["value" ] == "off" :
788
+ result &= await self ._device .set_path (self ._device .getId (), self .embedded_id , "onOffMode" , "" , "on" )
789
+ if result is False :
790
+ _LOGGER .error ("Device '%s' problem setting onOffMode to on" , self ._device .name )
791
+ else :
792
+ cc ["onOffMode" ]["value" ] = "on"
793
+ self ._attr_hvac_mode = self .get_hvac_mode ()
794
+ self .async_write_ha_state ()
788
795
else :
789
- cc ["onOffMode" ]["value" ] = "on"
790
- self ._attr_hvac_mode = self .get_hvac_mode ()
791
- self .async_write_ha_state ()
796
+ _LOGGER .debug (
797
+ "Device '%s' request to turn on ignored because device is already on" ,
798
+ self ._device .name ,
799
+ )
800
+
792
801
return result
793
802
794
803
async def async_turn_off (self ):
795
- result = await self ._device .set_path (self ._device .getId (), self .embedded_id , "onOffMode" , "" , "off" )
796
- if result is False :
797
- _LOGGER .warning ("Device '%s' problem setting onOffMode to off" , self ._device .name )
804
+ _LOGGER .debug ("Device '%s' request to turn off" , self ._device .name )
805
+ cc = self .climate_control ()
806
+ result = True
807
+ if cc ["onOffMode" ]["value" ] == "on" :
808
+ result &= await self ._device .set_path (self ._device .getId (), self .embedded_id , "onOffMode" , "" , "off" )
809
+ if result is False :
810
+ _LOGGER .error ("Device '%s' problem setting onOffMode to off" , self ._device .name )
811
+ else :
812
+ cc ["onOffMode" ]["value" ] = "off"
813
+ self ._attr_hvac_mode = self .get_hvac_mode ()
814
+ self .async_write_ha_state ()
798
815
else :
799
- self ._attr_hvac_mode = HVACMode .OFF
800
- self .async_write_ha_state ()
816
+ _LOGGER .debug (
817
+ "Device '%s' request to turn off ignored because device is already off" ,
818
+ self ._device .name ,
819
+ )
801
820
802
821
return result
803
822
0 commit comments