// Copyright (C) 2026 Fredrik Öhrström (gpl-3.0-or-later)
driver {
name = topaseskr2
meter_type = WaterMeter
default_fields = name,id,status,total_m3,timestamp
detect {
mvt = IMT,f2,07
}
library {
use = total_m3
use = access_counter
use = flow_temperature_c
use = volume_flow_m3h
}
fields {
field {
name = status
quantity = Text
info = 'Status and error flags.'
match {
measurement_type = Instantaneous
vif_range = ErrorFlags
}
lookup {
name = ERROR_FLAGS
mask_bits = 0xffffffff
map_type = BitToString
default_message = OK
}
}
field {
name = battery
quantity = Time
info = 'Remaining battery life in years.'
display_unit = y
match {
measurement_type = Instantaneous
vif_range = RemainingBattery
}
}
field {
name = target_year
quantity = Volume
info = 'Volume up to end of last year.'
match {
measurement_type = Instantaneous
vif_range = Volume
storage_nr = 1
}
}
field {
name = target_year
quantity = PointInTime
info = 'Meter date for end of last year.'
display_unit = date
match {
measurement_type = Instantaneous
vif_range = Date
storage_nr = 1
}
}
field {
name = target
quantity = Volume
info = 'Total volume when previous billing period ended.'
match {
measurement_type = Instantaneous
vif_range = Volume
storage_nr = 8
}
}
field {
name = target
quantity = PointInTime
info = 'Previous billing period ended at this time.'
match {
measurement_type = Instantaneous
vif_range = DateTime
storage_nr = 8
}
}
}
tests {
test {
args = 'W topaseskr2 88475766 NOKEY'
telegram = 3E44B42566574788F2077A6F0030052F2F_0C138150020004FD170000000002FD74AD150A5A1001426C3F3C4C130002000084046D3B375C328C041388380100
json = '{"_": "telegram","battery_y": 15.192646,"driver": "topaseskr2","flow_temperature_c": 11,"id": "88475766","media": "water","name": "W","status": "OK","target_datetime": "2026-02-28 23:59","target_m3": 13.888,"target_year_date": "2025-12-31","target_year_m3": 0.2,"timestamp": "1111-11-11T11:11:11Z","total_m3": 25.081}'
fields = 'W;88475766;OK;25.081;1111-11-11 11:11.11'
}
}
}