An aiohttp-based client for Intergas InComfort/InTouch Lan2RF systems
Project description
incomfort-client
Python client library for Intergas boilers accessible via a Lan2RF gateway by abstracting its HTTP API. It includes a basic CLI to demonstrate how to use the library.
This library was previously called intouch-client, as it is known in the UK as InTouch, but in mainland Europe (especially the Netherlands, where is it popular) it is known as Incomfort.
It is written for Python v3.9+. It is available as a PyPi package.
With many thanks, the code was refactored by @zxdavb and maintained for about 5 years, and maintenance now has been taken over by @jbouwh to be able to continue support.
The library is used as backend code for the Intergas InComfort/Intouch Lan2RF gateway integration with Home Assistant.
Porting from syncio libraries
This library is based upon https://github.com/bwesterb/incomfort, but uses aiohttp rather than synchronous I/O (such as requests or httplib).
Where possible, it uses the same methods and properties as bwesterb/incomfort, but with the following differences:
-
Gateway
class- added kwargs:
username
,password
(used for newer versions of firmware)
- added kwargs:
-
Heater
class- renamed:
is_burning
,is_failed
,is_pumping
,is_tapping
- moved:
room_temp
,setpoint
,setpoint_override
,set
toRoom
class - new/added:
update
,status
,rooms
- renamed:
-
Room
class has been added, and some methods moved in fromHeater
- same name:
room_temp
,setpoint
- renamed:
override
,set_override
- new/added:
status
- same name:
Basic CLI included
There is a very basic CLI (this output has been formatted for readability):
(venv) root@hostname:~/$ python inclient.py ${HOSTNAME}
{
'display_code': 126,
'display_text': 'standby',
'fault_code': 0,
'is_burning': False,
'is_failed': False,
'is_pumping': False,
'is_tapping': False,
'heater_temp': 31.22,
'tap_temp': 27.91,
'pressure': 1.23,
'serial_no': '175t23072',
'nodenr': 200,
'rf_message_rssi': 38,
'rfstatus_cntr': 0,
'room_1': {'room_temp': 26.4, 'setpoint': 19.5, 'override': 19.5},
'room_2': {'room_temp': None, 'setpoint': None, 'override': 19.0}
}
QA/CI via CircleCI
QA includes comparing JSON from cURL with output from this app using diff (note the --raw
switch):
(venv) root@hostname:~/$ curl -X GET http://${HOSTNAME}/data.json?heater=0 | \
python -c "import sys, json; print(json.load(sys.stdin))" > a.out
(venv) root@hostname:~/$ python inclient.py ${HOSTNAME} --raw > b.out
(venv) root@hostname:~/$ diff a.out b.out
Newer versions of the gateway require authentication:
(venv) root@hostname:~/$ python inclient.py ${HOSTNAME} -u ${USER} -p ${PASS}
(venv) root@hostname:~/$ curl --user ${USER}:${PASS} -X GET http://${HOSTNAME}/protect/data.json?heater=0
Note that at the moment CircleCI is not active.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file incomfort_client-0.6.3.post1.tar.gz
.
File metadata
- Download URL: incomfort_client-0.6.3.post1.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f534e0033eec7b3407c0894867b4795e8fb7abd42fa37eedd4c2ff6ba75992b3 |
|
MD5 | 83428598f0e09cf4fbbd36503f91e03b |
|
BLAKE2b-256 | ce1837ac70d0300b2d3304df3580ccf8abda42093cb582de79e57c2bb0866ef7 |
File details
Details for the file incomfort_client-0.6.3.post1-py3-none-any.whl
.
File metadata
- Download URL: incomfort_client-0.6.3.post1-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abf68cb486a423eb47bd72096733ebaa84f43405ca3e00bbabd8ee23753033e8 |
|
MD5 | 3d4b5a8f4fb7d457b24bd2454e7179e3 |
|
BLAKE2b-256 | 7798541714947db8b77b8a1d969f1c98b55d7054600ea98fa68741d44261258c |