You are here

Topologr - An AREDN Mesh Topology and Data Explorer

26 posts / 0 new
Last post
wa1krd
Topologr - An AREDN Mesh Topology and Data Explorer

New Release which improves large mesh handling. See the video at: https://cloud.dougwalker.us/s/mePDAPkgTMTj7CE. There are a few new buttons, but the main ones are Grid (rearranges the nodes into a grid pattern and colors them by callsign) and Settings (brings up the network settings which let's you play with the physics settings). It should help you organize large networks to some extend. Again, see the video for an example. I don't think there is a "one-size-fits-all" process to this. It kind of feels like processing astrophotography. Try something and see how it acts. But it's definitely an iterative process to get to something usable. There is one feature that is clearly mandatory, and that is to support multi-selection and adjusting positions. (NOTE: In the settings panel, check Interactions->multiselect. Then ctrl-click on multiple nodes. IF you have physics enabled, you CAN crtl+click-drag to move ALL the selected nodes. If physics is not enabled then it just moves the one node. Unfortunately for large networks the framerate is so bad that trying to interact with the network is painful.) Easy enough to enable multi-selection, but when you try to move a node it just moves that single node (unless physics is enabled). I'm not sure how difficult that is going to be to add in so I thought I would put this up some people could play with it some. It may need both translation of groups and rotation, but we'll see.

The Github repository is located at: https://github.com/captainwasabi/topologrjs

Enjoy.


I am pleased to announce the initial public release of Topologr. This was a fun project which was inspired by the topology DOT file perl script. More of a modern take. The documentation is still a bit of a work in progress, but it should be enough to get the software installed and running on a mesh connected computer.

I have tested this on an RPi 3 and Ubuntu 20.04, but there is no particular reason that it wouldn't work on other OSs that support node.js. I expect the installation instructions will vary quite a bit to run on Windows.

This has also only been tested on our local mesh.  I don't believe there should be any problems, but let me know if there are.

Finally, the localnode.local.mesh this is connected to has to be running a version of the firmware that supports the json APIs or it will fail.

The Github repository is located at: https://github.com/captainwasabi/topologrjs



Thank you, 
73
WA1KRD

 

AB4YY
Nice and useful program!

Nice and useful program Doug!

I'm curious if a possible enhancement could be to have the services seen in the left side show up as hyperlinks?

I suppose that could lead to all kinds of other possible enhancements such as creating a list of such hyperlinks, and more.  :)

- Mike

wa1krd
I's sure this is doable. 

I'm sure this is doable.  Please enter it as an issue on the Github repository.

ko0ooo
ko0ooo's picture
nice program
nice program Doug...   

I know little about the Pi, but the installation instructions worked fine and I had it running in no time.

Richard   ko0ooo
wa1krd
Thanks!
Thanks!
KM6SLF
KM6SLF's picture
Great work! Thanks for
Great work! Thanks for sharing
AB4YY
I agree

I agree.  This has already proven to be a very useful tool.

- Mike

ko0ooo
ko0ooo's picture
Topologr version 0.1b5
Doug,

really like the updated version..   especially the CLEAR POS button...   

below is a screen shot showing our fragile network between the north and south ends of Vegas... it's interesting to CLEAR POS every few minutes and watch the link quality change.     and how more islands are formed when tunnels are removed.

thanks again for a great program

Richard    ko0ooo

wa1krd
The weights should change
The weights should change every time you refresh, you don't need to clearPos for that.  However, a "refresh" button is a good idea!  You may have noticed that there is a lot of usable blank space along the bottom and left of the page now, I'm very open to suggestions.

Doug   
w6bi
w6bi's picture
Error when running
I got it all loaded, and confirmed it was listening on port 3001.  But when I tried to load http://10.95.109.100:3001, the app crashes with this:
root@w6bi-house-pc:~/projects/topologrjs# node app.js
2022-04-18T23:29:52.497Z info:  server:: Started application on port 3001
2022-04-18T23:29:57.305Z http:  server::/info 10.95.109.100 /
/root/projects/topologrjs/app.js:157
    let callsign = nn.substr(0, nn.search("-"));
                      ^

TypeError: Cannot read properties of undefined (reading 'substr')
    at processServices (/root/projects/topologrjs/app.js:157:23)
    at main (/root/projects/topologrjs/app.js:175:20)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

What did I miss?  This is on Kubuntu 21.10.  Is that too current?

Thanks.

Orv W6BI

 
wa1krd
It looks like there is

It looks like there is something wrong with the services data that is being returned.  Something like there is a service that doesn't have a hostname.

What version of the Aredn firmware are you running?

Use this link to download a more instrumented app.js file.  rename the current file app.js.old (just to be safe) and replace it with the one in the zip file.  once you have restarted the app, the first url to go to is http://10.95.109.100:3001/debug/debug  This sets the log level to debug, so it's going to dump out a LOT of information.  The result of that link should be a blank page with "debug" displayed on it.  Then go to http://10.95.109.100:3001/

Send me all the infomation it dumps out.  Preferably in a comment to this issue on github: https://github.com/captainwasabi/topologrjs/issues/22.  Or you could attach it as a txt file to a reply here.

Thanks,

Doug

w6bi
w6bi's picture
Results
I'm running nightly build 1145, Doug.   I've run the debug version, and uploaded the debug file per your instructions.
As before, the result is that the web server crashes so I'm not able to get to port 3001.

Orv
 
wa1krd
Thanks!
Thanks!
 
 
Just replace the file, then run it.  Don't need to do the /debug/debug link unless it doesn't work again.  I wasn't using the routine that I had already written to handle this exact case (an IP address that doesn't map to a hostname, now it should use the ip address for the name..

However, even if it does work, with > 1000 nodes that have names, and I don't know how many that don't, you are probably going to run into the same problem as the other poster that just had >265 nodes.  It's gonna just be a tangle that I need to be able to export and import into an offline viewer to see what is going on.  Theoretically vis-network should be able to handle it.
kj6dzb
kj6dzb's picture
Looks like is a little over
Looks like is a little over loaded with ~255 nodes.  Thoughts? 
Image Attachments: 
wa1krd
ahha, interesting.  
ahha, interesting.  

try zooming out, (roll the mouse wheel towards you with the cursor in the network panel.then hit ClearAll.  Will, that work, I doubt it really.  I thinik the "fix" at least currently will be to just start moving nodes out of the tangle and arrange them yourself.  The canvas is infinitly zoomable so you should have plenty of room.

Although this spawns another idea, have a way to import and export the network (without querying the localnode for the data).  This would help debug this kind of thing.

Thanks,

Doug
kj6dzb
kj6dzb's picture
Has this not been tested on a
Has this not been tested on a large network? 


try zooming out, (roll the mouse wheel towards you with the cursor in the network panel.then hit ClearAll.  Will, that work NO!

I thinik the "fix" at least currently will be to just start moving nodes out of the tangle and arrange them yourself. Moving 250 nodes manually by hand is unrealistic!  



 
wa1krd
It has not.  It's been tested
It has not.  It's been tested on the network I am part of.  However the vis-network.js package is theoretically capable of handling thousands of nodes.  

Yeah, I didn't think that would work.  

I don't see a lot of arden networks that are that large.  I put in an issue on github to implement an offiline viewer and export network button. It shouldn't be that bad.

There are two reasons I agree that moving them by hand is not realistic.  First is that it is a lot.  While it wouldn't take that long realistically, he second issue is performance.  It animates the network pane while you are dragging a node around, and with that big of a network it would just be painful.  

I'll reply here when a drop with that feature is available.

Thanks, 

Doug
wa1krd
I just pushed b5.  Delete
I just pushed b5.  Delete your current install and just repeat the installation instructions.  Once the page loads, click the export button and save the exportNet.json file somewhere.  The either attach it to a comment here, or preferably attach it to a comment in this github issue: https://github.com/captainwasabi/topologrjs/issues/22

Thanks!

 
wa1krd
Try the latest
I just released a new version.  Take a look at the video (link posted at top) and try it out.  It should let you do some automated "untangling".
KF7BWS
KF7BWS's picture
Tangled Mess

I have had the same problem and I have taken the time (many Hours) and untangled the mess. It is not fun but you learn a lot about your mesh network in doing so. I now have a nearly working map and some cleanup to do.

This app is a very good start to something exciting to add to our tool kit.

Wes Larson
KF7BWS

KQ9P
KQ9P's picture
Very cool!  Thanks for the

Very cool!  Thanks for the useful new tool.  For all the container fans out there, I ran up a Dockerfile and Docker Compose file so you can run topologr in a Docker swarm.  Unpack the attached .tgz file in the topologrjs folder and type the following commands:

docker build -t topologrjs .
docker stack deploy --compose-file topologrjs.yml topologrjs

(This assumes you already have a Docker swarm running.  Lots of Web pages on how to do that.)

Mike KQ9P
 

Support File Attachments: 
nc8q
nc8q's picture
GLIBC_2.27' not found (required by node)

Followed install instructions
https://github.com/captainwasabi/topologrjs/
to here:
gelmce@nc8q-mesh-server:~/projects/topologrjs $ npm install
node: /lib/arm-linux-gnueabihf/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.28' not found (required by node)
gelmce@nc8q-mesh-server:~/projects/topologrjs $
-----

Is my
gelmce@nc8q-mesh-server:~/projects/topologrjs $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux" VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=raspbian ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
gelmce@nc8q-mesh-server:~/projects/topologrjs $

Not new enough?

Chuck

wa1krd
What are the restults of

What are the restults of `node -v` and `npm -v`
 

@dev:topologrjs$ node -v
v17.9.0
@dev:topologrjs$ npm -v
8.5.5
nc8q
nc8q's picture
'node -v', 'npm -v'

gelmce@nc8q-mesh-server:~/Downloads $ node -v
node: /lib/arm-linux-gnueabihf/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.28' not found (required by node)
gelmce@nc8q-mesh-server:~/Downloads $ npm -v
node: /lib/arm-linux-gnueabihf/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.28' not found (required by node)
gelmce@nc8q-mesh-server:~/Downloads $
gelmce@nc8q-mesh-server:~/Downloads $ ldd --version
ldd (Debian GLIBC 2.24-11+deb9u4) 2.24
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
gelmce@nc8q-mesh-server:~/Downloads $

73, Chuck
 

wa1krd
if you pi has been updated,

if you pi has been updated, then yes I think the version of the os that you are running is too old. I don't see anyone recommending installing a new version of glibc on top of an older one (ro vice versa) because it's a key component of a lot of system files and the likelyhood of breaking your whole OS is very high.

K3YAB
K3YAB's picture
National network?
This looks exactly like what I was just proposing to do, actually. So, then the next question is; is there any interest in interconnecting the meshes into a national network? Is there anywhere that we could turn to for funding to add backbone links between the islands?

Jose
K3YAB
 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer