python - 一种让 Raspberry Pi 等待命令的方法

标签 python linux networking webserver raspberry-pi

<分区>

我四处寻找这个问题的答案,但真的不知道要搜索什么以及去哪里寻找。我主要从事基本的 Web 开发,所以我不熟悉如何让不同计算机上的应用程序相互通信。

我想知道让树莓派坐下来等待来自同一本地网络上另一台计算机的命令的最佳和最有效的方法。

我开始了一个小项目,让 Pi 的相机在从同一本地网络上的计算机发送命令时开始和停止录制。我目前有一个小的 python 脚本,当单击两个不同的按钮时,它开始和停止将视频录制到文件中,但是我想将按钮触发器更改为来自另一台计算机的命令。 Pi 可能一次闲置几天,然后一个命令进来记录。那么实现这一目标的最有效方法是什么。我有一些想法/问题,我想知道每个人的想法。

  • 我需要安装网络服务器吗?
  • 是否可以让 pi 休眠并且 它在局域网上唤醒了吗?
  • 我应该打开一个套接字并在其中放一个循环吗 python脚本不断检查消息?这是能量吗 高效的?
  • 我是否应该从计算机发送消息以使用 shell 脚本启动 python 脚本,然后发送启动和停止命令?

如您所见,由于我对应用程序交互的了解有限,所以我到处都不知道我的选择是什么。感谢阅读,我期待着答案...

最佳答案

import socket
host="0.0.0.0"
port=43210 #or some high number unused port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((host,port)) 
s.listen(1)
client,address = s.accept()
#this wont run until after something hits that port

然后在另一台电脑上转到

http://ip.of.raspery.pi:43210

这将尝试打开端口...网页不会加载,但 pi 应该执行该评论下方的任何操作

或者你可以做

from flask import Flask
app = Flask(__name__)
@app.route("/start")
def start():
   return "OK START"
@app.route("/stop")
def stop():
  return "OK STOP!"

if __name__ == "__main__":
   app.run("0.0.0.0",port=8080)

然后在 pi 上运行它……(或者甚至更好地通过 apache 提供服务……但那是另一个问题)

然后你可以导航到

http://raspberry.pi.ip:8080/start 
http://raspberry.pi.ip:8080/stop

这次你会看到状态信息

关于python - 一种让 Raspberry Pi 等待命令的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27906392/

相关文章:

c - 套接字在 linux 上工作但在 osx 上不工作

python - PuLP 需要太多时间来解决

python - 使用 gmail smtp 使用 python 发送邮件

python - Pandas 数据框可以有列表的数据类型吗?

java - 从终端构建和运行 lwjgl 程序

c++ - 如何使用 X11 避免图形绘图中的闪烁

python - 重命名 spark 数据框中的嵌套字段

linux - 创建与文件转储并行的文件的 md5sum

linux - 使用 IP 队列时出现 Netlink 错误

image - 无法加载 YouTube 缩略图的网络图像 Flutter Web