{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "LinkedGo", "model": "ST802-B", "models": [ "ST802-B", "ST802", "LinkedGo ST802-B" ], "vendor_website": "linkedgo.com", "description": "Smart HVAC thermostat (fan coil, underfloor heating, ventilation) with RS-485 (Modbus RTU), sold by Shelly", "revision": 1, "revised": "2026-10-18", "source": "LinkedGo, \"ST802 Youth Smart Thermostat technical instruction\", section 11, RS485 Modbus protocol of LinkedGo 3.0", "sources": [ { "title": "ST802 Youth Smart Thermostat technical instruction", "url": "https://storage.googleapis.com/mauser-public-images/prod_description_document/2025/282/ca065a98d3074f9a4833a0add36f3fcd_cf31db8df7d388aae17e00dc60a3be462c3f40b6.pdf", "note": "manufacturer document for the ST802; sections 9 to 12" }, { "title": "Shelly: Smart HVAC Thermostat (ST802-B)", "url": "https://www.shelly.com/blogs/documentation/smart-hvac-thermostat" } ], "notes": [ "Function codes: FC03 reads, FC06 and FC16 write. Addresses are the hexadecimal registers of the manual; the registers of the status group (0x2101 and following) are read-only.", "The manual describes the ST802. Shelly lists RS-485/Modbus control for the ST802-B (the Shelly edition) but publishes no register table, so this map assumes the same LinkedGo 3.0 protocol; it has not been checked on an ST802-B.", "Two RS-485 ports (A1/B1 and A2/B2). In the factory settings port 1 is a master (P00 = 1) and port 2 a slave (P05 = 0); set the port that connects to your controller to slave, protocol LinkedGo 3.0, baud rate 4800 or 9600 (default 9600), slave ID 1 to 255 (default 1) from the display menu or these registers.", "The manual does not state the parity or stop bits; 8 data bits, no parity and 1 stop bit are assumed.", "Temperatures and humidity are in tenths: 10 means 1 °C or 1 %." ], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "N", "databits": 8, "stopbits": 1, "byte_order": "big", "word_order": "big", "address_base": 0, "x_status": "official", "registers": [ { "name": "On/off", "group": "Control", "area": "holding", "address": 4097, "type": "uint16", "access": "RW", "enum": { "0": "Off", "1": "On" }, "description": "H00" }, { "name": "Thermostat function", "group": "Control", "area": "holding", "address": 4099, "type": "uint16", "access": "RW", "description": "H02: 0, 1, 2, 3 or 17 (fan coil and floor heating combination; see the manual)", "write_min": 0, "write_max": 17 }, { "name": "Mode", "group": "Control", "area": "holding", "address": 4100, "type": "uint16", "access": "RW", "enum": { "0": "Cooling", "3": "Dry", "4": "Heating", "5": "Floor heating", "7": "Ventilation" }, "description": "H03" }, { "name": "Heating and cooling function", "group": "Control", "area": "holding", "address": 4102, "type": "uint16", "access": "RW", "enum": { "0": "Heating and cooling", "1": "Only cooling", "2": "Only heating" }, "description": "H05" }, { "name": "Fan speed", "group": "Control", "area": "holding", "address": 4103, "type": "uint16", "access": "RW", "enum": { "0": "Auto", "1": "Low", "2": "Medium", "3": "High", "4": "Fourth speed", "5": "Fifth speed" }, "description": "H06. AC fans: 0 to 3; DC fans: 0 to 5" }, { "name": "Set point", "group": "Control", "area": "holding", "address": 4104, "type": "uint16", "unit": "°C", "access": "RW", "scale": 0.1, "description": "H07. Between the minimum and maximum set point; steps of 0.5 °C" }, { "name": "Humidity set point", "group": "Control", "area": "holding", "address": 4105, "type": "uint16", "unit": "%", "access": "RW", "scale": 0.1, "write_min": 40, "write_max": 75, "description": "H08" }, { "name": "Minimum set point", "group": "Settings", "area": "holding", "address": 4120, "type": "uint16", "unit": "°C", "access": "RW", "scale": 0.1, "write_min": 5, "write_max": 50, "description": "H23, up to the maximum set point" }, { "name": "Maximum set point", "group": "Settings", "area": "holding", "address": 4121, "type": "uint16", "unit": "°C", "access": "RW", "scale": 0.1, "description": "H24, from the minimum set point to 50 °C" }, { "name": "DC fan lowest speed voltage", "group": "DC fan", "area": "holding", "address": 4176, "type": "uint16", "unit": "V", "access": "RW", "scale": 0.01, "description": "F02" }, { "name": "DC fan highest speed voltage", "group": "DC fan", "area": "holding", "address": 4177, "type": "uint16", "unit": "V", "access": "RW", "scale": 0.01, "description": "F03" }, { "name": "DC fan 1st speed voltage", "group": "DC fan", "area": "holding", "address": 4179, "type": "uint16", "unit": "V", "access": "RW", "scale": 0.01, "description": "F05" }, { "name": "DC fan 2nd speed voltage", "group": "DC fan", "area": "holding", "address": 4180, "type": "uint16", "unit": "V", "access": "RW", "scale": 0.01, "description": "F06" }, { "name": "DC fan 3rd speed voltage", "group": "DC fan", "area": "holding", "address": 4181, "type": "uint16", "unit": "V", "access": "RW", "scale": 0.01, "description": "F07" }, { "name": "DC fan 4th speed voltage", "group": "DC fan", "area": "holding", "address": 4182, "type": "uint16", "unit": "V", "access": "RW", "scale": 0.01, "description": "F08" }, { "name": "DC fan 5th speed voltage", "group": "DC fan", "area": "holding", "address": 4183, "type": "uint16", "unit": "V", "access": "RW", "scale": 0.01, "description": "F09" }, { "name": "DC fan minimum voltage at start", "group": "DC fan", "area": "holding", "address": 4184, "type": "uint16", "unit": "V", "access": "RW", "scale": 0.01, "description": "F10" }, { "name": "DC fan initial start voltage", "group": "DC fan", "area": "holding", "address": 4185, "type": "uint16", "unit": "V", "access": "RW", "scale": 0.01, "description": "F11" }, { "name": "DC fan start time", "group": "DC fan", "area": "holding", "address": 4186, "type": "uint16", "unit": "s", "access": "RW", "write_min": 2, "write_max": 180, "description": "F12" }, { "name": "RS485-1 role", "group": "Communication", "area": "holding", "address": 4238, "type": "uint16", "access": "RW", "enum": { "0": "Slave", "1": "Master" }, "description": "P00" }, { "name": "RS485-1 baud rate", "group": "Communication", "area": "holding", "address": 4239, "type": "uint16", "access": "RW", "enum": { "2": "4800", "3": "9600" }, "description": "P01" }, { "name": "RS485-1 protocol", "group": "Communication", "area": "holding", "address": 4240, "type": "uint16", "access": "RW", "enum": { "0": "LinkedGo 3.0", "3": "DC fan" }, "description": "P02" }, { "name": "RS485-1 slave ID", "group": "Communication", "area": "holding", "address": 4241, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 255, "description": "P03" }, { "name": "RS485-2 role", "group": "Communication", "area": "holding", "address": 4242, "type": "uint16", "access": "RW", "enum": { "0": "Slave", "1": "Master" }, "description": "P05" }, { "name": "RS485-2 baud rate", "group": "Communication", "area": "holding", "address": 4243, "type": "uint16", "access": "RW", "enum": { "2": "4800", "3": "9600" }, "description": "P06" }, { "name": "RS485-2 protocol", "group": "Communication", "area": "holding", "address": 4244, "type": "uint16", "access": "RW", "description": "P07: 11 = LinkedGo 3.0" }, { "name": "RS485-2 slave ID", "group": "Communication", "area": "holding", "address": 4246, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 255, "description": "P08" }, { "name": "Room temperature", "group": "Measurements", "area": "holding", "address": 8449, "type": "uint16", "unit": "°C", "access": "R", "scale": 0.1, "description": "O00" }, { "name": "Room humidity", "group": "Measurements", "area": "holding", "address": 8450, "type": "uint16", "unit": "%", "access": "R", "scale": 0.1, "description": "O01" }, { "name": "Temperature O02", "group": "Measurements", "area": "holding", "address": 8451, "type": "uint16", "unit": "°C", "access": "R", "scale": 0.1, "description": "O02; the manual does not name this value" }, { "name": "High speed relay", "group": "Status", "area": "holding", "address": 8464, "type": "bool", "bit": 0, "access": "R", "description": "1 = relay closed" }, { "name": "Medium speed relay", "group": "Status", "area": "holding", "address": 8464, "type": "bool", "bit": 1, "access": "R" }, { "name": "Low speed relay", "group": "Status", "area": "holding", "address": 8464, "type": "bool", "bit": 2, "access": "R" }, { "name": "Fan coil valve", "group": "Status", "area": "holding", "address": 8464, "type": "bool", "bit": 3, "access": "R" }, { "name": "Floor heating valve", "group": "Status", "area": "holding", "address": 8464, "type": "bool", "bit": 4, "access": "R" }, { "name": "Dry contact output", "group": "Status", "area": "holding", "address": 8464, "type": "bool", "bit": 5, "access": "R" }, { "name": "Room sensor failure", "group": "Status", "area": "holding", "address": 8474, "type": "bool", "bit": 0, "access": "R", "description": "Alarm E03" } ] }