// Copyright (C) 2017-2022 Fredrik Öhrström (gpl-3.0-or-later)
// Copyright (C) 2020 Avandorp (gpl-3.0-or-later)
driver {
name = topaseskr
meter_type = WaterMeter
default_fields = name,id,total_m3,temperature_c,current_flow_m3h,volume_year_period_m3,reverse_volume_year_period_m3,meter_year_period_end_date,volume_month_period_m3,meter_month_period_end_datetime,timestamp
detect {
mvt = AMT,f1,06
mvt = AMT,f1,07
}
library {
use = total_m3
use = access_counter
}
fields {
field {
name = temperature
quantity = Temperature
info = 'Current water temperature recorded by this meter.'
vif_scaling = Auto
dif_signedness = Signed
match {
measurement_type = Instantaneous
vif_range = FlowTemperature
}
}
field {
name = current_flow
quantity = Flow
info = 'The current water flow.'
vif_scaling = Auto
dif_signedness = Signed
match {
measurement_type = Instantaneous
vif_range = VolumeFlow
}
}
field {
name = volume_year_period
quantity = Volume
info = 'Volume up to end of last year-period.'
vif_scaling = Auto
dif_signedness = Signed
match {
measurement_type = Instantaneous
vif_range = Volume
storage_nr = 1
}
}
field {
name = reverse_volume_year_period
quantity = Volume
info = 'Reverse volume in this year-period (?)'
vif_scaling = Auto
dif_signedness = Signed
match {
measurement_type = Instantaneous
vif_range = Volume
storage_nr = 1
tariff_nr = 1
}
}
field {
name = meter_year_period_end_date
quantity = Text
info = 'Meter date for year-period end.'
match {
measurement_type = Instantaneous
vif_range = Date
storage_nr = 1
}
}
field {
name = volume_month_period
quantity = Volume
info = 'Volume up to end of last month-period.'
vif_scaling = Auto
dif_signedness = Signed
match {
measurement_type = Instantaneous
vif_range = Volume
storage_nr = 3
}
}
field {
name = meter_month_period_end
quantity = PointInTime
info = 'Meter timestamp for month-period end.'
display_unit = datetime
match {
measurement_type = Instantaneous
vif_range = DateTime
storage_nr = 3
}
}
field {
name = battery
quantity = Time
info = 'Remaining battery life in years.'
vif_scaling = Auto
dif_signedness = Signed
display_unit = y
match {
measurement_type = Instantaneous
vif_range = RemainingBattery
}
}
}
tests {
test {
args = 'Witer topaseskr 78563412 NOKEY'
telegram = 4E44B40512345678F1077A310040052F2F_01FD08040C13991848004C1359423500CC101300000000CC201359423500426C7F2C0B3B00000002FD74DA10025AD300C4016D3B179F27CC011387124600
json = '{"_":"telegram","media":"water","meter":"topaseskr","name":"Witer","id":"78563412","total_m3":481.899,"access_counter":4,"temperature_c":21.1,"current_flow_m3h":0,"volume_year_period_m3":354.259,"reverse_volume_year_period_m3":0,"meter_year_period_end_date":"2019-12-31","volume_month_period_m3":461.287,"meter_month_period_end_datetime":"2020-07-31 23:59","battery_y":11.811331,"timestamp":"1111-11-11T11:11:11Z"}'
fields = 'Witer;78563412;481.899;21.1;0;354.259;0;2019-12-31;461.287;2020-07-31 23:59;1111-11-11 11:11.11'
}
test {
args = 'Woter topaseskr 69190253 NOKEY'
telegram = 4E44B40553021969F1077A0C0040052F2F_01FD08800C13914544004C1393673500CC101300000000CC201393673500426CDF2C0B3B0100F002FD747912025AAE00C4016D3B17FF25CC011325584100
json = '{"_":"telegram","access_counter": 128,"battery_y": 12.947562,"current_flow_m3h": -0.001,"id": "69190253","media": "water","meter": "topaseskr","meter_month_period_end_datetime": "2023-05-31 23:59","meter_year_period_end_date": "2022-12-31","name": "Woter","reverse_volume_year_period_m3": 0,"temperature_c": 17.4,"timestamp": "1111-11-11T11:11:11Z","total_m3": 444.591,"volume_month_period_m3": 415.825,"volume_year_period_m3": 356.793}'
fields = 'Woter;69190253;444.591;17.4;-0.001;356.793;0;2022-12-31;415.825;2023-05-31 23:59;1111-11-11 11:11.11'
}
}
}