为什么会有内部异常?我如何修复它?

2024-10-08 18:28:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过GPIO引脚选择温度和湿度来创建一个网站。 我制作了一个按钮,当我单击它时,我转到python-file中的一个方法,但它不起作用。它打开另一个站点时出现内部服务器错误。 不幸的是,存在内部服务器错误。我现在不知道,我怎么能修好它

HTML

<div class="container">
                <h1 id="h1Titel" style="font-size:40px">Temperatur und Luftfeuchtigkeit</h1>
                <p id="pTemperatur" style="font-size:25px">Temperatur</p>
                <p id="pLuftfeuchtigkeit" style="font-size:25px">Luftfeuchtigkeit</p>
                <p id="AusgabeTemp" style="font-size:25px">--°C</p>
                <p id="AusgabeLuft" style="font-size:25px">--%</p>
                {% if  buttonStart  == 'enable' %}
                    <span class="cbtn" id="e6" style="font-size:25px">
                        <a href="/start" class="button" id="buttonStart" style="font-size:25px">Start</a>
                    </span>
                {% else %}
                    <span class="cbtn" id="e6" style="font-size:25px">
                        <a href="/start" class="button" id="buttonStart" style="font-size:25px" disabled>Start</a>
                    </span>
                {% endif %}
                {% if  buttonStop  == 'enable' %}
                    <span class="cbtn" id="e7" style="font-size:25px">
                        <a href="/stop" class="button"  id="buttonStop" style="font-size:25px">Stop</a>
                    </span>
                {% else %}
                    <span class="cbtn" id="e7" style="font-size:25px">
                        <a href="/stop" class="button"  id="buttonStop" style="font-size:25px" disabled>Stop</a>
                    </span>
                {% endif %}
                <p id="pErklaerung1" style="font-size:25px">Grüner Temperaturen Bereich: zwischen</p>
                <textarea id="TempGruenMin" style="font-size:25px" rows="1"></textarea>
                <p id="pUnd1" style="font-size:25px">und</p>
                <textarea id="TempGruenMax" style="font-size:25px" rows="1"></textarea>
                <p id="pErklaerung2" style="font-size:25px">Grüner Luftfeuchtigkeiten Bereich: zwischen</p>
                <textarea id="LuftGruenMin" style="font-size:25px" rows="1"></textarea>
                <p id="pUnd2" style="font-size:25px">und</p>
                <textarea id="LuftGruenMax" style="font-size:25px" rows="1"></textarea>
                <span class="cbtn" id="e8" style="font-size:25px">
                    <a href="/speichern" class="button"  id="buttonSpeichern" style="font-size:25px">Speichern</a>
                </span>
            </form>

Python

from flask import render_template, request
from app import app
import RPi.GPIO as GPIO
import Adafruit_DHT as dht
import time,sys
import traceback,sched
import string
import threading
import time

GPIO.setmode(GPIO.BCM)

DHTSensor = dht.DHT11
Threadbeenden = True
TempVor = 0
LuftVor = 0
minimumGruenerBereichTemperatur = 26
maximalGruenerBereichTemperatur = 27
minimumGruenerBereichLuftfeuchtigkeit = 35
maximalGruenerBereichLuftfeuchtigkeit = 38

ledRedPin = 26
ledBluePin = 19
ledGreenPin = 13

ledRedStatus = 0
ledBlueStatus = 0
ledGreenStatus = 0

buttonStartStatus = 'active'
buttonStopStatus = 'disable'

Temperatur = '--°C'
Luftfeuchtigkeit = '--%'

Threadbeenden = True

labTempVordergrundFarbe = 'BLACK'
labLuftVordergrundFarbe = 'BLACK'
labTempHintergrundFarbe = 'WHITE'
labLuftHintergrundFarbe = 'WHITE'

GPIO.setup(ledRedPin, GPIO.OUT)
GPIO.setup(ledBluePin, GPIO.OUT)
GPIO.setup(ledGreenPin, GPIO.OUT)

GPIO.output(ledRedPin, GPIO.LOW)
GPIO.output(ledBluePin, GPIO.LOW)
GPIO.output(ledGreenPin, GPIO.LOW)

@app.route('/')
@app.route('/index')
def index():
    ledRedStatus = GPIO.input(ledRedPin)
    ledBlueStatus = GPIO.input(ledBluePin)
    ledGreenStatus = GPIO.input(ledGreenPin)
    templateData = {
        'ledRed' : ledRedStatus,
        'ledBlue' : ledBlueStatus,
        'ledGreen' : ledGreenStatus,
        'buttonStart' : buttonStartStatus,
        'buttonStop' : buttonStopStatus,
        'temperatur' : Temperatur,
        'luftfeuchtigkeit' : Luftfeuchtigkeit,
        'labTempHF' : labTempHintergrundFarbe,
        'labTempVF' : labTempVordergrundFarbe,
        'labLuftHF' : labLuftHintergrundFarbe,
        'labLuftVF' : labLuftVordergrundFarbe
    }
    return render_template('index.html', title='Home', **templateData)

@app.route('/<devicename>')
def action(devicename):
    global Threadbeenden
    global DHTSensor
    global Luftfeuchtigkeit
    global minimumGruenerBereichLuftfeuchtigkeit
    global minimumGruenerBereichTemperatur
    global maximalGruenerBereichLuftfeuchtigkeit
    global maximalGruenerBereichTemperatur
    global Temperatur
    global ledBluePin
    global ledBlueStatus
    global ledGreenPin
    global ledGreenStatus
    global ledRedPin
    global ledRedStatus
    global labLuftVordergrundFarbe
    global labTempVordergrundFarbe
    global labLuftHintergrundFarbe
    global labTempHintergrundFarbe
    if devicename == 'start':
        buttonStopStatus = ButtonEnabeln()
        buttonStartStatus = ButtonDisabeln()
        while Threadbeenden == False:
            Luftfeuchtigkeit, Temperatur = dht.read_retry(DHTSensor, 23)
            if Threadbeenden == True:
                break
            Luft = Luftfeuchtigkeit + '%'
            Temp = Temperatur + '°C'
            Luftfeuchtigkeit = Luft
            Temperatur = Temp

            if Temperatur is not None and Luftfeuchtigkeit is not None:
                if Temperatur < int(minimumGruenerBereichTemperatur):
                    if (Threadbeenden is True):
                        break
                    labTempHintergrundFarbe = 'BLUE'
                    labTempVordergrundFarbe = 'WHITE'
                    GPIO.output(ledGreenPin, 0)
                    ledGreenStatus = 0
                    GPIO.output(ledBluePin, 1)
                    ledBlueStatus = 1
                    GPIO.output(ledRedPin, 0)
                    ledRedStatus = 0
                elif (Temperatur >= int(minimumGruenerBereichTemperatur)) and (Temperatur <= int(maximalGruenerBereichTemperatur)):
                    if (Threadbeenden is True):
                        break
                    labTempHintergrundFarbe = 'GREEN'
                    labTempVordergrundFarbe = 'WHITE'
                    GPIO.output(ledGreenPin, 1)
                    ledGreenStatus = 1
                    GPIO.output(ledBluePin, 0)
                    ledBlueStatus = 0
                    GPIO.output(ledRedPin, 0)
                    ledRedStatus = 0
                else:
                    if (Threadbeenden is True):
                        break
                    labTempHintergrundFarbe = 'RED'
                    labTempVordergrundFarbe = 'WHITE'
                    GPIO.output(ledGreenPin, 0)
                    ledGreenStatus = 0
                    GPIO.output(ledBluePin, 0)
                    ledBlueStatus = 0
                    GPIO.output(ledRedPin, 1)
                    ledRedStatus = 1

                if Luftfeuchtigkeit < int(minimumGruenerBereichLuftfeuchtigkeit):
                    if (Threadbeenden is True):
                        break
                    labLuftHintergrundFarbe = 'BLUE'
                    labLuftVordergrundFarbe = 'WHITE'
                elif (Luftfeuchtigkeit >= int(minimumGruenerBereichLuftfeuchtigkeit)) and (Luftfeuchtigkeit <= int(maximalGruenerBereichLuftfeuchtigkeit)):
                    if (Threadbeenden is True):
                        break
                    labLuftHintergrundFarbe = 'GREEN'
                    labLuftVordergrundFarbe = 'WHITE'
                else:
                    if (Threadbeenden is True):
                        break
                    labLuftHintergrundFarbe = 'RED'
                    labLuftVordergrundFarbe = 'WHITE'
            time.sleep(1.0)
            templateData = {
                'ledRed' : ledRedStatus,
                'ledBlue' : ledBlueStatus,
                'ledGreen' : ledGreenStatus,
                'buttonStart' : buttonStartStatus,
                'buttonStop' : buttonStopStatus,
                'temperatur' : Temperatur,
                'luftfeuchtigkeit' : Luftfeuchtigkeit,
                'labTempHF' : labTempHintergrundFarbe,
                'labTempVF' : labTempVordergrundFarbe,
                'labLuftHF' : labLuftHintergrundFarbe,
                'labLuftVF' : labLuftVordergrundFarbe
            }
            render_template('index.html', title='Home', **templateData)
        return render_template('index.html', title='Home', **templateData)
    if devicename == 'stop':
        Threadbeenden = True
        ledRedStatus = 0
        ledBlueStatus = 0
        ledGreenStatus = 0
        buttonStartStatus = ButtonEnabeln()
        buttonStopStatus = ButtonDisabeln()
        Temperatur = '--°C'
        Luftfeuchtigkeit = '%'
        labLuftHintergrundFarbe = 'WHITE'
        labLuftVordergrundFarbe = 'BLACK'
        labTempHintergrundFarbe = 'WHITE'
        labTempVordergrundFarbe = 'BLACK'
        GPIO.output(ledGreenPin, 0)
        GPIO.output(ledBluePin, 0)
        GPIO.output(ledRedPin, 0)

        templateData = {
            'ledRed' : ledRedStatus,
            'ledBlue' : ledBlueStatus,
            'ledGreen' : ledGreenStatus,
            'buttonStart' : buttonStartStatus,
            'buttonStop' : buttonStopStatus,
            'temperatur' : Temperatur,
            'luftfeuchtigkeit' : Luftfeuchtigkeit,
            'labTempHF' : labTempHintergrundFarbe,
            'labTempVF' : labTempVordergrundFarbe,
            'labLuftHF' : labLuftHintergrundFarbe,
            'labLuftVF' : labLuftVordergrundFarbe
        }
        return render_template('index.html', title='Home', **templateData)

def ButtonEnabeln():
    return 'active'

def ButtonDisabeln():
    return 'disable' 

Tags: idtrueoutputsizegpioifstyleglobal

热门问题