{
 "manufacturer": "Kamstrup",
 "manufacturer_slug": "kamstrup",
 "model": "MULTICAL 403 / 603 BACnet MS/TP module (HC-003-66)",
 "model_slug": "multical-403-603-bacnet-mstp",
 "aliases": [
  "MULTICAL 603 BACnet",
  "MULTICAL 403 BACnet",
  "HC-003-66",
  "Kamstrup BACnet module",
  "MULTICAL BACnet MS/TP",
  "Kamstrup heat meter BACnet"
 ],
 "equipment_type": "Heat and cooling energy meter (BACnet MS/TP module)",
 "applies_to": "Kamstrup MULTICAL 403 and MULTICAL 603 heat, cooling and water meters fitted with the HC-003-66 BACnet MS/TP module.",
 "summary": "The HC-003-66 plug-in module puts a MULTICAL 403 or 603 meter on BACnet MS/TP as a B-ASC device. It serves 41 read-only Analog Inputs (flows, temperatures, power, energy and volume registers, pulse inputs, mass) and 12 Positive Integer Values (info code, hour counters, configuration and meter numbers). The PICS units column is headed 'Most often used units' and often lists several options per object; read each object's Units property for the one in use.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": "E1 (application software 1.0)",
 "default_device_instance": null,
 "access_inferred": false,
 "notes": [
  "The device instance defaults to the last 5 digits of the meter number.",
  "The units column ('Most often used units') is kept as printed, with every listed option; some objects include 'No Units' among them.",
  "Every object is read-only in the object table.",
  "The PICS is dated 2018-04-12 (document 55122063_F1_GB_04.2018)."
 ],
 "source": {
  "title": "Protocol Implementation Conformance Statement (PICS) MULTICAL 403 / MULTICAL 603",
  "doc_number": "55122063_F1_GB",
  "revision_date": "2018-04",
  "url": "https://www.bacnetinternational.net/catalog/manu/kamstrup%20as/f1_gb%20-%20PICS.pdf"
 },
 "integration": {
  "summary": "Give the module a unique MS/TP address and device instance, then read heat energy (AI 10), cooling energy (AI 12), power (AI 2), flow (AI 0) and the inlet and outlet temperatures (AI 3, AI 4). Watch the info code (PIV 0) for meter events. Nothing needs to be written.",
  "minimum_points": [
   {
    "ref": "AI 10",
    "name": "Heat energy E1",
    "why": "Accumulated heat energy"
   },
   {
    "ref": "AI 12",
    "name": "Cooling energy E3",
    "why": "Accumulated cooling energy"
   },
   {
    "ref": "AI 2",
    "name": "Actual power",
    "why": "Current thermal power"
   },
   {
    "ref": "AI 0",
    "name": "Flow 1",
    "why": "Current flow rate"
   },
   {
    "ref": "AI 3",
    "name": "Temp. 1 Inlet",
    "why": "Inlet (flow) temperature, °C"
   },
   {
    "ref": "AI 4",
    "name": "Temp. 2 Outlet",
    "why": "Outlet (return) temperature, °C"
   },
   {
    "ref": "AI 26",
    "name": "Volume V1",
    "why": "Accumulated volume"
   },
   {
    "ref": "PIV 0",
    "name": "Info code",
    "why": "Meter status/error code"
   }
  ],
  "enable": null,
  "heartbeat": null,
  "remote_sensors": null,
  "setup": [
   "BACnet MS/TP over RS-485, as master or slave; 9600, 19200, 38400, 57600, 76800 or 115200 baud.",
   "Device instance defaults to the last 5 digits of the meter number; Object_Identifier and Object_Name are writable.",
   "Max_Master defaults to 127 (writable only when the module runs as master); Max_Info_Frames defaults to 2.",
   "COV, Who-Is and Who-Has only work when the module is a master.",
   "No segmentation; max APDU 480 bytes."
  ],
  "gotchas": [
   "Many AIs list several possible units, some including 'No Units'; the PICS does not say which applies.",
   "Energy registers list Wh, kWh or MWh as possible units; check the Units property before trending."
  ]
 },
 "points": [
  {
   "type": "AI",
   "instance": 0,
   "name": "Flow 1",
   "description": "Actual flow, flow sensor 1",
   "units": "l/h, m³/h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1,
   "name": "Flow 2",
   "description": "Actual flow, flow sensor 2",
   "units": "l/h, m³/h, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "Actual power",
   "description": "Actual thermal power",
   "units": "W, kW, MW, j, kj, Gj (No Units)",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "Temp. 1 Inlet",
   "description": "Inlet (flow) temperature",
   "units": "°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 4,
   "name": "Temp. 2 Outlet",
   "description": "Outlet (return) temperature",
   "units": "°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 5,
   "name": "Temp 3",
   "description": "Temperature input 3",
   "units": "°C, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "Temp 4",
   "description": "Temperature input 4",
   "units": "°C, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 7,
   "name": "Differential temp.",
   "description": "Inlet minus outlet temperature",
   "units": "°K",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 8,
   "name": "Pressure 1",
   "description": "Pressure input 1",
   "units": "Bar, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 9,
   "name": "Pressure 2",
   "description": "Pressure input 2",
   "units": "Bar, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 10,
   "name": "Heat energy E1",
   "description": "Accumulated heat energy (E1)",
   "units": "Wh,kWh, MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 11,
   "name": "E2",
   "description": "Energy register E2",
   "units": "Wh,kWh, MWh, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 12,
   "name": "Cooling energy E3",
   "description": "Accumulated cooling energy (E3)",
   "units": "Wh,kWh, MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 13,
   "name": "Energy E4",
   "description": "Energy register E4",
   "units": "Wh,kWh, MWh, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 14,
   "name": "Energy E5",
   "description": "Energy register E5",
   "units": "Wh,kWh, MWh, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 15,
   "name": "Energy E6",
   "description": "Energy register E6",
   "units": "Wh,kWh, MWh, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 16,
   "name": "Energy E7",
   "description": "Energy register E7",
   "units": "Wh,kWh, MWh, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 17,
   "name": "Energy E8 (T1*m3)",
   "description": "Register E8, inlet temperature x volume",
   "units": "m3 x C (No Units)",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 18,
   "name": "Energy E9 (T2*m3)",
   "description": "Register E9, outlet temperature x volume",
   "units": "m3 x C (No Units)",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 19,
   "name": "Energy E10",
   "description": "Energy register E10",
   "units": "Wh,kWh, MWh, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 20,
   "name": "Energy E11",
   "description": "Energy register E11",
   "units": "Wh,kWh, MWh, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 21,
   "name": "Tariff 2",
   "description": "Tariff register 2",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 22,
   "name": "Tariff 3",
   "description": "Tariff register 3",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 23,
   "name": "Tariff 4",
   "description": "Tariff register 4",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 24,
   "name": "Heat with discount A1",
   "description": "Heat energy register A1 (discount)",
   "units": "kWh, MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 25,
   "name": "Heat with surcharge A2",
   "description": "Heat energy register A2 (surcharge)",
   "units": "kWh, MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 26,
   "name": "Volume V1",
   "description": "Accumulated volume, flow sensor 1",
   "units": "l, m3",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 27,
   "name": "Volume V2",
   "description": "Accumulated volume, flow sensor 2",
   "units": "l, m3, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 28,
   "name": "Pulse input A",
   "description": "Pulse input A total",
   "units": "l, m3, kWh, MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 29,
   "name": "Pulse input B",
   "description": "Pulse input B total",
   "units": "l, m3, kWh, MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 30,
   "name": "Pulse input A2",
   "description": "Pulse input A2 total",
   "units": "l, m3, kWh, MWh, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 31,
   "name": "Pulse input B2",
   "description": "Pulse input B2 total",
   "units": "l, m3, kWh, MWh, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 32,
   "name": "Coefficient of performance CP",
   "description": "Coefficient of performance",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 33,
   "name": "T5 Limit",
   "description": "T5 limit value",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 34,
   "name": "VB Power",
   "description": "VB power value",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 35,
   "name": "QP Avg Time",
   "description": "Averaging time for peak power",
   "units": "Seconds, Minutes",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 36,
   "name": "Tariff Limit 2",
   "description": "Tariff limit 2",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 37,
   "name": "Tariff Limit 3",
   "description": "Tariff limit 3",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 38,
   "name": "Tariff Limit 4",
   "description": "Tariff limit 4",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 39,
   "name": "Mass 1",
   "description": "Accumulated mass 1",
   "units": "Ton, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 40,
   "name": "Mass 2",
   "description": "Accumulated mass 2",
   "units": "Ton, No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 0,
   "name": "Info code",
   "description": "Meter info (status/error) code",
   "units": "No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 1,
   "name": "Hour Counter",
   "description": "Operating hours",
   "units": "Hours",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 2,
   "name": "Error Hour Counter",
   "description": "Hours with an active error",
   "units": "Hours",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 3,
   "name": "Config. No. 1",
   "description": "Meter configuration number 1",
   "units": "No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 4,
   "name": "Config. No. 2",
   "description": "Meter configuration number 2",
   "units": "No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 5,
   "name": "Config. No. 3",
   "description": "Meter configuration number 3",
   "units": "No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 6,
   "name": "Config. No. 4",
   "description": "Meter configuration number 4",
   "units": "No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 7,
   "name": "Meter No. (high)",
   "description": "Meter number, high part",
   "units": "No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 8,
   "name": "Meter No. (low)",
   "description": "Meter number, low part",
   "units": "No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 9,
   "name": "Serial Number",
   "description": "Meter serial number",
   "units": "No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 10,
   "name": "Meter Type",
   "description": "Meter type",
   "units": "No Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 11,
   "name": "Meter Main/Sub Type",
   "description": "Meter main/sub type",
   "units": "No Units",
   "access": "R",
   "states": ""
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/kamstrup/multical-403-603-bacnet-mstp",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
