Skip to content

Consumed-thing node does not auto-fetch TD from tdLink on import/deploy #35

@ashfaq92

Description

@ashfaq92

When importing a Node-RED flow that uses the node-red-node-wot "consumed-thing" node with only the tdLink set (and an empty td field), the node does not automatically fetch the Thing Description (TD) from the provided URL on import or deploy. This results in downstream nodes (such as subscribe-event or invoke-action) failing with errors like:

TypeError: Cannot read properties of null (reading 'addUpdateTDListener') at new subscribeEventNode ...

Example workflow:

[
  {
    "id": "a18841fe05744488",
    "type": "tab",
    "label": "WashingMachine-LEDs-Blink",
    "disabled": false,
    "info": "",
    "env": []
  },
  {
    "id": "b1e2c3d4e5f60718",
    "type": "consumed-thing",
    "tdLink": "http://192.168.0.172:8082/washingmachine",
    "td": "",
    "http": true,
    "ws": false,
    "coap": false,
    "mqtt": false,
    "opcua": false,
    "modbus": false,
    "basicAuth": false,
    "username": "",
    "password": ""
  },
  {
    "id": "c2f3e4d5a6b70819",
    "type": "consumed-thing",
    "tdLink": "http://192.168.0.172:8083/leds",
    "td": "",
    "http": true,
    "ws": false,
    "coap": false,
    "mqtt": false,
    "opcua": false,
    "modbus": false,
    "basicAuth": false,
    "username": "",
    "password": ""
  },
  {
    "id": "d3e4f5a6b7c80920",
    "type": "subscribe-event",
    "z": "a18841fe05744488",
    "name": "WashingMachine finishedCycle",
    "topic": "",
    "thing": "b1e2c3d4e5f60718",
    "event": "finishedCycle",
    "x": 180,
    "y": 160,
    "wires": [["e4f5a6b7c8d91021"]]
  },
  {
    "id": "e4f5a6b7c8d91021",
    "type": "invoke-action",
    "z": "a18841fe05744488",
    "name": "Blink LEDs",
    "topic": "",
    "thing": "c2f3e4d5a6b70819",
    "action": "blink",
    "uriVariables": "{}",
    "x": 420,
    "y": 160,
    "wires": [["f5a6b7c8d9e01122"]]
  },
  {
    "id": "f5a6b7c8d9e01122",
    "type": "debug",
    "z": "a18841fe05744488",
    "name": "LEDs blinked",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "payload",
    "targetType": "msg",
    "statusVal": "",
    "statusType": "auto",
    "x": 670,
    "y": 160,
    "wires": []
  }
]

Expected behavior:
On import or deploy, the consumed-thing node should automatically fetch the TD from the tdLink without manual intervention.

Actual behavior:
The TD is not fetched automatically. I have to manually open the consumed-thing node and click "fetch" to populate the TD.

Additional context:
This makes it difficult to automate flow generation and deployment. Embedding the full TD in the flow is a workaround, but increases flow size significantly. Please consider making the node auto-fetch the TD from tdLink on deploy/import, or provide an option to do so.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions