📜  在节点红色仪表板上显示 LED - Javascript (1)

📅  最后修改于: 2023-12-03 15:08:06.130000             🧑  作者: Mango

在节点红色仪表板上显示 LED - Javascript

在节点红色仪表板上显示 LED,可以通过使用Node.js和Javascript实现。以下是实现此功能的步骤和代码示例。

步骤
  1. 安装Node.js和npm

    在开始之前,您需要安装Node.js和npm。您可以在Node.js官网上下载和安装Node.js。

  2. 安装节点红色仪表板

    安装节点红色仪表板可以通过npm在终端中运行以下命令来完成:

    npm install -g node-red
    
  3. 启动节点红色仪表板

    在终端中运行以下命令,将启动节点红色仪表板:

    node-red
    
  4. 添加LED节点

    在节点红色仪表板中创建一个新的流程。然后从节点库中添加LED节点。这个节点是我们将要使用的节点,它将允许我们在节点红色仪表板中显示LED图标。

  5. 创建Javascript函数

    创建一个Javascript函数来控制LED节点的状态。以下是一个简单的例子:

    function setLEDState(state) {
        if (state) {
            node.send({
                payload: {
                    status: {
                        fill: "green",
                        shape: "ring",
                        text: "ON"
                    }
                }
            });
        } else {
             node.send({
                payload: {
                    status: {
                        fill: "red",
                        shape: "ring",
                        text: "OFF"
                    }
                }
            });
        }
    }
    
  6. 连接LED节点到Javascript函数

    将LED节点连接到Javascript函数,以便LED节点可以接收状态更新。在RED节点中,可以通过拖动连接线来完成连接。

  7. 测试

    现在,您已经可以测试您的LED节点是否被成功地添加到节点红色仪表板中。在正确连接LED节点到Javascript函数之后,您可以改变函数的输入参数,来观察LED的状态是否发生了变化。

代码示例

以下是一个完整的代码示例,该示例将在节点红色仪表板中添加一个LED节点,并根据按钮的状态,控制LED的开关:

[
    {
        "id": "e3957635.0d0678",
        "type": "tab",
        "label": "LED Example"
    },
    {
        "id": "b20294d1.943b5",
        "type": "inject",
        "z": "e3957635.0d0678",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "x": 160,
        "y": 140,
        "wires": [
            [
                "1237277.90daa8e",
                "9eea1fa7.36f63"
            ]
        ]
    },
    {
        "id": "1237277.90daa8e",
        "type": "change",
        "z": "e3957635.0d0678",
        "name": "Set state to on",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "true",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 380,
        "y": 120,
        "wires": [
            [
                "9eea1fa7.36f63"
            ]
        ]
    },
    {
        "id": "dde3cbe3.96a11",
        "type": "inject",
        "z": "e3957635.0d0678",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "false",
        "payloadType": "bool",
        "x": 160,
        "y": 200,
        "wires": [
            [
                "1237277.90daa8e",
                "9eea1fa7.36f63"
            ]
        ]
    },
    {
        "id": "9eea1fa7.36f63",
        "type": "function",
        "z": "e3957635.0d0678",
        "name": "setLEDState",
        "func": "function setLEDState(state) {\n    if (state) {\n        node.send({\n            payload: {\n                status: {\n                    fill: \"green\",\n                    shape: \"ring\",\n                    text: \"ON\"\n                }\n            }\n        });\n    } else {\n        node.send({\n            payload: {\n                status: {\n                    fill: \"red\",\n                    shape: \"ring\",\n                    text: \"OFF\"\n                }\n            }\n        });\n    }\n}\n\nsetLEDState(msg.payload);",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 520,
        "y": 160,
        "wires": [
            [
                "31c28b71.39b8a8"
            ]
        ]
    },
    {
        "id": "31c28b71.39b8a8",
        "type": "debug",
        "z": "e3957635.0d0678",
        "name": "",
        "active": true,
        "console": "false",
        "complete": "false",
        "x": 740,
        "y": 160,
        "wires": []
    },
    {
        "id": "5f5afe5d.c556e",
        "type": "inject",
        "z": "e3957635.0d0678",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "x": 160,
        "y": 80,
        "wires": [
            [
                "1237277.90daa8e",
                "9eea1fa7.36f63"
            ]
        ]
    }
]

以上代码片段只是EXAMPLE,因此实际应用中需要根据要求进行修改。