@@ -147,24 +147,42 @@ def device_info(self):
147
147
148
148
async def async_turn_on (self , ** kwargs ):
149
149
"""Turn the zone on."""
150
- result = await self ._device .set_path (self ._device .getId (), self ._embedded_id , self ._value , "" , "on" )
151
- if result is False :
152
- _LOGGER .warning ("Device '%s' problem setting '%s' to on" , self ._device .name , self ._value )
150
+ result = True
151
+ if not self .is_on :
152
+ result &= await self ._device .set_path (self ._device .getId (), self ._embedded_id , self ._value , "" , "on" )
153
+ if result is False :
154
+ _LOGGER .warning ("Device '%s' problem setting '%s' to on" , self ._device .name , self ._value )
155
+ else :
156
+ self ._switch_state = "on"
157
+ self .async_write_ha_state ()
153
158
else :
154
- self ._switch_state = "on"
155
- self .async_write_ha_state ()
159
+ _LOGGER .debug (
160
+ "Device '%s' switch '%s' request to turn on ignored because is already on" ,
161
+ self ._device .name ,
162
+ self ._value
163
+ )
164
+
156
165
return result
157
166
158
167
async def async_turn_off (self , ** kwargs ):
159
168
"""Turn the zone off."""
160
- result = await self ._device .set_path (self ._device .getId (), self ._embedded_id , self ._value , "" , "off" )
161
- if result is False :
162
- _LOGGER .warning (
163
- "Device '%s' problem setting '%s' to off" ,
169
+ result = True
170
+ if self .is_on :
171
+ result &= await self ._device .set_path (self ._device .getId (), self ._embedded_id , self ._value , "" , "off" )
172
+ if result is False :
173
+ _LOGGER .warning (
174
+ "Device '%s' problem setting '%s' to off" ,
175
+ self ._device .name ,
176
+ self ._value ,
177
+ )
178
+ else :
179
+ self ._switch_state = "off"
180
+ self .async_write_ha_state ()
181
+ else :
182
+ _LOGGER .debug (
183
+ "Device '%s' switch '%s' request to turn off ignored because is already off" ,
164
184
self ._device .name ,
165
- self ._value ,
185
+ self ._value
166
186
)
167
- else :
168
- self ._switch_state = "off"
169
- self .async_write_ha_state ()
187
+
170
188
return result
0 commit comments