Discover network topology?

  • Impressed by what MYSController does, I would like to add some functionality to my home-built controller to be able to view the network topology (i.e., which nodes are connected to which nodes by which routes). I suspect that the information that I need is hidden in the log messages that are received by the controller, but I haven't been able to decipher them.

    Can anyone tell me where I can find the information about the network topology that is apparently used by MYSController?

    (and while I'm at it: is there some kind of documentation that tells me what all the "internal" messages mean?)

  • Hardware Contributor

    Hi! @darkhorse
    For documentation about the api check the website:
    About the topology I dont think you can get more than the last node from the log messages. I know I have seen some discussion about it in the forum but cant find it now - try to make some searches.

  • Mod has some example code how to extract the routing information (from EEPROM on a node)

  • Admin


    The parent node number comes from the payload in the I_CONFIG request that the node sends at startup (or when you send I_PRESENT request to the node).

  • @sundberg84 Thanks! Unfortunately, the API does not tell me anything about the contents of the payload of internal messages like

    Init complete, id=0, parent=0, distance=0, registration=1
    TSP:MSG:READ 3-3-0 s=1,c=1,t=1,pt=7,l=5,sg=0:62.00

    I can guess what some of these things mean, but I would really like to read some documentation to make sure that my interpretations are correct.

  • @mfalkvidd Thanks. It might be the case that I can find each node's parent in the EEPROM, but I would like to be able to read the topology "run time". I.e., while the system is in production.

    @hek This might be what I was looking for, thanks, I'll try it out!

  • Hardware Contributor

  • @sundberg84 Great, thanks!

    (pity that there is no official doc, however, but this should suffice for now)

  • Hardware Contributor

    @darkhorse - check debug/faq/how to ask for help in the forum, its kind of official and you find it there as well.

  • @hek After a week, I've found some time to test your advice and tried to send the I_PRESENT-message to some of my nodes. The reply that I get unfortunately is not totally clear to me. Can you help me out some more? I've tried sending the message to nodes 1 (being closest to the gateway) and 4 (being far from the gateway and with some nodes in between). I got the following response:

    Sent to module 1:


    Received from module 1 (duplicate lines removed):


    Sent to module 4:


    Received from module 4 (duplicate lines removed):


    If I had to guess, I'd say that the lines '1;255;3;0;6;0' and '4;255;3;0;6;3' are the ones that I am looking for. They seem to tell me that

    • the parent of node 1 is node 0 (the gateway) and
    • the parent of node 4 is node 3 (a node that is physically somewhere in between the gateway and node 4).

    Before I draw conclusions, however, I'd really like to know if I'm correct. Can you confirm this? And if so, can I safely assume that any I_CONFIG-message received not containing an 'M' or 'I' in the payload tells me the parent-node?

    Thank you very much!

  • Admin

    Yes, you are right..

    It's a little weird that you receive a message with the payload "M"... Are you sure that it isn't the outgoing reply we're seeing here? Node should not send in anything else with the config request.

  • @hek You are right, I forgot that I configured my controller to respond to a I_CONFIG request by sending an 'M'. Apparently, a config request and an answer to I_PRESENT are the same message, so my controller does not differentiate its behaviour.

    Anyway, thanks for your fast reply, this really helps me out!

  • @darkhorse Hi!
    Did you eventually created a controller that draws a network topology? If yes, could you share it?

Log in to reply

Suggested Topics

  • 1
  • 2
  • 2
  • 2
  • 1
  • 10