MANUFACTURING / INTEGRATION / AUTOMATION
LIVE TOOL

ISA-95 and UNS topic designer

Lay out an ISA-95 equipment hierarchy (enterprise, site, area, line, cell, assets), turn the names into MQTT topic levels with your naming rules, generate the Unified Namespace topics from tag templates, test wildcard subscriptions, and map the tree to Sparkplug B group, edge node and device IDs. Export JSON, CSV or a plain topic list. It does not connect to any broker.

Part

Topic designer only: nothing here connects to an MQTT broker or publishes anything. The ISA-95 level names are recalled from ISA-95 / IEC 62264-1 and ISA-88 (unverified: the standards were not read here); the Sparkplug B rules follow the Eclipse Sparkplug Specification 3.0.0.

Hierarchy

Example dataAn illustrative factory: replace with your own hierarchy
ENTExample Electronicsexample-electronics, Enterprise, topic level example-electronics
SITENordwerknordwerk, Site, topic level nordwerk
AREASMTsmt, Area, topic level smt
LINESMT Line 1smt-line-1, Production line, topic level smt-line-1
CELLPrinterprinter, Work cell, topic level printer
CELLSPIspi, Work cell, topic level spi
CELLPlacementplacement, Work cell, topic level placement
ASSETChip shooterchip-shooter, Asset / equipment, topic level chip-shooter
ASSETMulti-function placermulti-function-placer, Asset / equipment, topic level multi-function-placer
CELLReflowreflow, Work cell, topic level reflow
CELLAOIaoi, Work cell, topic level aoi
LINESMT Line 2smt-line-2, Production line, topic level smt-line-2
CELLPrinterprinter, Work cell, topic level printer
CELLSPIspi, Work cell, topic level spi
CELLPlacementplacement, Work cell, topic level placement
CELLReflowreflow, Work cell, topic level reflow
CELLAOIaoi, Work cell, topic level aoi
AREAWarehousewarehouse, Area, topic level warehouse
ZONEComponent storecomponent-store, Storage zone, topic level component-store
SUNITDry cabinet 1dry-cabinet-1, Storage unit, topic level dry-cabinet-1
SUNITReel towerreel-tower, Storage unit, topic level reel-tower
SITESüdwerksudwerk, Site, topic level sudwerk
AREASMTsmt, Area, topic level smt
LINESMT Line 1smt-line-1, Production line, topic level smt-line-1
CELLPrinterprinter, Work cell, topic level printer
CELLSPIspi, Work cell, topic level spi
CELLPlacementplacement, Work cell, topic level placement
CELLReflowreflow, Work cell, topic level reflow
CELLAOIaoi, Work cell, topic level aoi

Keyboard
  • ↑ ↓ select, → open or go in, ← close or go out, Home End first and last
  • Enter or F2 edit the name; in a field Enter or Esc returns to the tree
  • Insert add a sibling, Ctrl+Enter or Shift+Insert add a child, Delete delete with its branch
  • Alt+↑ ↓ move among siblings, Ctrl+D duplicate the branch, Ctrl+Z undo, Ctrl+Y redo

Runs in this browser. Data is not uploaded or stored.

Selected node

Example Electronics

example-electronics · 1 topic: _meta

    29Nodes
    90UNS topics
    0Errors
    0Warnings

    No problems: every level is a valid MQTT topic level and no topic repeats.

    Types after the ISA-95 role-based equipment hierarchy (IEC 62264-1): Enterprise → Site → Area → work centers (Production line, Process cell, Production unit, Storage zone) → work units (Work cell, Unit, Storage unit); ISA-88 equipment and control modules and free assets below. unverified names recalled, not read in the standards.

    Import a hierarchy

    Paste, open a CSV, TSV, TXT or XLSX file (up to 20 MB), or drop it on the field. Files are read in this browser only.

    Enterprise, Site, Area, Line, Cell, Asset
    Example Electronics, Nordwerk, SMT, SMT Line 1, Printer, 
    Example Electronics, Nordwerk, SMT, SMT Line 1, Placement, Chip shooter
    Columns
    1 row = 1 leaf path
    Enterprise: Example Electronics
      Site: Nordwerk
        Area: SMT
          Production line: SMT Line 1
            Work cell: Printer
            Work cell: AOI
    Indented text
    2 spaces or a tab per level

    What will be imported

    Paste rows (Enterprise, Site, Area, Line, Cell, Asset) or indented text, or open a file.

      • Columns: a header row names the levels (Enterprise, Site, Area, Line, Cell, Asset; also Plant, Process cell, Production unit, Storage zone, Work cell, Unit, Storage unit, Equipment module, Control module, Machine, Asset 2 …). Without a header the columns are read in that order. Tab, “;” or “,” between cells; quotes as in CSV. An empty cell in the middle skips that level.
      • Indented text: two spaces (or a tab) per level, an optional bullet (“-”, “*”, “•”), and an optional type before a colon (“Process cell: Brewhouse”); without one a node gets its parent's usual child type.
      • Nodes are matched by name under the same parent: repeated paths add nothing, and “Add to the hierarchy” extends what is there. Excel files open on their first sheet; choose the sheet and columns above.

      Naming rules

      Order: Unicode NFC and outer spaces removed, then lower case, then ASCII (letters spelled without accents; anything but A–Z, 0–9, “-” and “_” becomes a space), then spaces → the separator, repeated separators collapsed and trimmed. Without “ASCII only” the name keeps every character, so “/”, “+”, “#” or a leading “$” are reported instead of replaced.

      Type a name to see its topic level.

      Names and topic levels

      29 of 29Names changed by the rules
      0Errors
      0Warnings
      21Longest level
      Names and topic levels (29)
      NodeTypeTopic levelCheck
      Example ElectronicsEnterpriseexample-electronicsOK
      Example Electronics / NordwerkSitenordwerkOK
      Example Electronics / Nordwerk / SMTAreasmtOK
      Example Electronics / Nordwerk / SMT / SMT Line 1Production linesmt-line-1OK
      Example Electronics / Nordwerk / SMT / SMT Line 1 / PrinterWork cellprinterOK
      Example Electronics / Nordwerk / SMT / SMT Line 1 / SPIWork cellspiOK
      Example Electronics / Nordwerk / SMT / SMT Line 1 / PlacementWork cellplacementOK
      Example Electronics / Nordwerk / SMT / SMT Line 1 / Placement / Chip shooterAsset / equipmentchip-shooterOK
      Example Electronics / Nordwerk / SMT / SMT Line 1 / Placement / Multi-function placerAsset / equipmentmulti-function-placerOK
      Example Electronics / Nordwerk / SMT / SMT Line 1 / ReflowWork cellreflowOK
      Example Electronics / Nordwerk / SMT / SMT Line 1 / AOIWork cellaoiOK
      Example Electronics / Nordwerk / SMT / SMT Line 2Production linesmt-line-2OK
      Example Electronics / Nordwerk / SMT / SMT Line 2 / PrinterWork cellprinterOK
      Example Electronics / Nordwerk / SMT / SMT Line 2 / SPIWork cellspiOK
      Example Electronics / Nordwerk / SMT / SMT Line 2 / PlacementWork cellplacementOK
      Example Electronics / Nordwerk / SMT / SMT Line 2 / ReflowWork cellreflowOK
      Example Electronics / Nordwerk / SMT / SMT Line 2 / AOIWork cellaoiOK
      Example Electronics / Nordwerk / WarehouseAreawarehouseOK
      Example Electronics / Nordwerk / Warehouse / Component storeStorage zonecomponent-storeOK
      Example Electronics / Nordwerk / Warehouse / Component store / Dry cabinet 1Storage unitdry-cabinet-1OK
      Example Electronics / Nordwerk / Warehouse / Component store / Reel towerStorage unitreel-towerOK
      Example Electronics / SüdwerkSitesudwerkOK
      Example Electronics / Südwerk / SMTAreasmtOK
      Example Electronics / Südwerk / SMT / SMT Line 1Production linesmt-line-1OK
      Example Electronics / Südwerk / SMT / SMT Line 1 / PrinterWork cellprinterOK
      Example Electronics / Südwerk / SMT / SMT Line 1 / SPIWork cellspiOK
      Example Electronics / Südwerk / SMT / SMT Line 1 / PlacementWork cellplacementOK
      Example Electronics / Südwerk / SMT / SMT Line 1 / ReflowWork cellreflowOK
      Example Electronics / Südwerk / SMT / SMT Line 1 / AOIWork cellaoiOK

      MQTT topic levels may hold any UTF-8 character except the null character; “/” separates levels, “+” and “#” are wildcards and cannot appear in a topic, a topic starting with “$” is the broker’s, and a topic is at most 65535 bytes. Two children of one parent with the same level would share their topics: an error.

      Namespaces and tag templates

      Every node gets the tags of its type’s section, of its class (Template class in the Hierarchy part) and its own tags: topic = node path / namespace / tag. A line with only a namespace (“_meta”) gives the node’s own topic in that namespace.

        Unified Namespace topics

        90Topics
        29Nodes with topics
        93 BLongest topic
        8Most levels

        example-electronics/+/smt/+/+/telemetry/# receives 24 of 90 topics.

        + matches exactly one level (a/+/c receives a/b/c, not a/b/x/c); # matches any number of levels, including none, and must be last (a/# receives a, a/b and a/b/c). Neither matches a first level starting with “$” ($SYS/… needs a subscription that names it).

        Subscriptions for this hierarchy
        SubscriptionReceivesTopics
        everything under Example Electronics90
        everything of a production line “smt-line-1” in any area of Nordwerk (“+” stands for one level)29
        the “state” topics of every child of SMT Line 1, one level down5
        “state/mode” of every node at the depth of SMT Line 1 (each “+” is one level)3
        every topic, except those starting with “$”90
        the broker’s own statistics: “#” alone never matches topics starting with “$”0
        Topics received by example-electronics/+/smt/+/+/telemetry/# (24 of 90)
        TopicNode typeNamespaceTagBytes
        example-electronics/nordwerk/smt/smt-line-1/printer/telemetry/cycle-timeWork celltelemetrycycle-time72
        example-electronics/nordwerk/smt/smt-line-1/printer/telemetry/squeegee-pressureWork celltelemetrysqueegee-pressure79
        example-electronics/nordwerk/smt/smt-line-1/spi/telemetry/cycle-timeWork celltelemetrycycle-time68
        example-electronics/nordwerk/smt/smt-line-1/placement/telemetry/cycle-timeWork celltelemetrycycle-time74
        example-electronics/nordwerk/smt/smt-line-1/reflow/telemetry/cycle-timeWork celltelemetrycycle-time71
        example-electronics/nordwerk/smt/smt-line-1/reflow/telemetry/zone-temperatureWork celltelemetryzone-temperature77
        example-electronics/nordwerk/smt/smt-line-1/reflow/telemetry/conveyor-speedWork celltelemetryconveyor-speed75
        example-electronics/nordwerk/smt/smt-line-1/aoi/telemetry/cycle-timeWork celltelemetrycycle-time68
        example-electronics/nordwerk/smt/smt-line-2/printer/telemetry/cycle-timeWork celltelemetrycycle-time72
        example-electronics/nordwerk/smt/smt-line-2/printer/telemetry/squeegee-pressureWork celltelemetrysqueegee-pressure79
        example-electronics/nordwerk/smt/smt-line-2/spi/telemetry/cycle-timeWork celltelemetrycycle-time68
        example-electronics/nordwerk/smt/smt-line-2/placement/telemetry/cycle-timeWork celltelemetrycycle-time74
        example-electronics/nordwerk/smt/smt-line-2/reflow/telemetry/cycle-timeWork celltelemetrycycle-time71
        example-electronics/nordwerk/smt/smt-line-2/reflow/telemetry/zone-temperatureWork celltelemetryzone-temperature77
        example-electronics/nordwerk/smt/smt-line-2/reflow/telemetry/conveyor-speedWork celltelemetryconveyor-speed75
        example-electronics/nordwerk/smt/smt-line-2/aoi/telemetry/cycle-timeWork celltelemetrycycle-time68
        example-electronics/sudwerk/smt/smt-line-1/printer/telemetry/cycle-timeWork celltelemetrycycle-time71
        example-electronics/sudwerk/smt/smt-line-1/printer/telemetry/squeegee-pressureWork celltelemetrysqueegee-pressure78
        example-electronics/sudwerk/smt/smt-line-1/spi/telemetry/cycle-timeWork celltelemetrycycle-time67
        example-electronics/sudwerk/smt/smt-line-1/placement/telemetry/cycle-timeWork celltelemetrycycle-time73
        example-electronics/sudwerk/smt/smt-line-1/reflow/telemetry/cycle-timeWork celltelemetrycycle-time70
        example-electronics/sudwerk/smt/smt-line-1/reflow/telemetry/zone-temperatureWork celltelemetryzone-temperature76
        example-electronics/sudwerk/smt/smt-line-1/reflow/telemetry/conveyor-speedWork celltelemetryconveyor-speed74
        example-electronics/sudwerk/smt/smt-line-1/aoi/telemetry/cycle-timeWork celltelemetrycycle-time67

        Sparkplug B mapping

        Topic form: spBv1.0/group_id/message_type/edge_node_id[/device_id]; STATE: spBv1.0/STATE/host_id. IDs are UTF-8 without “+”, “/” and “#”; group + edge node must be unique, a device unique under its edge node. Levels below the device (or below the edge node without devices) become folders of the metric name (“placer-1/state/status”). The mapping itself is FactoKit’s; the topic rules are the specification’s.

        Sparkplug B topics

        4Edge nodes
        17Devices
        84Metrics
        6UNS topics not mapped
          What each ISA-95 level becomes in Sparkplug B
          LevelThis mappingPreset 1Preset 2Preset 3Preset 4
          Enterprisedropped (not in the topic)dropped (not in the topic)folded into the group IDdropped (not in the topic)group_id
          Sitegroup_idgroup_idfolded into the group IDgroup_idedge_node_id
          Areafolded into the edge node IDfolded into the edge node IDgroup_idedge_node_idfolded into the device ID
          Work centeredge_node_idedge_node_idedge_node_iddevice_iddevice_id
          Work unitdevice_iddevice_iddevice_idmetric name foldermetric name folder
          Equipmentmetric name foldermetric name foldermetric name foldermetric name foldermetric name folder
          1. Group = site, edge node = line, device = cell
          2. Group = area (enterprise and site folded in), edge node = line, device = cell
          3. Group = site, edge node = area, device = line (cells become metric folders)
          4. Group = enterprise, edge node = site, device = line (area folded into the device ID)
          Sparkplug B topics (85)
          TopicMessageQoSRetainNode
          spBv1.0/STATE/mesSTATE1trueHost application
          spBv1.0/nordwerk/NBIRTH/smt_smt-line-1NBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 1
          spBv1.0/nordwerk/NDEATH/smt_smt-line-1NDEATH1falseExample Electronics / Nordwerk / SMT / SMT Line 1
          spBv1.0/nordwerk/NDATA/smt_smt-line-1NDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 1
          spBv1.0/nordwerk/NCMD/smt_smt-line-1NCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 1
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-1/printerDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Printer
          spBv1.0/nordwerk/DDEATH/smt_smt-line-1/printerDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Printer
          spBv1.0/nordwerk/DDATA/smt_smt-line-1/printerDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Printer
          spBv1.0/nordwerk/DCMD/smt_smt-line-1/printerDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Printer
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-1/spiDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / SPI
          spBv1.0/nordwerk/DDEATH/smt_smt-line-1/spiDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / SPI
          spBv1.0/nordwerk/DDATA/smt_smt-line-1/spiDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / SPI
          spBv1.0/nordwerk/DCMD/smt_smt-line-1/spiDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / SPI
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-1/placementDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Placement
          spBv1.0/nordwerk/DDEATH/smt_smt-line-1/placementDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Placement
          spBv1.0/nordwerk/DDATA/smt_smt-line-1/placementDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Placement
          spBv1.0/nordwerk/DCMD/smt_smt-line-1/placementDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Placement
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-1/reflowDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Reflow
          spBv1.0/nordwerk/DDEATH/smt_smt-line-1/reflowDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Reflow
          spBv1.0/nordwerk/DDATA/smt_smt-line-1/reflowDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Reflow
          spBv1.0/nordwerk/DCMD/smt_smt-line-1/reflowDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / Reflow
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-1/aoiDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / AOI
          spBv1.0/nordwerk/DDEATH/smt_smt-line-1/aoiDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / AOI
          spBv1.0/nordwerk/DDATA/smt_smt-line-1/aoiDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / AOI
          spBv1.0/nordwerk/DCMD/smt_smt-line-1/aoiDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 1 / AOI
          spBv1.0/nordwerk/NBIRTH/smt_smt-line-2NBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 2
          spBv1.0/nordwerk/NDEATH/smt_smt-line-2NDEATH1falseExample Electronics / Nordwerk / SMT / SMT Line 2
          spBv1.0/nordwerk/NDATA/smt_smt-line-2NDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 2
          spBv1.0/nordwerk/NCMD/smt_smt-line-2NCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 2
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-2/printerDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Printer
          spBv1.0/nordwerk/DDEATH/smt_smt-line-2/printerDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Printer
          spBv1.0/nordwerk/DDATA/smt_smt-line-2/printerDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Printer
          spBv1.0/nordwerk/DCMD/smt_smt-line-2/printerDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Printer
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-2/spiDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / SPI
          spBv1.0/nordwerk/DDEATH/smt_smt-line-2/spiDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / SPI
          spBv1.0/nordwerk/DDATA/smt_smt-line-2/spiDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / SPI
          spBv1.0/nordwerk/DCMD/smt_smt-line-2/spiDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / SPI
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-2/placementDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Placement
          spBv1.0/nordwerk/DDEATH/smt_smt-line-2/placementDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Placement
          spBv1.0/nordwerk/DDATA/smt_smt-line-2/placementDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Placement
          spBv1.0/nordwerk/DCMD/smt_smt-line-2/placementDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Placement
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-2/reflowDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Reflow
          spBv1.0/nordwerk/DDEATH/smt_smt-line-2/reflowDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Reflow
          spBv1.0/nordwerk/DDATA/smt_smt-line-2/reflowDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Reflow
          spBv1.0/nordwerk/DCMD/smt_smt-line-2/reflowDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / Reflow
          spBv1.0/nordwerk/DBIRTH/smt_smt-line-2/aoiDBIRTH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / AOI
          spBv1.0/nordwerk/DDEATH/smt_smt-line-2/aoiDDEATH0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / AOI
          spBv1.0/nordwerk/DDATA/smt_smt-line-2/aoiDDATA0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / AOI
          spBv1.0/nordwerk/DCMD/smt_smt-line-2/aoiDCMD0falseExample Electronics / Nordwerk / SMT / SMT Line 2 / AOI
          spBv1.0/nordwerk/NBIRTH/warehouse_component-storeNBIRTH0falseExample Electronics / Nordwerk / Warehouse / Component store
          spBv1.0/nordwerk/NDEATH/warehouse_component-storeNDEATH1falseExample Electronics / Nordwerk / Warehouse / Component store
          spBv1.0/nordwerk/NDATA/warehouse_component-storeNDATA0falseExample Electronics / Nordwerk / Warehouse / Component store
          spBv1.0/nordwerk/NCMD/warehouse_component-storeNCMD0falseExample Electronics / Nordwerk / Warehouse / Component store
          spBv1.0/nordwerk/DBIRTH/warehouse_component-store/dry-cabinet-1DBIRTH0falseExample Electronics / Nordwerk / Warehouse / Component store / Dry cabinet 1
          spBv1.0/nordwerk/DDEATH/warehouse_component-store/dry-cabinet-1DDEATH0falseExample Electronics / Nordwerk / Warehouse / Component store / Dry cabinet 1
          spBv1.0/nordwerk/DDATA/warehouse_component-store/dry-cabinet-1DDATA0falseExample Electronics / Nordwerk / Warehouse / Component store / Dry cabinet 1
          spBv1.0/nordwerk/DCMD/warehouse_component-store/dry-cabinet-1DCMD0falseExample Electronics / Nordwerk / Warehouse / Component store / Dry cabinet 1
          spBv1.0/nordwerk/DBIRTH/warehouse_component-store/reel-towerDBIRTH0falseExample Electronics / Nordwerk / Warehouse / Component store / Reel tower
          spBv1.0/nordwerk/DDEATH/warehouse_component-store/reel-towerDDEATH0falseExample Electronics / Nordwerk / Warehouse / Component store / Reel tower
          spBv1.0/nordwerk/DDATA/warehouse_component-store/reel-towerDDATA0falseExample Electronics / Nordwerk / Warehouse / Component store / Reel tower
          spBv1.0/nordwerk/DCMD/warehouse_component-store/reel-towerDCMD0falseExample Electronics / Nordwerk / Warehouse / Component store / Reel tower
          spBv1.0/sudwerk/NBIRTH/smt_smt-line-1NBIRTH0falseExample Electronics / Südwerk / SMT / SMT Line 1
          spBv1.0/sudwerk/NDEATH/smt_smt-line-1NDEATH1falseExample Electronics / Südwerk / SMT / SMT Line 1
          spBv1.0/sudwerk/NDATA/smt_smt-line-1NDATA0falseExample Electronics / Südwerk / SMT / SMT Line 1
          spBv1.0/sudwerk/NCMD/smt_smt-line-1NCMD0falseExample Electronics / Südwerk / SMT / SMT Line 1
          spBv1.0/sudwerk/DBIRTH/smt_smt-line-1/printerDBIRTH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Printer
          spBv1.0/sudwerk/DDEATH/smt_smt-line-1/printerDDEATH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Printer
          spBv1.0/sudwerk/DDATA/smt_smt-line-1/printerDDATA0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Printer
          spBv1.0/sudwerk/DCMD/smt_smt-line-1/printerDCMD0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Printer
          spBv1.0/sudwerk/DBIRTH/smt_smt-line-1/spiDBIRTH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / SPI
          spBv1.0/sudwerk/DDEATH/smt_smt-line-1/spiDDEATH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / SPI
          spBv1.0/sudwerk/DDATA/smt_smt-line-1/spiDDATA0falseExample Electronics / Südwerk / SMT / SMT Line 1 / SPI
          spBv1.0/sudwerk/DCMD/smt_smt-line-1/spiDCMD0falseExample Electronics / Südwerk / SMT / SMT Line 1 / SPI
          spBv1.0/sudwerk/DBIRTH/smt_smt-line-1/placementDBIRTH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Placement
          spBv1.0/sudwerk/DDEATH/smt_smt-line-1/placementDDEATH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Placement
          spBv1.0/sudwerk/DDATA/smt_smt-line-1/placementDDATA0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Placement
          spBv1.0/sudwerk/DCMD/smt_smt-line-1/placementDCMD0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Placement
          spBv1.0/sudwerk/DBIRTH/smt_smt-line-1/reflowDBIRTH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Reflow
          spBv1.0/sudwerk/DDEATH/smt_smt-line-1/reflowDDEATH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Reflow
          spBv1.0/sudwerk/DDATA/smt_smt-line-1/reflowDDATA0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Reflow
          spBv1.0/sudwerk/DCMD/smt_smt-line-1/reflowDCMD0falseExample Electronics / Südwerk / SMT / SMT Line 1 / Reflow
          spBv1.0/sudwerk/DBIRTH/smt_smt-line-1/aoiDBIRTH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / AOI
          spBv1.0/sudwerk/DDEATH/smt_smt-line-1/aoiDDEATH0falseExample Electronics / Südwerk / SMT / SMT Line 1 / AOI
          spBv1.0/sudwerk/DDATA/smt_smt-line-1/aoiDDATA0falseExample Electronics / Südwerk / SMT / SMT Line 1 / AOI
          spBv1.0/sudwerk/DCMD/smt_smt-line-1/aoiDCMD0falseExample Electronics / Südwerk / SMT / SMT Line 1 / AOI
          Metrics (84; also in every BIRTH)
          Metric nameGroup / edge node / deviceSent inFrom UNS topic
          _metanordwerk / smt_smt-line-1NDATAexample-electronics/nordwerk/smt/smt-line-1/_meta
          state/modenordwerk / smt_smt-line-1NDATAexample-electronics/nordwerk/smt/smt-line-1/state/mode
          telemetry/oeenordwerk / smt_smt-line-1NDATAexample-electronics/nordwerk/smt/smt-line-1/telemetry/oee
          telemetry/count/goodnordwerk / smt_smt-line-1NDATAexample-electronics/nordwerk/smt/smt-line-1/telemetry/count/good
          telemetry/count/totalnordwerk / smt_smt-line-1NDATAexample-electronics/nordwerk/smt/smt-line-1/telemetry/count/total
          commands/startnordwerk / smt_smt-line-1NDATA, NCMDexample-electronics/nordwerk/smt/smt-line-1/commands/start
          commands/stopnordwerk / smt_smt-line-1NDATA, NCMDexample-electronics/nordwerk/smt/smt-line-1/commands/stop
          state/statusnordwerk / smt_smt-line-1 / printerDDATAexample-electronics/nordwerk/smt/smt-line-1/printer/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-1 / printerDDATAexample-electronics/nordwerk/smt/smt-line-1/printer/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-1 / printerDDATAexample-electronics/nordwerk/smt/smt-line-1/printer/events/alarm
          telemetry/squeegee-pressurenordwerk / smt_smt-line-1 / printerDDATAexample-electronics/nordwerk/smt/smt-line-1/printer/telemetry/squeegee-pressure
          state/statusnordwerk / smt_smt-line-1 / spiDDATAexample-electronics/nordwerk/smt/smt-line-1/spi/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-1 / spiDDATAexample-electronics/nordwerk/smt/smt-line-1/spi/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-1 / spiDDATAexample-electronics/nordwerk/smt/smt-line-1/spi/events/alarm
          state/statusnordwerk / smt_smt-line-1 / placementDDATAexample-electronics/nordwerk/smt/smt-line-1/placement/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-1 / placementDDATAexample-electronics/nordwerk/smt/smt-line-1/placement/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-1 / placementDDATAexample-electronics/nordwerk/smt/smt-line-1/placement/events/alarm
          chip-shooter/state/statusnordwerk / smt_smt-line-1 / placementDDATAexample-electronics/nordwerk/smt/smt-line-1/placement/chip-shooter/state/status
          chip-shooter/telemetry/runtimenordwerk / smt_smt-line-1 / placementDDATAexample-electronics/nordwerk/smt/smt-line-1/placement/chip-shooter/telemetry/runtime
          multi-function-placer/state/statusnordwerk / smt_smt-line-1 / placementDDATAexample-electronics/nordwerk/smt/smt-line-1/placement/multi-function-placer/state/status
          multi-function-placer/telemetry/runtimenordwerk / smt_smt-line-1 / placementDDATAexample-electronics/nordwerk/smt/smt-line-1/placement/multi-function-placer/telemetry/runtime
          state/statusnordwerk / smt_smt-line-1 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-1/reflow/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-1 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-1/reflow/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-1 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-1/reflow/events/alarm
          telemetry/zone-temperaturenordwerk / smt_smt-line-1 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-1/reflow/telemetry/zone-temperature
          telemetry/conveyor-speednordwerk / smt_smt-line-1 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-1/reflow/telemetry/conveyor-speed
          state/statusnordwerk / smt_smt-line-1 / aoiDDATAexample-electronics/nordwerk/smt/smt-line-1/aoi/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-1 / aoiDDATAexample-electronics/nordwerk/smt/smt-line-1/aoi/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-1 / aoiDDATAexample-electronics/nordwerk/smt/smt-line-1/aoi/events/alarm
          _metanordwerk / smt_smt-line-2NDATAexample-electronics/nordwerk/smt/smt-line-2/_meta
          state/modenordwerk / smt_smt-line-2NDATAexample-electronics/nordwerk/smt/smt-line-2/state/mode
          telemetry/oeenordwerk / smt_smt-line-2NDATAexample-electronics/nordwerk/smt/smt-line-2/telemetry/oee
          telemetry/count/goodnordwerk / smt_smt-line-2NDATAexample-electronics/nordwerk/smt/smt-line-2/telemetry/count/good
          telemetry/count/totalnordwerk / smt_smt-line-2NDATAexample-electronics/nordwerk/smt/smt-line-2/telemetry/count/total
          commands/startnordwerk / smt_smt-line-2NDATA, NCMDexample-electronics/nordwerk/smt/smt-line-2/commands/start
          commands/stopnordwerk / smt_smt-line-2NDATA, NCMDexample-electronics/nordwerk/smt/smt-line-2/commands/stop
          state/statusnordwerk / smt_smt-line-2 / printerDDATAexample-electronics/nordwerk/smt/smt-line-2/printer/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-2 / printerDDATAexample-electronics/nordwerk/smt/smt-line-2/printer/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-2 / printerDDATAexample-electronics/nordwerk/smt/smt-line-2/printer/events/alarm
          telemetry/squeegee-pressurenordwerk / smt_smt-line-2 / printerDDATAexample-electronics/nordwerk/smt/smt-line-2/printer/telemetry/squeegee-pressure
          state/statusnordwerk / smt_smt-line-2 / spiDDATAexample-electronics/nordwerk/smt/smt-line-2/spi/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-2 / spiDDATAexample-electronics/nordwerk/smt/smt-line-2/spi/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-2 / spiDDATAexample-electronics/nordwerk/smt/smt-line-2/spi/events/alarm
          state/statusnordwerk / smt_smt-line-2 / placementDDATAexample-electronics/nordwerk/smt/smt-line-2/placement/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-2 / placementDDATAexample-electronics/nordwerk/smt/smt-line-2/placement/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-2 / placementDDATAexample-electronics/nordwerk/smt/smt-line-2/placement/events/alarm
          state/statusnordwerk / smt_smt-line-2 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-2/reflow/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-2 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-2/reflow/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-2 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-2/reflow/events/alarm
          telemetry/zone-temperaturenordwerk / smt_smt-line-2 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-2/reflow/telemetry/zone-temperature
          telemetry/conveyor-speednordwerk / smt_smt-line-2 / reflowDDATAexample-electronics/nordwerk/smt/smt-line-2/reflow/telemetry/conveyor-speed
          state/statusnordwerk / smt_smt-line-2 / aoiDDATAexample-electronics/nordwerk/smt/smt-line-2/aoi/state/status
          telemetry/cycle-timenordwerk / smt_smt-line-2 / aoiDDATAexample-electronics/nordwerk/smt/smt-line-2/aoi/telemetry/cycle-time
          events/alarmnordwerk / smt_smt-line-2 / aoiDDATAexample-electronics/nordwerk/smt/smt-line-2/aoi/events/alarm
          _metanordwerk / warehouse_component-storeNDATAexample-electronics/nordwerk/warehouse/component-store/_meta
          telemetry/occupancynordwerk / warehouse_component-storeNDATAexample-electronics/nordwerk/warehouse/component-store/telemetry/occupancy
          telemetry/humiditynordwerk / warehouse_component-store / dry-cabinet-1DDATAexample-electronics/nordwerk/warehouse/component-store/dry-cabinet-1/telemetry/humidity
          telemetry/humiditynordwerk / warehouse_component-store / reel-towerDDATAexample-electronics/nordwerk/warehouse/component-store/reel-tower/telemetry/humidity
          telemetry/free-slotsnordwerk / warehouse_component-store / reel-towerDDATAexample-electronics/nordwerk/warehouse/component-store/reel-tower/telemetry/free-slots
          _metasudwerk / smt_smt-line-1NDATAexample-electronics/sudwerk/smt/smt-line-1/_meta
          state/modesudwerk / smt_smt-line-1NDATAexample-electronics/sudwerk/smt/smt-line-1/state/mode
          telemetry/oeesudwerk / smt_smt-line-1NDATAexample-electronics/sudwerk/smt/smt-line-1/telemetry/oee
          telemetry/count/goodsudwerk / smt_smt-line-1NDATAexample-electronics/sudwerk/smt/smt-line-1/telemetry/count/good
          telemetry/count/totalsudwerk / smt_smt-line-1NDATAexample-electronics/sudwerk/smt/smt-line-1/telemetry/count/total
          commands/startsudwerk / smt_smt-line-1NDATA, NCMDexample-electronics/sudwerk/smt/smt-line-1/commands/start
          commands/stopsudwerk / smt_smt-line-1NDATA, NCMDexample-electronics/sudwerk/smt/smt-line-1/commands/stop
          state/statussudwerk / smt_smt-line-1 / printerDDATAexample-electronics/sudwerk/smt/smt-line-1/printer/state/status
          telemetry/cycle-timesudwerk / smt_smt-line-1 / printerDDATAexample-electronics/sudwerk/smt/smt-line-1/printer/telemetry/cycle-time
          events/alarmsudwerk / smt_smt-line-1 / printerDDATAexample-electronics/sudwerk/smt/smt-line-1/printer/events/alarm
          telemetry/squeegee-pressuresudwerk / smt_smt-line-1 / printerDDATAexample-electronics/sudwerk/smt/smt-line-1/printer/telemetry/squeegee-pressure
          state/statussudwerk / smt_smt-line-1 / spiDDATAexample-electronics/sudwerk/smt/smt-line-1/spi/state/status
          telemetry/cycle-timesudwerk / smt_smt-line-1 / spiDDATAexample-electronics/sudwerk/smt/smt-line-1/spi/telemetry/cycle-time
          events/alarmsudwerk / smt_smt-line-1 / spiDDATAexample-electronics/sudwerk/smt/smt-line-1/spi/events/alarm
          state/statussudwerk / smt_smt-line-1 / placementDDATAexample-electronics/sudwerk/smt/smt-line-1/placement/state/status
          telemetry/cycle-timesudwerk / smt_smt-line-1 / placementDDATAexample-electronics/sudwerk/smt/smt-line-1/placement/telemetry/cycle-time
          events/alarmsudwerk / smt_smt-line-1 / placementDDATAexample-electronics/sudwerk/smt/smt-line-1/placement/events/alarm
          state/statussudwerk / smt_smt-line-1 / reflowDDATAexample-electronics/sudwerk/smt/smt-line-1/reflow/state/status
          telemetry/cycle-timesudwerk / smt_smt-line-1 / reflowDDATAexample-electronics/sudwerk/smt/smt-line-1/reflow/telemetry/cycle-time
          events/alarmsudwerk / smt_smt-line-1 / reflowDDATAexample-electronics/sudwerk/smt/smt-line-1/reflow/events/alarm
          telemetry/zone-temperaturesudwerk / smt_smt-line-1 / reflowDDATAexample-electronics/sudwerk/smt/smt-line-1/reflow/telemetry/zone-temperature
          telemetry/conveyor-speedsudwerk / smt_smt-line-1 / reflowDDATAexample-electronics/sudwerk/smt/smt-line-1/reflow/telemetry/conveyor-speed
          state/statussudwerk / smt_smt-line-1 / aoiDDATAexample-electronics/sudwerk/smt/smt-line-1/aoi/state/status
          telemetry/cycle-timesudwerk / smt_smt-line-1 / aoiDDATAexample-electronics/sudwerk/smt/smt-line-1/aoi/telemetry/cycle-time
          events/alarmsudwerk / smt_smt-line-1 / aoiDDATAexample-electronics/sudwerk/smt/smt-line-1/aoi/events/alarm
          UNS topics with no place in this mapping (6)
          UNS topicWhy
          example-electronics/_metaabove the edge node level (Work center): Sparkplug carries data only from edge nodes and devices
          example-electronics/nordwerk/_metaabove the edge node level (Work center): Sparkplug carries data only from edge nodes and devices
          example-electronics/nordwerk/smt/_metaabove the edge node level (Work center): Sparkplug carries data only from edge nodes and devices
          example-electronics/nordwerk/warehouse/_metaabove the edge node level (Work center): Sparkplug carries data only from edge nodes and devices
          example-electronics/sudwerk/_metaabove the edge node level (Work center): Sparkplug carries data only from edge nodes and devices
          example-electronics/sudwerk/smt/_metaabove the edge node level (Work center): Sparkplug carries data only from edge nodes and devices

          QoS and retain from the specification: NBIRTH, NDATA, NCMD, DBIRTH, DDATA, DDEATH, DCMD QoS 0 without retain; NDEATH is the edge node’s MQTT Will (QoS 1, not retained); STATE QoS 1, retained. NBIRTH also carries bdSeq and Node Control/Rebirth.

          Download offline versionSingle HTML file · v1.5 · 627 KB · works without internet

          How the topics are made

          The tool turns an equipment hierarchy into MQTT topic names for a Unified Namespace and into Sparkplug B group, edge node and device IDs. It only designs names: nothing connects to a broker, and the files you export are the only output.

          The hierarchy (ISA-95)

          Names → topic levels

          1. Unicode NFC; spaces at both ends removed.
          2. Lower case (when chosen; MQTT topics are case-sensitive, so “Line1” and “line1” would be two topics).
          3. ASCII only (when chosen): letters decomposed (NFKD) and their accents dropped (Š → S, é → e), a few letters spelled out (ß → ss, Ø → O, Ł → L, Æ → AE, Þ → Th), every other character except A–Z, a–z, 0–9, “-” and “_” becomes a space.
          4. Each run of spaces becomes the separator (“-”, “_”, or one space); repeated separators collapse to one and are removed at both ends.

          A level typed under “Topic level” is used as typed (and checked). Errors: an empty level, “/” (it would split the level), “+” or “#”, a first level starting with “$”, the null character, a lone surrogate, a non-ASCII level when ASCII only is chosen, two children of one parent with the same level, a topic generated twice, a topic over 65535 bytes. Warnings: control characters and Unicode noncharacters (MQTT says they should not be used), spaces or capitals against the rules, a level longer than the limit, a topic longer than the warning size, a node whose level is also a namespace.

          UNS topics

          Sparkplug B

          Worked example (the tool’s example)

          1. The illustrative “Example Electronics” has 29 nodes: two sites (Nordwerk and Südwerk), SMT areas with three SMT lines of five cells (Printer, SPI, Placement, Reflow, AOI), two placers under one Placement cell, and a Warehouse area with a component store (storage zone) holding a dry cabinet and a reel tower (storage units). With the default rules (lower case, “-”, ASCII only) Südwerk becomes sudwerk and SMT Line 1 smt-line-1; no errors, no warnings.
          2. The templates give 90 topics, for example example-electronics/nordwerk/smt/smt-line-1/telemetry/oee and example-electronics/nordwerk/smt/smt-line-1/reflow/telemetry/zone-temperature (class reflow-oven); the longest is 93 bytes.
          3. Subscriptions: example-electronics/+/smt/+/+/telemetry/# receives 24 topics (telemetry of every SMT cell and placer); example-electronics/nordwerk/+/smt-line-1/# receives 29; # receives all 90 and $SYS/# none.
          4. Sparkplug B with preset 1 (group = site, edge node = line, device = cell, area folded with “_”): 4 edge nodes (nordwerk / smt_smt-line-1 …), 17 devices, 84 metrics and 85 topics including spBv1.0/STATE/mes; the 6 _meta topics of the enterprise, sites and areas are not mapped, and the enterprise level is lost.

          Common mistakes

          Files

          Not verified

          Questions

          What is a Unified Namespace (UNS)?
          A Unified Namespace is one place, usually an MQTT broker, where every system of a plant publishes its current data under topics that follow the plant’s structure: enterprise/site/area/line/cell/… Instead of point-to-point connections between machines, MES, ERP and dashboards, each one publishes its own data once and subscribes to what it needs. The structure most often follows the ISA-95 equipment hierarchy, so the topic itself tells where a value comes from.
          What do “+” and “#” mean in an MQTT subscription?
          “+” stands for exactly one topic level: site/+/line1/# receives line1 of every area of the site. “#” stands for any number of levels, including none, and must be the last level: site/# receives site itself and everything below it. Both may appear only in subscriptions, never in the topic a message is published to, and neither matches a first level starting with “$”, which brokers use for their own topics such as $SYS.
          Should topic levels be lower case and without spaces?
          MQTT allows any UTF-8 text except the null character, and topics are case-sensitive, so “Line1” and “line1” are two different topics. A fixed rule, such as lower case with hyphens and ASCII letters only, avoids near-duplicates and problems in tools that handle spaces, accents or special characters badly. Whatever rule you choose, apply it to every name; this tool turns names into levels by such a rule and reports what it could not fix.
          How does the ISA-95 hierarchy map to Sparkplug B?
          A Sparkplug B topic has only three places for names: spBv1.0/group_id/message_type/edge_node_id/device_id. A common mapping takes the site as the group, a line as the edge node and a cell as the device; the enterprise is then left out (or folded into the group ID), an area between site and line is folded into the edge node ID, and assets below the cell become folders of the metric names, such as placer-1/state/status. The tool shows what each level becomes for any choice and checks the IDs: no “+”, “/” or “#”, group and edge node unique together, a device unique under its edge node.
          Does this tool connect to my broker?
          No. It designs topic names only: the hierarchy, the naming rules, the generated UNS and Sparkplug B topics and the subscriptions are computed in your browser, and the results leave it only as the files you export (JSON, CSV or a plain topic list). Use them to configure your broker, gateways or edge devices.