{
  "spec_version": 1,
  "slug": "vaisala-wxt530",
  "manufacturer": "Vaisala",
  "model": "WXT530 series weather transmitter (WXT531 / WXT532 / WXT533 / WXT534 / WXT535 / WXT536)",
  "category": "Weather station",
  "supplier_url": "https://docs.vaisala.com/r/M211840EN-G/en-US/GUID-5C3927B5-A979-4B35-8519-86DC222B1E81",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "Even",
      "baud_rate": 19200,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Device identification",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High byte = WXT530 model (WXT531 = 01 ... WXT536 = 06), low byte = last digits of the software version number."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Available parameters, temperature and dew point",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Per-parameter availability according to the WXT530 model: 00 = available, 07 = not available."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Available parameters, relative and absolute humidity",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "00 = available, 07 = not available."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Available parameters, mixing ratio and air pressure",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "00 = available, 07 = not available."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Available parameters, wind and rain",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "00 = available, 07 = not available."
    },
    {
      "address": 6,
      "count": 1,
      "name": "External sensors at analog inputs",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Solar radiation sensor (high byte) and level sensor (low byte): 00 = connected, 07 = not connected."
    },
    {
      "address": 7,
      "count": 1,
      "name": "External sensors at analog inputs, temperature and rain gauge",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Temperature sensor (high byte) and rain gauge (low byte): 00 = connected, 07 = not connected."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Relative humidity, instant",
      "data_type": "Int16",
      "units": "%RH",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Scaling factor 10 in the document."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Relative humidity, minimum",
      "data_type": "Int16",
      "units": "%RH",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 12,
      "count": 1,
      "name": "Relative humidity, maximum",
      "data_type": "Int16",
      "units": "%RH",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 13,
      "count": 1,
      "name": "Relative humidity, average",
      "data_type": "Int16",
      "units": "%RH",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the averaging period set in holding register 0x0002."
    },
    {
      "address": 14,
      "count": 1,
      "name": "Relative air pressure, instant",
      "data_type": "Int16",
      "units": "hPa",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Derived from air temperature, relative humidity, pressure and the altitude in holding register 0x0000."
    },
    {
      "address": 15,
      "count": 1,
      "name": "Relative air pressure, minimum",
      "data_type": "Int16",
      "units": "hPa",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the averaging period set in holding register 0x0003."
    },
    {
      "address": 16,
      "count": 1,
      "name": "Relative air pressure, maximum",
      "data_type": "Int16",
      "units": "hPa",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the averaging period set in holding register 0x0003."
    },
    {
      "address": 17,
      "count": 1,
      "name": "Relative air pressure, average",
      "data_type": "Int16",
      "units": "hPa",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the averaging period set in holding register 0x0003."
    },
    {
      "address": 18,
      "count": 1,
      "name": "Wind direction, instant",
      "data_type": "Int16",
      "units": "°",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Scaling factor 10 in the document."
    },
    {
      "address": 19,
      "count": 1,
      "name": "Wind direction, minimum",
      "data_type": "Int16",
      "units": "°",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the wind averaging period set in holding register 0x0004."
    },
    {
      "address": 20,
      "count": 1,
      "name": "Wind direction, maximum",
      "data_type": "Int16",
      "units": "°",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the wind averaging period set in holding register 0x0004."
    },
    {
      "address": 21,
      "count": 1,
      "name": "Wind direction, average",
      "data_type": "Int16",
      "units": "°",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the wind averaging period set in holding register 0x0004."
    },
    {
      "address": 22,
      "count": 1,
      "name": "Wind direction, raw",
      "data_type": "Int16",
      "units": "°",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Raw wind direction sample."
    },
    {
      "address": 25,
      "count": 1,
      "name": "Precipitation type",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no precipitation, 40 = precipitation, 90 = hail."
    },
    {
      "address": 26,
      "count": 1,
      "name": "Wind measurement quality",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Scaling factor 1 in the document (0...100 %)."
    },
    {
      "address": 27,
      "count": 1,
      "name": "Global radiation, instant",
      "data_type": "Int16",
      "units": "W/m2",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Solar radiation from a pyranometer on the analog input (WXT536)."
    },
    {
      "address": 28,
      "count": 1,
      "name": "Global radiation, minimum",
      "data_type": "Int16",
      "units": "W/m2",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the averaging period set in holding register 0x0005."
    },
    {
      "address": 29,
      "count": 1,
      "name": "Global radiation, maximum",
      "data_type": "Int16",
      "units": "W/m2",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the averaging period set in holding register 0x0005."
    },
    {
      "address": 30,
      "count": 1,
      "name": "Global radiation, average",
      "data_type": "Int16",
      "units": "W/m2",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the averaging period set in holding register 0x0005."
    },
    {
      "address": 31,
      "count": 1,
      "name": "Air temperature, instant",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Scaling factor 10 in the document. Range -50.0...60.0 °C."
    },
    {
      "address": 32,
      "count": 1,
      "name": "Air temperature, minimum",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 33,
      "count": 1,
      "name": "Air temperature, maximum",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 34,
      "count": 1,
      "name": "Air temperature, average",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the averaging period set in holding register 0x0002."
    },
    {
      "address": 35,
      "count": 1,
      "name": "Dew point, instant",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Derived from air temperature and relative humidity."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Dew point, minimum",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Dew point, maximum",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 38,
      "count": 1,
      "name": "Dew point, average",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the averaging period set in holding register 0x0002."
    },
    {
      "address": 39,
      "count": 1,
      "name": "Wind chill temperature, instant",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Derived from air temperature, relative humidity and wind (JAG/TI 2001)."
    },
    {
      "address": 41,
      "count": 1,
      "name": "Heater temperature, instant",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Range -50.0...150.0 °C."
    },
    {
      "address": 42,
      "count": 1,
      "name": "Wind speed, instant",
      "data_type": "Int16",
      "units": "m/s",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Scaling factor 10 in the document. Range 0...75.0 m/s."
    },
    {
      "address": 43,
      "count": 1,
      "name": "Wind speed, minimum",
      "data_type": "Int16",
      "units": "m/s",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the wind averaging period set in holding register 0x0004."
    },
    {
      "address": 44,
      "count": 1,
      "name": "Wind speed, maximum",
      "data_type": "Int16",
      "units": "m/s",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the wind averaging period set in holding register 0x0004."
    },
    {
      "address": 45,
      "count": 1,
      "name": "Wind speed, average",
      "data_type": "Int16",
      "units": "m/s",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the wind averaging period set in holding register 0x0004."
    },
    {
      "address": 47,
      "count": 1,
      "name": "Wind speed, raw",
      "data_type": "Int16",
      "units": "m/s",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Raw wind speed sample (1 s of 250 ms samples)."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Precipitation accumulation, absolute",
      "data_type": "UInt16",
      "units": "mm",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Continuous accumulated precipitation since the last counter reset; write 0x3247 to holding register 0x0007 to reset. Scaling factor 100 in the document; saturates at 655.30 mm."
    },
    {
      "address": 49,
      "count": 1,
      "name": "Precipitation accumulation, differential",
      "data_type": "UInt16",
      "units": "mm",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Accumulated precipitation between two consecutive requests. Scaling factor 100 in the document."
    },
    {
      "address": 50,
      "count": 1,
      "name": "Precipitation intensity",
      "data_type": "UInt16",
      "units": "mm/h",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling factor 100 in the document; range 0...200.00 mm/h."
    },
    {
      "address": 71,
      "count": 1,
      "name": "Absolute humidity, instant",
      "data_type": "Int16",
      "units": "g/m3",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Derived from air temperature, relative humidity and pressure."
    },
    {
      "address": 72,
      "count": 1,
      "name": "Absolute humidity, minimum",
      "data_type": "Int16",
      "units": "g/m3",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 73,
      "count": 1,
      "name": "Absolute humidity, maximum",
      "data_type": "Int16",
      "units": "g/m3",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 74,
      "count": 1,
      "name": "Absolute humidity, average",
      "data_type": "Int16",
      "units": "g/m3",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the averaging period set in holding register 0x0002."
    },
    {
      "address": 75,
      "count": 1,
      "name": "Mixing ratio, instant",
      "data_type": "Int16",
      "units": "g/kg",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Mass mixing ratio derived from air temperature, relative humidity and pressure."
    },
    {
      "address": 76,
      "count": 1,
      "name": "Mixing ratio, minimum",
      "data_type": "Int16",
      "units": "g/kg",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 77,
      "count": 1,
      "name": "Mixing ratio, maximum",
      "data_type": "Int16",
      "units": "g/kg",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the averaging period set in holding register 0x0002."
    },
    {
      "address": 78,
      "count": 1,
      "name": "Mixing ratio, average",
      "data_type": "Int16",
      "units": "g/kg",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the averaging period set in holding register 0x0002."
    },
    {
      "address": 83,
      "count": 1,
      "name": "Wind speed, instant (km/h)",
      "data_type": "Int16",
      "units": "km/h",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Same sample as input register 0x002A, in km/h."
    },
    {
      "address": 84,
      "count": 1,
      "name": "Wind speed, minimum (km/h)",
      "data_type": "Int16",
      "units": "km/h",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Minimum over the wind averaging period set in holding register 0x0004."
    },
    {
      "address": 85,
      "count": 1,
      "name": "Wind speed, maximum (km/h)",
      "data_type": "Int16",
      "units": "km/h",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Maximum over the wind averaging period set in holding register 0x0004."
    },
    {
      "address": 86,
      "count": 1,
      "name": "Wind speed, average (km/h)",
      "data_type": "Int16",
      "units": "km/h",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Average over the wind averaging period set in holding register 0x0004."
    },
    {
      "address": 98,
      "count": 1,
      "name": "Wet bulb temperature, instant",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Temperature of a moist or icy surface exposed to airflow."
    },
    {
      "address": 101,
      "count": 1,
      "name": "Air density",
      "data_type": "Int16",
      "units": "kg/m3",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "R",
      "description": "Scaling factor 1000 in the document; range 0...3.000 kg/m3."
    },
    {
      "address": 107,
      "count": 1,
      "name": "External temperature, instant",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Pt1000 on the WXT536 analog input, -40.0...80.0 °C."
    }
  ],
  "holding_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Altitude",
      "data_type": "Int16",
      "units": "m",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Used in the relative air pressure and air density calculations. -100...5000 m, factory default 0."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Wind direction deviation angle",
      "data_type": "Int16",
      "units": "°",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Calibration offset for the wind direction. -359.9...359.9 °, factory default 0."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Averaging interval, temperature, humidity, mixing ratio, absolute humidity and dew point",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1...10 minutes, factory default 10 minutes."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Averaging interval, air pressure",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1...10 minutes, factory default 10 minutes."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Averaging interval, wind",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1...10 minutes, factory default 1 minute."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Averaging interval, solar radiation",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1...10 minutes, factory default 10 minutes."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Heating control",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0, 1 or 3 = heating on, 2 = heating off. Factory default 1."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Reset precipitation accumulation counters",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Write 0x3247 to reset the precipitation counters."
    },
    {
      "address": 8,
      "count": 1,
      "name": "Reset device",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Write 0x3247 to reset the device."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Modbus address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1...247, factory default 1."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Switch to CLI mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "W",
      "description": "Write 0x0F to switch the user port from Modbus RTU back to the command line interface."
    }
  ],
  "combined_registers": [],
  "notes": "Source: Vaisala 'Vaisala Weather Transmitter WXT530 Series User Guide', M211840EN-G ((c) Vaisala 2023): Appendix B 'Modbus protocol' - Table 57 default settings and the B.2 register maps (Tables 58-64). The guide is not exposed as a PDF on a Vaisala download page (docs.vaisala.com serves the guide as versioned web help; the PDF links tried under vaisala.com return 404), so the PDF was read from the public distributor mirror https://download.ambismart.io/Vaisala/WXT530_v386/WXT530-M211840EN-G-User's%20Guide.pdf, SHA-256 104956f5632a2a19aa674b2b0c9feb8e4da34d1929b306f087e1f29256b2d774 (MIRROR-SOURCED). Modbus RTU is available from firmware 3.85 onwards and needs the WXT53XU... order code. Factory settings: default address 1 (Table 57) and RS-485 Modbus RTU 19200 baud, 8, E, 1 (Table 24). Addressing: the register tables print a 1-based 'Reg. no' next to the hex 'Address' (Reg. 1 = 0x0000, Reg. 11 = 0x000A); the hex addresses are stored unchanged as zero-based wire addresses. Scaling: the document's SF column is a divisor, so every scale_factor is 1/SF (temperature 0.1 °C, pressure 0.1 hPa, wind 0.1 m/s, precipitation 0.01 mm, air density 0.001 kg/m3). 16-bit values use the document's error convention: 65535 = unavailable unsigned, 32767 = unavailable signed. Included: device-status block, the unit-independent RH/pressure/wind-direction/precipitation-type/radiation block, the metric block and the unit-independent derived values (absolute humidity, mixing ratio, wind in km/h, wet bulb temperature, air density, external temperature) plus all 11 holding registers. Left out: the imperial block (input registers 52-71) with its other-unit duplicates - wind in knots (0x0058-0x005B), raw km/h and knots (0x005D-0x005E), wet-bulb °F (0x0063), external temperature °F (0x006C), raw wind quality (0x006D) - plus absolute air pressure (0x004F-0x0052) and specific enthalpy (0x0064) as scope choices, the reserved rows, and input registers 9-10 (0x0008-0x0009), unlisted by the guide."
}
