The result of integrating Koenkk/zigbee-herdsman#442 into the main zigbee-herdsman module on which node-red-contrib-zigbee depends on, is that it stops working and continuously reports that the serial port could not be opened because it is locked (which is kind of true, but not the root cause).
A little debugging brought to light what the problem is: the zigbee-herdman method supportsLED is no longer existing, hence
|
this.herdsman.supportsLED().then(supportsLED => { |
fails and the connect() code is failing, but it does not release the serial port, so subsequent retries report the locked serial port.
It is very unfortunate that the maintainers of zigbee-herdsman did not follow semver and bumped up the minor number of the package to indicate a removal of API functions. Would have prevented the upgrade breaking my node-red flows. But it is like it is.
I would suggest to leave the led alone and remove the code or to run this code only if the method supportsLED is present.
Hope this helps others to understand the problem and not to waste time to find out what they did to break things.
A quick workaround is to downgrade zigbee-herdsman using npm to version 0.13.169 or older.
I just commented out the lines
|
this.herdsman.supportsLED().then(supportsLED => { |
|
if (supportsLED === true) { |
|
this.herdsman.setLED(this.led === 'enabled').then(() => { |
|
this.debug(`setLED successfully set ${this.led}`); |
|
}).catch(error => { |
|
this.error(`setLED failed to set ${this.led} ${error.message}`); |
|
}); |
|
} else if (this.led === 'enabled') { |
|
this.error('Setting LED not supported on this adapter. To avoid this message at startup, set CC2531 LED to \'disabled\' in controller node'); |
|
} |
|
}); |
Which also does the job but of course gets overwritten next time I update node-red...
The result of integrating Koenkk/zigbee-herdsman#442 into the main zigbee-herdsman module on which node-red-contrib-zigbee depends on, is that it stops working and continuously reports that the serial port could not be opened because it is locked (which is kind of true, but not the root cause).
A little debugging brought to light what the problem is: the zigbee-herdman method supportsLED is no longer existing, hence
node-red-contrib-zigbee/nodes/shepherd.js
Line 622 in c1118eb
fails and the connect() code is failing, but it does not release the serial port, so subsequent retries report the locked serial port.
It is very unfortunate that the maintainers of zigbee-herdsman did not follow semver and bumped up the minor number of the package to indicate a removal of API functions. Would have prevented the upgrade breaking my node-red flows. But it is like it is.
I would suggest to leave the led alone and remove the code or to run this code only if the method supportsLED is present.
Hope this helps others to understand the problem and not to waste time to find out what they did to break things.
A quick workaround is to downgrade zigbee-herdsman using npm to version 0.13.169 or older.
I just commented out the lines
node-red-contrib-zigbee/nodes/shepherd.js
Lines 622 to 632 in c1118eb
Which also does the job but of course gets overwritten next time I update node-red...