我正在运行几个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())
答案 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();
}
});
}
}
}