我有2个raspberrypi设备。首先是测量温度,第二个是显示温度。我写了一些python脚本来管理发送温度结果。
服务器脚本:
import RPi.GPIO as GPIO
import dht11
import time
import datetime
import sys
# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
# read data using pin 17
instance = dht11.DHT11(pin=17)
result = instance.read()
out = str(result.temperature) + " " + str(result.humidity)
sys.stdout.write(out)
sys.stdout.flush()
sys.exit(0)
客户端脚本
#!/usr/bin/python
import math
import time
import os
import Adafruit_CharLCD as LCD
# Initialize the LCD using the pins
lcd = LCD.Adafruit_CharLCDPlate()
lcd.set_color(1.0, 1.0, 1.0)
lcd.clear()
ws_dht11 = ""
while True:
ws_dht11 = str(os.system('ssh pi@weatherstation.local \'python ~/Apps/DHT11_Python/dht11_ssh_read.py\''))
if ws_dht11<>'0 0':
break;
print 'F'
print ws_dht11
问题在于ws_dht11变量。它似乎没有收到任何值,而不是这个服务器脚本是打印结果。我该如何修理?
答案 0 :(得分:0)
os.system返回您运行的进程的退出代码,在这种情况下将返回0(我假设ssh甚至将返回代码传回,但不一定是这种情况)。我认为你要找的是os.popen(),它执行命令并允许你将其输出读到stdout。
这是一个非常肤浅的答案,我怀疑这是一种非常奇怪的实现沟通的方式,但我只是回答你的具体问题而没有思考。
答案 1 :(得分:0)
您只是运行一个进程,然后返回所述进程退出代码。
更好的解决方案是使用侦听套接字在主机之间进行通信,或使用某种HTTP API(如REST或XML)从主机A和主机B获取值。