{
  "spec_version": 1,
  "slug": "chint-ddsu666",
  "manufacturer": "CHINT",
  "model": "DDSU666 single-phase smart meter (iStoragE meter)",
  "category": "Energy meter",
  "supplier_url": "https://chint.it/wp-content/uploads/product-docs/iStoragE/Manuali/iStoragE%20Meter%20DDSU666%20User%20Manual%20EN.pdf",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 3,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 8192,
      "count": 2,
      "name": "Voltage",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Secondary-side voltage (2000H). The manual prints no unit for this register."
    },
    {
      "address": 8194,
      "count": 2,
      "name": "Current",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Secondary-side current (2002H). The manual prints no unit for this register."
    },
    {
      "address": 8196,
      "count": 2,
      "name": "Active power",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 8198,
      "count": 2,
      "name": "Reactive power",
      "data_type": "Float32",
      "units": "kvar",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 8202,
      "count": 2,
      "name": "Power factor",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 8206,
      "count": 2,
      "name": "Frequency",
      "data_type": "Float32",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 16384,
      "count": 2,
      "name": "Forward active energy",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Active (import) energy (4000H). The manual prints no unit for this register."
    },
    {
      "address": 16394,
      "count": 2,
      "name": "Reverse active energy",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Reverse (export) energy (400AH). The manual prints no unit for this register."
    }
  ],
  "holding_registers": [
    {
      "address": 2,
      "count": 1,
      "name": "Electric energy zero clearing (ClrE)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Writing 1 clears the total electric energy (0002H)."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Protocol changing-over (ChangeProtocol)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW"
    },
    {
      "address": 6,
      "count": 1,
      "name": "Communication address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Modbus slave address (0006H). Factory default address is 03."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Meter type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 12,
      "count": 1,
      "name": "Communication baud rate",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = 1200 bps, 1 = 2400 bps, 2 = 4800 bps, 3 = 9600 bps (000CH). Factory default baud rate is 9600 bps."
    }
  ],
  "combined_registers": [],
  "notes": "Source: CHINT 'DDSU666 Single-phase Smart Meter User Manual', document ZTY0.464.1413, served by CHINT Italy at chint.it (iStoragE document area): https://chint.it/wp-content/uploads/product-docs/iStoragE/Manuali/iStoragE%20Meter%20DDSU666%20User%20Manual%20EN.pdf. Factory defaults from section 4.2: default baud rate 9600 bps with 'check bit and stop bit to be n.1' (no parity, 1 stop bit) and default communication address 03; the meter display menu in section 3 shows the same frame (8 data bits, None parity, 1 stop bit). Addressing: the register map prints hexadecimal register addresses (2000H, 4000H, ...) and Appendix A's worked frames put those hex numbers in the start-address field unchanged, so they are zero-based wire addresses, stored here as decimal (2000H = 8192 over to 400AH = 16394, 0002H = 2 over to 000CH = 12). All measured values are single-precision IEEE-754 floating point in two registers, so no scale factor is applied. The manual prints no word-order example for those pairs, so the seed keeps the Modbus standard order with the high word in the lower register (HighFirst); if a unit returns nonsense, try LowFirst. Document contradiction recorded rather than hidden: Appendix A.1 describes an 11-bit character frame ('1 start bit, 8 data bits and 2 stop bits') while section 4.2 and the display menu state the factory setting 'n.1' (1 stop bit); this seed follows the explicit factory-setting sentence and the menu, and the reader should confirm the stop-bit setting on their own unit. Deliberate omissions: the RESERVED rows (0000H-0001H, 0003H-0004H, 0007H-000AH, 000DH-0010H, 2008H, 200CH, 2010H), the version/firmware value in 0000H whose description the manual prints against the RESERVED row, and polarity/tariff rows that the manual does not tabulate. This is the single-phase DDSU666; the library's chint-dtsu666 seed covers the three-phase DTSU666/DSSU666, which is a different product with a different map."
}
