在 Pentaho 仪表板接收和显示 MQTT 流

Receive and Display MQTT Stream at Pentaho Dashboard

我正在尝试使用他们的 CCC 图表在 Pentaho 仪表板中显示(和处理)传入的 MQTT 消息。

我尝试设置一个 kettle 转换,然后将其上传到我的 Pentaho 服务器并将其用作数据源。(我测试了 运行 在 spoon 中进行的转换并且它有效,所以问题应该出在某个地方别的)。当我尝试显示仪表板时,它告诉我 'Error processing component(component name)' 而服务器抛出此异常:

Caused by: org.pentaho.reporting.libraries.resourceloader.ResourceCreationException: Unable to parse the document: ResourceKey{schema=pt.webdetails.cda.settings.CdaRepositoryResourceLoader:, identifier=/home/admin/MqttReceive2.ktr, factoryParameters={}, parent=null}
...

我做错了什么?有没有正确的方法来做到这一点?

干杯

编辑: 我找到了使用 websocket 实现解决此问题的解决方案,但这并不是我所需要的。

我找到了使用 websocket 实现解决此问题的解决方案,但这并不是我所需要的。

有兴趣者:

https://github.com/thomaslaurenson/MQTT-Subscription-Examples

基本上它使用 java 脚本订阅 MQTT 代理并接收数据,然后您可以在仪表板中使用这些数据。整个代码可以简单地注入到您的电路板设置中并准备好使用。

它不言自明且易于使用。

解决这个问题的正确方法是使用数据服务。

这是我想出的:

您可以使用 Kettle 接收 MQTT-Data 并在您的转换中处理它:

您可以将数据服务附加到任何步骤,方法是右键单击->数据服务->新建 服务名称需要在所有数据服务中唯一,数据服务类型需要设置为streaming:

整个转换需要保存到 Pentaho 存储库(基本上是 Pentaho 的内部文件系统)

有了这个,您可以按照以下说明创建仪表板:

https://help.pentaho.com/Documentation/8.2/Products/CTools/Create_Streaming_Service_Dashboard

为您分解:

  1. 在数据源面板中,需要select'streaming over data service'输入一个流式数据服务名称,以及查询。
  2. 需要设置的参数为:

    • Window 模式:基于行

    • Window 大小:50(如果您想在仪表板中使用 50 个数据点)

    • Window 每:1(这决定了图表更新的频率)

    • Window 限制:0

  3. 在组件面板中,您需要select您选择的组件并使用您刚刚创建的数据源作为'Datasource'。 需要设置的参数如下:

    • 执行时不要阻止 UI:正确

    • 预执行前清除:假

  4. 创建前端布局并将组件绑定到布局 HTML 对象。