Landis+Gyr Heat Meter Python package
This module reads from the Landys & Gyr Ultraheat heat meter unit and returns the meter values. Note: An (USB) IR reader is needed and connected to the machine running the python script
WARNING: everytime this is called, battery time of the Ultraheat will go down by about 30 minutes! This package has been tested with the Landys & Gyr Ultraheat type UH50 and T550. Other models are likely to work as well (please contact me if you want to help/test with adding support for other models).
Using the python integration as API
import ultraheat_api as hm
# Check available ports
ports = hm.find_ports()
for p in ports:
print(p.device)
print(len(ports), 'ports found')
# Read the device from file for integration testing purposes
path = os.path.abspath(os.path.dirname(__file__))
file_name = os.path.join(path, "tests", "LUGCUH50_dummy.txt")
heat_meter_service = hm.HeatMeterService(hm.FileReader(file_name))
response_data = heat_meter_service.read()
# Read the Ultraheat device
heat_meter_service = hm.HeatMeterService(hm.UltraheatReader(args.port))
response_data = heat_meter_service.read()
print('model :',heat_meter.model)
print('GJ :',heat_meter.heat_usage_gj) # UH50
print('MWh :',heat_meter.heat_usage_mwh) # T550
print('m3 :',heat_meter.volume_usage_m3)
etc..
Full list of available data
- heat_usage_gj (empty for T550)
- heat_usage_mwh (empty for UH50)
- volume_usage_m3
- ownership_number
- volume_previous_year_m3
- heat_previous_year_gj (empty for T550)
- heat_previous_year_mwh (empty for UH50)
- error_number
- device_number
- measurement_period_minutes
- power_max_kw
- power_max_previous_year_kw
- flowrate_max_m3ph
- flowrate_max_previous_year_m3ph
- flow_temperature_max_c
- return_temperature_max_c
- flow_temperature_max_previous_year_c
- return_temperature_max_previous_year_c
- operating_hours
- fault_hours
- fault_hours_previous_year
- yearly_set_day
- monthly_set_day
- meter_date_time
- measuring_range_m3ph
- settings_and_firmware
- flow_hours
- raw_response
Telegram parsing
The telegram that is read from the Heat Meter is parsed as follows. For the UH50 (shown below) GJ is parsed. For the T550 this will be MWh.
6.8(heat_usage_gj*GJ)6.26(volume_usage_m3*m3)9.21(ownership_number)
6.26*01(volume_previous_year_m3*m3)6.8*01(heat_previous_year_gj*GJ)
F(error_number)9.20(device_number)6.35(measurement_period_minutes*m)
6.6(power_max_kw*kW)6.6*01(power_max_previous_year_kw*kW)6.33(flowrate_max_m3ph*m3ph)9.4(flow_temperature_max_c*C&return_temperature_max_c*C)
6.31(operating_hours*h)6.32(fault_hours*h)9.22(R)9.6(000&66153690&0&000&66153690&0)
9.7(20000)6.32*01(fault_hours_previous_year*h)6.36(yearly_set_day)6.33*01(flowrate_max_previous_year_m3ph*m3ph)
6.8.1()6.8.2()6.8.3()6.8.4()6.8.5()
6.8.1*01()6.8.2*01()6.8.3*01()
6.8.4*01()6.8.5*01()
9.4*01(flow_temperature_max_previous_year_c*C&return_temperature_max_previous_year_c*C)
6.36.1(2018-03-03)6.36.1*01(2018-03-03)
6.36.2(2020-06-23)6.36.2*01(2020-06-23)
6.36.3(2012-02-03)6.36.3*01(2012-02-03)
6.36.4(2017-01-18)6.36.4*01(2017-01-18)
6.36.5()6.36*02(monthly_set_day)9.36(meter_date_time)9.24(measuring_range_m3ph*m3ph)
9.17(0)9.18()9.19()9.25()
9.1(settings_and_firmware)
9.2(&&)9.29()9.31(flow_hours*h)
9.0.1(00000000)9.0.2(00000000)9.34.1(000.00000*m3)9.34.2(000.00000*m3)
8.26.1(00000000*m3)8.26.2(00000000*m3)
8.26.1*01(00000000*m3)8.26.2*01(00000000*m3)
6.26.1()6.26.4()6.26.5()
6.26.1*01()6.26.4*01()6.26.5*01()0.0(66153690)
!
Metadata
Release files for ultraheat-api 0.6.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 |
|---|---|---|---|---|
| ultraheat_api-0.6.1.tar.gz | 10.2 kB | Without provenance | Details for ultraheat_api-0.6.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ultraheat_api-0.6.1-py3-none-any.whl | Python 3 | none | any | Details for ultraheat_api-0.6.1-py3-none-any.whl |
Total release size: 19.0 kB
Release files / ultraheat_api-0.6.1.tar.gz
| Download URL | ultraheat_api-0.6.1.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f02977719f293f798901b81a8fcb4e866af7202170de39fda87dd530dd7470a
|
|
BLAKE2b-256 checksum How to use checksums |
f3ff82e2b20d3cc33b8d856aa8a39583a48add09d9437f1651dea80042f6f9bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Release files / ultraheat_api-0.6.1-py3-none-any.whl
| Download URL | ultraheat_api-0.6.1-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
115e6acb4f365365e57f9def4795fcd9bbe651ea9297b0e41242a22df09e421e
|
|
BLAKE2b-256 checksum How to use checksums |
5523d37d1c7e4bc6e5f0b0f589094be281c1fdf843c5c240a13be00266129054
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Security for ultraheat-api 0.6.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.