跳到主要内容

AI 驱动文档

您想了解什么?

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

本教程向你展示如何使用简单的 HTTP 请求远程切换 OV10i 摄像机的配方。你将构建一个系统,使网络中的任意设备能够即时在不同的检查设置之间切换——非常适合多品种生产线。

What You'll Build: 一个远程配方切换系统,能够响应来自平板、电脑、PLC,或任何能够发送网页请求的设备的 HTTP 命令。

Estimated Time: 15–20 分钟

Skill Level: 初级

Real Example: 假设操作员在平板上扫描条码,摄像机自动切换到该产品的正确配方——这正是我们要构建的系统!

为什么 HTTP 配方切换为何方便

OV10i 使远程配方切换变得简单:

  • 任何设备都能触发——平板、PLC、计算机,甚至智能手机
  • 即时切换——配方在不到一秒内切换
  • 无需复杂设置——在 Node-RED 中只需少量节点
  • 与现有系统兼容——可与您现有的系统集成

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

前提条件

开始之前,请确保你拥有:

  • 已连接并正常工作的 OV10i 摄像机
  • 至少创建并可用的 2 个及以上配方
  • 通过 IO Block 访问 Node-RED
备注

你将需要 recipe ID 编号——这些编号在编辑配方时会显示在浏览器的地址栏中。

第一步:查找你的配方编号

1.1 获取 Recipe IDs

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

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

第二步:打开 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 服务器,用于监听配方变更请求。

第三步:构建你的配方切换器

3.1 添加基础节点

将以下四个节点拖拽到画布上:

  1. Inject(来自 Input 区段) - 你的“Switch recipe”按钮
  2. Function(来自 Function 区段) - 正确格式化请求
  3. HTTP Request(来自 Network 区段) - 将命令发送到摄像机
  4. Debug(来自 Output 区段) - 显示是否执行成功

3.2 连线

按如下方式连线:

Inject → Function → HTTP Request → Debug

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

第四步:配置节点

4.1 设置你的配方按钮

  1. 双击 Inject 节点
  2. 将名称改为 "Switch to Recipe 15"(使用你实际的 recipe ID)
  3. 将 Payload 设置为 "15"(你的配方 ID 编号)
  4. 点击 "Done"

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. 点击 "Done"

作用: 将你的配方编号打包成相机所需的格式。

4.3 设置 HTTP 请求

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

18.92 之前:使用 http://[CAMERA_IP]/edge/pipeline/activate 18.92 及以后版本:使用 http://localhost:5001/pipeline/activate

4.4 设置响应监控

  1. 双击 Debug 节点
  2. 将其命名为 "Recipe Change Result"
  3. 点击 "Done"

完美! 您的配方切换器现已就绪,可进行测试。

第 5 步:测试您的配方切换器

5.1 部署并试用

  1. 点击红色的 "Deploy" 按钮
  2. 点击你的 inject 按钮(Switch to Recipe 15)
  3. 在调试面板中观察响应

5.2 检查是否成功

成功迹象:

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

如果成功了: 恭喜!您已远程切换配方。

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

5.3 添加更多配方按钮

需要多个配方? 只需再添加更多的 inject 节点:

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

第 6 步:从其他设备使用

现在进入有趣的部分! 任何设备都可以通过向相机发送网络请求来改变配方。

6.1 从任意网页浏览器

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

http://192.168.0.100:5001/pipeline/activate

备注

将其替换为您相机的 IP 地址。

6.2 从命令行

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

curl -X POST http://192.168.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 instruction blocks
  • Python/C#/Java: 使用标准 HTTP 库
  • 自定义应用程序: 任何编程语言均可工作

请求格式始终相同:

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

第 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 之后再添加一个函数:

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

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

return msg;

第8步:快速故障排除

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

问题快速修复
“Recipe not found” 错误请在 URL 中仔细核对您的配方 ID 号码
没有任何响应验证相机 IP 地址和网络连接
“Parse error” 消息请检查 Function 节点代码是否正确复制
配方实际并未更改请确保配方存在且未损坏

仍然卡住? 请检查您的相机是否在线并可从 Node-RED 访问。

完成!

恭喜! 你现在对 OV10i 相机拥有远程配方控制。只需几次点击,你就可以构建一个能够:

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

下一步?

现在你已经实现了基础功能,你可以:

简易后续步骤

  • 为所有产品添加更多配方按钮
  • 从不同设备测试,如平板或手机
  • 创建自定义产品映射,以简化操作

高级思路

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

现实世界案例

以下是其他人如何使用 HTTP 配方切换:

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

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

🔗 参见下文