-
-
Notifications
You must be signed in to change notification settings - Fork 213
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[feat] Improved Z-Wave Network Visualization #384
Comments
@ahochsteger I think that zwave mesh visualization can be improved a lot. IMO the steps are firstly to identify what we need to visualize (like disintic if it's a battery powered device or not, the battery level, highilight neighborns on click), then identify the library to use, maybe vue-org-chart could be better for us. |
@robertsLando yes, that's what I'm trying to start with this issue to have a discussion about what we want to visualize and then decide which visualization works best for which kind of information. |
IMO what's important to show is:
|
From what I can see seems that https://github.com/AdamNaj/ZWaveGraphHA provides the js script to render that graph. We could reuse that for our needs. I think it has almost all the needs. It also allow us to prevent using some 3rd party library Edit: it seems using d3 library, just saw the imports |
I was just about to reply with examples just like the one showed by @AlCalzone above... |
Leaving my two cents here. I think that any visualisation should include two modes: 1. all connected nodes (similar to vue-3d-network) and 2. most relevant node which shows hierarchy. (similar to vue-org-chart). ZWaveGraphHA actually has a toggle like this, you can toggle between all neighbours or relevant ones. Both types of visualisations have their use cases and combining them into one IMHO would make a mess. As an user, I would like to both being able to see which is the path a device will most likely take to the controller and number of hops, and which are all the neighbours of a node in order to assess network coverage. In addition to above propositions on what information should be displayed, I'm thinking that node queue length and node errors (probably setting a node color based on certain error/queue length values) would be an easy way to spot node problems. |
@AlCalzone, @cbho, @maivorbim thanks for your feedback, I've restructured the feature list in the issue description and included your information. |
@ahochsteger FYI the implementation I screenshotted above is this: |
I also think there should be a way to get the underlying data. As far as I can find there is no-where in the UI that lets me simply see the neighbors of a node. Either a table with all nodes and all neighbors, or having it when you're viewing a node would be really helpful in addition to the visualization. |
The Data Visualization Catalogue may be a helpful resource to find the best way to visualize different kinds of information: |
I've played around on Observable to see if it would be possible to use a Z-Wave node list for visualization experiments and it turns out that it is indeed possible and a lot of fun! Here's a notebook that can be used as the basis for your own visualization experiments by importing the data and functions: This is a simple example that represents more-or-less the currently available visualization of zwavejs2mqtt by using a D3 force directed graph network: There's a notebook collection to collect all notebooks for zwavejs2mqtt: I'd like to invite everyone to join the visualization experiments :-). Disclaimer: FYI: @robertsLando @AlCalzone |
@ahochsteger I still think that the most complete solution is the one provided by ZWaveGraphHA. I have looked at your notebooks, I really like them and I think it's a good tool for testing and proposal :) Didn't know about that. BTW every solution has it's pro/cons, we should firstly focus on what we want to be visible "at first sight" and what/how to show the details about a node |
@ahochsteger I have an idea about this. We could keep using the d3 network plugin we are using now, add a dropdown (with search) list where you can select the nodes to show in the network (by default all are selected) and add some checkboxes to hide/show ionformations about those nodes. For example we could add Then we coould also add some custom svg or else to better identify the devices, like locks if one is added securely, a battey level if them are battery devices etc... |
Another interesting idea is to let the user move individual nodes on a canvas and store the x/y positions. Then they can group or move them around how they like. For example, i'd likely have controller in the middle and put second floor above and first floor below roughly in the shape of my floorplan. |
@jarrettv Yep but someone would also know if a device is secure or not? We could create multiple visualization types like 'Hops' 'Node types' etc based on what the graph should show at first sight? |
Sure that's nice, the problem is also to find a js library for this, because building it by your own is huge, D3 offers a large set of choices and maybe has something that fits our needs |
BTW I'm still conviced that converting this into a vue template would be the best choice for us |
Just drafted a PR @jarrettv @ahochsteger |
@robertsLando thanks for starting the PR! On my test setup there were too many failed nodes so I didn't see the relevant ones: I've added a simple filter to remove failed nodes to improve the relevant ones: We will have to improve it to better work with a larger set of nodes. What I'd really like to see is to quickly switch between nodes in the table and the graph representation but I guess we'll have to introduce deep-linking to make that easily possible. Others would benefit from it as well (e.g. deep link from a HA device directly to zwavejs2mqtt). Sounds like a separate, independent PR though ... |
Thanks for looking at this @ahochsteger ! Will keep work on this tomorrow 💪 |
I don't understand why the nodelist is always undefined in the handlers 🤔 |
For anyone interested, give a try to: #458 |
* feat(ui): improve mesh graph Fixes #384 * fix: something shows up * fix: lint errors * fix: filter failed nodes * fix: nodeList undefined caused by d3 migration v5->v6 * fix: testing node list * refactor: format test node list files * fix: hide speed dial * fix: hammer events * feat: legend * feat: layout edges grouping * fix: lint issues * fix: improvments * fix: improved performances * fix: height * fix: nodes location * fix: battery devices * fix: add node is frequent listineing * fix: hops colors * fix: node name * fix: lint issues * fix: better check node forwards prop * fix: loader * fix: debounce refresh * refactor: add collapsible config panel Co-authored-by: Andreas Hochsteger <andreas.hochsteger@oeamtc.at>
Current Visualization
The current visualization of the Z-Wave mesh network gives a good overview of the network but does not work well for bigger networks (shows big ball of wool ;-) ).
Additional information or improved visualization is missing that can help analyze problems of the network. In addition the network visualization could be used to directly interact with the nodes.
Screenshot:
Proposed Features
It has the potential of doing much more.
Here are some ideas, as a starting point for discussion:
Inspiration of existing Visualizations
This is a quick research about what kind of visualizations are already available for Z-Wave networks for inspiration:
Request for Discussion
Let's discuss the various requirements and use cases people have and based on that implement an improved (or additional) visualization(s) of the Z-Wave mesh network.
What are your thoughts on this?
Possible Visualization Libraries
The text was updated successfully, but these errors were encountered: