【问题标题】:Interface between Raspberry Pi and Android树莓派和安卓的接口
【发布时间】:2017-09-11 19:03:52
【问题描述】:

我正在尝试做一些古怪的家庭自动化,这需要我从我的 Android 手机向我的 Pi 3 发送信号,以便执行脚本来使用 GPIO 引脚控制电机。
我唯一难过的是连接 Android 和 Pi 的最佳方式。

我已经阅读了很多不同的东西,而且我看到的不同答案的数量都是压倒性的。

到目前为止,我倾向于在我的应用程序中使用 Jsch 来 ssh 到 Pi 并执行命令,但有人告诉我这很愚蠢。

谁能向我解释为什么这是一个坏主意并向我解释一个更好的主意?理想情况下,手机应用能够通过本地网络和其他网络进行连接。

【问题讨论】:

    标签: android raspberry-pi gpio


    【解决方案1】:

    SSH 没有问题,但人们通常在 Pi 上使用 Web 服务器,在 Android 端使用 HTTP 请求。或者您可以通过原始套接字连接运行您自己的协议。

    如果您使用 SSH 密钥,SSH 命令可能会更安全。

    否则,您会将您的命令暴露给任何窥探您的互联网流量的人,并且随机的人将控制您的设备

    无论哪种方式,如果你想同时访问家庭内部和外部,你可以做更多的研究,看看你是否可以“端口转发”你的路由器

    【讨论】:

      【解决方案2】:

      在这类事情上使用 HTTP 的优势在于它可能会创建自己的用户界面。我的意思是,如果 Pi 上的接口是一个 Web 服务器,那么你就有办法为你的 Android 设备提供一个 HTML/JavaScript 接口,从而完全不需要创建一个 Android 应用程序——用户只需要一个浏览器。整个用户界面由 Pi 管理。

      我已经在 Pi 上使用这种方法进行电机控制。在 Pi 上,我使用嵌入 libmicrohttpd 网络服务器引擎的 C 程序。该程序可以提供普通的 HTML 页面以在浏览器上创建用户界面,或响应用户单击按钮或操纵滑块或其他任何东西产生的特定 HTTP GET 请求。您可以通过发送在正常 HTTP 请求/响应流之外发出 HTTP 请求的 JavaScript 函数来做一些非常复杂的事情,因此您可以(例如)拥有动态更新的浏览器显示(例如,显示来自 Pi 的传感器值)。

      此外,使用 SSL 和 HTTP 身份验证提供某种安全性很容易。我更喜欢 C,但也有一些适用于 Python 的网络服务器库也可以在 Pi 上运行。

      在我看来,唯一值得考虑比这更复杂的事情是当您需要在 Android 上的用户界面无法用 HTML/JavaScript 实现时。

      我相信有很多不同的方法可以做你想做的事。我更喜欢在 Pi 上完成大部分工作,因为我发现编写 Android 应用程序非常没有回报。另一方面,如果你喜欢为 Android 开发并且有丰富的经验,那么你建议的方法——通过 SSH 向 Pi 发送命令——可以很好地工作。这只是意味着在 Android 中完成大部分工作。

      【讨论】:

        【解决方案3】:

        是的,ssh 是一个愚蠢的解决方案。我建议开发rest api webservice,将其托管在您的PI上并从您的Android应用程序中调用它

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-08
          • 2017-05-03
          • 2021-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多