【问题标题】:Initiating comms to an embedded 3G device向嵌入式 3G 设备发起通信
【发布时间】:2014-09-06 12:09:45
【问题描述】:

我有一个基于 Arduino 的设备连接到一个 3G 调制解调器,我用它来记录远程环境中多个传感器的数据。我希望能够不时地从设备发送命令并将一些数据流式传输回我的标准网络连接 PC。如果远程设备连接到 WIFI 或其他局域网,这将相对简单,但由于设备通过 3G 连接,这意味着它位于 3G 运营商 NAT 之后,因此与设备建立连接变得困难。 当然,该设备可以随时打开与我的主机 PC 的 TCP 连接,问题是告诉设备何时我希望它这样做。我需要某种方式向设备发送某种消息,以通知它我希望它启动与我的 PC 的连接。

我一直在阅读 NAT 遍历技术,应用程序开发人员使用这些技术在 NAT 后面的 2 个设备之间启动 P2P 通信,例如 UDP 和 TCP“打孔”,但这种方法对于我的 arduino 系统来说似乎过于复杂。另一个一般的想法是让设备定期轮询网络服务器以寻找启动连接的信号,但我不确定这会产生多少流量(和数据使用成本),因为设备必须每 10 秒轮询一次大约是为了确保它在它轮询的 Web 服务器上设置的请求的合理时间范围内启动它的连接。

是否有任何常用的方法来实现这样的目标?任何一般的想法或见解将不胜感激

谢谢, 詹姆斯

【问题讨论】:

    标签: sockets tcp arduino gsm 3g


    【解决方案1】:

    我认为解决方案在很大程度上取决于您的特定应用程序和要求。

    有几种方法可以实现这种类型的功能,看起来您已经介绍了其中的一些。最常见的是:

    • 让设备轮询服务器。这可能没问题,具体取决于您需要的响应时间。如果您需要像上面建议的那样定期轮询,那么我想电源对您来说可能比数据速率更重要,尤其是在您连接电池的情况下。我认为,对于典型的 3G 数据计划,轮询本身的数据开销可以忽略不计。
    • 让服务器发送一条短信,然后触发设备与服务器联系。您需要确保 SMS 可变交付时间适合您,并且您还必须意识到 SMS 交付无法保证,因此您必须在更高层(或您的应用程序)构建某种交付检查.
    • 为您的 3G 连接使用一些基于 Android 的低成本设备并利用 Google 推送通知机制

    值得注意的是,服务器轮询通常会得到非常糟糕的报道,因为让客户端和服务器不断检查消息在直觉上似乎很浪费,尤其是当实际消息相当少时。然而,在大多数推送解决方案的背后,仍然存在一种拉机制,尽管它通常是一种非常有效的机制,例如,它可以捎带网络和移动设备之间的其他消息,因此具有最小的功率和数据开销。就个人而言,我会说,如果您对电池/电源或可能为您的服务器产生的负载轮询没有重大担忧,那么如果轮询解决方案的简单性优势超过其其他缺点,那么值得探索。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2019-05-09
      • 2017-12-24
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多