// Copyright (C) 2022-2023 Fredrik Öhrström (gpl-3.0-or-later)
driver {
name = itron
meter_type = WaterMeter
default_fields = name,id,total_m3,target_m3,timestamp
detect {
mvt = ITW,00,07
mvt = ITW,03,07
mvt = ITW,33,07
mvt = ITW,00,16
}
library {
use = enhanced_id
use = meter_datetime
use = total_m3
use = total_backward_m3
use = volume_flow_m3h
}
fields {
field {
name = status
quantity = Text
info = 'Status and error flags.'
attributes = STATUS,INCLUDE_TPL_STATUS
match {
measurement_type = Instantaneous
vif_range = ErrorFlags
add_combinable = RecordErrorCodeMeterToController
}
lookup {
name = ERROR_FLAGS
map_type = BitToString
mask_bits = 0xffffff
default_message = OK
}
}
field {
name = target
quantity = Volume
info = 'The total water consumption recorded at the end of previous billing period.'
match {
measurement_type = Instantaneous
vif_range = Volume
storage_nr = 1
}
}
field {
name = target
quantity = PointInTime
info = 'Date when previous billing period ended.'
display_unit = date
match {
measurement_type = Instantaneous
vif_range = Date
storage_nr = 1
}
}
field {
name = unknowna
quantity = Text
info = 'Unknown flags.'
match {
difvifkey = 047F
}
lookup {
name = WOOTA
map_type = BitToString
mask_bits = 0xffffffff
}
}
field {
name = unknownb
quantity = Text
info = 'Unknown flags.'
match {
difvifkey = 027F
}
lookup {
name = WOOTB
map_type = BitToString
mask_bits = 0xffff
}
}
}
tests {
test {
args = 'SomeWater itron 12345698 NOKEY'
comment = 'Test ITRON T1 telegram not encrypted, which has no 2f2f markers.'
telegram = 384497269856341203077AD90000A0_0413FD110000066D2C1AA1D521004413300F0000426CBF2C047F0000060C027F862A0E79678372082100
json = '{"_":"telegram","media":"water","meter":"itron","name":"SomeWater","id":"12345698","enhanced_id":"002108728367","meter_datetime":"2022-01-21 01:26:44","total_m3":4.605,"status":"OK","target_m3":3.888,"target_date":"2021-12-31","unknowna":"WOOTA_C060000","unknownb":"WOOTB_2A86","timestamp":"1111-11-11T11:11:11Z"}'
fields = 'SomeWater;12345698;4.605;3.888;1111-11-11 11:11.11'
}
test {
args = 'MoreWater itron 18000056 NOKEY'
telegram = 46449726560000183307725600001897263307AF0030052F2F_066D0E1015C82A000C13771252000C933C000000000B3B0400004C1361045200426CC12A03FD971C0000002F2F2F
json = '{"_":"telegram","media":"water","meter":"itron","name":"MoreWater","id":"18000056","meter_datetime":"2022-10-08 21:16:14","total_m3":521.277,"total_backward_m3":0,"volume_flow_m3h":0.004,"status":"OK","target_m3":520.461,"target_date":"2022-10-01","timestamp":"1111-11-11T11:11:11Z"}'
fields = 'MoreWater;18000056;521.277;520.461;1111-11-11 11:11.11'
}
test {
args = 'AnyWater itron 20310959 NOKEY'
telegram = 384497265909312000077a930000a0041360B50100066d101295f427004413ac570100426cdf2c047f0000060c027f6c2a0e79000000000000
json = '{"_":"telegram","enhanced_id":"000000000000","id":"20310959","media":"water","meter":"itron","meter_datetime":"2023-07-20 21:18:16","name":"AnyWater","status":"OK","target_date":"2022-12-31","target_m3":87.98,"timestamp":"1111-11-11T11:11:11Z","total_m3":111.968,"unknowna":"WOOTA_C060000","unknownb":"WOOTB_2A6C"}'
fields = 'AnyWater;20310959;111.968;87.98;1111-11-11 11:11.11'
}
test {
args = 'ColdWaterMeter itron 23362098 NOKEY'
comment = 'Allmess cold water with Itron Module programmed with type 0x16'
telegram = 3A4497269820362300167AF60020A52F2F_04132E100000066D03260DE12B007413FEFEFEFE426C1F01047F1600060C027F9A2A0E79187103002300
json = '{"_":"telegram","enhanced_id":"002300037118","id":"23362098","media":"cold water","meter":"itron","meter_datetime":"2023-11-01 13:38:03","name":"ColdWaterMeter","status":"OK","target_date":"2000-01-31","timestamp":"1111-11-11T11:11:11Z","total_m3":4.142,"unknowna":"WOOTA_C060016","unknownb":"WOOTB_2A9A"}'
fields = 'ColdWaterMeter;23362098;4.142;null;1111-11-11 11:11.11'
}
}
}