Skip to main content

A aiohttp-based client for Intergas InComfort/InTouch Lan2RF systems

Project description

CircleCI

incomfort-client

Python client library for Intergas boilers accesible 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.6.7. It is available as a PyPi package.

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 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 incomfortclient/__init__.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 incomfortclient/__init__.py ${HOSTNAME} --raw > b.out

(venv) root@hostname:~/$ diff a.out b.out

Newer versions of the gateway require authentication:

(venv) root@hostname:~/$ python incomfortclient/__init__.py ${HOSTNAME} -u ${USER} -p ${PASS}

(venv) root@hostname:~/$ curl --user ${USER}:${PASS} -X GET http://${HOSTNAME}/protect/data.json?heater=0

Project details


Download files

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

Files for incomfort-client, version 0.4.0
Filename, size File type Python version Upload date Hashes
Filename, size incomfort-client-0.4.0.tar.gz (6.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page