繁体   English   中英

西门子徽标阴影和 AWS IoT Timestream 问题

[英]Siemens logo Shadows and AWS IoT Timestream problem

我试图将我的影子数据值从 Siemens Logo 设备中分离到正确的列中——每个值都应该分别写入Amazon Timestream ,但是它们的值名称包含破折号等字符,我无法通过设置 SQL 来分离这些值筛选。

我能做的最好的事情是设置:

// Rule query statement
SELECT state.reported FROM '$aws/things/HneviceIoT1/shadow/update'

所以我只能 select 更新和设置影子文件中的所有数据

Dimension Name: device_id
Dimension Value: ${clientId()}

Timestream 中的结果看起来无法使用 - 附上打印屏幕

截图

任何帮助和想法将不胜感激。

影子文档示例。

// Device Shadow state:
{
  "state": {
    "reported": {
      "AM..4:1-1": "0027",
      "I..1:1-1": "00",
      "I..1:2-1": "01",
      "Q..1:5-1": "01",
      "M..1:25-1": "01",
      "M..1:1-1": "00"
    }
  }
}

// Device Shadow metadata
{
  "metadata": {
    "reported": {
      "AM..4:1-1": {
        "timestamp": 1633104862
      },
      "I..1:1-1": {
        "timestamp": 1633104862
      },
      "I..1:2-1": {
        "timestamp": 1633104862
      },
      "Q..1:5-1": {
        "timestamp": 1633104862
      },
      "M..1:25-1": {
        "timestamp": 1633104862
      },
      "M..1:1-1": {
        "timestamp": 1633104862
      }
    }
  }
}

我面临着同样的问题。 我找到的最佳解决方案是使用 AWS Lambda function:

  1. 使用 Iot 规则将您的数据发送到 Lambda(将 Lambda 设置为规则目标);
  2. 在 Lambda 中访问您的数据;
  3. 使用 AWS SDK 将您的数据保存在 Timestram 中。

在Lambda我可以访问Logo。 作为字典的遥测值。 我使用了 C# (.Net6),但同样的原理也适用于您选择的编程语言。

我在C#中创建了一个消息结构:

public class TelemetryMsg
{
    public Dictionary<string, string>  State { get; set; } = new Dictionary<string, string>();
    ...
}

然后我可以使用 C# 表示法访问数据:

public TestFunction (TelemetryMsg msg)
{
    string myData = msg.State["I..1:1-1"]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM