Moved Zigbee neighbour info to API
This commit is contained in:
parent
784844b85f
commit
ce73bd70fe
3 changed files with 82 additions and 17 deletions
|
|
@ -33,24 +33,28 @@
|
||||||
<div id="network_graph"></div>
|
<div id="network_graph"></div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var nodes = [
|
fetch('/api/zigbee')
|
||||||
{{#nodes}}{"id": "{{.getIeeeAddress()}}", "name": "{{.getIeeeAddress()}}"},
|
.then(response => response.json())
|
||||||
{{/nodes}}
|
.then(data => {
|
||||||
]
|
var nodes = [];
|
||||||
|
var links = [];
|
||||||
|
|
||||||
var links = [
|
data.forEach(node => {
|
||||||
{{#nodes}}{{#.getNeighbors()}}{"source": "", "target": "{{.getNetworkAddress()}}"},
|
nodes.add({"id": node.address, "name": node.address});
|
||||||
{{/.getNeighbors()}}{{/nodes}}
|
nodes.neighbours.forEach(neighbour => {
|
||||||
]
|
links.add({"source": node.address, "target": neighbour})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const Graph = ForceGraph()
|
const Graph = ForceGraph()
|
||||||
(document.getElementById('network_graph'))
|
(document.getElementById('network_graph'))
|
||||||
.linkDirectionalParticles(2)
|
.linkDirectionalParticles(2)
|
||||||
.graphData({
|
.graphData({
|
||||||
nodes: nodes,
|
nodes: nodes,
|
||||||
links: links
|
links: links
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<h2>Connected Nodes</h2>
|
<h2>Connected Nodes</h2>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
package se.hal.plugin.zigbee.page.api;
|
||||||
|
|
||||||
|
import com.zsmartsystems.zigbee.ZigBeeNode;
|
||||||
|
import com.zsmartsystems.zigbee.zdo.field.NeighborTable;
|
||||||
|
import se.hal.intf.HalAbstractControllerManager;
|
||||||
|
import se.hal.intf.HalApiEndpoint;
|
||||||
|
import se.hal.plugin.zigbee.ZigbeeController;
|
||||||
|
import zutil.log.LogUtil;
|
||||||
|
import zutil.parser.DataNode;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RESTish API for accessing and managing Zigbee devices.
|
||||||
|
* For web interface definition see the OpenApi definition hal-core/resources/web/api/doc.html
|
||||||
|
*/
|
||||||
|
public class ZigbeeApiEndpoint extends HalApiEndpoint {
|
||||||
|
private static final Logger logger = LogUtil.getLogger();
|
||||||
|
|
||||||
|
|
||||||
|
public ZigbeeApiEndpoint() {
|
||||||
|
super("api/zigbee");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataNode jsonRespond(
|
||||||
|
Map<String, Object> session,
|
||||||
|
Map<String, String> cookie,
|
||||||
|
Map<String, String> request) throws Exception{
|
||||||
|
|
||||||
|
DataNode root = new DataNode(DataNode.DataType.List);
|
||||||
|
|
||||||
|
ZigbeeController controller = HalAbstractControllerManager.getController(ZigbeeController.class);
|
||||||
|
|
||||||
|
// --------------------------------------
|
||||||
|
// Generate DataNode
|
||||||
|
// --------------------------------------
|
||||||
|
|
||||||
|
for (ZigBeeNode node : controller.getNodes()) {
|
||||||
|
DataNode zigbeeNode = new DataNode(DataNode.DataType.Map);
|
||||||
|
zigbeeNode.set("address", node.getIeeeAddress().toString());
|
||||||
|
zigbeeNode.set("logicalType", node.getLogicalType().toString());
|
||||||
|
|
||||||
|
DataNode powerNode = new DataNode(DataNode.DataType.Map);
|
||||||
|
powerNode.set("currentPowerMode", node.getPowerDescriptor().getCurrentPowerMode().toString());
|
||||||
|
powerNode.set("currentPowerSource", node.getPowerDescriptor().getCurrentPowerSource().toString());
|
||||||
|
powerNode.set("powerLevel", node.getPowerDescriptor().getPowerLevel().toString());
|
||||||
|
|
||||||
|
DataNode neighborsNode = new DataNode(DataNode.DataType.List);
|
||||||
|
for (NeighborTable neighbor : node.getNeighbors()) {
|
||||||
|
neighborsNode.add(neighbor.getExtendedAddress().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
zigbeeNode.set("neighbors", neighborsNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
{"se.hal.intf.HalAutostartController": "se.hal.plugin.zigbee.ZigbeeController"},
|
{"se.hal.intf.HalAutostartController": "se.hal.plugin.zigbee.ZigbeeController"},
|
||||||
{"se.hal.intf.HalDaemon": "se.hal.plugin.zigbee.ZigbeeAttributeUpdateDaemon"},
|
{"se.hal.intf.HalDaemon": "se.hal.plugin.zigbee.ZigbeeAttributeUpdateDaemon"},
|
||||||
|
|
||||||
{"se.hal.intf.HalWebPage": "se.hal.plugin.zigbee.page.ZigbeeNetworkPage"}
|
{"se.hal.intf.HalWebPage": "se.hal.plugin.zigbee.page.ZigbeeNetworkPage"},
|
||||||
|
{"se.hal.intf.HalApiEndpoint": "se.hal.plugin.zigbee.page.api.ZigbeeApiEndpoint"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue