如何从无线设备向 raspberry pi 无线发送命令并读取它们?

How to wirelessly send commands from a wireless device to raspberry pi and read them?

我正在使用 raspberry pi 开发一个项目,在该项目中,我需要根据无线命令(例如按下按钮)执行某些任务。假设我想通过从其他地方连接的按钮按下按钮来无线打开连接到 raspberry pi 的 LED。我如何无线控制 raspberry pi 中的 python 程序 运行?

您可以使用 TCP 客户端-服务器套接字。这适用于有线和无线通信。

您在这个项目中使用的是什么型号的树莓派?如果是树莓派 3 model B,如果你更喜欢无线模式,你可以使用板载蓝牙或 WiFi 来实现这一目的。

TCP 客户端-服务器套接字tutorial。请浏览此页面。虽然它在 C 代码中。 希望这有帮助。

山姆

从我的角度来看,如上所述,TCP 客户端-服务器套接字并不是一个好主意。套接字适用于实时数据流。然而,与它建立联系真的很痛苦。一旦你中断连接(不正确的断开连接),这很容易做到,你将阻塞你的端口,你最终会遇到臭名昭著的 'Address already in use' 错误。

如果您想要简单、强大且可扩展的解决方案,我强烈建议您 2 个选项

1) MQTT

MQTT 是来自 IBM 的完美解决方案,其 subscribe/publishing 消息协议(适用于 TCP 或 websockets)。您只需在 raspberry pi 上安装 MQTT 代理(服务器)(非常简单)。 Broker 总是 运行 所以你根本不必关心它

第二步,您在 raspberry pi 上创建程序,该程序将订阅某个特定主题下的代理。它的美妙之处在于您可以从任何地方订阅经纪人。该程序(订阅者)将接收有关特定主题的任何消息,并根据已发布的消息对您的逻辑进行编程

第三步是创建发布者。您只需提供您的经纪人的地址、端口并在特定主题下发布消息。 Publisher 可以是你的 phone、PC、digitalocean 服务器...等等。

如果您搜索 python MQTT 的实现 -> paho-mqtt

,已经有工作示例

The idea in image

2) Flask 服务器

我喜欢使用 Flask,因为它是可扩展的、不可破坏的,而且您在实施时不会遇到任何问题。

您只需在 raspberry pi 上设置 Flask 服务器(超级简单)并创建 API 来控制您想要在树莓派上的任何内容。 例如通过调用 10.0.0.10:5000/LED?state=on 将打开 LED 等

正如我已经说过的,我强烈建议您不要使用 socket-server&client。 Socket 很棒,但它用于非常具体的事情,您需要付出很多努力才能使其具有可扩展性和抗错误性。