{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Unipi Technology", "model": "UniPi Lite", "models": ["Unipi Lite", "UniPi Lite"], "vendor_website": "www.unipi.technology", "description": "Unipi Lite controller: 6 digital inputs, 6 relay outputs", "revision": 3, "revised": "2026-11-10", "source": "unipi-lite-modbus-map.xlsx, Unipi knowledge base page https://kb.unipi.technology/en:hw:04-extensions:downloads", "sources": [ {"title": "Unipi Lite Modbus map (unipi-lite-modbus-map.xlsx)", "url": "https://kb.unipi.technology/_media/files:products:unipi1:unipi-lite-modbus-map.xlsx", "note": "Sheets Registers, Coils and Description; listed on https://kb.unipi.technology/en:hw:04-extensions:downloads"} ], "notes": [ "Configuration is not permanently saved: the Description sheet states it is set on each power-on. Defaults: counters 0, debounce 0 ms, outputs OFF.", "Multi-register values (counters, floats) are taken as big-endian (most significant register first), as in the other Unipi maps; the spreadsheet only says bit 0 is the LSB and bit 15 the MSB.", "The spreadsheet does not state the transport or default unit id, so the format defaults (tcp+rtu, unit 1) are kept.", "Coils repeat the relay outputs that also appear as bits of holding register 1." ], "byte_order": "big", "word_order": "big", "address_base": 0, "x_status": "official", "registers": [ {"name": "Digital Input 1", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 0}, {"name": "Digital Input 2", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 1}, {"name": "Digital Input 3", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 2}, {"name": "Digital Input 4", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 3}, {"name": "Digital Input 5", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 4}, {"name": "Digital Input 6", "group": "Digital inputs", "area": "holding", "address": 0, "type": "bool", "bit": 5}, {"name": "Relay Output 1", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 0, "access": "RW"}, {"name": "Relay Output 2", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 1, "access": "RW"}, {"name": "Relay Output 3", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 2, "access": "RW"}, {"name": "Relay Output 4", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 3, "access": "RW"}, {"name": "Relay Output 5", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 4, "access": "RW"}, {"name": "Relay Output 6", "group": "Relay outputs", "area": "holding", "address": 1, "type": "bool", "bit": 5, "access": "RW"}, {"name": "Counter of Digital Input 1", "group": "Counters", "area": "holding", "address": 2, "type": "uint32", "access": "RW"}, {"name": "Counter of Digital Input 2", "group": "Counters", "area": "holding", "address": 4, "type": "uint32", "access": "RW"}, {"name": "Counter of Digital Input 3", "group": "Counters", "area": "holding", "address": 6, "type": "uint32", "access": "RW"}, {"name": "Counter of Digital Input 4", "group": "Counters", "area": "holding", "address": 8, "type": "uint32", "access": "RW"}, {"name": "Counter of Digital Input 5", "group": "Counters", "area": "holding", "address": 10, "type": "uint32", "access": "RW"}, {"name": "Counter of Digital Input 6", "group": "Counters", "area": "holding", "address": 12, "type": "uint32", "access": "RW"}, {"name": "Debounce time (in 100us) for DI 1", "group": "Debounce", "area": "holding", "address": 1010, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"}, {"name": "Debounce time (in 100us) for DI 2", "group": "Debounce", "area": "holding", "address": 1011, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"}, {"name": "Debounce time (in 100us) for DI 3", "group": "Debounce", "area": "holding", "address": 1012, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"}, {"name": "Debounce time (in 100us) for DI 4", "group": "Debounce", "area": "holding", "address": 1013, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"}, {"name": "Debounce time (in 100us) for DI 5", "group": "Debounce", "area": "holding", "address": 1014, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"}, {"name": "Debounce time (in 100us) for DI 6", "group": "Debounce", "area": "holding", "address": 1015, "type": "uint16", "access": "RW", "scale": 100, "unit": "µs"}, {"name": "Relay Output 1 (coil)", "group": "Relay outputs", "area": "coil", "address": 0, "type": "bool", "access": "RW"}, {"name": "Relay Output 2 (coil)", "group": "Relay outputs", "area": "coil", "address": 1, "type": "bool", "access": "RW"}, {"name": "Relay Output 3 (coil)", "group": "Relay outputs", "area": "coil", "address": 2, "type": "bool", "access": "RW"}, {"name": "Relay Output 4 (coil)", "group": "Relay outputs", "area": "coil", "address": 3, "type": "bool", "access": "RW"}, {"name": "Relay Output 5 (coil)", "group": "Relay outputs", "area": "coil", "address": 4, "type": "bool", "access": "RW"}, {"name": "Relay Output 6 (coil)", "group": "Relay outputs", "area": "coil", "address": 5, "type": "bool", "access": "RW"} ] }