远程与Python脚本交互的最简单方法
我正在网络上设置Raspberri Pi,它运行Python脚本来控制GPIO引脚。我需要通过GUI或命令行从网络上的另一台计算机更改此脚本中的变量。最简单的方法是什么 也许是一个简单的网页,以某种方式托管在Pi上,带有控制变量的按钮 谢谢远程与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,然后在基于终
编辑:对不起,我只是想保持简单。脚本将在启动时启动并连续运行,监控温度,并循环加热器开/关(通过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"