远程与Python脚本交互的最简单方法

远程与Python脚本交互的最简单方法,python,python-3.x,raspberry-pi,remote-access,Python,Python 3.x,Raspberry Pi,Remote Access,我正在网络上设置Raspberri Pi,它运行Python脚本来控制GPIO引脚。我需要通过GUI或命令行从网络上的另一台计算机更改此脚本中的变量。最简单的方法是什么 也许是一个简单的网页,以某种方式托管在Pi上,带有控制变量的按钮 谢谢 编辑:对不起,我只是想保持简单。脚本将在启动时启动并连续运行,监控温度,并循环加热器开/关(通过GPIO引脚),以保持存储在“设定点”中的温度变量。我建议您编辑python脚本中的变量,方法是从另一台计算机SSHing到raspberry pi,然后在基于终

我正在网络上设置Raspberri Pi,它运行Python脚本来控制GPIO引脚。我需要通过GUI或命令行从网络上的另一台计算机更改此脚本中的变量。最简单的方法是什么

也许是一个简单的网页,以某种方式托管在Pi上,带有控制变量的按钮

谢谢


编辑:对不起,我只是想保持简单。脚本将在启动时启动并连续运行,监控温度,并循环加热器开/关(通过GPIO引脚),以保持存储在“设定点”中的温度变量。

我建议您编辑python脚本中的变量,方法是从另一台计算机SSHing到raspberry pi,然后在基于终端的编辑器中编辑变量,如
nano
vim
。以下是如何做到这一点:

首先

获取raspberry pi的本地IP地址,并在同一网络上的计算机上运行以下命令。例如:

$ ssh brian@10.0.1.164 
假设raspberry pi的IP地址为
10.0.1.164
,并且raspberry pi还有一个名为
brian
的用户。如果您不知道pi的IP地址,请在pi上运行
sudo ifconfig
,并获取wlan0旁边的号码(如果您使用wifi,则号码应以
10.0
192.168
开头)。然后会提示您输入用户的密码

通过ssh连接后,使用
nano
vim
(基于命令行的文本编辑器)打开所需的python文件,方法是:

其中
/users/brian/Documents/python project/myfile.py
是文件在raspberry pi上的位置


这是最简单的入门方法,当然你可以构建一个更复杂的web应用程序来实现这一点,但是最好从快速简单的开始。

我建议您编辑python脚本中的变量,方法是从另一台计算机SSHing到raspberry pi,然后在基于终端的编辑器(如
nano
vim
)中编辑变量。以下是如何做到这一点:

首先

获取raspberry pi的本地IP地址,并在同一网络上的计算机上运行以下命令。例如:

$ ssh brian@10.0.1.164 
假设raspberry pi的IP地址为
10.0.1.164
,并且raspberry pi还有一个名为
brian
的用户。如果您不知道pi的IP地址,请在pi上运行
sudo ifconfig
,并获取wlan0旁边的号码(如果您使用wifi,则号码应以
10.0
192.168
开头)。然后会提示您输入用户的密码

通过ssh连接后,使用
nano
vim
(基于命令行的文本编辑器)打开所需的python文件,方法是:

其中
/users/brian/Documents/python project/myfile.py
是文件在raspberry pi上的位置


这是最简单的开始方式,当然你可以构建一个更复杂的web应用程序来完成这一点,但最好从快速简单的方式开始。

实际上,每次运行脚本时,你可能都想检查变量的新值,所以请将其保存在远程计算机上可访问的位置。
e、 g-1)如果您将其共享到共享文件夹中的文件中: 使用raspberry pi中的python脚本读取远程计算机上的文件并获取变量值。
2) 若您在远程计算机上有web服务器,即您发出请求并获取变量值作为响应。 使用以下python代码:

import requests

response = requests.post("http://remote-pc/varvalues",{"get_value_for_variable":'var-name'})
print(response.content)

实际上,您可能希望在每次运行脚本时检查变量的新值,所以请将其保存在远程计算机上可访问的位置。
e、 g-1)如果您将其共享到共享文件夹中的文件中: 使用raspberry pi中的python脚本读取远程计算机上的文件并获取变量值。
2) 若您在远程计算机上有web服务器,即您发出请求并获取变量值作为响应。 使用以下python代码:

import requests

response = requests.post("http://remote-pc/varvalues",{"get_value_for_variable":'var-name'})
print(response.content)

你的问题信息非常少。。。 假设您有python脚本remote.py,并且需要将值传递给变量, 您可以使用python中的ssh命令来实现这一点

import os
os.system ('ssh remoteuser at remote python remote.py arg1 "arg 2 has spaces" 
arg3')
如果您想使用Web API调用,请参考以下链接,

您的问题包含的信息非常少。。。 假设您有python脚本remote.py,并且需要将值传递给变量, 您可以使用python中的ssh命令来实现这一点

import os
os.system ('ssh remoteuser at remote python remote.py arg1 "arg 2 has spaces" 
arg3')
如果您想使用Web API调用,请参考以下链接,
这里有一个小网页,您可以安装在Raspberry Pi上,另存为Apache/其他web服务器的文档根目录中的
index.php
。然后,您可以使用网络上的任何iPhone或计算机,通过转到URL来控制所需的温度设置:

<IP-ADDRESS-OF-PI>://index.php
以下是网页
index.php

<?php
// If we were POSTed, save the value in file on server
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
   file_put_contents("setting.txt",$_POST['val']);
   return;
}
?>
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Temperature Control</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>

<?php
   // Get setting from previous run and load into Javascript variable "setting"
   if(!file_exists("setting.txt")){
      $s=10;
   } else {
      $s = file_get_contents("setting.txt");
   }
   printf("var setting=%d;",$s);
?>

  $( function() {
    $( "#slider-vertical" ).slider({
      orientation: "vertical",
      range: "min",
      // Constrain temperature setting to range [10,30]
      min: 10,
      max: 30,
      value: setting,
      change: function( event, ui ) {
        $( "#amount" ).val( ui.value );
        // Send value of slider back to server via AJAX POST
        $.post("index.php",{val:ui.value});
      }
    });
    // Update numeric value displayed on webpage
    $( "#amount" ).val( $( "#slider-vertical" ).slider( "value" ) );
  } );
  </script>
</head>
<body>

<p>
  <label for="amount">Setting:</label>
  <input type="text" id="amount" readonly style="border:0; color:#f6931f; font-weight:bold;">
</p>

<div id="slider-vertical" style="height:200px;"></div>

</body>
</html>

温度控制
$(函数(){
$(“#滑块垂直”)。滑块({
方向:“垂直”,
射程:“分钟”,
//将温度设置限制在范围[10,30]
民:10,,
最高:30,
值:设置,
更改:功能(事件、用户界面){
美元(“#金额”).val(ui.value);
//通过AJAX POST将滑块的值发送回服务器
$.post(“index.php”,{val:ui.value});
}
});
//更新网页上显示的数值
$(“金额”).val($(“垂直滑块”).slider(“值”);
} );

设置:

每次滑块移动时,它都会向服务器发送一个AJAX POST,将滑块的值保存在名为
“setting.txt”
的文件中。这实际上是由同一个PHP接收的(您可以在前4行中看到),因此您只需要维护一个文件

那你的朋友呢
redis-cli -h <IP-ADDRESS-OF-PI> <<< "SET setting 31"