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
Hashes for incomfort_client-0.6.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e75d47cfcd784c32c10b31ca0d29183abfcf2fb69d20bdc2656cce24f557ddaa |
|
MD5 | 6a8270c80790fab8fd8263eaedeb4421 |
|
BLAKE2b-256 | 05f23ad85ec0386e8584a61cd0820ad17c55593d550a9fa39a62ea2abc4da1ba |