Хотите остановить скрипт в определенное время на Python

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

import RPi.GPIO as GPIO
import time
timeout = time.time() + 60*1

water_pump = 20
moisture_sensor = 21

GPIO.setmode(GPIO.BCM)

GPIO.setup(moisture_sensor, GPIO.IN)

GPIO.setup(water_pump,GPIO.OUT)
def callback(moisture_sensor):
 if GPIO.input(moisture_sensor):
    GPIO.output(water_pump, GPIO.LOW)
 else:
    GPIO.output(water_pump, GPIO.HIGH)

GPIO.add_event_detect(moisture_sensor, GPIO.BOTH, bouncetime=300)
GPIO.add_event_callback(moisture_sensor, callback)

Где застревает код?

b-fg 19.11.2018 17:04

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

aislamfaisal 19.11.2018 18:28

Помогите мне понять. Вы хотите настроить систему, в которой контакт датчика влажности поднимается высоко, насос запускается, а затем выключается через некоторое время. Почему бы просто не использовать time.sleep, а затем снова установить низкий уровень помпы?

Nitro 20.11.2018 05:08

Я новичок в python, и в этих системах вы не поможете мне с помощью кода.

aislamfaisal 20.11.2018 10:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
114
1

Ответы 1

Я использую фреймворк Flask для управления GPIO через WEB. Вот небольшой пример:

import RPi.GPIO as GPIO
import time
from flask import Flask
timeout = time.time() + 60*1

app = Flask(__name__)

water_pump = 20
moisture_sensor = 21

GPIO.setmode(GPIO.BCM)

GPIO.setup(moisture_sensor, GPIO.IN)

GPIO.setup(water_pump,GPIO.OUT)
def callback(moisture_sensor):
 if GPIO.input(moisture_sensor):
    GPIO.output(water_pump, GPIO.LOW)
 else:
    GPIO.output(water_pump, GPIO.HIGH)

@app.route('/start')
def start():
    GPIO.output(water_pump, GPIO.HIGH)

@app.route('/stop')
def stop():
    GPIO.output(water_pump, GPIO.LOW)

GPIO.add_event_detect(moisture_sensor, GPIO.BOTH, bouncetime=300)
GPIO.add_event_callback(moisture_sensor, callback)
app.run()

Другие вопросы по теме