// Copyright (C) 2017-2026 Fredrik Öhrström (gpl-3.0-or-later)
driver {
    name           = ultrimis
    deprecated_by  = 'ultrimisv2, upgrade before 2027-06-01'
    meter_type     = WaterMeter
    default_fields = name,id,total_m3,target_m3,current_status,total_backward_flow_m3,timestamp
    manufacturer   = Apator
    fields {
        field {
            name     = total
            quantity = Volume
            info     = 'The total water consumption recorded by this meter.'
            change   = Increasing
            match {
                measurement_type = Instantaneous
                vif_range        = Volume
            }
        }
        field {
            name     = target
            quantity = Volume
            info     = 'The total water consumption recorded at the beginning of this month.'
            change   = Increasing
            match {
                measurement_type = Instantaneous
                vif_range        = Volume
                storage_nr       = 1
            }
        }
        field {
            name     = current_status
            quantity = Text
            info     = 'Status and error flags.'
            match {
                difvifkey = 03FD17
            }
            lookup {
                name            = ERROR_FLAGS
                map_type        = BitToString
                mask_bits       = 0xffffff
                default_message = OK
                map {
                    name  = TAMPER
                    value = 0x01
                    test  = Set
                }
                map {
                    name  = LOW_BATTERY
                    value = 0x02
                    test  = Set
                }
                map {
                    name  = DRY
                    value = 0x04
                    test  = Set
                }
                map {
                    name  = NO_FLOW
                    value = 0x08
                    test  = Set
                }
                map {
                    name  = HIGH_TEMPERATURE
                    value = 0x10
                    test  = Set
                }
                map {
                    name  = BURST
                    value = 0x20
                    test  = Set
                }
                map {
                    name  = REVERSE
                    value = 0x40
                    test  = Set
                }
                map {
                    name  = LEAK
                    value = 0x80
                    test  = Set
                }
            }
        }
        field {
            name           = total_backward_flow
            quantity       = Volume
            info           = 'The total backward water volume recorded by this meter.'
            change         = Increasing
            vif_scaling    = Auto
            dif_signedness = Signed
            match {
                difvifkey = 04933C
            }
        }
    }
}