* Updated precision to follow the tenths, halves, whole notation used by
other home assistant climate modules. Added the precision @property so
that home assistant can handle this rounding in the frontend, rather
than in the _async_read_register() method.
* Fixed a pylinter error for periods in user-facing log messages, and
updated `precision` defaults in components/modbus/__init__.py to be
consistent with an error case, using `PRECISION_WHOLE`.
* revert changes to `precision:` configuration variable
instead, the climate `precision()` function will infer whether or not
to display in whole or tenths. halves will be unsupported, which should
be fine.
* re-added missing line that was removed
* revert change to use self._input_type instead of CALL_TYPE_REGISTER_HOLDING
* refactor ModbusRegisterSensor to match the ModbusSwitch interface
* Please pylint, mypy etc.
* Remove PLATFORM.
Co-authored-by: jan Iversen <jancasacondor@gmail.com>
* simplify pymodbus_call.
Do not call with a function object and a check attribute, call instead
with CALL_TYPE*.
Avoid if <type> call x else call y.
Call async_pymodbus_call directly, instead of unpacking/packing.
* Declare call type in __init__.
* Modbus.py back to 100% test coverage.
* Activate startup delay.
* Add removal of call_later if HA is stopped.
This is unlikely to happen, but just security measure.
* Removing timing interval.
async_fire_time_changed() needs to be called twice, first time the delay is
ended and second time update() is executed.
* Variable naming.
* Rename _update() to update()
A platform neeed a function update(), even though
polling is false, this is due to the service:
homeassistant.update_entity, which calls update()
* Update test harnesss to script testing.
Test homeassistant.update_entity in all platforms.
This call calls update() in the platform to get
a new reading.
* Add reuse parameter.
* Move service call from helper to tests.
* Change run_service_update --> prepare_service_update.
* Remove entity_id parameter.
Remove old style configuration from switch.
- The old style configuration allowed a number of illegal
configurations, instead of adding if...log. in setup we
only support the new configuration style.
Add new/changed configuration switch.
Removed verify_state and cleaned configuration to avoid possible
illegal configurations.
Changing the timeout from package default, secures SENDING will
timeout, and after 3 retries break off.
Remark: this commit is tested with pymodbus v2.5.1 the old version
v2.3.0 have several problems in this area.
self._value = await self.async_get_last_state()
pymodbus v2.5.1 is active on DEV (bumped in an earlier PR).
* Add missing function in class.
write_coils was missing.
* Remove dead code.
The HA configuration secures that CONF_TYPE only contains legal values,
so having an empty assert to catch unknown values is dead code.
An empty assert is not informative.
* Reuse HA constants for serial configuration.
Reusing HA consts reduces the need for translation.
Sort/group constants in const.
* Change const name ATTR_* to CONF_*
* Correct wrong import
* ATTR_* for service and CONF_* for schemas.
* Revert change to service call.
* Rename CONF_TEMPERATURE -> ATTR_TEMPERATURE
Avoid possible division problem in set_temperature.
* WRITE_COIL uses write_coils in case of an array.
WRITE_REGISTER uses write_register/write_registers depending
on whether value is singular or an array.
WRITE_COIL is modified to be similar and uses
write_coil/write_coils depending on whether value is singular or an
array.
* Update SERVICE_WRITE_COIL to allow list.
* Change modbus configuration to new style.
The old (frozen) configuration is still supported, but when detected a big
warning is issued that it will soon be removed. This allows users to change
their configuration at their pace.
Clean configuration SCHEMAs and move common modbus parts
to MODBUS_SCHEMA (renamed from BASE_SCHEMA).
Add BASE_COMPONENT_SCHEMA to ensure common configuration of components.
All component define e.g. NAME, move these to a common schema.
change components (binary_sensor, sensor, switch) to new config
Add test set for modbus itself (old config and discovery_info).
Add test of devices discovery_info configuration
* Update discovery_info configuration for binary_sensor.
* Update discovery_info configuration for sensor.
* Update discovery_info configuration for switch.
* Review comments.
* update due to change in core
* flake8 problem.
* Correct log message.
* add should_poll property.
* Fix polling for Modbus binary sensor
* Fix polling for Modbus sensor
* Fix polling for Modbus switch
* Fix switch.
* Fix pytest errors.
* Update homeassistant/components/modbus/binary_sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/modbus/binary_sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/modbus/modbus.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/modbus/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/modbus/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/modbus/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/modbus/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/modbus/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/modbus/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* ToogleEntity -> SwitchEntity and add abastract
* Update homeassistant/components/modbus/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/modbus/test_init.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* removed if/else in test.
* Remove other if.
Co-authored-by: Vladimir Zahradnik <vladimir@zahradnik.io>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add Modbus light and fan entities
* Rework Fan and Light components to new config structure
* Fix Linter issue
* Rework Modbus switch initialization
* Properly update state on actuator methods
* Remove Fan and Light entity from this change. They will be merged separately
* Fix loading of the Switch platform
* Modbus switch - inherit from the SwitchEntity
* Add Modbus cover
* Fix improper commands written for Modbus cover via coil
* Make changes per review comments
* Fix default hub not defined
Since support for multiple hubs was added, the default hub option
was not implemented correctly. Now I added necessary logic to make
it work. First hub in a list will be used as a default hub.
* Move Cover config under Modbus section
* Revert setting up a default hub alias
* Make hub mandatory for Cover
* Add default scan interval
* Read scan_interval from discovery info
* Fix linter error
* Use default scan interval from Cover platform
* Handle polling for Modbus cover directly inside entity
* Move covers under hub config
* Fix for review comment
* Call update() from Cover actuator methods
* Fix time validation
* Remove unnecessary exception re-wraps
* Preserve exception chains on re-raise
We slap "from cause" to almost all possible cases here. In some cases it
could conceivably be better to do "from None" if we really want to hide
the cause. However those should be in the minority, and "from cause"
should be an improvement over the corresponding raise without a "from"
in all cases anyway.
The only case where we raise from None here is in plex, where the
exception for an original invalid SSL cert is not the root cause for
failure to validate a newly fetched one.
Follow local convention on exception variable names if there is a
consistent one, otherwise `err` to match with majority of codebase.
* Fix mistaken re-wrap in homematicip_cloud/hap.py
Missed the difference between HmipConnectionError and
HmipcConnectionError.
* Do not hide original error on plex new cert validation error
Original is not the cause for the new one, but showing old in the
traceback is useful nevertheless.