message: fix: unknown manufacturer
  * fix: unknown manufacturer
  Fixes
  Fixes
  * fix: check if value is updated
  * fix: improve add value
diff: @@ -337,20 +337,24 @@ function onNodeReady (zwaveNode) {
  return
  }
  - // init node just once
  - if (!node.ready) {
  + // keep track of existing values (if any)
  + const existingValues = node.values
  +
  + // node can trigger the ready event multiple times. Set it to false to prevent discovery
  + node.ready = false
  + node.values = {}
  +
  initNode.call(this, zwaveNode)
  const values = zwaveNode.getDefinedValueIDs()
  for (const zwaveValue of values) {
  - addValue.call(this, zwaveNode, zwaveValue)
  + addValue.call(this, zwaveNode, zwaveValue, existingValues)
  }
  // node is ready when all it's info are parsed and all values added
  // don't set the node as ready before all values are added, to prevent discovery
  node.ready = true
  - }
  node.lastActive = Date.now()
  @@ -375,6 +379,10 @@ function onNodeInterviewCompleted (zwaveNode) {
  node.interviewCompleted = true
  node.neighbors = zwaveNode.neighbors
  + if (node.manufacturerId === undefined) {
  + initNode.call(this, zwaveNode)
  + }
  +
  // add it to know devices types (if not already present)
  if (!this.devices[node.deviceId]) {
  this.devices[node.deviceId] = {
  @@ -923,8 +931,9 @@ function updateValueMetadata (zwaveNode, zwaveValue, zwaveValueMeta) {
  *
  * @param { import('zwave-js').ZWaveNode } zwaveNode
  * @param { import('zwave-js').TranslatedValueID } zwaveValue
  + * @param {Map<string, import('../types/index.js').Z2MValueId} oldValues old valueIds, used to check if the value was existing or not
  */
  -function addValue (zwaveNode, zwaveValue) {
  +function addValue (zwaveNode, zwaveValue, oldValues) {
  const node = this.nodes[zwaveNode.id]
  if (!node) {
  @@ -934,13 +943,21 @@ function addValue (zwaveNode, zwaveValue) {
  const valueId = parseValue.call(this, zwaveNode, zwaveValue, zwaveValueMeta)
  + const vID = getValueID(valueId)
  +
  + // a valueId is udpated when it doesn't exist or its value is updated
  + const updated =
  + !oldValues || !oldValues[vID] || oldValues[vID].value !== valueId.value
  +
  logger.info(
  `Node ${zwaveNode.id}: value added ${valueId.id} => ${valueId.value}`
  )
  + if (updated) {
  this.emit('valueChanged', valueId, node)
  }
  }
  +}
  /**
  * Parse a zwave value into a valueID
  