Raspberry Pi код истекает после нескольких минут работы - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть датчик сонара на макетной плате, подключенный к Raspberry Pi. Моя цель - каждый раз, когда что-то идет перед датчиком, оно отправляет файл в базу данных. Мой код работает нормально, но он истекает после нескольких минут работы. Есть ли способ перезапустить программу или как я могу изменить код для решения проблемы.

Я пытался заставить его всегда отправлять данные на сервер. Даже когда что-то не пересекается перед этим. Я пытался только тогда, когда он пересекается перед ним, и он все еще не работает.

import pyrebase
import RPi.GPIO as GPIO

x = 0
y = 0
while y < 1:
config = {
    "apiKey": "x",
    "authDomain": "x",
    "databaseURL": "x",
     "storageBucket": "x",
     "serviceAccount": "x"
    }

firebase = pyrebase.initialize_app(config)

'''
initialize app with config
'''

'''
    authenticate a user
'''


auth = firebase.auth()

user = auth.sign_in_with_email_and_password("email@gmail.com", "no")

db = firebase.database()

'''
    Create using push
'''
data = { "name" : "Joe Tilsed" }
archer = {"name": "Sterling Archer", "agency": "Figgis Agency"}
db.child("agents").push(archer, user['idToken'])

pam = {"name": "Pam Poovey", "agency": "Figgis Agency"}

while x < 1:
    GPIO.setmode(GPIO.BCM)
    TRIG = 18
    ECHO = 24

    GPIO.setup(TRIG, GPIO.OUT)
    GPIO.setup(ECHO, GPIO.IN)

    GPIO.output(TRIG, True)
    time.sleep(0.0001)
    GPIO.output(TRIG, False)


    while GPIO.input(ECHO) == False:
            start = time.time()
    while GPIO.input(ECHO) == True:
            end = time.time()
    sig_time = end-start

    distance = sig_time / 0.000148

    #print('d:{} in'.format(distance))



    if distance < 9:
        if distance > 1:
            db.child("today").push (data, user['idToken']),
            db.child("month").push (pam, user['idToken']),
            db.child("year").push (pam, user['idToken']),
            db.child("week").push (pam, user['idToken'])
        #else:
            #db.child("month").push (pam, user['idToken']),

1 Ответ

0 голосов
/ 30 апреля 2019

Я работал над аналогичным проектом , подключив датчик температуры к малиновому пи-нулю и отправив данные в Firebase. По моему опыту, скрипт прекратил работу, когда датчик температуры не был надежно подключен к выводам GPIO. Я закончил паять свои провода к датчику температуры к Raspberry Pi, и это, казалось, исправило это.

В качестве альтернативы, вы можете поместить содержимое цикла while в предложение try и перехватить исключение, выдаваемое сценарием, вызывающим его выход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...