Skip to main content

An aiohttp-based client for Intergas InComfort/InTouch Lan2RF systems.

Project description

PyPI version

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)
  • Heater class

    • renamed: is_burning, is_failed, is_pumping, is_tapping
    • moved: room_temp, setpoint, setpoint_override, set to Room class
    • new/added: update, status, rooms
  • Room class has been added, and some methods moved in from Heater

    • same name: room_temp, setpoint
    • renamed: override, set_override
    • new/added: status

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

incomfort_client-0.6.12.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

incomfort_client-0.6.12-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file incomfort_client-0.6.12.tar.gz.

File metadata

  • Download URL: incomfort_client-0.6.12.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for incomfort_client-0.6.12.tar.gz
Algorithm Hash digest
SHA256 83dd3ee88ad95bcf6c7f452dcf204fee95a26fe8587347b593a0a46c56b48029
MD5 74419ef4ddcde410308bb009ffc0fdd0
BLAKE2b-256 057a7a99917aa03ef42bc40dc63b88831e62b65e84ab10b872b27e1cadfdff9c

See more details on using hashes here.

File details

Details for the file incomfort_client-0.6.12-py3-none-any.whl.

File metadata

File hashes

Hashes for incomfort_client-0.6.12-py3-none-any.whl
Algorithm Hash digest
SHA256 a0505d3bdd901f6471422f9eb316c0c2d6894a486f82b7e5237ef7eba3b1a57f
MD5 75c25d8782e93eb836e78d221ee69fdc
BLAKE2b-256 54d8b1c3730d68b9c066c588a0625a8a358a5e351411bd20d02979be1a4fe1d5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page