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:
mit der folgenden Php-Datei, sieht die Seite wie folgt aus:
wie Sie sehen können, ist es es fehlt nur der Ausgang, der nur vom DHT22-Sensor kommt.
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
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
Ich bekomme nicht einmal die 'Temp = 19.9 * Feuchtigkeit = 41.5%' auf meiner Website, auch wenn es das Skript ist . – jiansung