Передача вывода DHT22 в Python в переполнение стека

У меня есть датчик температуры и влажности DHT22, подключенный к Raspberry Pi. При запуске моего скрипта Python через CLI, скрипт работает как положено и отображает показания температуры и влажности. У меня проблема в том, что я не могу получить выходные данные датчика через PHP.

В качестве теста я включил команду для печати «Hello World» в своем скрипте Python. Когда я загружаю свою страницу PHP, отображается «Hello World», выходные данные датчика не отображаются.

В некоторых обсуждениях, которые я прочитал при устранении неполадок, владельцем и группой моего скрипта Python является «www-data», и этот пользователь был добавлен в файл sudoers на моем веб-сервере.

Любое руководство приветствуется. Я был в этом довольно долгое время без каких-либо прорывов и подозреваю, что мое незнакомство с Python может быть источником моей проблемы.

read_dht.py

#!/usr/bin/env python
# Copyright (c) 2014 Adafruit Industries
# Author: Tony DiCola
print 'Hello World...'

import sys
import Adafruit_DHT
sensor = Adafruit_DHT.DHT22
pin = 4

humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

if humidity is not None and temperature is not None:
print '{0:0.1f}|{1:0.1f}'.format(temperature, humidity)
else:
print 'Failed to get a reading. Please try again!'

get_readings.php

<?php
$command = escapeshellcmd('/var/www/cgi-bin/read_dht.py');
$output = shell_exec($command);
echo $output;
?>

2

Решение

Вам нужно настроить доступ к GPIO на Raspberry PI, иначе он будет доступен только для root.

Попробуйте запустить следующий код как root в терминале а затем проверьте вывод из вашего скрипта PHP с помощью браузера:

echo "17" > /sys/class/gpio/export
echo "18" > /sys/class/gpio/export
echo "21" > /sys/class/gpio/export
echo "22" > /sys/class/gpio/export
echo "23" > /sys/class/gpio/export
echo "24" > /sys/class/gpio/export
echo "25" > /sys/class/gpio/export

echo "out" > /sys/class/gpio/gpio17/direction
echo "out" > /sys/class/gpio/gpio18/direction
echo "out" > /sys/class/gpio/gpio21/direction
echo "out" > /sys/class/gpio/gpio22/direction
echo "out" > /sys/class/gpio/gpio23/direction
echo "out" > /sys/class/gpio/gpio24/direction
echo "out" > /sys/class/gpio/gpio25/direction

chmod 666 /sys/class/gpio/gpio17/value
chmod 666 /sys/class/gpio/gpio18/value
chmod 666 /sys/class/gpio/gpio21/value
chmod 666 /sys/class/gpio/gpio22/value
chmod 666 /sys/class/gpio/gpio23/value
chmod 666 /sys/class/gpio/gpio24/value
chmod 666 /sys/class/gpio/gpio25/value

chmod 666 /sys/class/gpio/gpio17/direction
chmod 666 /sys/class/gpio/gpio18/direction
chmod 666 /sys/class/gpio/gpio21/direction
chmod 666 /sys/class/gpio/gpio22/direction
chmod 666 /sys/class/gpio/gpio23/direction
chmod 666 /sys/class/gpio/gpio24/direction
chmod 666 /sys/class/gpio/gpio25/direction
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]