通过Greengrass发送UID /设备ID

时间:2019-01-25 10:22:20

标签: amazon-web-services aws-lambda aws-iot greengrass

我正在运行几个Greengrass Core,它们将数据发送到MQTT流。 我在GGC上部署了一个Lambda,以读取进来的SerialPort并将其推送到Stream。

但是现在我想检查哪个设备正在发送数据-我尝试了该设备来检查主机名

import socket
host = socket.gethostname()

但是核心发送值“ sandbox”,所以我认为未授权lambda读取主机名。

SDK没有与此相关的文档: https://github.com/aws/aws-greengrass-core-sdk-python

我想像这样将数据推送到mqqt流:

response = client.publish(
    topic='customer/events/{DEVICE-ID or UID or ARN}/',
    payload=jsonData.encode())

1 个答案:

答案 0 :(得分:1)

我在另一个AWS Python示例中发现了一些有用的东西-ThingNames已在系统环境中注册,因此您可以导入OS并获取ThingName,如下所示:

namespace Foo.Controls
{
    public class SpottedView : ListView
    {
        ObservableCollection<string> items;

        public SpottedView() : base()
        {
            items = new ObservableCollection<string>();
            ItemsSource = items;
            items.CollectionChanged += onItemsChanged;

            // TODO: test purposes, remove later
            var autoEvent = new AutoResetEvent(false);
            var stateTimer = new Timer(onTimer, autoEvent, 1000, 2000);
        }

        void onItemsChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            MainThread.BeginInvokeOnMainThread(() =>
            {
                HeightRequest = RowHeight * items.Count;
                InvalidateMeasure();
            });
        }

        // TODO test purposes, remove later.
        void onTimer(object state)
        {
            MainThread.BeginInvokeOnMainThread(() =>
            {
                if (items.Count < 2)
                {
                    items.Add("Blah");
                }
                else
                {
                    items.Clear();
                }
            });
        }
    }
}