* Validate ports as port
Better than just a positive integer since it limits the range from 1 to 65535.
* Validate port for Axis
* Validate port for Xiaomi Home Camera
* Validate port for Modbus
* Validate port for Yamaha MusicCast Receivers
* Update zhong_hong.py
Validate port as a port, the gateway address as positive_int
Also moved the default values to their variable
* Validate port for the Asterisk Voicemail interface
* Fix lint
* Validate port for Xiaomi Cameras
## Description:
More fixes flagged by pylint 2 that don't hurt to have before the actual pylint 2 upgrade (which I'll submit soon).
## Checklist:
- [ ] The code change is tested and works locally.
- [x] Local tests pass with `tox`. **Your PR cannot be merged unless tests pass**
* Lazy loading of service descriptions
* Fix tests
* Load YAML in executor
* Return a copy of available services to allow mutations
* Remove lint
* Add zha/services.yaml
* Only cache descriptions for known services
* Remove lint
* Remove description loading during service registration
* Remove description parameter from async_register
* Test async_get_all_descriptions
* Remove lint
* Fix typos from multi-edit
* Remove unused arguments
* Remove unused import os
* Remove unused import os, part 2
* Remove unneeded coroutine decorator
* Only use executor for loading files
* Cleanups suggested in review
* Increase test coverage
* Fix races in existing tests
* Communication timeout support in modbus hub.
Timeout parameter are taken from configuration and passed to pymodbus constructor.
* CONF_TYPE and CONF_TIMEOUT imported from const.py
* Fixed a bug where changing fan speed was not possible
* Bump pymodbus version to 1.3.1 to fix issue #8285
* Changed all modbus components so that they use CONF_SLAVE from const.py
* Fix checking result from a modbus transaction
* Add missing decorator
* Added modbus write coil service and added descriptions
* Removed a hiding debug print
* Fixed a bug where changing fan speed was not possible
* Bump pymodbus version to 1.3.1 to fix issue #8285
* Changed all modbus components so that they use CONF_SLAVE from const.py