{
 "manufacturer": "Belimo",
 "manufacturer_slug": "belimo",
 "model": "22PF Flow Sensor",
 "model_slug": "22pf-flow-sensor",
 "aliases": [
  "22PF",
  "22PF-..",
  "Belimo ultrasonic flow sensor",
  "Flow Sensor 22PF"
 ],
 "equipment_type": "Ultrasonic liquid flow sensor",
 "applies_to": "Belimo 22PF-.. ultrasonic flow sensors for water and glycol pipes, interface version 4.3.0.",
 "summary": "The 22PF is an ultrasonic flow meter for hydronic pipes with a built-in flow-body temperature sensor and glycol detection. On BACnet MS/TP it reports absolute and relative flow, accumulated volume, temperature, glycol concentration and status, plus an extra sensor input. It has no setpoint or control objects; it is a monitoring device.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": "FM 4.3.0, firmware 02.00.0003",
 "default_device_instance": 1,
 "access_inferred": false,
 "notes": [
  "The document prints access as R / W; those objects are listed here as writable (W).",
  "The Network Port object (instance 101) holds the MS/TP MAC address, baud rate and max master as writable properties.",
  "Flow, volume and temperature units follow MV 123, MV 126 and MV 127.",
  "Measuring range depends on pipe size (DN); see the product datasheet.",
  "Sensor 1 objects (AI 20, BI 20) are out of service unless MV 220 selects the matching sensor type."
 ],
 "integration": {
  "summary": "Pure monitoring device: set the engineering units once (MV 123, MV 126, MV 127), then poll or COV-subscribe flow, volume and temperature. Use MV 99 SummaryStatus and AV 140 ErrorState for alarms.",
  "minimum_points": [
   {
    "ref": "AV 19",
    "name": "AbsFlow_UnitSel",
    "why": "Measured flow"
   },
   {
    "ref": "AI 23",
    "name": "T_UnitSel",
    "why": "Water temperature at the flow body"
   },
   {
    "ref": "AV 52",
    "name": "Volume_UnitSel",
    "why": "Totalized volume"
   },
   {
    "ref": "AV 60",
    "name": "GlycolConcentration",
    "why": "Glycol content of the medium"
   },
   {
    "ref": "MV 99",
    "name": "SummaryStatus",
    "why": "Overall OK / warning / not OK"
   },
   {
    "ref": "AV 140",
    "name": "ErrorState",
    "why": "Bit-coded fault and warning flags"
   }
  ],
  "enable": null,
  "heartbeat": null,
  "remote_sensors": "Sensor 1 on Y3 can be read over BACnet as a voltage (AI 20) or switch (BI 20) once MV 220 is set to that type.",
  "setup": [
   "MS/TP: baud 9600-115200, default 38400; MAC address 0-127, default 1; max 32 nodes without repeater.",
   "Default device instance 1.",
   "MS/TP MAC and baud can also be changed through the Network Port object (NPO 101).",
   "Configure with Belimo Assistant 2; bus termination is set there and shown in BV 99."
  ],
  "gotchas": [
   "Writable persistent objects must not be written on a regular basis.",
   "Changing unit-select MVs changes the units of the flow, volume and temperature objects; update BMS scaling.",
   "Max 5 active COV subscriptions."
  ]
 },
 "source": {
  "title": "BACnet Interface Description, Flow Sensor 22PF-.. / V4.3.0",
  "doc_number": null,
  "revision_date": "2026-07",
  "url": "https://www.belimo.com/mam/general-documents/system_integration/BACnet/belimo_BACnet_Interface-description_22PF_V4_3_0_en-gb.pdf"
 },
 "points": [
  {
   "type": "Other",
   "instance": 101,
   "name": "Network Port Object",
   "description": "MS/TP network port (MAC, baud, max master)",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 99,
   "name": "BusTermination",
   "description": "120 Ω bus termination enabled",
   "units": "",
   "access": "R",
   "states": "0=Disabled, 1=Enabled"
  },
  {
   "type": "AV",
   "instance": 10,
   "name": "RelFlow",
   "description": "Flow relative to full scale (AV 100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 19,
   "name": "AbsFlow_UnitSel",
   "description": "Measured absolute flow",
   "units": "m³/s, m³/h, l/s, l/min, l/h, gpm or cfm (MV 123)",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 100,
   "name": "FS_UnitSel",
   "description": "Full-scale (nominal) flow",
   "units": "m³/s, m³/h, l/s, l/min, l/h, gpm or cfm (MV 123)",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 123,
   "name": "UnitSelFlow",
   "description": "Engineering unit for flow objects",
   "units": "",
   "access": "W",
   "states": "1=m³/s, 2=m³/h, 3=l/s, 4=l/min, 5=l/h, 6=gpm, 7=cfm"
  },
  {
   "type": "AV",
   "instance": 52,
   "name": "Volume_UnitSel",
   "description": "Accumulated volume",
   "units": "m³, l, gal or cf (MV 126)",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 50,
   "name": "VolumePIV_UnitSel",
   "description": "Accumulated volume as integer (cannot be reset)",
   "units": "MV 126 unit",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 126,
   "name": "UnitSelVolume",
   "description": "Engineering unit for volume objects",
   "units": "",
   "access": "W",
   "states": "1=m³, 2=Litre, 3=Gallon, 4=Cubic Foot"
  },
  {
   "type": "MV",
   "instance": 103,
   "name": "StatusSensor",
   "description": "Flow and temperature sensor status",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Flow measurement error, 3=Flowbody temperature not OK, 4=–, 5=Communication to flow sensor interrupted"
  },
  {
   "type": "MV",
   "instance": 104,
   "name": "StatusFlow",
   "description": "Flow status",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Actual flow exceeds nominal flow, 3=–, 4=–, 5=Reverse flow"
  },
  {
   "type": "MV",
   "instance": 105,
   "name": "StatusMedia",
   "description": "Medium status",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Glycol detected, 3=Freeze warning"
  },
  {
   "type": "AV",
   "instance": 60,
   "name": "GlycolConcentration",
   "description": "Glycol concentration",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 201,
   "name": "MeterSerialNo_Part1",
   "description": "Flow meter serial number, first digits",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 23,
   "name": "T_UnitSel",
   "description": "Flow body temperature",
   "units": "°C, K or °F (MV 127)",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 20,
   "name": "Sens1Active_Volt",
   "description": "Sensor 1 input as voltage (active sensor)",
   "units": "V",
   "access": "R",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 20,
   "name": "Sens1Switch",
   "description": "Sensor 1 as switch input",
   "units": "",
   "access": "R",
   "states": "0=Inactive, 1=Active"
  },
  {
   "type": "MV",
   "instance": 127,
   "name": "UnitSelTemperature",
   "description": "Engineering unit for temperature",
   "units": "",
   "access": "W",
   "states": "1=Degree C, 2=K, 3=Degree F"
  },
  {
   "type": "MV",
   "instance": 220,
   "name": "Sens1Type",
   "description": "Sensor 1 input type",
   "units": "",
   "access": "W",
   "states": "1=None, 2=Active volt, 3=–, 4=–, 5=Switch"
  },
  {
   "type": "AV",
   "instance": 140,
   "name": "ErrorState",
   "description": "Bit-coded error and warning flags",
   "units": "",
   "access": "R",
   "states": "Bit 3=Reverse flow, 6=Flow actual exceeds flow nominal, 7=Flow measurement error, 9=Flowbody temperature error, 11=Freeze warning, 12=Glycol detected"
  },
  {
   "type": "MV",
   "instance": 99,
   "name": "SummaryStatus",
   "description": "Summary of MV 103-105",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Warning, 3=Not OK"
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/belimo/22pf-flow-sensor",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
