I need to relocate my hub within my summerhouse. It is just a 7 meter move across the living room, but the current location was chosen as my previous Vera controller was right at the edge with connecting to certain Z-Wave devices in the same location so this was the best bet for the Hubitat.
The new location is further away so I am not sure it will reach. Is there any way to monitor the connection strength for both Zigbee and Z-Wave ? I am able to move the hub as a test, but will I introduce any issues by moving it for testing and then back again if it doesn´t work ?
All and any tips and tricks are welcome.
Without being there and knowing what you have and where every device was and what type they were and what devices were battery powered and which were line powered and what the walls were made of and . . . . It would be hard to say. You might get an idea of how Zigbee things route by http://hub_ip/hub/zigbee/getChildAndRouteInfo You might be able to make some inferences on how routing might change but nothing can tell a radio signal to go some other way. If you have routing capable devices both Zigbee and Zwave, close to the new location you will have better chance of success with a move.
If you are able to spend the time after the move, monitoring for a day or two you should be OK with understanding whether you are successful or not. Leave the HE hub offline for a half hour and then power it up to force a Zigbee repair. Watch the Zigbee logs. Once it has completed, run a Zwave repair.
1 Like
Thanks for the information. I took a look at my Zigbee routing which is interesting, but I don´t expect to have a big problem with these devices. It's mainly my Z-Wave. Is there anything similar available for that to see the routing ?
I do agree with the monitoring part, but that is also the reason I want to be cautious as I don´t really have that time right now to fully monitor, so I may have to wait. But you made me think that perhaps I can just add a powered Z-Wave device along the route to lenghten the route.
There is nothing available for Zwave from within HE. If you have a Zwave dongle (Aeon Zstick or similar) and a spare computer that you can install OpenZwave Control Panel, you can get hop counts and neighbor tables. You need to pair the dongle to HE from the computer with OZWCP.
I prefer adding a useful device rather than just a repeater, so a light switch rather than just a plugin outlet or dedicated repeater. If the move does move your HE hub to somewhere less central, then an Aeon range extender might be useful. They amplify the signals. Whatever you get make sure it is Zwave Plus.
I would not dismiss the same consideration for your Zigbee devices.
Thanks again. I decided to live dangerously and move my hub to see if I would have any issues. So far it seems to be behaving and my furthest away are reporting in.
I do indeed own a ZWave dongle, so I will have a look at OZWCP and see if I can gather good information from that setup.
I use a script. It isn't mine and I don't remember where I got it. I modified it to suit my purposes. It just gives me hop counts and neighbors.
<?php
if($argc !== 3) {
die("Usage: {$argv[0]} OZW.log zwcfg.xml \n");
}
$ozwLog = $argv[1];
$zwcfg = $argv[2];
#$imageFilename= $argv[3];
$controllerId = 1;
$nodes = array();
echo "Reading XML\n";
if(FALSE) { // For debug when not having the xml file, should normally be FALSE
$fixed = array(1,2,3,4,5,6,9,10,13,15,17,18,19,20,21);
foreach($fixed as $n) {
$nodes[$n]['name'] = $n;
}
} else {
$xml = file_get_contents($zwcfg);
$xml = new SimpleXMLElement($xml);
foreach($xml->Node as $v) {
$id = (int) $v['id'];
$name = $v['name'];
$name = reset($name); // No clue why I get an array back
if(empty($name)) {
$name = "{$v->Manufacturer['name']} {$v->Manufacturer->Product['name']}";
}
echo "{$id} => {$name}\n";
$nodes[$id]['name'] = $name;
}
}
/*
2017-10-14 12:02:31.336 Info, Node001, Neighbors of this node are:
2017-10-14 12:02:31.336 Info, Node001, Node 2
2017-10-14 12:02:31.336 Info, Node001, Node 3
*/
echo "Reading OZW log\n";
$buf = file_get_contents($ozwLog);
$buf = explode(PHP_EOL, $buf);
foreach($buf as $line) {
if(preg_match('/.*Info, Node([0-9]{3}), +Neighbors of this node are:$/', $line, $matches) === 1) {
$node = (int) $matches[1];
echo $line . PHP_EOL;
if(!isset($nodes[$node])) {
die("Node {$node} not found in xml\n");
}
$nodes[$node]['neighbors'] = array();
}
else if(preg_match('/.*Info, Node([0-9]{3}), +Node ([0-9]+)$/', $line, $matches) === 1) {
$node = (int) $matches[1];
$neighbor = (int) $matches[2];
echo $line . PHP_EOL;
if(!isset($nodes[$node])) {
die("Node {$node} not initialized\n");
}
if(!isset($nodes[$node]['neighbors'])) {
echo "WARNING: {$node} -> {$neighbor} listed before a list header, ignoring\n";
continue;
}
if(!in_array($neighbor, $nodes[$node]['neighbors'])) {
$nodes[$node]['neighbors'][] = $neighbor;
}
}
}
echo "Calculating hops\n";
$nodes[$controllerId]['hops'] = 0; // The controller obviously has 0 hops
// Z-wave supports max 4 hops
for($maxHops = 1 ; $maxHops <= 4 ; $maxHops++) {
foreach($nodes as $id => $n) {
if(isset($n['hops'])) {
continue;
}
if(!isset($n['neighbors'])) { // Should not happen, this is a workaround
echo " WARNING: Node {$id} has no neighbors\n";
$nodes[$id]['hops'] = 5;
continue;
}
$hops = FALSE;
foreach($n['neighbors'] as $neighbor) {
if(!isset($nodes[$neighbor]['hops'])) {
continue;
}
if($hops === FALSE || $nodes[$neighbor]['hops']+1 < $hops) {
$hops = $nodes[$neighbor]['hops']+1;
}
}
if($hops !== FALSE && $hops <= $maxHops) {
$nodes[$id]['hops'] = $hops;
echo " $id has {$hops} hops to the controller\n";
}
}
}
// Set hops to FALSE for nodes without neighbors
foreach($nodes as $id => $n) {
if(isset($nodes[$id]['hops']) && $nodes[$id]['hops'] !== 5) {
continue;
}
$nodes[$id]['hops'] = FALSE;
}
$inputArr = array_merge(array($id, $name, $hops));
$fp = fopen("zwave.txt", "a+");
fputcsv($fp, $inputArr);
fclose($fp);
1 Like