Commit Graph

225 Commits (7b1d5fb10af9cf71fae27f9e1020e18bd1fc2510)

Author SHA1 Message Date
jan iversen cac3e1acfa
Allow same address different register types in modbus (#55767) 2021-09-06 13:35:40 -07:00
jan iversen 69aba2a6a1
Correct duplicate address. (#55578) 2021-09-02 13:53:38 +02:00
jan iversen f91cc21bbd
Solve modbus shutdown racing condition (#55373) 2021-08-28 23:04:33 +02:00
jan iversen 7ac72ebf38
Add modbus name to log_error (#55336) 2021-08-27 09:26:57 -07:00
Matthias Alphart cd0ae66d58
Add CONF_STATE_CLASS to `sensor/__init__.py` (#54106)
* add CONF_STATE_CLASS to const.py

* move to `sensor/__init__.py`

* move to sensor/const.py

* Revert "move to sensor/const.py"

This reverts commit 604d0d066b.

* move it to `sensor/const.py` but import it from `sensor/__init__.py`

* add Modbus
2021-08-27 05:54:50 +02:00
jan iversen 2d5176eee9
Change entity_timers to be a local variable. (#55258)
Ensure outstanding pymodbus calls are handled before closing.
2021-08-26 15:23:00 +02:00
jan iversen d60f5e1721
Add missing convert to fan/light/switch modbus platform (#55203) 2021-08-25 21:02:06 +02:00
jan iversen d4064e7044
Cancel entity timers. (#55141) 2021-08-25 14:49:37 +02:00
jan iversen 7df8d0c973
Check for duplicate host/port and integration name in modbus (#54664)
* Check for duplicate host/port and integration name.

* Change to use set().

* Please CI.

* Add basic tests.
2021-08-25 12:29:00 +02:00
Matthias Alphart 51361fbd2b
Add configurable `state_class` to Modbus sensors (#54103)
* add configurable state_class

* Add test of new parameter.

Co-authored-by: jan Iversen <jancasacondor@gmail.com>
2021-08-25 11:50:54 +02:00
jan iversen 33f660118f
Add lazy_error_count to modbus (#54412)
* Add lazy_error_count.

* Use -=

* Review comments.
2021-08-21 15:49:50 +02:00
jan iversen 1f6d18c517
Set quality level of modbus to gold (#54926)
* Prepare for gold.

* Upgrade to gold.
2021-08-20 17:59:31 +02:00
jan iversen 0688aaa2b6
Check for duplicate entity name/address in modbus entities (#54669)
* Check for duplicate entity name/address.
2021-08-19 09:37:31 +02:00
jan iversen bafbbc6563
Adjust modbus constants names (#54792)
* Follow up.
2021-08-18 12:56:54 +02:00
jan iversen bec42b74fe
Solve switch/verify register type convert problem in modbus (#54645) 2021-08-15 19:57:37 -07:00
Erik Montnemery 2720ba2753
Move temperature conversions to sensor base class (4/8) (#54472)
* Move temperature conversions to entity base class (4/8)

* Fix litterrobot sensor

* Fix tests
2021-08-11 21:17:47 +02:00
jan iversen 54538bb72b
Bump pymodbus version to 2.5.3rc1 (#54318) 2021-08-10 10:16:38 +02:00
jan iversen 02459e6813
Convert last properties in modbus to _attr_variable (#53919) 2021-08-08 23:23:21 +02:00
jan iversen e8aa280d7f
Add modbus get_hub (#54277)
* Add dict with hubs.

* Update flexit to use get_hub.

* Remove executor_task for close.
2021-08-08 22:48:33 +02:00
jan iversen 8a4674c086
Solve missing automatic update of struct configuration in modbus (#54193) 2021-08-07 21:11:56 -07:00
jan iversen 2232915ea8
Add parameter to delay sending of requests in modbus (#54203) 2021-08-07 21:10:08 -07:00
jan iversen b2fffdd13e
Add temporary fix to modbus to solve upstream problem (#53857) 2021-08-04 17:03:31 -07:00
jan iversen 0f8a286cc7
Allow combinations write_coil/read_coils and write_coils/read_coil for modbus switch (#53856) 2021-08-02 14:55:52 +02:00
jan iversen 3d52bfc8f6
Simplify DATA_TYPE -> struct conversion. (#53805) 2021-07-31 23:17:23 +02:00
Marc Mueller 0815eede4b
Replace lists with tuples (2) (#53685) 2021-07-30 01:20:03 +02:00
jan iversen cfb0def718
Change integration modbus to use _attr variables (#53511) 2021-07-26 21:20:34 +02:00
jan iversen 7306503756
Calculate count automatically in modbus platforms (#53116) 2021-07-20 22:49:54 -07:00
jan iversen 2e2b340b1e
Set modbus entity to non-available unless scan_interval=0 (#53155) 2021-07-20 22:48:02 -07:00
Franck Nijhof 059a9bc8ed
Fix modbus setting string as temperature in climate platform (#53249) 2021-07-20 22:03:10 +02:00
jan iversen 8c43e5c736
Correct set_temperature in modbus climate (#52923) 2021-07-20 20:19:26 +02:00
jan iversen 78a8ba99f9
Upgrade modbus to quality level "silver". (#53186) 2021-07-19 23:57:28 -05:00
jan iversen 19a282255b
Remove duplicate functions in modbus climate/sensor. (#53141)
Convert all data types correctly for climate.
2021-07-19 23:52:58 -05:00
jan iversen 78ef02f4d9
Allow pymodbus to reconnect in running system (not startup) (#53020)
Allow pymodbus to reconnect (not during startup).
2021-07-19 13:01:50 +02:00
jan iversen c360d6009c
copy() --> deepcopy(). (#52794) 2021-07-14 11:00:16 +02:00
jan iversen 12ac666459
only allow one active call in each platform. (#52823) 2021-07-13 21:45:42 +02:00
Lincoln Kirchoff ac39607ae9
Fix modbus climate precision configuration variable (#52651)
* 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
2021-07-13 10:36:54 +02:00
jan iversen 646862ec96
Add array write to turn_on/off in modbus switch/fan/light (#52582) 2021-07-12 11:22:53 -07:00
jan iversen 5caf170c78
Correct Wrong "raise" in modbus validators. (#52924) 2021-07-12 11:06:31 -07:00
jan iversen 2ecfd74fa4
Add more data_types to modbus (#52423)
* Add more data_types.

* Use new struct when writing temperature.
2021-07-12 07:58:45 +02:00
jan iversen fe1f7ba316
Add check for _client existence in modbus (#52719) 2021-07-08 11:58:51 +02:00
jan iversen 1cb298948f
Fix MODBUS connection type rtuovertcp does not connect (#52505)
* Correct host -> framer.

* Use function pointer
2021-07-05 11:45:50 +02:00
jan iversen f1303e02ff
Let climate use base_struct_schema. (#52154) 2021-06-28 22:21:31 -07:00
jan iversen c558c77413
Correct keyerror exception. (#52150) 2021-06-26 20:09:53 +02:00
jan iversen 1f4fdb50dc
Share struct validator between sensor and climate (#51935) 2021-06-23 11:03:17 -07:00
jan iversen bc329cb602
Convert if/elif chains to dicts in modbus (#51962) 2021-06-18 11:20:44 +02:00
jan iversen 7ad91fdf71
Add swap to climate and change data_count -> count in modbus (#51668) 2021-06-16 12:11:23 +02:00
jan iversen 77f6d1f5cb
Do not return an exception in modbus (#51829) 2021-06-14 10:56:24 +02:00
jan iversen 2a51587bc3
Remove reverse_order (replaced by generic swap) (#51665)
Remove reverse_order (replaced by generic swap).
2021-06-11 11:41:41 +02:00
jan iversen 9e378d51af
Reduce modbus schemas and add delay to fan/light (#51664) 2021-06-11 09:22:47 +02:00
jan iversen 50001684aa
Add retries/retry_on_empty configuration parameters to Modbus (#51412)
* Add retries/retry_on_empty configuration parameters.

* Please review comment.
2021-06-06 09:13:50 +02:00
jan iversen 59b5f94569
Add fix delay after send/request to allow RS485 adapter to switch in modbus (#51417) 2021-06-05 14:41:32 +02:00
jan iversen b8afb7dcfe
Check initial connect() worked in modbus (#51470)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-06-05 14:39:09 +02:00
jan iversen 5e067c2631
Allow unlimited scan_interval in modbus (#51471)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-06-04 18:06:44 +02:00
jan iversen 538a189168
Adjust modbus climate to use address/input_type (#51202) 2021-05-28 17:57:14 +02:00
jan iversen 00507539c1
Change Cover to use address/input_type (#51154)
* Change Cover to use address/input_type.

* Flake.
2021-05-28 13:23:44 +02:00
jan iversen e45196f9c9
Remove "old" config from modbus binary_sensor (#51117) 2021-05-28 12:06:46 +02:00
jan iversen 5afd16ef5d
Move modbus schema validators to validators.py (#51121) 2021-05-28 11:38:31 +02:00
jan iversen 47f016b340
Remove old config from cover, including tests (#51118)
* Remove old config and standardize new config.

* Add missing safeguard.
2021-05-28 11:29:37 +02:00
jan iversen 8d365e8bf5
After merge, review. (#51139) 2021-05-27 08:28:31 +02:00
Yuriy Sannikov 6391d75919
Refactor ModbusRegisterSensor class to get hub and configuration (#50234)
* refactor ModbusRegisterSensor to match the ModbusSwitch interface

* Please pylint, mypy etc.

* Remove PLATFORM.

Co-authored-by: jan Iversen <jancasacondor@gmail.com>
2021-05-26 19:28:14 +02:00
tkdrob 028a07d86f
Wrap up selectors (#50794)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-05-25 14:45:17 +02:00
jan iversen 8721675218
Use BaseSwitch class in modbus switch/fan/light (#51031) 2021-05-24 20:13:25 +02:00
jan iversen c74e65ac2d
Streamline modbus test_init (#50990)
* Streamline test_init.

* Review comments.

* Remove hub name.
2021-05-24 14:53:54 +02:00
jan iversen 1546dbbf25
Add restore temperature to modbus climate (#50963)
* Add restore temperature to climate.

* please mypy.

* Review 2.
2021-05-24 14:03:44 +02:00
jan iversen be13a73db8
Allow manual scan and add delay in switch verify. (#50974) 2021-05-24 12:59:55 +02:00
jan iversen f55213d8b1
Update modbus cover to 100% coverage (#50996) 2021-05-23 10:18:35 -05:00
jan iversen 59ae78e5f0
Add restore_state to modbus binary_sensor (#50922)
* Add restore_state to binary_sensor.

* Update return value in State.
2021-05-22 13:38:05 +02:00
Vladimír Záhradník c979101a02
Add Modbus fan integration (#48558)
* Add Modbus fan entity

* Update to PR.

* Pylint.

Co-authored-by: jan Iversen <jancasacondor@gmail.com>
2021-05-21 09:56:47 +02:00
Vladimír Záhradník 80d172140f
Add Modbus light integration (#42120)
* Add  Modbus Light and add unit tests

* Update to original PR.

* Review comments.

* Review 2.

Co-authored-by: jan Iversen <jancasacondor@gmail.com>
2021-05-21 08:57:17 +02:00
jan iversen c650deef98
Add base class for all modbus platforms (#50878)
* Add base for all platforms.

* Please pylint.
2021-05-20 16:56:11 +02:00
Maciej Bieniek e06a2a53c4
Add constructor return type in integrations L-N (#50888)
* Add constructor return type in integrations L-N

* Small fix
2021-05-20 13:06:44 +01:00
jan iversen b7fc537cd5
Remove non pymodbus_call from modbus.py. (#50813) 2021-05-19 11:39:53 +02:00
jan iversen 4c7fcae536
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.
2021-05-19 10:13:48 +02:00
jan iversen ba827db8ec
Update remaining modbus platforms to use pymodbus_call (#50768) 2021-05-17 22:12:18 +02:00
jan iversen 6b34ba012c
Fix missing await in modbus platforms (followup on async PR) (#50710) 2021-05-17 14:20:51 +02:00
nikito7 0fac3ccebc
Change Modbus error message to bytes (#50725) 2021-05-17 14:12:17 +02:00
jan iversen ff856a9bba
Simplify calls to pymodbus (#50717)
* 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.
2021-05-17 11:20:12 +02:00
jan iversen 224cc779c4
Correct Modbus platform cover restore state (#50421)
* Correct cover restore state.

* Change mock usage.

* Add states to convert.
2021-05-16 08:40:19 +02:00
jan iversen ad7be91b6a
Fix modbus blocking threads (#50619)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-05-15 19:54:17 +02:00
tkdrob a9660d5788
Add targets and selectors for services (L-M) (#50543) 2021-05-15 11:06:34 +02:00
jan iversen 19cdff10c3
Add "close_comm_on_error" to modbus configuration (#50583) 2021-05-14 10:54:23 +02:00
jan iversen dbf7430003
Bump pymodbus to v2.5.2 (#50582)
Solves a serial - rs-485 adapter issue.
2021-05-13 20:31:48 -07:00
jan iversen 70b09ed9a1
Handle relation between scan_interval and pymodbus timeout in modbus (#50363)
* Control scan_interval compared to pymodbus timeout.

add MINIMUM_SCAN_INTERVAL=5 seconds and validata with Voluptous.
Keep modbus.py 100% coverage.

* Please pylint.

* Review comments.

* pylint.
2021-05-10 19:28:38 +02:00
jan iversen ec08256ff0
Do not use async_* in a modbus sync function (#50343) 2021-05-09 19:50:23 +02:00
jan iversen 29eb31e9da
Add configurable delay between connect and first request in modbus (#50124)
* 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.
2021-05-08 13:28:35 +02:00
Vladimír Záhradník e0de6752af
Fix incorrect attribute checks in Modbus hub (#50241) 2021-05-08 13:26:31 +02:00
jan iversen 552ca1c57b
Fix modbus switch problems (#50117) 2021-05-07 22:12:13 +02:00
jan iversen 2f89ba24b6
Cleanup modbus binary_sensor signature (#49809)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-05-05 00:29:18 +02:00
jan iversen f0ec9c38b0
Fix modbus typing (#49938)
Add changes needed to please mypy and follow the coding rules
of the project.
2021-05-03 22:45:21 +02:00
jan iversen 8adbc62a6e
Enable homeassistant.update_entity service for all modbus platforms (#49918)
* 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.
2021-05-02 10:41:36 +02:00
jan iversen 7ac05110ca
Catch non payload modbus messages (#49910) 2021-05-02 00:03:52 +02:00
jan iversen aa8ce07e35
Start Modbus cover timer independent if there is a state to restore (#49919)
* Start timer independent if there is a state to restore.

* Update test cases, that now start working.
2021-04-30 22:36:55 +02:00
jan iversen 684ea9e49b
Restructure modbus switch, and solve read/write conflicts (#49386)
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.
2021-04-30 16:47:18 +02:00
jan iversen 5b6d2edb48
Catch missing/unavailable response from modbus (#49632)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-29 15:59:17 +02:00
jan iversen e5e215353d
Add swap byte/word/byteword option to modbus sensor (#49719)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-27 10:49:41 +02:00
jan iversen 33e8553d92
Fix frontend freeze due to modbus device not responding (#49651)
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).
2021-04-25 23:11:01 +02:00
jan iversen 914451d99c
Remove dead code in modbus sensor and 100% test coverage (#49634) 2021-04-25 15:25:02 +02:00
jan iversen f67c0ce8bb
Secure 100% test coverage for modbus, binary_sensor and sensor (#49521)
* Secure 100% test coverage for modbus/binary_sensor.

* Test that class constructor is called.
2021-04-22 11:54:40 +02:00
jan iversen c9bdc9609c
Do not close non existing clients in modbus (#49489)
* Only close if _client is present.

* Remove del.
2021-04-21 11:46:40 +02:00
jan iversen c14e525ac3
Update modbus state when sensor fails (#49481) 2021-04-20 14:54:20 +02:00