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:
-
Gatewayclass- added kwargs:
username,password(used for newer versions of firmware)
- added kwargs:
-
Heaterclass- renamed:
is_burning,is_failed,is_pumping,is_tapping - moved:
room_temp,setpoint,setpoint_override,settoRoomclass - new/added:
update,status,rooms
- renamed:
-
Roomclass 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.
Metadata
Release files for incomfort-client 0.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| incomfort_client-0.7.1.tar.gz | 8.0 kB | Without provenance | Details for incomfort_client-0.7.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| incomfort_client-0.7.1-py3-none-any.whl | Python 3 | none | any | Details for incomfort_client-0.7.1-py3-none-any.whl |
Total release size: 15.7 kB
Release files / incomfort_client-0.7.1.tar.gz
| Download URL | incomfort_client-0.7.1.tar.gz |
|---|---|
| Size | 8.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5bc4a23b32f618d14fe126af915af933703f463d592d63bf7d13b1cca1dbc4d7
|
|
BLAKE2b-256 checksum How to use checksums |
dea071f80963ca7a0131ac1d7ecdcbe7ac3157bd39bdd366fe47d95495c2d438
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / incomfort_client-0.7.1-py3-none-any.whl
| Download URL | incomfort_client-0.7.1-py3-none-any.whl |
|---|---|
| Size | 7.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9afb9bab58c462aa6d509a91ced59aab0e608dd47295d1f5b855bed9bf9297c0
|
|
BLAKE2b-256 checksum How to use checksums |
5c80f1eff162b2f98da11f1da7c2f63b39e7667cb97475ae7bdf22eb7c44eeeb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Security for incomfort-client 0.7.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.