无法通过网络浏览器访问pi相机

时间:2017-08-04 00:46:32

标签: python apache server raspberry-pi raspistill

我正在编写一个Python CGI脚本,我想在笔记本电脑的浏览器上运行。这个脚本将SSH成两个Pis,并给出命令拍照。托管此脚本的服务器位于我要通过SSH连接的其中一个Pis上,并且Pi还充当其他Pi和我的笔记本电脑连接的接入点(一切都是LAN,未连接到Internet)

我已成功在笔记本电脑的浏览器上运行此脚本,以便在两个Pis上运行ls -l等简单命令,并在浏览器上打印出两者的结果。但是,我最终希望能够向两个Pis提供raspistill命令。当我这样做时,只有服务器的Pi正在拍摄图像,而另一个Pi则没有。我认为这是因为没有为服务器正确设置权限(我尝试将命令作为sudo运行但仍然没有运气)。但是,如果我在Python IDLE上运行相同的脚本,它可以正常工作。有人可以帮我确定问题吗?

这是我的剧本:

#! /usr/bin/env python3

from pssh import ParallelSSHClient
import cgi

print("Content-Type: text/plain\r\n")
print("\r\n ")

host = ['172.24.1.1','172.24.1.112']
user = 'XXXX'
password = 'XXXX'
client = ParallelSSHClient(host, user, password)

output = client.run_command('raspistill -o test.jpg', sudo=True)

// AMENDMENT:
for line in output['172.24.1.1'].stdout:  // works as well with '172.24.1.112'
    print(line)

修订: 显然,如果我从stdout输出任何内容,它就可以正常工作。为什么会这样?是等待我冲洗输出还是什么?我怀疑这可能是我正在使用的pssh包的问题。

2 个答案:

答案 0 :(得分:1)

在你的pi中,进入终端并输入sudo raspi-config,然后使用键导航到相机,然后启用它。这将重启你。 来自https://www.raspberrypi.org/documentation/configuration/camera.md

  

使用光标键移动到相机选项,然后选择“启用”。   在退出raspi-config时,它会要求重启。启用选项   将确保在重新启动时将运行正确的GPU固件   用相机驱动和调谐,GPU内存分裂是   足以让相机获得足够的内存来运行   正确。

在此之后,进入sudo raspi-config并启用ssh(这是pi-camera的另一个选项)。此here

的链接

答案 1 :(得分:1)

在仔细阅读pssh模块的文档后,我的问题与退出代码及其处理方式有关。

有关run_command的文档声明:

  

函数将在连接和身份验证建立后以及命令发送到成功建立的SSH通道后返回。

结果:

  

因此,即使是退出代码也不会立即可用   立即退出的命令。

最初,我只是盲目地运行run_command期望命令完成,但事实证明我需要获取退出代码才能真正完成命令运行的进程。文件说明了几种方法:

  

至少有一个

     
      
  • 迭代stdout / stderr完成
  •   
  • 调用client.join(output)是必要的,以使parallel-ssh等待命令完成并能够收集退出代码。
  •   

这就是为什么在我对代码的修改中,我从stdout输出的命令似乎正常工作。