ramses-rf 0.22.2__py3-none-any.whl → 0.51.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. ramses_cli/__init__.py +18 -0
  2. ramses_cli/client.py +597 -0
  3. ramses_cli/debug.py +20 -0
  4. ramses_cli/discovery.py +405 -0
  5. ramses_cli/utils/cat_slow.py +17 -0
  6. ramses_cli/utils/convert.py +60 -0
  7. ramses_rf/__init__.py +31 -10
  8. ramses_rf/binding_fsm.py +787 -0
  9. ramses_rf/const.py +124 -105
  10. ramses_rf/database.py +297 -0
  11. ramses_rf/device/__init__.py +69 -39
  12. ramses_rf/device/base.py +187 -376
  13. ramses_rf/device/heat.py +540 -552
  14. ramses_rf/device/hvac.py +286 -171
  15. ramses_rf/dispatcher.py +153 -177
  16. ramses_rf/entity_base.py +478 -361
  17. ramses_rf/exceptions.py +82 -0
  18. ramses_rf/gateway.py +378 -514
  19. ramses_rf/helpers.py +57 -19
  20. ramses_rf/py.typed +0 -0
  21. ramses_rf/schemas.py +148 -194
  22. ramses_rf/system/__init__.py +16 -23
  23. ramses_rf/system/faultlog.py +363 -0
  24. ramses_rf/system/heat.py +295 -302
  25. ramses_rf/system/schedule.py +312 -198
  26. ramses_rf/system/zones.py +318 -238
  27. ramses_rf/version.py +2 -8
  28. ramses_rf-0.51.1.dist-info/METADATA +72 -0
  29. ramses_rf-0.51.1.dist-info/RECORD +55 -0
  30. {ramses_rf-0.22.2.dist-info → ramses_rf-0.51.1.dist-info}/WHEEL +1 -2
  31. ramses_rf-0.51.1.dist-info/entry_points.txt +2 -0
  32. {ramses_rf-0.22.2.dist-info → ramses_rf-0.51.1.dist-info/licenses}/LICENSE +1 -1
  33. ramses_tx/__init__.py +160 -0
  34. {ramses_rf/protocol → ramses_tx}/address.py +65 -59
  35. ramses_tx/command.py +1454 -0
  36. ramses_tx/const.py +903 -0
  37. ramses_tx/exceptions.py +92 -0
  38. {ramses_rf/protocol → ramses_tx}/fingerprints.py +56 -15
  39. {ramses_rf/protocol → ramses_tx}/frame.py +132 -131
  40. ramses_tx/gateway.py +338 -0
  41. ramses_tx/helpers.py +883 -0
  42. {ramses_rf/protocol → ramses_tx}/logger.py +67 -53
  43. {ramses_rf/protocol → ramses_tx}/message.py +155 -191
  44. ramses_tx/opentherm.py +1260 -0
  45. ramses_tx/packet.py +210 -0
  46. ramses_tx/parsers.py +2957 -0
  47. ramses_tx/protocol.py +801 -0
  48. ramses_tx/protocol_fsm.py +672 -0
  49. ramses_tx/py.typed +0 -0
  50. {ramses_rf/protocol → ramses_tx}/ramses.py +262 -185
  51. {ramses_rf/protocol → ramses_tx}/schemas.py +150 -133
  52. ramses_tx/transport.py +1471 -0
  53. ramses_tx/typed_dicts.py +492 -0
  54. ramses_tx/typing.py +181 -0
  55. ramses_tx/version.py +4 -0
  56. ramses_rf/discovery.py +0 -398
  57. ramses_rf/protocol/__init__.py +0 -59
  58. ramses_rf/protocol/backports.py +0 -42
  59. ramses_rf/protocol/command.py +0 -1561
  60. ramses_rf/protocol/const.py +0 -697
  61. ramses_rf/protocol/exceptions.py +0 -111
  62. ramses_rf/protocol/helpers.py +0 -390
  63. ramses_rf/protocol/opentherm.py +0 -1170
  64. ramses_rf/protocol/packet.py +0 -235
  65. ramses_rf/protocol/parsers.py +0 -2673
  66. ramses_rf/protocol/protocol.py +0 -613
  67. ramses_rf/protocol/transport.py +0 -1011
  68. ramses_rf/protocol/version.py +0 -10
  69. ramses_rf/system/hvac.py +0 -82
  70. ramses_rf-0.22.2.dist-info/METADATA +0 -64
  71. ramses_rf-0.22.2.dist-info/RECORD +0 -42
  72. ramses_rf-0.22.2.dist-info/top_level.txt +0 -1
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- #
4
- """RAMSES RF - a RAMSES-II protocol decoder & analyser.
5
-
6
- The RAMSES-II protocol (messages, packets/commands).
7
- """
8
-
9
- __version__ = "0.22.2"
10
- VERSION = __version__
ramses_rf/system/hvac.py DELETED
@@ -1,82 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- #
4
- """RAMSES RF - The evohome-compatible system."""
5
- from __future__ import annotations
6
-
7
- import logging
8
- from types import SimpleNamespace
9
- from typing import Any, TypeVar
10
-
11
- from ..const import __dev_mode__
12
- from ..entity_base import class_by_attr
13
- from ..protocol import Address, Message
14
-
15
- # skipcq: PY-W2000
16
- from ..protocol import ( # noqa: F401, isort: skip, pylint: disable=unused-import
17
- I_,
18
- RP,
19
- RQ,
20
- W_,
21
- F9,
22
- FA,
23
- FC,
24
- FF,
25
- Code,
26
- )
27
-
28
-
29
- DEV_MODE = __dev_mode__
30
-
31
- _LOGGER = logging.getLogger(__name__)
32
- if DEV_MODE:
33
- _LOGGER.setLevel(logging.DEBUG)
34
-
35
-
36
- _HvacSystemT = TypeVar("_HvacSystemT", bound="HvacSystem")
37
-
38
-
39
- FAN_KLASS = SimpleNamespace(
40
- HVC="HVAC", # Generic
41
- )
42
-
43
-
44
- class HvacSystem:
45
- """The Controller class."""
46
-
47
- _SLUG: str = FAN_KLASS.HVC
48
-
49
- def __init__(self, ctl, **kwargs) -> None:
50
- super().__init__(ctl, **kwargs)
51
-
52
- self._heat_demands: dict[str, Any] = {}
53
- self._relay_demands: dict[str, Any] = {}
54
- self._relay_failsafes: dict[str, Any] = {}
55
-
56
-
57
- SYS_CLASS_BY_SLUG = class_by_attr(__name__, "_SLUG")
58
-
59
-
60
- def TODO_system_factory(fan, *, msg: Message = None, **schema) -> _HvacSystemT:
61
- """Return the system class for a given controller/schema (defaults to evohome)."""
62
-
63
- def best_tcs_class(
64
- fan_addr: Address,
65
- *,
66
- msg: Message = None,
67
- eavesdrop: bool = False,
68
- **schema,
69
- ) -> type[_HvacSystemT]:
70
- """Return the system class for a given CTL/schema (defaults to evohome)."""
71
-
72
- _LOGGER.debug(
73
- f"Using a generic HVAC class for: {fan_addr} ({HvacSystem._SLUG})"
74
- )
75
- return HvacSystem
76
-
77
- return best_tcs_class(
78
- fan.addr,
79
- msg=msg,
80
- eavesdrop=fan._gwy.config.enable_eavesdrop,
81
- **schema,
82
- ).create_from_schema(fan, **schema)
@@ -1,64 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: ramses-rf
3
- Version: 0.22.2
4
- Summary: An interface for the RAMSES RF protocol, as used by Honeywell-compatible HVAC & CH/DHW systems.
5
- Home-page: https://github.com/zxdavb/ramses_rf
6
- Author: David Bonnes
7
- Author-email: zxdavb@gmail.com
8
- License: MIT
9
- Download-URL: https://github.com/zxdavb/ramses_rf/archive/0.22.2.tar.gz
10
- Keywords: ramses,evohome,sundial,chronotherm,hometronics
11
- Platform: UNKNOWN
12
- Classifier: Development Status :: 3 - Alpha
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: Operating System :: OS Independent
15
- Classifier: Programming Language :: Python :: 3.7
16
- Classifier: Topic :: Home Automation
17
- Requires-Python: >=3.7
18
- Description-Content-Type: text/markdown
19
- License-File: LICENSE
20
- Requires-Dist: colorlog (>=6.5.0)
21
- Requires-Dist: pyserial-asyncio (>=0.5)
22
- Requires-Dist: voluptuous (>=0.12.2)
23
-
24
- [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![CircleCI](https://circleci.com/gh/zxdavb/ramses_rf.svg?style=svg)](https://circleci.com/gh/zxdavb/ramses_rf) [![Join the chat at https://gitter.im/evohome_rf/community](https://badges.gitter.im/evohome_rf/community.svg)](https://gitter.im/evohome_rf/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
25
-
26
- ## Overview
27
- **ramses_rf** is a client library/CLI utility used to interface with some Honeywell-compatible HVAC & CH/DHW systems that use 868MHz RF, such as:
28
- - (Heat) **evohome**, **Sundial**, **Hometronic**, **Chronotherm**
29
- - (HVAC) **Itho**, **Orcon**, **Nuaire**
30
-
31
- It requires a USB-to-RF device, either a Honeywell HGI80 (somewhat rare, expensive) or something running the [evofw3](https://github.com/ghoti57/evofw3) firmware, such as the one from [here](https://indalo-tech.onlineweb.shop/).
32
-
33
- It does three things:
34
- - decodes RAMSES II-compatible packets and converts them into useful JSON
35
- - builds a picture (schema, config & state) of an evohome-compatible system - either passively (by eavesdropping), or actively (probing)
36
- - allows you to send commands to evohome, or monitor for state changes
37
- - allows you to emulate some hardware devices
38
-
39
- For CH/DHW, the simplest way to know if it will work with your system is to identify the box connected to your boiler/HVAC appliance as one of:
40
- - **R8810A**: OpenTherm Bridge
41
- - **BDR91A**: Wireless Relay (also BDR91T)
42
- - **HC60NG**: Wireless Relay (older hardware)
43
-
44
- Other systems may well work, such as some Itho Dallderop HVAC systems, use this protocol, YMMV.
45
-
46
- It includes a CLI and can be used as a standalone tool, but also is used as a client library by:
47
- - [evohome_cc](https://github.com/zxdavb/evohome_cc), a Home Assistant integration
48
- - [evohome-Listener](https://github.com/smar000/evohome-Listener), an MQTT gateway
49
-
50
- ## Installation
51
-
52
- ```
53
- git clone https://github.com/zxdavb/ramses_rf
54
- cd ramses_rf
55
- pip install -r requirements.txt
56
- ```
57
-
58
- The CLI is called client.py:
59
- ```
60
- python client.py monitor /dev/ttyUSB0 -o packet.log
61
- ```
62
-
63
-
64
-
@@ -1,42 +0,0 @@
1
- ramses_rf/__init__.py,sha256=LZ7HLEjHF1-RTT1vnXtV_Y-iDihl1KsPk9PvBmwOBnU,804
2
- ramses_rf/const.py,sha256=AOmG17Te3X2hqhaFZEFN_-Wn5GGfUf9PHJs6h_DFQKo,3407
3
- ramses_rf/discovery.py,sha256=ujx_44pTatQUjr6r0vd6xnbzdXBwHMDPjxJGzXcFfWE,12711
4
- ramses_rf/dispatcher.py,sha256=a9lZHwKJYea0PI9XRqTX30-siiCkhqfJ-ahLjVfpCMg,12159
5
- ramses_rf/entity_base.py,sha256=C_kpvNnaN97-zYfVYmuPKQ_MGSi-5Zio8O4gSbxFLgU,34683
6
- ramses_rf/gateway.py,sha256=QBySdvUC-TQkscFqStt7-psnHCvZkEAQH2W5FJaKlrY,26996
7
- ramses_rf/helpers.py,sha256=Foax6Q5-DScXDKpSEr-rT6OdtoNiLI_Xjb7Pg5guDIE,3145
8
- ramses_rf/schemas.py,sha256=fU86yM3ajK8_VR93mxBBxgOGhEwFq2zuR5doLWt9m2c,13983
9
- ramses_rf/version.py,sha256=X9CfAr2DJb_Nm2zVPRO24tgLw-s9PsDKWlhMM4TRDAk,208
10
- ramses_rf/device/__init__.py,sha256=djS1POHI9HiK8AwPCaF7NJ2UXgxMuD93DkTQpyZZNWs,4297
11
- ramses_rf/device/base.py,sha256=Am7dnrg9F3XWCGfuT_VLXb6X-PKfJSScbJsCq5OGjCY,25955
12
- ramses_rf/device/heat.py,sha256=pqSFuMsRswfoYgJN2xuqVZxsuE-CBZwUOOM7svQxsnI,54087
13
- ramses_rf/device/hvac.py,sha256=-xJWRKVqjRWu-DTwJA9fbEq-YIOSZlHKveSPcnjN2WY,18631
14
- ramses_rf/protocol/__init__.py,sha256=goP02jVSFYixigIDu6Fna0j9LgWSFeITPeYmB_iaYs8,1302
15
- ramses_rf/protocol/address.py,sha256=rWyX_RERufX1-FrbLmOOw1powRpVyMdyt4hhJrFbsrE,7737
16
- ramses_rf/protocol/backports.py,sha256=SF6teRQgXfSD4vC6sCNUVD43xtbc5DfQjYQagk70fYE,1281
17
- ramses_rf/protocol/command.py,sha256=WpLviuYjAWnh3fXhnyBLqaESwbvnVQNWKZ6swt9D3_A,54853
18
- ramses_rf/protocol/const.py,sha256=kpEJHpYdr8y9hH1KTZ1FQd2C1qMqgP8s6xQOuF1b5aQ,23006
19
- ramses_rf/protocol/exceptions.py,sha256=ZDBPO2RZgI_AIchHtrReyb8tdjDcaJbFEEgiYEphbZE,3272
20
- ramses_rf/protocol/fingerprints.py,sha256=Y7DIdy5bWmPR5m1SUDJXM1BFEAFftgvlaH5UNEmioA4,9355
21
- ramses_rf/protocol/frame.py,sha256=xolb2TcDcP4EGvF5ZjTHc7JEfS4uVOfB4BP5AdIJOVQ,20944
22
- ramses_rf/protocol/helpers.py,sha256=cJzNJ4xvRe2J48Qao1euyOVsW9IJB0ckjv0pRgyNeG0,13965
23
- ramses_rf/protocol/logger.py,sha256=nLTo3Psn8wv4cu6cDWjnTKpwzVcr8_DYIzjYjXOBm24,10218
24
- ramses_rf/protocol/message.py,sha256=4rO7yFhxY17k-Ftl7t-MrZdRKfzQ-Aelx0_jCzCyCUg,14061
25
- ramses_rf/protocol/opentherm.py,sha256=bRReA0ey5Y9WRSOlrqck6NcxUdFfKmB4mTt9ArG66a4,42493
26
- ramses_rf/protocol/packet.py,sha256=pQTclDmBTMwdg4CICnfo6Jk3cQe--yyS3zZbfquM0-8,7842
27
- ramses_rf/protocol/parsers.py,sha256=LuBkz1nOJKbhSROSOyngho_oQg4AxC82HjS-8GtZXS4,98696
28
- ramses_rf/protocol/protocol.py,sha256=RcDTf57LlkN0sMqo8Ul3T77nnh0bQwNQGRFWnz8SUm0,21669
29
- ramses_rf/protocol/ramses.py,sha256=3PmyTKwCEeXbbXN_PAnb9imKkViiB1NAMPLP3fnI5cw,49102
30
- ramses_rf/protocol/schemas.py,sha256=LrP5MAuBRX_w29xYGGH5mSM6-fnGHu1qvuIv1Jnm6o4,11969
31
- ramses_rf/protocol/transport.py,sha256=A2lhxHpMw1rYyD1ac7kYiFVJ9IRNB1LvfVabXpYxvl4,35446
32
- ramses_rf/protocol/version.py,sha256=ZDHqsTiSTXaRnPhjzfuUeMIfxc6AMhwlBv8-7W_u6MI,209
33
- ramses_rf/system/__init__.py,sha256=nLw2R-X9A014ECdkbp3TsvAZIhxmayOwRyMKkfMCH-M,963
34
- ramses_rf/system/heat.py,sha256=bMfwWxj21TynsuvhtAmcpgWoC7Nu_ssFWFZgxuAu_IU,38755
35
- ramses_rf/system/hvac.py,sha256=OEx3oLAQbfe6vE0IygPWeU-uafN8b3bq_SBZM__oOM0,1856
36
- ramses_rf/system/schedule.py,sha256=TrBp3lfd0tb3_ZuJHR3OAhSpX-dS48GAtzaKsAeAcsc,15113
37
- ramses_rf/system/zones.py,sha256=TJTnzHplGjD9jbtnNXygN4mLRKK_BYkaxjq8iyU0DY0,32925
38
- ramses_rf-0.22.2.dist-info/LICENSE,sha256=XybVHa-2O6Hhj2hNw8oGffwiBv_0DlZIPU2KDoRkhQA,1069
39
- ramses_rf-0.22.2.dist-info/METADATA,sha256=OB6F_QVM-be6bWTqGQBKMzl3YzjJj3NeUsOVpCuxboc,2990
40
- ramses_rf-0.22.2.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
41
- ramses_rf-0.22.2.dist-info/top_level.txt,sha256=zDwbFhy6gr3JWKCVb1ilDa_V5yoOW0ODRRYhn-lTxzQ,10
42
- ramses_rf-0.22.2.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- ramses_rf