Package: ultraheat-api
Landis+Gyr Heat Meter Python packageThis 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 scriptWARNING: 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 APIimportultraheat_apiashm# Check available portsports=hm.find_ports()forpinports:print(p.device)print(len(ports),'ports found')# Read the device from file for integration testing purposespath=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 deviceheat_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)# UH50print('MWh :',heat_meter.heat_usage_mwh)# T550print('m3 :',heat_meter.volume_usage_m3)etc..Full list of available dataheat_usage_gj (empty for T550)heat_usage_mwh (empty for UH50)volume_usage_m3ownership_numbervolume_previous_year_m3heat_previous_year_gj (empty for T550)heat_previous_year_mwh (empty for UH50)error_numberdevice_numbermeasurement_period_minutespower_max_kwpower_max_previous_year_kwflowrate_max_m3phflowrate_max_previous_year_m3phflow_temperature_max_creturn_temperature_max_cflow_temperature_max_previous_year_creturn_temperature_max_previous_year_coperating_hoursfault_hoursfault_hours_previous_yearyearly_set_daymonthly_set_daymeter_date_timemeasuring_range_m3phsettings_and_firmwareflow_hoursraw_responseTelegram parsingThe 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)!