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.
- ramses_cli/__init__.py +18 -0
- ramses_cli/client.py +597 -0
- ramses_cli/debug.py +20 -0
- ramses_cli/discovery.py +405 -0
- ramses_cli/utils/cat_slow.py +17 -0
- ramses_cli/utils/convert.py +60 -0
- ramses_rf/__init__.py +31 -10
- ramses_rf/binding_fsm.py +787 -0
- ramses_rf/const.py +124 -105
- ramses_rf/database.py +297 -0
- ramses_rf/device/__init__.py +69 -39
- ramses_rf/device/base.py +187 -376
- ramses_rf/device/heat.py +540 -552
- ramses_rf/device/hvac.py +286 -171
- ramses_rf/dispatcher.py +153 -177
- ramses_rf/entity_base.py +478 -361
- ramses_rf/exceptions.py +82 -0
- ramses_rf/gateway.py +378 -514
- ramses_rf/helpers.py +57 -19
- ramses_rf/py.typed +0 -0
- ramses_rf/schemas.py +148 -194
- ramses_rf/system/__init__.py +16 -23
- ramses_rf/system/faultlog.py +363 -0
- ramses_rf/system/heat.py +295 -302
- ramses_rf/system/schedule.py +312 -198
- ramses_rf/system/zones.py +318 -238
- ramses_rf/version.py +2 -8
- ramses_rf-0.51.1.dist-info/METADATA +72 -0
- ramses_rf-0.51.1.dist-info/RECORD +55 -0
- {ramses_rf-0.22.2.dist-info → ramses_rf-0.51.1.dist-info}/WHEEL +1 -2
- ramses_rf-0.51.1.dist-info/entry_points.txt +2 -0
- {ramses_rf-0.22.2.dist-info → ramses_rf-0.51.1.dist-info/licenses}/LICENSE +1 -1
- ramses_tx/__init__.py +160 -0
- {ramses_rf/protocol → ramses_tx}/address.py +65 -59
- ramses_tx/command.py +1454 -0
- ramses_tx/const.py +903 -0
- ramses_tx/exceptions.py +92 -0
- {ramses_rf/protocol → ramses_tx}/fingerprints.py +56 -15
- {ramses_rf/protocol → ramses_tx}/frame.py +132 -131
- ramses_tx/gateway.py +338 -0
- ramses_tx/helpers.py +883 -0
- {ramses_rf/protocol → ramses_tx}/logger.py +67 -53
- {ramses_rf/protocol → ramses_tx}/message.py +155 -191
- ramses_tx/opentherm.py +1260 -0
- ramses_tx/packet.py +210 -0
- ramses_tx/parsers.py +2957 -0
- ramses_tx/protocol.py +801 -0
- ramses_tx/protocol_fsm.py +672 -0
- ramses_tx/py.typed +0 -0
- {ramses_rf/protocol → ramses_tx}/ramses.py +262 -185
- {ramses_rf/protocol → ramses_tx}/schemas.py +150 -133
- ramses_tx/transport.py +1471 -0
- ramses_tx/typed_dicts.py +492 -0
- ramses_tx/typing.py +181 -0
- ramses_tx/version.py +4 -0
- ramses_rf/discovery.py +0 -398
- ramses_rf/protocol/__init__.py +0 -59
- ramses_rf/protocol/backports.py +0 -42
- ramses_rf/protocol/command.py +0 -1561
- ramses_rf/protocol/const.py +0 -697
- ramses_rf/protocol/exceptions.py +0 -111
- ramses_rf/protocol/helpers.py +0 -390
- ramses_rf/protocol/opentherm.py +0 -1170
- ramses_rf/protocol/packet.py +0 -235
- ramses_rf/protocol/parsers.py +0 -2673
- ramses_rf/protocol/protocol.py +0 -613
- ramses_rf/protocol/transport.py +0 -1011
- ramses_rf/protocol/version.py +0 -10
- ramses_rf/system/hvac.py +0 -82
- ramses_rf-0.22.2.dist-info/METADATA +0 -64
- ramses_rf-0.22.2.dist-info/RECORD +0 -42
- ramses_rf-0.22.2.dist-info/top_level.txt +0 -1
ramses_rf/protocol/version.py
DELETED
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
|
-
[](https://github.com/psf/black) [](https://circleci.com/gh/zxdavb/ramses_rf) [](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
|