diff --git a/drivers/src/istaheat.xmq b/drivers/src/istaheat.xmq index 6b9987e..7d0838f 100644 --- a/drivers/src/istaheat.xmq +++ b/drivers/src/istaheat.xmq @@ -1,19 +1,17 @@ -/* Copyright (C) 2024 Fredrik Öhrström (gpl-3.0-or-later) - Copyright (C) 2024 Arthur van Dorp (gpl-3.0-or-later) - spdx: GPL-3.0-or-later +/* Copyright (C) 2024 Fredrik Öhrström (gpl-3.0-or-later) + Copyright (C) 2024 Arthur van Dorp (gpl-3.0-or-later) + spdx: GPL-3.0-or-later -Ista sensonic 3 heat meter sending on c1, product number 4030020. -(Can also be used for cold metering, I don't think the device I own is configured for that use case.) -(Attention device owners: Do not click randomly on the single button of the meter. If you are in the -wireless service loop and click wrongly, you will activate istas proprietary wireless protocol. Only ista -will be able to reset the device and activate the wireless m-bus. To activate the wireless m-bus you have -to long click until 2A is shown, then wait shortly, click *once", wait until 2B is shown, wait again, -single click until 2C is shown, then double click. Do not double click in 2A or 2B.) - -The device measures every 8s, but sends wireless m-bus telegrams every 4 minutes. -AES key has to be obtained from your contractor or directly from ista. -*/ + Ista sensonic 3 heat meter sending on c1, product number 4030020. + (Can also be used for cold metering, I don't think the device I own is configured for that use case.) + (Attention device owners: Do not click randomly on the single button of the meter. If you are in the + wireless service loop and click wrongly, you will activate istas proprietary wireless protocol. Only ista + will be able to reset the device and activate the wireless m-bus. To activate the wireless m-bus you have + to long click until 2A is shown, then wait shortly, click *once", wait until 2B is shown, wait again, + single click until 2C is shown, then double click. Do not double click in 2A or 2B.) + The device measures every 8s, but sends wireless m-bus telegrams every 4 minutes. + AES key has to be obtained from your contractor or directly from ista. */ driver { name = istaheat meter_type = HeatMeter @@ -21,14 +19,14 @@ driver { detect { mvt = IST,a9,04 } - field { - name = status - quantity = Text - info = 'Meter status from tpl field.' + field { + name = status + quantity = Text + info = 'Meter status from tpl field.' attributes = INCLUDE_TPL_STATUS } field { - name = 'total' + name = total quantity = Energy info = 'The total heat energy consumption recorded by this meter.' match { @@ -37,68 +35,67 @@ driver { } } field { - name = target - quantity = PointInTime - info = 'Last day of previous billing month.' + name = target + quantity = PointInTime + info = 'Last day of previous billing month.' display_unit = date match { measurement_type = Instantaneous vif_range = Date - storage_nr = 2 + storage_nr = 2 } } field { - name = target + name = target quantity = Energy - info = 'The total heat energy for the previous month period.' + info = 'The total heat energy for the previous month period.' match { measurement_type = Instantaneous vif_range = AnyEnergyVIF - storage_nr = 2 + storage_nr = 2 } } field { - name = target + name = target quantity = Volume - info = 'The total heating media volume recorded by this meter at the end of last month.' + info = 'The total heating media volume recorded by this meter at the end of last month.' match { measurement_type = Instantaneous vif_range = Volume - storage_nr = 2 + storage_nr = 2 } } field { - name = last_year - quantity = PointInTime - info = 'Last day of previous billing year.' + name = last_year + quantity = PointInTime + info = 'Last day of previous billing year.' display_unit = date match { measurement_type = Instantaneous vif_range = Date - storage_nr = 1 + storage_nr = 1 } } field { - name = last_year + name = last_year quantity = Energy - info = 'The total heat energy for the previous year period.' + info = 'The total heat energy for the previous year period.' match { measurement_type = Instantaneous vif_range = AnyEnergyVIF - storage_nr = 1 + storage_nr = 1 } } - test { - args = 'HeatItUp istaheat 33503169 NOKEY' + args = 'HeatItUp istaheat 33503169 NOKEY' telegram = 5344742669315033A9048C2070900F002C25961200009D6949E80EB1E2707A96003007102F2F_0C0500000000426C00004C050000000082016CFE298C0105000000008C0115000000002F2F2F2F2F2F2F2F2F2F2F - json = '{"id": "33503169","last_year_date": "1999-11-30","last_year_kwh": 0,"media": "heat","meter": "istaheat","name": "HeatItUp","status": "OK","target_date": "2023-09-30","target_kwh": 0,"target_m3": 0,"timestamp": "1111-11-11T11:11:11Z","total_kwh": 0}' - fields = 'HeatItUp;33503169;OK;0;0;1111-11-11 11:11.11' + json = '{"id": "33503169","last_year_date": "1999-11-30","last_year_kwh": 0,"media": "heat","meter": "istaheat","name": "HeatItUp","status": "OK","target_date": "2023-09-30","target_kwh": 0,"target_m3": 0,"timestamp": "1111-11-11T11:11:11Z","total_kwh": 0}' + fields = 'HeatItUp;33503169;OK;0;0;1111-11-11 11:11.11' } test { - args = 'FeelTheHeat istaheat 44503169 NOKEY' + args = 'FeelTheHeat istaheat 44503169 NOKEY' telegram = 5344742669315044A9048C2017900F002C253DCD0000CE827C98B4346AB67A3D003007102F2F_0C0514980400426CFF2C4C052061020082016C1F318C0105581604008C0115142800002F2F2F2F2F2F2F2F2F2F2F - json = '{"status":"OK","media":"heat","meter":"istaheat","name":"FeelTheHeat","id":"44503169","last_year_kwh":2612,"last_year_date":"2023-12-31","target_kwh":4165.8,"target_date":"2024-01-31","target_m3":281.4,"total_kwh":4981.4,"timestamp":"1111-11-11T11:11:11Z"}' - fields = 'FeelTheHeat;44503169;OK;4981.4;4165.8;1111-11-11 11:11.11' + json = '{"status":"OK","media":"heat","meter":"istaheat","name":"FeelTheHeat","id":"44503169","last_year_kwh":2612,"last_year_date":"2023-12-31","target_kwh":4165.8,"target_date":"2024-01-31","target_m3":281.4,"total_kwh":4981.4,"timestamp":"1111-11-11T11:11:11Z"}' + fields = 'FeelTheHeat;44503169;OK;4981.4;4165.8;1111-11-11 11:11.11' } }