mirror of
https://github.com/home-assistant/core.git
synced 2025-07-10 06:47:09 +00:00
Small bug fixes in modbus due to async (#50812)
* Small bug fixes due to async. * _available is true in turn_on/turn_off * Remove double update. * Set _available.
This commit is contained in:
parent
ebe1059c34
commit
4c7fcae536
@ -208,12 +208,13 @@ class ModbusThermostat(ClimateEntity):
|
|||||||
)
|
)
|
||||||
byte_string = struct.pack(self._structure, target_temperature)
|
byte_string = struct.pack(self._structure, target_temperature)
|
||||||
register_value = struct.unpack(">h", byte_string[0:2])[0]
|
register_value = struct.unpack(">h", byte_string[0:2])[0]
|
||||||
self._available = await self._hub.async_pymodbus_call(
|
result = await self._hub.async_pymodbus_call(
|
||||||
self._slave,
|
self._slave,
|
||||||
self._target_temperature_register,
|
self._target_temperature_register,
|
||||||
register_value,
|
register_value,
|
||||||
CALL_TYPE_WRITE_REGISTERS,
|
CALL_TYPE_WRITE_REGISTERS,
|
||||||
)
|
)
|
||||||
|
self._available = result is not None
|
||||||
await self.async_update()
|
await self.async_update()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -174,16 +174,18 @@ class ModbusCover(CoverEntity, RestoreEntity):
|
|||||||
|
|
||||||
async def async_open_cover(self, **kwargs: Any) -> None:
|
async def async_open_cover(self, **kwargs: Any) -> None:
|
||||||
"""Open cover."""
|
"""Open cover."""
|
||||||
self._available = await self._hub.async_pymodbus_call(
|
result = await self._hub.async_pymodbus_call(
|
||||||
self._slave, self._register, self._state_open, self._write_type
|
self._slave, self._register, self._state_open, self._write_type
|
||||||
)
|
)
|
||||||
|
self._available = result is not None
|
||||||
self.async_update()
|
self.async_update()
|
||||||
|
|
||||||
async def async_close_cover(self, **kwargs: Any) -> None:
|
async def async_close_cover(self, **kwargs: Any) -> None:
|
||||||
"""Close cover."""
|
"""Close cover."""
|
||||||
self._available = await self._hub.async_pymodbus_call(
|
result = await self._hub.async_pymodbus_call(
|
||||||
self._slave, self._register, self._state_closed, self._write_type
|
self._slave, self._register, self._state_closed, self._write_type
|
||||||
)
|
)
|
||||||
|
self._available = result is not None
|
||||||
self.async_update()
|
self.async_update()
|
||||||
|
|
||||||
async def async_update(self, now=None):
|
async def async_update(self, now=None):
|
||||||
|
@ -22,6 +22,8 @@ from homeassistant.helpers.typing import ConfigType
|
|||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
CALL_TYPE_COIL,
|
CALL_TYPE_COIL,
|
||||||
|
CALL_TYPE_WRITE_COIL,
|
||||||
|
CALL_TYPE_WRITE_REGISTER,
|
||||||
CONF_INPUT_TYPE,
|
CONF_INPUT_TYPE,
|
||||||
CONF_STATE_OFF,
|
CONF_STATE_OFF,
|
||||||
CONF_STATE_ON,
|
CONF_STATE_ON,
|
||||||
@ -59,7 +61,10 @@ class ModbusSwitch(SwitchEntity, RestoreEntity):
|
|||||||
self._available = True
|
self._available = True
|
||||||
self._scan_interval = timedelta(seconds=config[CONF_SCAN_INTERVAL])
|
self._scan_interval = timedelta(seconds=config[CONF_SCAN_INTERVAL])
|
||||||
self._address = config[CONF_ADDRESS]
|
self._address = config[CONF_ADDRESS]
|
||||||
self._write_type = config[CONF_WRITE_TYPE]
|
if config[CONF_WRITE_TYPE] == CALL_TYPE_COIL:
|
||||||
|
self._write_type = CALL_TYPE_WRITE_COIL
|
||||||
|
else:
|
||||||
|
self._write_type = CALL_TYPE_WRITE_REGISTER
|
||||||
self._command_on = config[CONF_COMMAND_ON]
|
self._command_on = config[CONF_COMMAND_ON]
|
||||||
self._command_off = config[CONF_COMMAND_OFF]
|
self._command_off = config[CONF_COMMAND_OFF]
|
||||||
if CONF_VERIFY in config:
|
if CONF_VERIFY in config:
|
||||||
@ -111,7 +116,7 @@ class ModbusSwitch(SwitchEntity, RestoreEntity):
|
|||||||
result = await self._hub.async_pymodbus_call(
|
result = await self._hub.async_pymodbus_call(
|
||||||
self._slave, self._address, self._command_on, self._write_type
|
self._slave, self._address, self._command_on, self._write_type
|
||||||
)
|
)
|
||||||
if result is False:
|
if result is None:
|
||||||
self._available = False
|
self._available = False
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
else:
|
else:
|
||||||
@ -127,7 +132,7 @@ class ModbusSwitch(SwitchEntity, RestoreEntity):
|
|||||||
result = await self._hub.async_pymodbus_call(
|
result = await self._hub.async_pymodbus_call(
|
||||||
self._slave, self._address, self._command_off, self._write_type
|
self._slave, self._address, self._command_off, self._write_type
|
||||||
)
|
)
|
||||||
if result is False:
|
if result is None:
|
||||||
self._available = False
|
self._available = False
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user