{
 "manufacturer": "Danfoss",
 "manufacturer_slug": "danfoss",
 "model": "SonoMeter 40 BACnet MS/TP module",
 "model_slug": "sonometer-40-bacnet-mstp-module",
 "aliases": [
  "SonoMeter 40",
  "SonoMeter",
  "Sonometer 40 BACnet",
  "Danfoss BACnet MS/TP base module",
  "AQ404134831215"
 ],
 "equipment_type": "Thermal energy meter (BACnet MS/TP plug-in module)",
 "applies_to": "Danfoss SonoMeter 40 ultrasonic heat/cooling energy meters fitted with the BACnet MS/TP module.",
 "summary": "The BACnet MS/TP module plugs into a SonoMeter 40 energy meter, reads the meter over its internal bus at a set interval and serves the values as 14 read-only Analog Inputs: energy and tariff registers, volumes, pulse inputs, power, flow, the two temperatures and an info code. It is a B-ASC powered from 12-24 V AC/DC.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": "Module firmware 0.8.3, application software 2.1",
 "default_device_instance": "Last 5 digits of the meter serial number",
 "access_inferred": false,
 "notes": [
  "Units are listed as alternatives (e.g. kWh or MWh); the meter's configuration sets which one applies.",
  "Names with a slash (e.g. 'Tariff 1 / Energy 2') carry one value or the other depending on meter type.",
  "Instances are not contiguous: AI 0-6, 8, 11, 14, 19-21 and 30.",
  "The device object list printed in the same document stops at AI 11, which conflicts with the object table; check on site.",
  "The module is made by Axioma Metering and reports vendor ID 1006."
 ],
 "source": {
  "title": "Operating guide, BACnet MS/TP Module for energy meter SonoMeter 40",
  "doc_number": "AQ404134831215en-010103",
  "revision_date": "2024-03",
  "url": "https://assets.danfoss.com/documents/373511/AQ404134831215en-010103.pdf"
 },
 "integration": {
  "summary": "Read the heating and cooling energy totals, power, flow and the two temperatures, and watch AI 30 for meter errors. Values only refresh at the module's update interval (300 s by default), so poll or trend no faster than that.",
  "minimum_points": [
   {
    "ref": "AI 1",
    "name": "Accumulated heat energy (E1)",
    "why": "Heating energy total"
   },
   {
    "ref": "AI 2",
    "name": "Accumulated cooling energy (E2) / Energy 1",
    "why": "Cooling energy total (Energy 1 on some meters)"
   },
   {
    "ref": "AI 11",
    "name": "Actual power",
    "why": "Thermal power, W, kW or MW"
   },
   {
    "ref": "AI 14",
    "name": "Actual flow",
    "why": "Measured flow"
   },
   {
    "ref": "AI 19",
    "name": "Flow temperature / Temperature 1",
    "why": "Supply temperature, °C"
   },
   {
    "ref": "AI 20",
    "name": "Return temperature / Temperature 2",
    "why": "Return temperature, °C"
   },
   {
    "ref": "AI 21",
    "name": "Differential temperature",
    "why": "Supply minus return, K"
   },
   {
    "ref": "AI 30",
    "name": "Info code (Error code)",
    "why": "Meter error code"
   }
  ],
  "enable": null,
  "heartbeat": null,
  "remote_sensors": null,
  "setup": [
   "Default device instance is the last 5 digits of the meter serial number; the device name defaults to 'Danfoss BACnet'.",
   "MS/TP MAC 1-127; default is the last 2 digits of the serial number or the meter's 'M-Bus 2' address.",
   "Baud 9600-115200, default 38400, 8E1 (even parity).",
   "Max-master 127 and max-info-frames 2 are writable; no segmentation.",
   "Wiring: terminals 90 (A+) and 91 (B-), power on 60/61 at 12-24 V AC/DC.",
   "Holding SET while powering up for about 12 s resets the module settings (address, baud)."
  ],
  "gotchas": [
   "Data refresh interval is 300 s by default (configurable); readings between updates do not change.",
   "The serial line is 8E1 by default, not the more common 8N1.",
   "The document gives no meanings for the AI 30 info codes; use the meter manual."
  ]
 },
 "points": [
  {
   "type": "AI",
   "instance": 0,
   "name": "Meter serial number",
   "description": "Serial number of the meter",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1,
   "name": "Accumulated heat energy (E1)",
   "description": "Heating energy total",
   "units": "kWh or MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "Accumulated cooling energy (E2) / Energy 1",
   "description": "Cooling energy, or Energy 1, depending on meter type",
   "units": "kWh or MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "Tariff 1 / Energy 2",
   "description": "Tariff 1 register, or Energy 2, depending on meter type",
   "units": "kWh or MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 4,
   "name": "Tariff 2",
   "description": "Tariff 2 register",
   "units": "kWh or MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 5,
   "name": "Accumulated volume (V1)",
   "description": "Volume total",
   "units": "l or m³",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "Pulse input A accumulated / Accumulated volume (V2)",
   "description": "Pulse input A total, or volume V2",
   "units": "l or m³",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 8,
   "name": "Pulse input B accumulated / Accumulated volume (V3)",
   "description": "Pulse input B total, or volume V3",
   "units": "l, m³, kWh or MWh",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 11,
   "name": "Actual power",
   "description": "Instantaneous thermal power",
   "units": "W, kW or MW",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 14,
   "name": "Actual flow",
   "description": "Instantaneous flow rate",
   "units": "l/h or m³/h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 19,
   "name": "Flow temperature / Temperature 1",
   "description": "Supply (flow) temperature",
   "units": "°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 20,
   "name": "Return temperature / Temperature 2",
   "description": "Return temperature",
   "units": "°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 21,
   "name": "Differential temperature",
   "description": "Flow minus return temperature",
   "units": "K",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 30,
   "name": "Info code (Error code)",
   "description": "Meter info / error code",
   "units": "",
   "access": "R",
   "states": ""
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/danfoss/sonometer-40-bacnet-mstp-module",
 "note": "Provided as-is. Point availability varies by firmware and options; verify against the live device.",
 "disclaimer": "DISCLAIMER: reference only, provided AS IS with no warranty. May contain errors or be out of date. You must verify every point against the manufacturer's current documentation and the live device before use. easybacnet.com accepts no liability for its use and is not affiliated with the manufacturer. Terms: https://easybacnet.com/terms#content"
}
