{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "LaskaKit",
  "model": "8-CH RS485 Relay",
  "models": ["8-CH RS485 Relay"],
  "vendor_website": "laskakit.cz",
  "description": "8-channel RS485 relay module, Modbus RTU. FC06 write to addresses 1-8 to control individual relays (0x0001=open,0x0002=close,0x0003=toggle,0x0004=latch,0x0005=momentary 1s,0x06AA=delay AA s). FC06 write to address 0 for broadcast (0x0007=open all,0x0008=close all). FC03 read addresses 1-8: 0x0001=open, 0x0000=close.",
  "revision": 2,
  "source": "Omni Console device library (OmniCoreST), modbus-library/laskakit-8ch-rs485-relay.toml; Source: laskakit-8ch-rs485-relay-modbus-commands.pdf. Not verified against the manufacturer's documentation",
  "notes": [
    "LaskaKit 8-CH RS485 Relay.",
    "Converted automatically from the Omni Console device library (OmniCoreST).",
    "Not verified against the manufacturer's documentation.",
    "Corrections are welcome (CONTRIBUTING.md). Change x_status once this table has been checked against the manual.",
    "| LaskaKit 8-Channel Rail RS485 Relay Module",
    "|",
    "| Source: laskakit-8ch-rs485-relay-modbus-commands.pdf",
    "| Protocol: Modbus RTU RS-485; default 9600 baud, 8N1 (selectable via M1/M2 pads)",
    "| Slave ID: set via DIP switches A0-A5 (1-63); default varies by assembly",
    "| FC06: Write Single Register — relay control",
    "| FC03: Read Holding Registers — relay state",
    "|",
    "| Addresses 1-8 correspond to channels 1-8 (1-based PDU addressing).",
    "| Address 0 is a broadcast-only write address (no FC03 read).",
    "|",
    "| FC06 command codes (data word):",
    "| 0x0001 = Open (energise)",
    "| 0x0002 = Close (de-energise)"
  ],
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "unofficial",
  "x_origin": "omniconsole",
  "registers": [
    {"name": "Broadcast command (WO: 0x0007=open all 0x0008=close all)", "area": "holding", "address": 0, "type": "uint16", "access": "R"},
    {"name": "Channel 1 relay (R: 0x0001=open 0x0000=close; W: see FC06 commands)", "area": "holding", "address": 1, "type": "uint16", "access": "R"},
    {"name": "Channel 2 relay (R: 0x0001=open 0x0000=close; W: see FC06 commands)", "area": "holding", "address": 2, "type": "uint16", "access": "R"},
    {"name": "Channel 3 relay (R: 0x0001=open 0x0000=close; W: see FC06 commands)", "area": "holding", "address": 3, "type": "uint16", "access": "R"},
    {"name": "Channel 4 relay (R: 0x0001=open 0x0000=close; W: see FC06 commands)", "area": "holding", "address": 4, "type": "uint16", "access": "R"},
    {"name": "Channel 5 relay (R: 0x0001=open 0x0000=close; W: see FC06 commands)", "area": "holding", "address": 5, "type": "uint16", "access": "R"},
    {"name": "Channel 6 relay (R: 0x0001=open 0x0000=close; W: see FC06 commands)", "area": "holding", "address": 6, "type": "uint16", "access": "R"},
    {"name": "Channel 7 relay (R: 0x0001=open 0x0000=close; W: see FC06 commands)", "area": "holding", "address": 7, "type": "uint16", "access": "R"},
    {"name": "Channel 8 relay (R: 0x0001=open 0x0000=close; W: see FC06 commands)", "area": "holding", "address": 8, "type": "uint16", "access": "R"}
  ]
}
