跳到主要内容

内容说明

简介

这是一系列使用 OCS-Controller 解决常见编程任务的技巧。每个技巧都针对一个特定的问题,并通过示例展示如何利用平台的功能解决问题。

一个最基本的 Ocs-Controller 控制流如下:

将以下JSON导入任意一个控制流运行,导入示例指导

[{"id":"f63aed0bd35715c0","type":"inject","z":"6000e185a1adf971","name":"注入","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":1080,"wires":[["83a535d3431a2373"]]},{"id":"83a535d3431a2373","type":"debug","z":"6000e185a1adf971","logName":"日志输出","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","logLevel":"info","dataType":"field","format":"handlebars","syntax":"mustache","template":"输出日志: payload 值为 {{payload}}","output":"str","x":650,"y":1080,"wires":[]}]

前置知识

注入 节点介绍

Ocs-Controller 的 注入 节点是流程中的一个基础且至关重要的节点,常用于启动流程、注入消息或进行调试。它能够手动或自动地将消息发送到连接的下一个节点,是许多 Ocs-Controller 流程的起点。

介绍 (Introduction)

注入 节点是 Ocs-Controller 中最常用的核心节点之一。它主要用于向流程中注入消息,充当流程的触发器。无论是需要手动启动一个操作、按照时间表执行任务,还是在 Ocs-Controller 启动时初始化某个状态,注入 节点都能胜任。

功能描述 (Description of 函数)

注入 节点的核心功能是生成并发送一个 msg 对象到其输出端口,从而启动或驱动后续的节点执行。默认情况下,它发送的消息包含一个 payload 属性,其值为自 1970 年 1 月 1 日以来的毫秒数时间戳,以及一个空 topic 属性。

这个节点是测试流程、模拟传感器数据或定期执行任务的理想选择。

主要属性 (Main Properties)

双击 注入 节点即可打开其编辑对话框,配置其属性。

  1. Payload (消息体): 这是 注入 节点发送的消息中最重要的部分,包含实际的数据。payload 可以被设置为多种数据类型:

    • Timestamp (时间戳): 默认选项,发送当前时间的毫秒数时间戳。
    • String (字符串): 发送自定义文本。
    • Number (数字): 发送一个数字值。
    • Boolean (布尔值): 发送 truefalse
    • Buffer (缓冲区): 发送二进制数据。
    • JSON: 发送一个 JSON 对象或数组。
    • Expression (表达式): 使用 JSONata 表达式生成动态值。
    • Flow/Global context (流程/全局上下文): 从 Ocs-Controller 的上下文变量中获取值.
  2. Topic (主题): 一个可选的字符串属性,用于对消息进行分类或标识。这在需要基于主题路由或过滤消息时非常有用。例如,可以将温度传感器的数据 topic 设置为 "temperature/sensor1"。

  3. 重复 (Repeat): 这个设置决定了 注入 节点何时以及如何触发。

    • 手动触发 (None): 默认模式。节点左侧的方形按钮(通常是蓝色或灰色)可用于手动点击以发送消息。
    • 启动后注入一次 (Once after startup): Ocs-Controller 运行时,该节点会在流程部署或重启后自动发送一次消息。可以设置一个延迟.
    • 按时间间隔重复 (Interval): 按照固定的时间间隔(例如,每秒、每分钟)自动发送消息. 最长间隔约为 596 小时(约 24 天).
    • 特定时间重复 (At a specific time): 允许设置精确的计划,例如每天午夜或每周的特定时间,类似于 cron 表达式的功能.
  4. 名称 (Name): 为 注入 节点设置一个描述性名称,方便在流程中识别其功能. 如果未设置,默认显示 payload 的类型。

使用指导 (Usage Guide)

以下是一些 注入 节点的常见使用场景:

  1. 手动触发流程: 这是最基本的用法。将一个 注入 节点拖放到工作区,并连接到 日志输出 节点。部署流程后,点击 注入 节点左侧的按钮,您将在调试侧边栏中看到一个时间戳消息。

    • 配置示例: Payload 类型为 TimestampRepeat 设置为 None
  2. 定时任务触发: 当需要定期执行某个操作时,注入 节点可以作为定时器。

    • 每隔一段时间: 例如,每 5 秒读取一次传感器数据。
      • 配置示例: Repeat 设置为 Interval,选择 5 secondsPayload 可以设置为 Timestamp 或其他需要的值。
    • 特定时间点: 例如,每天凌晨 2 点生成一份报告。
      • 配置示例: Repeat 设置为 At a specific time,然后配置具体的小时和分钟。Payload 可以设置为一个字符串,如 "generate_report"。
  3. 流程初始化: 在 Ocs-Controller 启动或流程部署时,为设备或系统设置初始状态。

    • 配置示例: Repeat 设置为 Once after startupPayload 可以是布尔值 true/false 来打开/关闭设备,或一个 JSON 对象来配置系统参数。
  4. 调试和测试: 注入 节点是开发和调试流程的强大工具。您可以设置不同的 payload 类型和值,以模拟各种输入数据来测试下游节点的行为。

    • 模拟传感器值: 将 Payload 设置为 Number (例如 25.5),Topic 设置为 "temperature",然后手动注入,以测试处理温度数据的逻辑.
    • 发送命令: 将 Payload 设置为 String (例如 "ON" 或 "OFF"),以模拟控制命令.
    • 测试 JSON 数据: 将 Payload 设置为 JSON 对象,例如 {"status": "active", "value": 100},以测试处理复杂数据结构的节点。
总结 (Summary)

注入 节点是 Ocs-Controller 流程的“启动器”,其灵活性使其在手动触发、自动化定时任务、流程初始化和开发调试等多种场景下都不可或缺。熟练掌握 注入 节点的配置和使用,将极大地提高您构建 Ocs-Controller 应用的效率。

日志输出 节点

Ocs-Controller 的 日志输出 节点是流程开发和调试过程中最常用、也最重要的工具之一。它允许开发者查看流经节点的消息内容,从而帮助理解数据流、识别问题和验证流程逻辑。

介绍 (Introduction)

日志输出 节点是 Ocs-Controller 中的一个核心节点,用于在 Ocs-Controller 编辑器的“调试”侧边栏或系统控制台中显示流经其的消息。它不会修改任何消息内容,仅用于观察消息在流程中不同点的状态。它是理解数据如何在流程中转换和移动的关键。

功能描述 (Description of 函数)

当一个消息流经 日志输出 节点时,该节点会捕获这个消息,并根据其配置将消息的全部或部分内容输出到指定的目的地。默认情况下,它会将 msg.payload 的内容显示在编辑器的调试侧边栏中。这个功能对于检查变量值、跟踪数据变化以及诊断错误至关重要。

主要属性 (Main Properties)

双击 日志输出 节点即可打开其编辑对话框,配置其属性:

  1. 输出 (Output): 这个设置决定了 日志输出 节点应该显示消息的哪一部分。

    • msg.payload: 默认选项,只显示消息的 payload 属性。这是最常见的用法,因为 payload 通常包含消息的主要数据。
    • msg 对象: 显示完整的 msg 对象,包括 payloadtopic 以及所有其他由上游节点添加的属性。这对于深入了解消息的结构和所有可用数据非常有用。
    • msg.topic: 只显示消息的 topic 属性。
    • 特定属性: 可以指定 msg 对象中的任何其他属性,例如 msg.headersmsg.data.sensorValue 等。这允许你精确地检查某个嵌套属性的值。
    • 表达式 (JSONata): 使用 JSONata 表达式来计算并显示一个动态值。这提供了极大的灵活性,可以从复杂的消息结构中提取或转换数据进行显示。
  2. 输出到 (To): 这个设置决定了 日志输出 信息应该输出到哪里。

    • 调试侧边栏 (Debug window): 默认选项,也是最常用的选项。消息会显示在 Ocs-Controller 编辑器右侧的调试侧边栏中。这是进行实时、交互式调试的首选。
    • 系统控制台 (System console): 消息会输出到运行 Ocs-Controller 服务器的终端或控制台。这对于在 Ocs-Controller 作为服务运行时,或者当调试侧边栏中的消息过多时,进行后台日志记录非常有用。请注意,这通常需要访问 Ocs-Controller 服务器的运行环境。
  3. 名称 (Name): 为 日志输出 节点设置一个描述性名称。这个名称会显示在流程中,也会作为调试侧边栏中消息的标识符,帮助你区分不同 日志输出 节点发出的消息。如果未设置,默认显示其配置的“输出”属性(例如 msg.payload)。

使用指导 (Usage Guide)

以下是一些 日志输出 节点的常见使用场景:

  1. 查看输入数据: 将 日志输出 节点连接到流程的输入端(例如 inject 节点或 http in 节点),可以立即看到进入流程的原始数据是什么。

    • 配置示例: Output 设置为 msg 对象,To 设置为 Debug window
  2. 跟踪数据转换: 在数据经过 函数 节点、调整消息属性 节点或任何其他数据处理节点之后,连接一个 日志输出 节点来检查数据是否被正确修改。

    • 配置示例: 如果只关心 payload 的变化,Output 设置为 msg.payload。如果需要查看 msg 对象的其他部分是否被添加或修改,则设置为 msg 对象。
  3. 诊断问题和错误: 当流程没有按照预期工作时,在流程的关键路径上放置 日志输出 节点,逐步检查消息内容,可以帮助定位问题发生的位置。例如,在一个 http request 节点之后放置 日志输出 节点,可以查看 API 调用的响应或错误信息。

    • 配置示例: Output 设置为 msg 对象或 特定属性 (例如 msg.statusCode, msg.error),以获取最详细的错误信息。
  4. 验证条件逻辑: 在一个 switch 节点或 join 节点之前放置 日志输出 节点,可以确保输入到这些节点的消息符合预期的条件,从而帮助你理解为什么消息没有按照你设想的路径流转。

    • 配置示例: Output 设置为 msg 对象,或者某个关键判断属性。
  5. 后台日志记录: 在生产环境中,你可能不希望持续打开调试侧边栏。你可以将一些关键的 日志输出 节点配置为输出到系统控制台,以便在后台记录重要的事件或错误。

    • 配置示例: To 设置为 System consoleOutput 可以根据需要设置为 msg.payloadmsg 对象。
调试侧边栏的使用技巧 (Tips for Debug Window)
  • 清除调试消息: 点击调试侧边栏右上角的“垃圾桶”图标可以清除所有显示的消息。
  • 过滤消息: 调试侧边栏顶部的下拉菜单允许你只显示来自特定节点的调试消息,或者只显示错误消息。
  • 展开/折叠消息: 消息通常以可折叠的树状结构显示,你可以点击箭头展开或折叠对象或数组,以便查看详细内容。
  • 复制路径: 在调试侧边栏中,将鼠标悬停在消息的某个属性上,会出现一个“复制路径”按钮。点击它可以复制该属性的完整路径(例如 msg.payload.data),方便你在 调整消息属性 节点或 函数 节点中使用。
总结 (Summary)

日志输出 节点是 Ocs-Controller 开发者不可或缺的伙伴。它提供了一个清晰的窗口,让你能够实时观察流经流程的数据,从而极大地简化了流程的开发、测试和故障排除工作。掌握其各种配置和使用场景,将使你在 Ocs-Controller 的开发过程中事半功倍。

导入示例指导

每个示例都有对应的JSON,可直接在 OCS-Controller 中导入运行,导入方式如下:

  • 1、复制示例教程中的JSON

  • 2、在OCS-Controller中点击右上角的菜单按钮,点击导入

  • 3、粘贴导入