Set modbus entity to non-available unless scan_interval=0 (#53155)

This commit is contained in:
jan iversen 2021-07-21 07:48:02 +02:00 committed by GitHub
parent 8a72e8df79
commit 2e2b340b1e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 21 additions and 0 deletions

View file

@ -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

View file

@ -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,
} }
] ]
}, },

View file

@ -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,
} }
], ],
}, },

View file

@ -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,
}, },
] ]
} }

View file

@ -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: {},
}, },
], ],

View file

@ -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: {},
}, },
], ],

View file

@ -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,
} }
] ]
}, },

View file

@ -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: {},
}, },
], ],