跳到主要内容

通过 HTTP 和 Node-RED 切换配方

本教程演示如何使用简单的 HTTP 请求远程切换 OV80i 摄像头上的配方。您将构建一个系统,使网络上的任何设备都能即时切换不同的检测设置——非常适合多产品生产线。

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

预计时间: 15-20 分钟

技能等级: 初级

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

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

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

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

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

先决条件

开始前请确保:

  • OV80i 摄像头已连接并正常工作
  • 至少创建了 2 个配方并准备就绪
  • 可访问 Node-RED(通过 IO Block)

重要提示: 您需要知道配方 ID 号——编辑配方时可在浏览器地址栏中找到。

步骤 1:查找配方编号

1.1 获取配方 ID

  1. 打开任意配方,进入配方编辑器
  2. 查看浏览器地址栏
  3. 找到 /recipe/ 后面的数字(例如:/recipe/15 表示配方 ID 是 15)
  4. 记录所有要切换的配方 ID

为什么要用这些编号? 每个配方都有唯一且固定的 ID,摄像头内部就是用它来识别配方的。

步骤 2:打开 Node-RED

2.1 进入流程构建器

  1. 在任意配方编辑器中,点击“IO Block”
  2. 点击“Configure IO”

现在您进入了 Node-RED,我们将在这里构建配方切换系统!

2.2 规划您的方案

我们要构建的流程如下:

按钮点击 → 格式化请求 → 发送到摄像头 → 查看结果

很简单! 摄像头内置了一个 Web 服务器,监听配方切换请求。

步骤 3:构建配方切换器

3.1 添加基础节点

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

  1. Inject(输入部分)——您的“切换配方”按钮
  2. Function(功能部分)——格式化请求
  3. HTTP Request(网络部分)——发送命令到摄像头
  4. Debug(输出部分)——显示是否成功

3.2 连接节点

按如下方式连线:

Inject → Function → HTTP Request → Debug

简单! 现在配置每个节点。

步骤 4:配置节点

4.1 设置配方按钮

  1. 双击 Inject 节点
  2. 名称改为“切换到配方 15”(用您的实际配方 ID)
  3. 设置 Payload 为“15”(您的配方 ID)
  4. 点击“完成”

4.2 设置请求格式化节点

  1. 双击 Function 节点
  2. 命名为“格式化请求”
  3. 复制以下代码:
// 从按钮获取配方编号
let recipeID = msg.payload;

// 设置 Web 请求头
msg.headers = {'Content-Type': 'application/json'};
msg.payload = JSON.stringify({ id: recipeID });

return msg;

  1. 点击“完成”

作用说明: 将配方编号打包成摄像头所需的格式。

4.3 设置 HTTP 请求节点

  1. 双击 HTTP Request 节点
  2. 方法选择“POST”
  3. URL 设置为 localhost:5001/pipeline/activate
  4. 名称改为“切换配方”
  5. 点击“完成”

版本说明:

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

4.4 设置响应监控节点

  1. 双击 Debug 节点
  2. 名称改为“配方切换结果”
  3. 点击“完成”

完美! 配方切换器已准备好测试。

步骤 5:测试配方切换器

5.1 部署并尝试

  1. 点击红色“Deploy”按钮
  2. 点击您的 Inject 按钮(切换到配方 15)
  3. 观察 Debug 面板的响应

5.2 检查是否成功

成功标志:

  • Debug 显示 "success": true
  • 摄像头界面显示新配方名称
  • Debug 面板无错误信息

成功了? 恭喜!您已远程切换配方。 未成功? 请查看下方故障排除部分。

5.3 添加更多配方按钮

想切换多个配方? 只需添加更多 Inject 节点:

  • 配方 10 按钮: Payload = "10",名称 = "切换到配方 10"
  • 配方 23 按钮: Payload = "23",名称 = "切换到配方 23"
  • 所有按钮连接到同一个 Function 节点

步骤 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 通过 PLC 和其他系统

大多数现代系统支持发送 HTTP 请求:

  • 西门子 PLC: 使用 HTTP 客户端块
  • Allen-Bradley: 使用 HTTP 指令块
  • Python/C#/Java: 使用标准 HTTP 库
  • 自定义应用: 任何编程语言均可

请求格式始终相同:

  • 方法: POST
  • URL: http://[CAMERA_IP]:5001/pipeline/activate
  • 请求体: {"id": "RECIPE_NUMBER"}

步骤 7:进一步优化

7.1 添加配方验证

想防止切换到不存在的配方? 修改您的 Function 节点:

let recipeID = msg.payload;
let validRecipes = ["10", "15", "20"]; // 您的实际配方 ID

if (!validRecipes.includes(recipeID)) {
msg.payload = "无效配方: " + recipeID;
return null; // 不发送请求
}

// 继续正常格式化...

7.2 产品代码映射

想用产品名称代替编号? 试试这个:

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

let recipeID = productCodes[msg.payload];
// 继续格式化...

现在您可以用产品名称触发切换了!

7.3 响应处理

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

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

if (response.success) {
msg.payload = "✓ 配方切换成功!";
} else {
msg.payload = "✗ 配方切换失败: " + response.error;
}

return msg;

步骤 8:快速故障排除

不工作?以下是常见解决方案:

问题快速解决方法
“配方未找到”错误仔细核对 URL 中的配方 ID
完全无响应确认摄像头 IP 和网络连接
“解析错误”消息检查 Function 节点代码是否正确复制
配方未实际切换确认配方存在且未损坏

仍有问题? 确认摄像头在线且 Node-RED 可访问。

您做到了!

恭喜! 您已实现 OV80i 摄像头的远程配方控制。只需几次点击,您构建了一个能够:

  • 从任何网络设备瞬时切换配方
  • 与 PLC、平板或电脑等现有系统集成
  • 支持多个配方的简单按钮切换
  • 验证请求以防止错误
  • 支持使用标准 Web 技术的自定义应用

接下来做什么?

基础功能完成后,您可以:

简单的下一步

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

高级思路

  • 构建带配方选择按钮的操作员仪表盘
  • 连接条码扫描器,实现自动配方选择
  • 与 MES 系统集成,实现生产线协调
  • 添加日志,跟踪配方使用情况

真实案例

其他用户如何使用 HTTP 配方切换:

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

可能性无限——这一切都从您刚刚构建的简单系统开始!

相关文档

  • 教程: 通过 MQTT 触发
  • 操作指南: MQTT 通信设置
  • 操作指南: TCP 通信设置
  • 教程: PLC 集成完整演练
  • 参考资料: Node-RED 逻辑块指南