Set modbus entity to non-available unless scan_interval=0 (#53155)
This commit is contained in:
parent
8a72e8df79
commit
2e2b340b1e
8 changed files with 21 additions and 0 deletions
|
@ -68,6 +68,7 @@ class BasePlatform(Entity):
|
||||||
self._value = None
|
self._value = None
|
||||||
self._available = True
|
self._available = True
|
||||||
self._scan_interval = int(entry[CONF_SCAN_INTERVAL])
|
self._scan_interval = int(entry[CONF_SCAN_INTERVAL])
|
||||||
|
self._available = self._scan_interval == 0
|
||||||
self._call_active = False
|
self._call_active = False
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
|
|
@ -12,6 +12,7 @@ from homeassistant.const import (
|
||||||
CONF_BINARY_SENSORS,
|
CONF_BINARY_SENSORS,
|
||||||
CONF_DEVICE_CLASS,
|
CONF_DEVICE_CLASS,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
|
CONF_SCAN_INTERVAL,
|
||||||
CONF_SLAVE,
|
CONF_SLAVE,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
|
@ -144,6 +145,7 @@ async def test_service_binary_sensor_update(hass, mock_pymodbus):
|
||||||
{
|
{
|
||||||
CONF_NAME: SENSOR_NAME,
|
CONF_NAME: SENSOR_NAME,
|
||||||
CONF_ADDRESS: 51,
|
CONF_ADDRESS: 51,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -104,6 +104,7 @@ async def test_service_climate_update(hass, mock_pymodbus):
|
||||||
CONF_TARGET_TEMP: 117,
|
CONF_TARGET_TEMP: 117,
|
||||||
CONF_ADDRESS: 117,
|
CONF_ADDRESS: 117,
|
||||||
CONF_SLAVE: 10,
|
CONF_SLAVE: 10,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -176,6 +177,7 @@ test_value.attributes = {ATTR_TEMPERATURE: 37}
|
||||||
CONF_NAME: CLIMATE_NAME,
|
CONF_NAME: CLIMATE_NAME,
|
||||||
CONF_TARGET_TEMP: 117,
|
CONF_TARGET_TEMP: 117,
|
||||||
CONF_ADDRESS: 117,
|
CONF_ADDRESS: 117,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
|
@ -211,6 +211,7 @@ async def test_service_cover_update(hass, mock_pymodbus):
|
||||||
CONF_STATE_CLOSING: 3,
|
CONF_STATE_CLOSING: 3,
|
||||||
CONF_STATUS_REGISTER: 1234,
|
CONF_STATUS_REGISTER: 1234,
|
||||||
CONF_STATUS_REGISTER_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
CONF_STATUS_REGISTER_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -232,11 +233,13 @@ async def test_service_cover_move(hass, mock_pymodbus):
|
||||||
CONF_NAME: COVER_NAME,
|
CONF_NAME: COVER_NAME,
|
||||||
CONF_ADDRESS: 1234,
|
CONF_ADDRESS: 1234,
|
||||||
CONF_STATUS_REGISTER_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
CONF_STATUS_REGISTER_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
CONF_NAME: f"{COVER_NAME}2",
|
CONF_NAME: f"{COVER_NAME}2",
|
||||||
CONF_INPUT_TYPE: CALL_TYPE_COIL,
|
CONF_INPUT_TYPE: CALL_TYPE_COIL,
|
||||||
CONF_ADDRESS: 1234,
|
CONF_ADDRESS: 1234,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ from homeassistant.const import (
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
|
CONF_SCAN_INTERVAL,
|
||||||
CONF_SLAVE,
|
CONF_SLAVE,
|
||||||
CONF_TYPE,
|
CONF_TYPE,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
|
@ -195,6 +196,7 @@ async def test_all_fan(hass, call_type, regs, verify, expected):
|
||||||
{
|
{
|
||||||
CONF_NAME: FAN_NAME,
|
CONF_NAME: FAN_NAME,
|
||||||
CONF_ADDRESS: 1234,
|
CONF_ADDRESS: 1234,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -219,11 +221,13 @@ async def test_fan_service_turn(hass, caplog, mock_pymodbus):
|
||||||
CONF_NAME: FAN_NAME,
|
CONF_NAME: FAN_NAME,
|
||||||
CONF_ADDRESS: 17,
|
CONF_ADDRESS: 17,
|
||||||
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
CONF_NAME: f"{FAN_NAME}2",
|
CONF_NAME: f"{FAN_NAME}2",
|
||||||
CONF_ADDRESS: 17,
|
CONF_ADDRESS: 17,
|
||||||
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
CONF_VERIFY: {},
|
CONF_VERIFY: {},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
@ -23,6 +23,7 @@ from homeassistant.const import (
|
||||||
CONF_LIGHTS,
|
CONF_LIGHTS,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
|
CONF_SCAN_INTERVAL,
|
||||||
CONF_SLAVE,
|
CONF_SLAVE,
|
||||||
CONF_TYPE,
|
CONF_TYPE,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
|
@ -195,6 +196,7 @@ async def test_all_light(hass, call_type, regs, verify, expected):
|
||||||
{
|
{
|
||||||
CONF_NAME: LIGHT_NAME,
|
CONF_NAME: LIGHT_NAME,
|
||||||
CONF_ADDRESS: 1234,
|
CONF_ADDRESS: 1234,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -219,11 +221,13 @@ async def test_light_service_turn(hass, caplog, mock_pymodbus):
|
||||||
CONF_NAME: LIGHT_NAME,
|
CONF_NAME: LIGHT_NAME,
|
||||||
CONF_ADDRESS: 17,
|
CONF_ADDRESS: 17,
|
||||||
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
CONF_NAME: f"{LIGHT_NAME}2",
|
CONF_NAME: f"{LIGHT_NAME}2",
|
||||||
CONF_ADDRESS: 17,
|
CONF_ADDRESS: 17,
|
||||||
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
CONF_VERIFY: {},
|
CONF_VERIFY: {},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
@ -29,6 +29,7 @@ from homeassistant.const import (
|
||||||
CONF_DEVICE_CLASS,
|
CONF_DEVICE_CLASS,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_OFFSET,
|
CONF_OFFSET,
|
||||||
|
CONF_SCAN_INTERVAL,
|
||||||
CONF_SENSORS,
|
CONF_SENSORS,
|
||||||
CONF_SLAVE,
|
CONF_SLAVE,
|
||||||
CONF_STRUCTURE,
|
CONF_STRUCTURE,
|
||||||
|
@ -578,6 +579,7 @@ async def test_struct_sensor(hass, cfg, regs, expected):
|
||||||
{
|
{
|
||||||
CONF_NAME: SENSOR_NAME,
|
CONF_NAME: SENSOR_NAME,
|
||||||
CONF_ADDRESS: 51,
|
CONF_ADDRESS: 51,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -210,6 +210,7 @@ async def test_all_switch(hass, call_type, regs, verify, expected):
|
||||||
{
|
{
|
||||||
CONF_NAME: SWITCH_NAME,
|
CONF_NAME: SWITCH_NAME,
|
||||||
CONF_ADDRESS: 1234,
|
CONF_ADDRESS: 1234,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -234,11 +235,13 @@ async def test_switch_service_turn(hass, caplog, mock_pymodbus):
|
||||||
CONF_NAME: SWITCH_NAME,
|
CONF_NAME: SWITCH_NAME,
|
||||||
CONF_ADDRESS: 17,
|
CONF_ADDRESS: 17,
|
||||||
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
CONF_NAME: f"{SWITCH_NAME}2",
|
CONF_NAME: f"{SWITCH_NAME}2",
|
||||||
CONF_ADDRESS: 17,
|
CONF_ADDRESS: 17,
|
||||||
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
||||||
|
CONF_SCAN_INTERVAL: 0,
|
||||||
CONF_VERIFY: {},
|
CONF_VERIFY: {},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue