可以使用安装在其他机器上的Web2Py执行Raspberry Pi上的Python脚本吗?

时间:2016-06-07 06:20:24

标签: python web

我有一个Raspberry Pi,必须运行Python脚本才能手动打开/关闭LED。因为我不想在Pi上运行Web服务器,所以我在另一台机器上安装了Web2Py。目前我只能从MySQL数据库中检索数据(温度和湿度),但我无法使用网页上的按钮运行其他脚本。

示例:我按下笔记本电脑上安装的Web2Py服务器上的ON按钮=> Raspberry的Pi LED亮起。 (连接到GPIO)。

有可能这样做,还是我在浪费时间?

1 个答案:

答案 0 :(得分:1)

在使用Web服务器的计算机上,使用paramiko(python库)与pi通信并在那里启动脚本,然后获取答案并显示它(如果有的话)。

在网络服务器上:

// server.py

def leds_set(state):
  import paramiko
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect('127.0.0.1', username='ahah', password='lol')
  if state:
    state = 'on'
  else:
    state = 'off'
  stdin, stdout, stderr = ssh.exec_command('python /home/ahah/ledson.py ' + state)
  print(stdin, stdout, stderr)
  return dict()

// view.html
{{extend 'layout.html'}}

<form>
<input type="button" onclick="leds_set(True);" value="leds on"/>
<input type="button" onclick="leds_set(False);" value="leds off"/>
</form>

在你的pi:

// ledson.py

state = sys.argv[1]

if state =='on':
  print('Leds ON')
else:
  print('Leds OFF')