Introspection capabilities

using linux node or STM32 node I cannot get yakut working with Automatic network discovery

y r 125 rmap.module.TH.1.0.id 5678

y r 125 rmap.module.TH.1.0.id
5678

y r 125 rmap.module.TH.1.0.type
rmap.module.TH.1.0              

y sub 5678:rmap.module.TH --redraw
---
5678:
  metadata:
    timerange:
      Pindicator: {value: 255}
      P1: {value: 4294967295}
      P2: {value: 4294967295}
    level:
      LevelType1: {value: 255}
      L1: {value: 4294967295}
      LevelType2: {value: 255}
      L2: {value: 4294967295}
  temperature:
    val: {value: 27640}
    confidence: {value: 98}
  humidity:
    val: {value: 23}
    confidence: {value: 89}

y sub 5678
NetworkDiscoveryError: Automatic network discovery did not return suitable dtypes for subject 5678. Either the subject-ID is incorrect, or the nodes that utilize it are currently offline, or they do not support the introspection services required for automatic discovery. Consider specifying the data type manually? The syntax is like 5678:namespace.DataType

-v option do not provide more information.
What is missed?

You are missing port introspection registers for this port, which is an error. I wrote about this already in Python API to configure the subject-IDs/service-IDs/registers.

The correct pattern is uavcan.(pub|sub|cln|srv).PORT_NAME.(id|type). For example, uavcan.pub.rmap_module_th.id and uavcan.pub.rmap_module_th.type. You are free to have other registers named as you see fit, but you must have these standard ones as well.

I do not understand the sequence yakut (or other node) do to make introspection:

y sub 5678

do not provide PORT_NAME
so yakut have to do a register list, get every register that provide id
find the id= 5678 to get PORT_NAME
query uavcan.pub.PORT_NAME.type
subscribe to id with type found
It’s correct?

Correct! This is where it is implemented (it is somewhat convoluted indeed):