// Copyright (C) 2021-2024 Fredrik Öhrström (gpl-3.0-or-later)
driver {
name = lse_07_17
meter_type = WaterMeter
default_fields = name,id,total_m3,due_m3,due_date,error_code,error_date,device_datetime,timestamp
detect {
mvt = LSE,18,06
mvt = LSE,18,07
mvt = LSE,16,07
mvt = LSE,17,07
mvt = LSE,d8,07
}
library {
use = model_version
}
fields {
field {
name = total
quantity = Volume
info = 'The total water consumption recorded by this meter.'
match {
measurement_type = Instantaneous
vif_range = Volume
}
}
field {
name = due
quantity = Volume
info = 'The water consumption at the due date.'
match {
measurement_type = Instantaneous
vif_range = Volume
storage_nr = 1
}
}
field {
name = due
quantity = PointInTime
info = 'The due date configured on the meter.'
display_unit = date
match {
measurement_type = Instantaneous
vif_range = Date
storage_nr = 1
}
}
field {
name = consumption_at_set_date_8
quantity = Volume
info = 'The water consumption at billing period date 8.'
match {
measurement_type = Instantaneous
vif_range = Volume
storage_nr = 8
}
}
field {
name = set_date_8
quantity = Text
info = 'Billing period date 8.'
match {
measurement_type = Instantaneous
vif_range = Date
storage_nr = 8
}
}
field {
name = error_code
quantity = Text
info = 'Error code of the Meter, 0 means no error.'
match {
difvifkey = 02BB56
}
lookup {
name = ERROR_FLAGS
map_type = BitToString
mask_bits = 0xffff
default_message = OK
}
}
field {
name = error
quantity = PointInTime
info = 'The date the error occurred at. If no error, reads 2127-15-31 (FFFF).'
display_unit = date
match {
measurement_type = AtError
vif_range = Date
}
}
field {
name = device
quantity = PointInTime
info = 'Date when measurement was recorded.'
display_unit = datetime
match {
measurement_type = Instantaneous
vif_range = DateTime
}
}
}
tests {
test {
args = 'Water lse_07_17 13963399 NOKEY'
telegram = 244465329933961318067AE1000000_8C04130070000082046CBE2B01FD0C11046D010CA22C
json = '{"_":"telegram","media":"warm water","meter":"lse_07_17","name":"Water","id":"13963399","consumption_at_set_date_8_m3":7,"set_date_8":"2021-11-30","device_datetime":"2021-12-02 12:01","model_version":"11","timestamp":"1111-11-11T11:11:11Z"}'
fields = 'Water;13963399;null;null;null;null;null;2021-12-02 12:01;1111-11-11 11:11.11'
}
test {
args = 'Water lse_07_17 13963399 NOKEY'
telegram = 2A4465329933961318067AD8800000_8C04130070000082046CBE2B01FD0C11046D1800A12C02FDAC7E9B2E
json = '{"_":"telegram","media":"warm water","meter":"lse_07_17","name":"Water","id":"13963399","consumption_at_set_date_8_m3":7,"set_date_8":"2021-11-30","device_datetime":"2021-12-01 00:24","model_version":"11","timestamp":"1111-11-11T11:11:11Z"}'
fields = 'Water;13963399;null;null;null;null;null;2021-12-01 00:24;1111-11-11 11:11.11'
}
test {
args = 'Water lse_07_17 13963399 NOKEY'
telegram = 2D4465329933961318067ADA000000_0C13567100004C1300000000426CFFFF02BB560000326CFFFF046D2307A12C
json = '{"_":"telegram","media":"warm water","meter":"lse_07_17","name":"Water","id":"13963399","total_m3":7.156,"due_m3":0,"due_date":"2128-03-31","error_code":"OK","error_date":"2128-03-31","device_datetime":"2021-12-01 07:35","timestamp":"1111-11-11T11:11:11Z"}'
fields = 'Water;13963399;7.156;0;2128-03-31;OK;2128-03-31;2021-12-01 07:35;1111-11-11 11:11.11'
}
test {
args = 'Water2 lse_07_17 09993623 NOKEY'
telegram = 2d44653223369909d8077a80000000046d130aed2B0c13233332004c1351762700426cdf2c326cffff02BB560000
json = '{"_":"telegram","device_datetime":"2023-11-13 10:19","due_date":"2022-12-31","due_m3":277.651,"error_code":"OK","error_date":"2128-03-31","id":"09993623","media":"water","meter":"lse_07_17","name":"Water2","timestamp":"1111-11-11T11:11:11Z","total_m3":323.323}'
fields = 'Water2;09993623;323.323;277.651;2022-12-31;OK;2128-03-31;2023-11-13 10:19;1111-11-11 11:11.11'
}
}
}