跳到主要内容

Recipe Change via HTTP with Node-red 22324ca1258280519e4dcd43cfe62559

draft: true

通过 Node-RED 使用 HTTP 进行配方切换

本教程演示如何通过简单的 HTTP 请求远程更改 OV80i 摄像头的配方。你将构建一个系统,使网络中任意设备能够即时在不同的检测设置之间切换——非常适合包含多种产品的生产线。

你将构建的系统: 一个远程配方切换系统,可以响应来自平板、电脑、PLC 或任何能够发送网页请求设备的 HTTP 命令。

预计时间: 15-20 分钟

难度: 初级

真实案例: 想象操作员在平板上扫描条码,摄像头会自动切换到该产品的正确配方——这正是我们要构建的!

为什么 HTTP 配方切换让工作更轻松

OV80i 让远程配方切换变得简单:

  • 任意设备都可以触发 — 平板、PLC、电脑,甚至智能手机
  • 瞬时切换 — 配方在不到一秒内切换
  • 无需复杂设置 — 只需在 Node-RED 中放置几个节点
  • 与现有系统兼容 — 与你已有的系统无缝集成

非常适合: 多产品生产线、操作员控制面板、自动化系统,或任何需要快速配方切换的场景。

先决条件

在开始之前,请确保你具备:

  • OV80i 摄像头已连接并正常工作
  • 至少创建并可使用的 2 条以上配方
  • Node-RED 访问(通过 IO Block)
备注

你需要 recipe ID numbers——这些数字在编辑配方时在浏览器地址栏中可看到。

Step 1:查找你的配方编号

1.1 获取配方 ID

  1. 在 Recipe Editor 中打开任意配方
  2. 查看浏览器地址栏
  3. /recipe/ 之后查找数字(示例:/recipe/15 表示配方 ID 为 15)
  4. 记录所有你想在切换中使用的配方的 ID

为什么要用这些数字? 每条配方都有一个唯一且不会改变的 ID——这是摄像头在内部使用的。

Step 2:打开 Node-RED

2.1 访问 Flow Builder

  1. 在任意 Recipe Editor 中,点击“IO Block”
  2. 点击“Configure IO”

现在你已经进入 Node-RED,我们将在这里构建你的配方切换系统!

2.2 规划你的设置

我们要构建的内容:

Button Click → Format Request → Send to Camera → See Result

简单! 摄像头内置的 Web 服务器侦听配方切换请求。

Step 3:构建你的配方切换器

3.1 添加基本节点

将这 4 个节点拖到画布上:

  1. Inject(来自 Input 部分)- 你的“切换配方”按钮
  2. Function(来自 Function 部分)- 正确格式化请求
  3. HTTP Request(来自 Network 部分)- 向摄像头发送命令
  4. Debug(来自 Output 部分)- 显示是否成功

3.2 将它们连起来

按如下方式连接:

Inject → Function → HTTP Request → Debug

简单! 现在让我们配置每一个节点。

Step 4:配置你的节点

4.1 设置你的配方按钮

  1. 双击 Inject 节点
  2. 将名称改为“Switch to Recipe 15”(使用你的实际配方 ID)
  3. 将 Payload 设置为“15”(你的配方 ID)
  4. 点击“完成”

4.2 设置请求格式化器

  1. 双击 Function 节点
  2. 命名为“Format Request”
  3. 复制下面的简单代码:
// Get recipe number from button
let recipeID = msg.payload;

// Set up the web request
msg.headers = {'Content-Type': 'application/json'};
msg.payload = JSON.stringify({ id: recipeID });

return msg;

  1. 点击“完成”

作用: 将你的配方编号打包成摄像头所期望的格式。

4.3 设置 HTTP 请求

  1. 双击 HTTP Request 节点
  2. 将 Method 设置为“POST”
  3. 将 URL 设置为 localhost:5001/pipeline/activate
  4. 命名为“Change Recipe”
  5. 点击“完成”
备注

在 v18.92 之前:使用 http://[CAMERA_IP]/edge/pipeline/activate
v18.92 及更高版本:使用 http://localhost:5001/pipeline/activate

4.4 设置响应监视器

  1. 双击 Debug 节点
  2. 将名称设为“Recipe Change Result”
  3. 点击“完成”

完美! 你的配方切换器已经就绪,可以测试。

Step 5:测试你的配方切换器

5.1 部署并试用

  1. 点击红色的“Deploy”按钮
  2. 点击你的 Inject 按钮(Switch to Recipe 15)
  3. 观察调试面板的响应

5.2 确认是否成功

成功标志:

  • 调试显示 "success": true
  • 摄像头界面显示新配方名称
  • 调试面板中没有错误信息

如果成功了:恭喜!你刚刚实现了远程配方切换。

如果没有成功:请查看下方的故障排除部分。

5.3 添加更多配方按钮

需要多条配方? 只需再添加更多的 Inject 节点:

  • 配方 10 按钮:Payload = "10",名称 = "Switch to Recipe 10"
  • 配方 23 按钮:Payload = "23",名称 = "Switch to Recipe 23"
  • 全部连接到同一个 Function 节点

Step 6:从其他设备使用

现在就轮到好玩的时候了! 任何设备都可以通过向摄像头发送网页请求来更改配方。

6.1 来自任意网页浏览器

在网络中的任意浏览器输入以下内容:

http://10.250.0.100:5001/pipeline/activate

备注

将其替换为你摄像头的 IP 地址。

6.2 来自命令行

Windows/Mac/Linux - 将配方切换到 15:

curl -X POST http://10.250.0.100:5001/pipeline/activate \
-H "Content-Type: application/json" \
-d '{"id": "15"}'

6.3 来自 PLCs 和其他系统

大多数现代系统可以发送 HTTP 请求:

  • Siemens PLCs: 使用 HTTP client blocks
  • Allen-Bradley: 使用 HTTP 指令块
  • Python/C#/Java: 使用标准 HTTP 库
  • 自定义应用: 任何编程语言都可以

请求格式始终相同:

  • 方法(Method): POST
  • URL: http://[CAMERA_IP]:5001/pipeline/activate
  • Body: {"id": "RECIPE_NUMBER"}

Step 7:让它更好用

7.1 增加配方校验

想要防止切换到不存在的配方? 修改你的函数:

let recipeID = msg.payload;
let validRecipes = ["10", "15", "20"]; // Your actual recipe IDs

if (!validRecipes.includes(recipeID)) {
msg.payload = "Invalid recipe: " + recipeID;
return null; // Don't send request
}

// Normal formatting continues...

7.2 产品码映射

想要使用产品名称而不是数字? 尝试这个:

let productCodes = {
"BOLT_A": "10",
"BOLT_B": "15",
"SCREW_C": "20"
};

let recipeID = productCodes[msg.payload];
// Continue with formatting...

现在你可以用产品名称来触发,而不是数字!

7.3 响应处理

想要更好的成功/错误信息? 在 HTTP Request 之后再添加一个 Function 节点:

let response = JSON.parse(msg.payload);

if (response.success) {
msg.payload = "✓ Recipe changed successfully!";
} else {
msg.payload = "✗ Recipe change failed: " + response.error;
}

return msg;

Step 8:快速故障排除

不工作?以下是最常见的修复方法:

问题快速修复方法
**“Recipe not found” 错误检查 URL 中的配方 ID 是否正确
完全没有响应验证摄像头 IP 地址及网络连接
“Parse error” 消息检查 Function 节点代码是否正确复制
配方实际没有切换确保配方存在且未损坏

仍然卡住? 确认摄像头在线并且可以从 Node-RED 访问。

You did it!

恭喜! 你现在已经实现对 OV80i 摄像头的远程配方控制。只需点击几下,你就构建了一个系统,能够:

  • 即时从网络中的任意设备切换配方
  • 与现有系统集成,如 PLC、平板或计算机
  • 支持多条配方,通过简单按钮点击实现
  • 对请求进行验证,以防错误
  • 使用标准网络技术与自定义应用协同工作

下一步是什么?

在基础功能实现后,你可以:

简单的后续步骤

  • 为所有产品添加更多配方按钮
  • 从平板、手机等不同设备进行测试
  • 创建自定义产品映射以便操作更便捷

高级想法

  • 构建带配方选择按钮的操作员仪表板
  • 连接条码扫描器实现自动配方选择
  • 与 MES 系统集成以实现生产线协调
  • 添加日志记录,追踪在何时使用了哪些配方

现实世界的示例

下面是其他人如何使用 HTTP 配方切换的示例:

  • 食品包装: 条码扫描触发不同包装尺寸的配方切换
  • 汽车行业: PLC 根据产线上部件类型切换配方
  • 电子行业: 操作员平板带有针对不同电路板的配方按钮
  • 质量控制: 基于生产计划的自动配方切换

可能性无穷——这一切都始于你刚刚搭建的这个简单系统!

🔗 See Also