2016-04-23 13 views
0

Ich bin gerade an einem Projekt mit meinem Raspberry Pi B +.
Ich verwende eine DHT22 - Temperatur & Feuchtigkeitssensor. Ich benutze auch Adafruit, das mit Python zusammenarbeitet.sudo /script.py - Temperatur & Feuchtigkeit in .php auslesen

Mein Problem ist, dass ich nicht wirklich weiß, wie ich eine bestimmte Sache in meinem .php Skript auslese, das ich in einer index.php (Apache-Server) implementieren möchte.

kann ich die Temperatur & Feuchtigkeit über Kitt lesen mit:

sudo /root/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 4 

während 22 ist die DHT „22“ Sensor - da gibt es eine ältere „11“ genannt und 4 die GPIO der Himbeere.

Kitt jetzt ist dies zu sagen:

[email protected]:~# sudo /root/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 4 
Temp=21.3* Humidity=41.6% 

Die AdafruitDHT.py für sich sieht wie folgt aus:

#!/usr/bin/python 
# Copyright (c) 2014 Adafruit Industries 
# Author: Tony DiCola 

# Permission is hereby granted, free of charge, to any person obtaining a copy 
# of this software and associated documentation files (the "Software"), to deal 
# in the Software without restriction, including without limitation the rights 
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
# copies of the Software, and to permit persons to whom the Software is 
# furnished to do so, subject to the following conditions: 

# The above copyright notice and this permission notice shall be included in all 
# copies or substantial portions of the Software. 

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
# SOFTWARE. 
import sys 

import Adafruit_DHT 


# Parse command line parameters. 
sensor_args = { '11': Adafruit_DHT.DHT11, 
       '22': Adafruit_DHT.DHT22, 
       '2302': Adafruit_DHT.AM2302 } 
if len(sys.argv) == 3 and sys.argv[1] in sensor_args: 
    sensor = sensor_args[sys.argv[1]] 
    pin = sys.argv[2] 
else: 
    print('usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#') 
    print('example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4') 
    sys.exit(1) 

# Try to grab a sensor reading. Use the read_retry method which will retry up 
# to 15 times to get a sensor reading (waiting 2 seconds between each retry). 
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) 

# Un-comment the line below to convert the temperature to Fahrenheit. 
# temperature = temperature * 9/5.0 + 32 

# Note that sometimes you won't get a reading and 
# the results will be null (because Linux can't 
# guarantee the timing of calls to read the sensor). 
# If this happens try again! 
if humidity is not None and temperature is not None: 
    print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity)) 
else: 
    print('Failed to get reading. Try again!') 
    sys.exit(1) 

meine .php wie folgt aussieht:

<?php 

$temp = exec('cat /root/Adafruit_Python_DHT/examples/AdafruitDHT.py |grep Temp='); 
$temp = explode('Temp=',$temp); 
$temp = round($temp,2); 

echo $temp; 
?> 

Ich weiß, dass meine erste Zeile nicht korrekt ist.
Aber ich weiß nicht, wie man die Live-Temperatur und Live-Luftfeuchtigkeit auslesen kann. Und ich wusste nicht genau, wo genau man googeln sollte.

bearbeiten 1:

With my current .php file the result looks like this

mit der folgenden Php-Datei, sieht die Seite wie folgt aus:

` Click me for the .php result

wie Sie sehen können, ist es es fehlt nur der Ausgang, der nur vom DHT22-Sensor kommt.

Antwort

0

Wenn Sie das tun

cat /root/Adafruit_Python_DHT/examples/AdafruitDHT.py | grep Temp= 

Sie nicht ausführen/die AdafruitDHT.py Programm ausführt, können Sie es Inhalte kopieren (dh. Die Python-Programmtext) Also, was Sie aus dem PHP zurück exec bekommen ist wahrscheinlich die Übereinstimmungslinie

print ('Temp = {0: 0.1f} * {Luftfeuchtigkeit = 1: 0,1 F%}'. Format (Temperatur, Feuchtigkeit))

ändern, die Linie:

$temp = exec('python /root/Adafruit_Python_DHT/examples/AdafruitDHT.py | grep Temp=') 

nachdem Sie sicherstellen, dass Sie eine Leitung (|) in einem PHP exec Aufruf verwenden dürfen. (Wenn Sie nicht erwägen, die Ausgabe des Skripts nur auf das zu beschränken, was Sie in PHP haben möchten, löschen Sie den | grep .... Teil).

+0

Okay, ich habe das jetzt mit der 'Katze'. Es ist nicht das, was ich brauche. Ich habe gerade meinen ersten Post bearbeitet, damit Sie sehen können, wie es aussieht. Ja, Sie haben es richtig gemacht, ich möchte das Ergebnis des Skripts auslesen, das ich ausführen möchte. Wenn ich das '.py'script ausführe, muss ich die Parameter dahinter setzen. Ich habe das jetzt probiert: '$ temp = exec ('python /root/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 4 | grep Temp =')' ohne irgendein positives Ergebnis. und auch '$ temp = exec ('python /root/Adafruit_Python_DHT/examples/AdafruitDHT.py & 22 & 4 | grep Temp =')' ohne irgendein positives Ergebnis. – jiansung

+0

Ich weiß nicht, warum es '&' vor den Parametern geben müsste. Wenn die Pipe funktioniert (was vielleicht nicht der Fall ist, dann wird '' '' '' '' '' 'auf der Kommandozeile mit Sicherheit brechen. Entfernen Sie die' | grep .... 'sehen Sie, wenn Sie etwas in PHP bekommen, wenn es nicht einfacher wird Dann arbeiten Sie von dort aus und überprüfen bei jedem Schritt, dass die Dinge immer noch funktionieren – Anthon

+0

Ich bekomme nicht einmal die 'Temp = 19.9 * Feuchtigkeit = 41.5%' auf meiner Website, auch wenn es das Skript ist . – jiansung