我们有许多设备(大约50-60个设备)通过MQTT连接到IoTHub.为了节省电量,我们的设备每5分钟唤醒一次,保持清醒1秒钟以获取任何消息,如果没有任何消息,他们会重新入睡.这工作正常,直到大约2周前,当这停止工作.
在尝试了一些事情之后,我们发现如果我们将Stay-Awake时间增加到3秒,那么当设备连接时,IoTHub会将消息推送到设备.平均而言,一旦设备连接,物联网中心大约需要2.5秒才能推送消息.这将很快耗尽我们的电池,我们不能将其用作解决方案.考虑到设备与IoTHub位于同一区域,等待消息的发送似乎太长了.
我们还注意到,有时连接超时需要增加到接近10秒才能成功连接,这似乎太长了.
在我们的物联网设备上,我们使用的是MQTT协议,由于硬件资源有限,我们无法使用Azure IoT sdk
所以这里的问题是:
一旦设备连接,IoTHub花费2-3秒推送mqtt消息是否正常?
与IoTHub建立连接需要10秒钟是否正常?
更新1 - 2017年5月5日上午10:11
我通过MSDN向Microsoft提出了这个问题,这里是问题的链接:https://social.msdn.microsoft.com/Forums/en-US/9d24c261-2280-4515-8e89-8097625307ee/azure-iothub-是-既能更比23秒到调度的消息-通MQTT到所述的设备,当?论坛= azureiothub
我们在云服务上使用Azure sdk.然而,在物联网设备上,由于硬件限制,我们无法使用sdk,因此我们只是使用MQTT协议来连接,订阅,处理消息,然后断开连接.我们位于澳大利亚(墨尔本SE),我们正在测试多个部署,有些部署在AU,有些部署在美国东部,所有部署都给我们类似的延长等待时间来连接和发送/推送消息到物联网设备
Azure物联网套件和物联网集线器及其用途有何区别?请告诉我.NET在物联网中如何工作的基础知识.谢谢您的帮助!
我按照IOT Hub教程进行了操作.然后我创建了一个Stream Analytics作业并将上面的内容用作输入(在测试连接工作时).
但是我没有收到任何输入.运行示例测试时,我收到以下错误:
说明错误代码:ServiceUnavailable错误消息:此时无法连接到输入源.请检查输入源是否可用以及是否未达到连接限制.
我可以在IOT Hub中看到遥测信息.任何帮助,将不胜感激
我正在尝试将 AKKA 集成到使用 ASP.NET Core 在框架 net46 上构建的 IoT 应用程序中。我试图找到最好的方法,并希望对这个问题有任何评论,尽管它有点长。基于在 Java 和 AKKA.NET 中使用 AKKA 的经验的这两条评论都是相关的。
简而言之,我需要 AKKA.NET 从远程设备接收物联网消息并执行相当复杂的处理逻辑。
对于 IoT 通信,我们使用 Azure IoT 中心。物联网消息由多线程控制台应用程序使用,遵循 Microsoft 此处的指南:
https://azure.microsoft.com/da-dk/documentation/articles/iot-hub-csharp-csharp-process-d2c/
同时,我们正在使用依赖注入和所有最新的最佳实践运行标准的 ASP.NET Core(框架 net46)应用程序。
我需要 AKKA.NET 来接管 IOT 消费者应用程序内部进行的部分处理以及 ASP.NET 应用程序内部进行的部分处理。
我看到以下三个解决方案,我很好奇更有经验的 AKKA 开发人员会推荐哪种解决方案。我自己的直觉是解决方案 1 是首选,请参阅下面的我自己的论点:
方案一:新建一个基于AKKA.NET的Console应用,使用AKKA.Remoting与ASP.NET应用和IoT消费者应用进行通信。这意味着所有参与者逻辑都将封装在一个隔离的控制台应用程序中。当然,AKKA.NET 也将在 ASP.NET 应用程序和 IoT 消费者应用程序中引用和使用,但仅用于发送远程消息。
解决方案 2:在 ASP.NET 应用程序中直接使用 AKKA.NET,并使用 AKKA.Remoting 与 Iot 消费者应用程序进行通信。这意味着 ASP.NET 应用程序将使用 Actor 逻辑与现有的基于控制器、等待/异步等的传统 ASP.NET 逻辑并行扩展。
方案三:方案二的反面,即在IoT消费者应用内直接使用AKKA.NET,使用AKKA.Remoting与ASP.NET应用进行通信。
可能还有更多变化,例如在 ASP.NET 和 IoT 消费者应用程序中集成 AKKA.NET 逻辑,但我不喜欢在不同应用程序中运行 actor 的想法,至少在我所处的早期阶段不喜欢试图建立一个干净的新的基于演员的实现。
以下是我对解决方案 1 的论点:
有人告诉我,如果配置正确,AKKA.NET 能够以最佳方式利用所有核心,而无需上下文切换。为了能够分析和优化配置,我更喜欢为 …
预期: 使用带有 EventHubTrigger-CSharp 模板的函数应用程序会在新事件进入时运行。
实现:使用https://azure.microsoft.com/en-us/documentation/articles/functions-bindings-event-hubs/ 中的非常基本的示例
结果: 解释方法:
public static void Run(string myEventHubMessage, TraceWriter log)
{
log.Info($"C# Event Hub trigger function processed a message: {myEventHubMessage}");
}
Run Code Online (Sandbox Code Playgroud)
确实传递事件队列中的“第一个”而不是当前的。
额外的:
问题: 如何在函数应用中接收集线器上的最新事件?
更多信息: 我需要将新信号从事件中心转发到外部 mqtt api(到目前为止有效)。也许我需要另一种方法?
我只是尝试使用 Azure IOT Hub 将我的设备连接到云。但我收到如下错误。
MessagingEntityNotFoundException:找不到消息实体“ihsuprodsgres029dednamespace:eventhub:iothub-ehub-”。TrackingId:4772b610-8ff3-4709-8ea9-ffcd5784fe1c_B4,SystemTracker:ihsuprodsgres029dednamespace:eventhub:iothub-ehub-sibeeshiot-176205-a588b66686~16383 | team01,时间戳:2017年6月23日3:07:54 PM TrackingId:41110b704d814af497fd9924da6714d8_G4,SystemTracker :gateway2,时间戳:6/23/2017 3:07:55 PM,参考 ID:41110b704d814af497fd9924da6714d8_G4
如果您遇到过同样的问题,您能帮我解决一下吗?下面是我正在尝试的代码。
static void Main(string[] args) {
Console.WriteLine("Receive messages. Ctrl-C to exit.\n");
eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, iotHubD2cEndpoint);
var d2cPartitions = eventHubClient.GetRuntimeInformation().PartitionIds;
CancellationTokenSource cts = new CancellationTokenSource();
System.Console.CancelKeyPress += (s, e) = >{
e.Cancel = true;
cts.Cancel();
Console.WriteLine("Exiting...");
};
var tasks = new List < Task > ();
foreach(string partition in d2cPartitions) {
tasks.Add(ReceiveMessagesFromDeviceAsync(partition, cts.Token));
}
Task.WaitAll(tasks.ToArray());
}
private static async Task ReceiveMessagesFromDeviceAsync(string partition, CancellationToken ct) {
var eventHubReceiver …Run Code Online (Sandbox Code Playgroud) 我最近创建了一个 Azure Hub-IOT,其中我从虚拟设备发送一些数据,我知道数据已到达,因为我可以从终端看到它们,但现在我想获取这些数据并将它们保存到 Azure SQL_DataBase 中, 我怎样才能做到这一点?
如果有人可以向我解释该过程或链接一些教程,我将不胜感激。
在我们的场景中,我们有一堆设备与网关进行本地通信。网关负责聚合来自设备的事件并将其发送到云端。它还应该从云端接收设备配置更改并将其传输到特定设备。
根据我的阅读,我认为这实际上是一个典型的 IoT 中心场景。我们非常希望使用 IoT Hub 提供的设备管理、消息传递甚至双胞胎。
但是,设备之间的通信方式已经实现,不得更改。这意味着设备本身无法创建连接并提供 IoT 中心凭据。这排除了使用azure-iot-protocol-gateway或类似的。
我们宁愿需要网关充当可以代表其他设备的设备。网关会检测哪些设备在他的本地网络中并订阅它们的主题(通过 MQTT 或 AMQP)。
这甚至可能吗?设备能否代替其他设备发送事件或收听 Cloud-To-Device 消息?
我是 Azure、MQTT 和 IoT 的新手。我收到的任务是创建一个有关如何将 MQTT 消息发送到 Azure 事件中心的 POC。
并从事件中心处理,将消息保存到云sql服务器。
这可能吗?由于我从此处阅读,Azure 事件中心不支持 MQTT。或者有解决方法吗?或者有更好的方法来做到这一点吗?
目前我正在尝试研究Azure Event Hub和Azure IoT hub。
请帮我。谢谢。
我有在 Ubuntu 服务器下工作的设备,我创建了两个应用程序,它们实际上是我的“固件”我的目标是通过使用 Azure IoT Edge 更新这两个应用程序并创建某种发送健康和传感器状态的代理。我读了几篇文章,但仍有疑问:
提前感谢有关如何创建自定义固件的任何链接。