{ "kind": "busloom-device-definition", "schemaVersion": 1, "id": "waveshare.modbus-rtu-io-8ch", "name": "Waveshare Modbus RTU IO 8CH", "description": "Official digital I/O and output-control-mode map for the Waveshare Modbus RTU IO 8CH RS485 module. Coils 0–7 control outputs, discrete inputs 0–7 report isolated inputs, and holding registers 0x1000–0x1007 expose output modes.", "tagGroups": [ { "id": "waveshare.io8.group.outputs", "name": "Digital outputs", "color": "orange" }, { "id": "waveshare.io8.group.inputs", "name": "Digital inputs", "color": "green" }, { "id": "waveshare.io8.group.modes", "name": "Output control modes", "color": "blue" }, { "id": "waveshare.io8.group.device", "name": "Device information", "color": "neutral" } ], "tags": [ { "id": "waveshare.io8.coil.000.output-1", "name": "Output 1", "addressSpace": "coils", "address": 0, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Read with FC01; control with FC05 or FC15.", "groupId": "waveshare.io8.group.outputs" }, { "id": "waveshare.io8.coil.001.output-2", "name": "Output 2", "addressSpace": "coils", "address": 1, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Read with FC01; control with FC05 or FC15.", "groupId": "waveshare.io8.group.outputs" }, { "id": "waveshare.io8.coil.002.output-3", "name": "Output 3", "addressSpace": "coils", "address": 2, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Read with FC01; control with FC05 or FC15.", "groupId": "waveshare.io8.group.outputs" }, { "id": "waveshare.io8.coil.003.output-4", "name": "Output 4", "addressSpace": "coils", "address": 3, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Read with FC01; control with FC05 or FC15.", "groupId": "waveshare.io8.group.outputs" }, { "id": "waveshare.io8.coil.004.output-5", "name": "Output 5", "addressSpace": "coils", "address": 4, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Read with FC01; control with FC05 or FC15.", "groupId": "waveshare.io8.group.outputs" }, { "id": "waveshare.io8.coil.005.output-6", "name": "Output 6", "addressSpace": "coils", "address": 5, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Read with FC01; control with FC05 or FC15.", "groupId": "waveshare.io8.group.outputs" }, { "id": "waveshare.io8.coil.006.output-7", "name": "Output 7", "addressSpace": "coils", "address": 6, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Read with FC01; control with FC05 or FC15.", "groupId": "waveshare.io8.group.outputs" }, { "id": "waveshare.io8.coil.007.output-8", "name": "Output 8", "addressSpace": "coils", "address": 7, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Read with FC01; control with FC05 or FC15.", "groupId": "waveshare.io8.group.outputs" }, { "id": "waveshare.io8.discrete.000.input-1", "name": "Input 1", "addressSpace": "discreteInputs", "address": 0, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "TRIGGERED", "falseLabel": "IDLE", "alarms": [], "unit": "", "description": "Isolated digital input status read with FC02.", "groupId": "waveshare.io8.group.inputs" }, { "id": "waveshare.io8.discrete.001.input-2", "name": "Input 2", "addressSpace": "discreteInputs", "address": 1, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "TRIGGERED", "falseLabel": "IDLE", "alarms": [], "unit": "", "description": "Isolated digital input status read with FC02.", "groupId": "waveshare.io8.group.inputs" }, { "id": "waveshare.io8.discrete.002.input-3", "name": "Input 3", "addressSpace": "discreteInputs", "address": 2, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "TRIGGERED", "falseLabel": "IDLE", "alarms": [], "unit": "", "description": "Isolated digital input status read with FC02.", "groupId": "waveshare.io8.group.inputs" }, { "id": "waveshare.io8.discrete.003.input-4", "name": "Input 4", "addressSpace": "discreteInputs", "address": 3, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "TRIGGERED", "falseLabel": "IDLE", "alarms": [], "unit": "", "description": "Isolated digital input status read with FC02.", "groupId": "waveshare.io8.group.inputs" }, { "id": "waveshare.io8.discrete.004.input-5", "name": "Input 5", "addressSpace": "discreteInputs", "address": 4, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "TRIGGERED", "falseLabel": "IDLE", "alarms": [], "unit": "", "description": "Isolated digital input status read with FC02.", "groupId": "waveshare.io8.group.inputs" }, { "id": "waveshare.io8.discrete.005.input-6", "name": "Input 6", "addressSpace": "discreteInputs", "address": 5, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "TRIGGERED", "falseLabel": "IDLE", "alarms": [], "unit": "", "description": "Isolated digital input status read with FC02.", "groupId": "waveshare.io8.group.inputs" }, { "id": "waveshare.io8.discrete.006.input-7", "name": "Input 7", "addressSpace": "discreteInputs", "address": 6, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "TRIGGERED", "falseLabel": "IDLE", "alarms": [], "unit": "", "description": "Isolated digital input status read with FC02.", "groupId": "waveshare.io8.group.inputs" }, { "id": "waveshare.io8.discrete.007.input-8", "name": "Input 8", "addressSpace": "discreteInputs", "address": 7, "dataType": "boolean", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": null, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "TRIGGERED", "falseLabel": "IDLE", "alarms": [], "unit": "", "description": "Isolated digital input status read with FC02.", "groupId": "waveshare.io8.group.inputs" }, { "id": "waveshare.io8.holding.4096.mode-1", "name": "Output 1 control mode", "addressSpace": "holdingRegisters", "address": 4096, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": 0, "minimum": 0, "maximum": 3, "valueLabels": [{"value":0,"label":"Normal"},{"value":1,"label":"Linkage"},{"value":2,"label":"Toggle"},{"value":3,"label":"Edge trigger"}], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Output channel 1 operating mode.", "groupId": "waveshare.io8.group.modes" }, { "id": "waveshare.io8.holding.4097.mode-2", "name": "Output 2 control mode", "addressSpace": "holdingRegisters", "address": 4097, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": 0, "minimum": 0, "maximum": 3, "valueLabels": [{"value":0,"label":"Normal"},{"value":1,"label":"Linkage"},{"value":2,"label":"Toggle"},{"value":3,"label":"Edge trigger"}], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Output channel 2 operating mode.", "groupId": "waveshare.io8.group.modes" }, { "id": "waveshare.io8.holding.4098.mode-3", "name": "Output 3 control mode", "addressSpace": "holdingRegisters", "address": 4098, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": 0, "minimum": 0, "maximum": 3, "valueLabels": [{"value":0,"label":"Normal"},{"value":1,"label":"Linkage"},{"value":2,"label":"Toggle"},{"value":3,"label":"Edge trigger"}], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Output channel 3 operating mode.", "groupId": "waveshare.io8.group.modes" }, { "id": "waveshare.io8.holding.4099.mode-4", "name": "Output 4 control mode", "addressSpace": "holdingRegisters", "address": 4099, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": 0, "minimum": 0, "maximum": 3, "valueLabels": [{"value":0,"label":"Normal"},{"value":1,"label":"Linkage"},{"value":2,"label":"Toggle"},{"value":3,"label":"Edge trigger"}], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Output channel 4 operating mode.", "groupId": "waveshare.io8.group.modes" }, { "id": "waveshare.io8.holding.4100.mode-5", "name": "Output 5 control mode", "addressSpace": "holdingRegisters", "address": 4100, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": 0, "minimum": 0, "maximum": 3, "valueLabels": [{"value":0,"label":"Normal"},{"value":1,"label":"Linkage"},{"value":2,"label":"Toggle"},{"value":3,"label":"Edge trigger"}], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Output channel 5 operating mode.", "groupId": "waveshare.io8.group.modes" }, { "id": "waveshare.io8.holding.4101.mode-6", "name": "Output 6 control mode", "addressSpace": "holdingRegisters", "address": 4101, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": 0, "minimum": 0, "maximum": 3, "valueLabels": [{"value":0,"label":"Normal"},{"value":1,"label":"Linkage"},{"value":2,"label":"Toggle"},{"value":3,"label":"Edge trigger"}], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Output channel 6 operating mode.", "groupId": "waveshare.io8.group.modes" }, { "id": "waveshare.io8.holding.4102.mode-7", "name": "Output 7 control mode", "addressSpace": "holdingRegisters", "address": 4102, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": 0, "minimum": 0, "maximum": 3, "valueLabels": [{"value":0,"label":"Normal"},{"value":1,"label":"Linkage"},{"value":2,"label":"Toggle"},{"value":3,"label":"Edge trigger"}], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Output channel 7 operating mode.", "groupId": "waveshare.io8.group.modes" }, { "id": "waveshare.io8.holding.4103.mode-8", "name": "Output 8 control mode", "addressSpace": "holdingRegisters", "address": 4103, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": 0, "minimum": 0, "maximum": 3, "valueLabels": [{"value":0,"label":"Normal"},{"value":1,"label":"Linkage"},{"value":2,"label":"Toggle"},{"value":3,"label":"Edge trigger"}], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Output channel 8 operating mode.", "groupId": "waveshare.io8.group.modes" }, { "id": "waveshare.io8.holding.16384.device-address", "name": "Device address", "addressSpace": "holdingRegisters", "address": 16384, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 1, "offset": 0, "displayDecimals": 0, "minimum": 1, "maximum": 255, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Configured Modbus device address.", "groupId": "waveshare.io8.group.device" }, { "id": "waveshare.io8.holding.32768.software-version", "name": "Software version", "addressSpace": "holdingRegisters", "address": 32768, "dataType": "uint16", "notation": "decimal", "registerCount": 1, "byteOrder": "bigEndian", "wordOrder": "mostSignificantFirst", "scale": 0.01, "offset": 0, "displayDecimals": 2, "minimum": null, "maximum": null, "valueLabels": [], "trueLabel": "ON", "falseLabel": "OFF", "alarms": [], "unit": "", "description": "Raw integer scaled by 0.01; 100 represents version 1.00.", "groupId": "waveshare.io8.group.device" } ], "views": [ { "id": "waveshare.io8.view.outputs", "name": "Digital outputs", "type": "coils", "addressMode": "range", "startAddress": 0, "quantity": 8, "addresses": [], "pollIntervalMs": 500 }, { "id": "waveshare.io8.view.inputs", "name": "Digital inputs", "type": "discreteInputs", "addressMode": "range", "startAddress": 0, "quantity": 8, "addresses": [], "pollIntervalMs": 500 }, { "id": "waveshare.io8.view.modes", "name": "Output control modes", "type": "holdingRegisters", "addressMode": "range", "startAddress": 4096, "quantity": 8, "addresses": [], "pollIntervalMs": 1000 }, { "id": "waveshare.io8.view.device", "name": "Device information", "type": "holdingRegisters", "addressMode": "custom", "startAddress": 16384, "quantity": 1, "addresses": [16384, 32768], "pollIntervalMs": 5000 } ] }