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?)
For documentation about the api check the website: https://www.mysensors.org/download/serial_api_20
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.
https://forum.mysensors.org/topic/2680/data-stored-in-the-eeprom/1 has some example code how to extract the routing information (from EEPROM on a node)
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 TSP:SANCHK:OK
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!
@darkhorse - check this then: https://forum.mysensors.org/topic/2579/about-serial-api-1-5/2
@sundberg84 Great, thanks!
(pity that there is no official doc, however, but this should suffice for now)
@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):
1;255;0;0;18;2.0.0 1;255;3;0;6;0 1;255;3;0;6;M 1;0;0;0;6; 1;1;0;0;7; 1;2;0;0;1;
Sent to module 4:
Received from module 4 (duplicate lines removed):
4;255;3;0;6;3 4;255;3;0;6;M 4;255;0;0;18;2.0.0 4;255;3;0;6;3 4;2;0;0;3;
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!
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!
ykhokhlov last edited by
Did you eventually created a controller that draws a network topology? If yes, could you share it?