Blynk restart problem Raspberry Pi

Hello everyone,

I made a hayfeeder for horses for my integrated test for school. This project use blynk but when i start the program it runs 5 minutes and then disconnect.
I have ride a block that check the blynk connection.When the connection is lost it do a full blynk restart. But then he is doing it over and over again.

This block check the connection:

def blynk_verbinding_controlleren():
print(“blynk_verbinding_controlleren”)
returnV5=blynk.virtual_sync(5)
if returnV5==9:
print(time.asctime(time.localtime(time.time())),“De blynkverbinding is oke.”)
else:
print(time.asctime(time.localtime(time.time())),“De blynkverbinding is verbroken.”)
full_blynk_restart()

This block does a full blynk restart:

def full_blynk_restart():
wachten(10)
blynk = blynklib.Blynk(BLYNK_AUTH)
blynk.run()
wachten(2)
blynk.virtual_write(63, 20)
wachten(2)
blynk.virtual_write(63, 0)
print(time.asctime( time.localtime(time.time())),‘Blynk-verbinding is gereset.’)


My full program:

import RPi.GPIO as GPIO
import time
import blynklib
import datetime
import schedule
import random
import Adafruit_DHT

BLYNK_AUTH = ‘DDaU4NGfV9i5wuZ4UK3HHBVVYzXqA4Td’ #auth Arno
#BLYNK_AUTH = ‘t7BQHE3PvBko6ql-HF_WzeO-JMsHb01-’ #auth Tom

LS1port=23
LS2port=24
LS3port=4
LS4port=17
LS5port=27
LSlist=[LS1port,LS2port,LS3port,LS4port,LS5port]
Luik1port=12
Luik2port=16
Luik3port=20
Luik4port=21
Luik5port=26
Waarschuwingsport=19
Relais=(12, 16, 20, 21, 26, 19)
Tellerwaarschuwing=5
StatusV15 = 0
StatusV16 = 0
StatusV17 = 0

global notificatie
notificatie = 1
global waardeV1
waardeV1=0

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(LSlist,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(Relais,GPIO.OUT)

blynk = blynklib.Blynk(BLYNK_AUTH)
#blynk = blynklib.Blynk(BLYNK_AUTH, server=‘blynk-cloud.com’, port=80, heartbeat=10, rcv_buffer=1042, log=print)
BlynkReadTimeOut=1

def wachten(sec):
secteller=sec
while secteller>0:
blynk.run()
secteller=secteller-1
msecteller=0
while msecteller<10:
msecteller=msecteller+1
time.sleep(0.1)

def meet_TenH():
blynk.run()
localtime = time.asctime( time.localtime(time.time()) )
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 10)
blynk.virtual_write(60, int(temperature))
blynk.virtual_write(61, int(humidity))
print(localtime," t=",int(temperature),“C h=”,int(humidity),"%")

def double_digit_string(tijd): #functie om elk uur of min om te vormen in een 2 character string
if tijd<10:
tijd=“0”+str(tijd)
else:
tijd=str(tijd)
return tijd

@blynk.handle_event(‘write V1’) #manueel volgende luik bedienen
def write_virtual_pin_handlerV1(pin, value):
print(time.asctime( time.localtime(time.time())),‘write_virtual_pin_handlerV1:’, value)
global waardeV1
waardeV1 = int(value[0])
if waardeV1==1:
print(‘waarde =’, value)
volgendluikbedienen()
waardeV1=0
@blynk.handle_event(‘write V5’) # button voor notificaties aan/uit
def write_virtual_pin_handlerV5(pin,value):
print(time.asctime( time.localtime(time.time())),‘write_virtual_pin_handlerV5:’, int(value[0]))
global notificatie
if int(value[0])==1:
notificatie=True
print(“notificatie aan :”,notificatie)
else:
notificatie=False
print(“notificatie uit :”,notificatie)

@blynk.handle_event(‘write V31’) # ophalen uur voederbeurt 1
def write_virtual_pin_handler31(pin, value):
schedule.clear(‘voederbeurt31’)
global Uur1
global Min1
if value[0] == “”:
print(time.asctime( time.localtime(time.time())),“Geen uur ingesteld”)
else:
#print(time.asctime( time.localtime(time.time())),‘write_virtual_pin_handlerV21:’, value)
global waardeV31
Seconden = int(value[0])
Uur1 = Seconden // 3600
Min1 = (Seconden-(Uur1*3600))//60
Voederbeurttijdstip31 = double_digit_string(Uur1) + “:” + double_digit_string(Min1) +":00"
schedule.every().day.at(Voederbeurttijdstip31).do(voederuur_controleren_en_bedienen).tag(“Voederbeurt31”)
print(time.asctime( time.localtime(time.time())),‘Tijdstip V31’, Voederbeurttijdstip31)

@blynk.handle_event(‘write V32’) # ophalen uur voederbeurt 2
def write_virtual_pin_handler32(pin, value):
schedule.clear(‘voederbeurt32’)
global Uur2
global Min2
if value[0] == “”:
print(time.asctime( time.localtime(time.time())),“Geen uur ingesteld”)
else:
#print(time.asctime( time.localtime(time.time())),‘write_virtual_pin_handlerV32:’, value)
global waardeV32
Seconden = int(value[0])
Uur2 = Seconden // 3600
Min2 = (Seconden-(Uur2*3600))//60
Voederbeurttijdstip32 = double_digit_string(Uur2) + “:” + double_digit_string(Min2) +":00"
schedule.every().day.at(Voederbeurttijdstip32).do(voederuur_controleren_en_bedienen).tag(“voederbeurt32”)
print(time.asctime( time.localtime(time.time())),‘Tijdstip V32’, Voederbeurttijdstip32)

@blynk.handle_event(‘write V33’) # ophalen uur voederbeurt 3
def write_virtual_pin_handler33(pin, value):
schedule.clear(‘voederbeurt33’)
global Uur3
global Min3
if value[0] == “”:
print(time.asctime( time.localtime(time.time())),“Geen uur ingesteld”)
else:
#print(time.asctime( time.localtime(time.time())),‘write_virtual_pin_handlerV33:’, value)
global waardeV33
Seconden = int(value[0])
Uur3 = Seconden // 3600
Min3 = (Seconden-(Uur3*3600))//60
Voederbeurttijdstip33 = double_digit_string(Uur3) + “:” + double_digit_string(Min3) +":00"
schedule.every().day.at(Voederbeurttijdstip33).do(voederuur_controleren_en_bedienen).tag(“voederbeurt33”)
print(time.asctime( time.localtime(time.time())),‘Tijdstip V33’, Voederbeurttijdstip33)

@blynk.handle_event(‘write V34’) # ophalen uur voederbeurt 4
def write_virtual_pin_handler34(pin, value):
schedule.clear(‘voederbeurt34’)
global Uur4
global Min4
if value[0] == “”:
print(time.asctime( time.localtime(time.time())),“Geen uur ingesteld”)
else:
#print(time.asctime( time.localtime(time.time())),‘write_virtual_pin_handlerV34:’, value)
global waardeV34
Seconden = int(value[0])
Uur4 = Seconden // 3600
Min4 = (Seconden-(Uur4*3600))//60
Voederbeurttijdstip34 = double_digit_string(Uur4) + “:” + double_digit_string(Min4) +":00"
schedule.every().day.at(Voederbeurttijdstip34).do(voederuur_controleren_en_bedienen).tag(“voederbeurt34”)
print(time.asctime( time.localtime(time.time())),‘Tijdstip V34’, Voederbeurttijdstip34)

@blynk.handle_event(‘write V35’) # ophalen uur voederbeurt 5
def write_virtual_pin_handler35(pin, value):
schedule.clear(‘voederbeurt35’)
global Uur5
global Min5
if value[0] == “”:
print(time.asctime( time.localtime(time.time())),“Geen uur ingesteld”)
else:
#print(time.asctime( time.localtime(time.time())),‘write_virtual_pin_handlerV35:’, value)
global waardeV35
Seconden = int(value[0])
Uur5 = Seconden // 3600
Min5 = (Seconden-(Uur5*3600))//60
Voederbeurttijdstip35 = double_digit_string(Uur5) + “:” + double_digit_string(Min5) +":00"
schedule.every().day.at(Voederbeurttijdstip35).do(voederuur_controleren_en_bedienen).tag(“voederbeurt35”)
print(time.asctime( time.localtime(time.time())),‘Tijdstip V35’, Voederbeurttijdstip35)

def relaissturen(relaispin):
blynk.run()
i = Tellerwaarschuwing
while i > 0:
i = i - 1
GPIO.output(Waarschuwingsport,GPIO.HIGH)
time.sleep(0.2)
GPIO.output(Waarschuwingsport,GPIO.LOW)
time.sleep(0.2)

GPIO.output(relaispin,GPIO.HIGH)
print("relais",relaispin,"aan")
blynk.virtual_write(62, 20)
wachten(1)
GPIO.output(relaispin,GPIO.LOW)
print("relais ",relaispin," uit")
blynk.virtual_write(62, 0)

def volgendluikbedienen():
print(time.asctime( time.localtime(time.time())),‘start volgend luik bedienen’)
wachten(1)
if GPIO.input(LS1port):
print(time.asctime( time.localtime(time.time())),“Volgendeluikbedienen gedrukt”)
relaissturen(Luik1port)
if notificatie:
blynk.notify(“Luik 1 is geopend.”)
else:
if not GPIO.input(LS1port) and GPIO.input(LS2port):
print(time.asctime( time.localtime(time.time())),“Volgendeluikbedienen gedrukt”)
relaissturen(Luik2port)
if notificatie:
blynk.notify(“Luik 2 is geopend.”)
else:
if not GPIO.input(LS2port) and GPIO.input(LS3port):
print(time.asctime( time.localtime(time.time())),“Volgendeluikbedienen gedrukt”)
relaissturen(Luik3port)
if notificatie:
blynk.notify(“Luik 3 is geopend.”)
else:
if not GPIO.input(LS3port) and GPIO.input(LS4port):
print(time.asctime( time.localtime(time.time())),“Volgendeluikbedienen gedrukt”)
relaissturen(Luik4port)
if notificatie:
blynk.notify(“Luik 4 is geopend.”)
else:
if not GPIO.input(LS4port) and GPIO.input(LS5port):
print(time.asctime( time.localtime(time.time())),“Volgendeluikbedienen gedrukt”)
relaissturen(Luik5port)
if notificatie:
blynk.notify(“Luik 5 is geopend. Voederautomaat bijvullen aub.”)
else:
if not GPIO.input(LS5port):
print(time.asctime( time.localtime(time.time())),“Volgendeluikbedienen gedrukt”)
if notificatie:
blynk.notify(“Alle luiken zijn open. Gelieve de voederautomaat bij te vullen.”)

time.sleep(0.5)
verwerktLSstatus()

def verwerktLSstatus():
print(“start verwerktLSstatus”)
for poort in LSlist:
if GPIO.input(poort):
blynk.virtual_write(poort, 0)
#print(poort,’ uit’)
else:
blynk.virtual_write(poort, 255)
#print(poort,’ aan’)

def voederuur_controleren_en_bedienen(): #programma blok om te voorkomen dat het meerdere keren in een minuut voederd.
year, month, day, hour, minute = map(int, time.strftime("%Y %m %d %H %M").split())
if hour == Uur1 and minute == Min1 or hour == Uur2 and minute == Min2 or hour == Uur3 and minute == Min3 or hour == Uur4 and minute == Min4 or hour == Uur5 and minute == Min5:
print(time.asctime( time.localtime(time.time())),“Juiste uur: voederbeurt wordt gegeven na 59sec”)
wachten(59)
volgendluikbedienen()

def full_blynk_restart():
wachten(10)
blynk = blynklib.Blynk(BLYNK_AUTH)
blynk.run()
wachten(2)
blynk.virtual_write(63, 20)
wachten(2)
blynk.virtual_write(63, 0)
print(time.asctime( time.localtime(time.time())),‘Blynk-verbinding is gereset.’)

def blynk_verbinding_controlleren():
print(“blynk_verbinding_controlleren”)
returnV5=blynk.virtual_sync(5)
if returnV5==9:
print(time.asctime(time.localtime(time.time())),“De blynkverbinding is oke.”)
else:
print(time.asctime(time.localtime(time.time())),“De blynkverbinding is verbroken.”)
full_blynk_restart()

def Synchroniseer_uren():
print(time.asctime( time.localtime(time.time())),“Begin: uren, notificatie, TenH synchroniseren”)
blynk_verbinding_controlleren()
meet_TenH()
blynk.run()
blynk.virtual_sync(5)
blynk.read_response(timeout=BlynkReadTimeOut)
blynk.virtual_sync(31)
blynk.read_response(timeout=BlynkReadTimeOut)
blynk.virtual_sync(32)
blynk.read_response(timeout=BlynkReadTimeOut)
blynk.virtual_sync(33)
blynk.read_response(timeout=BlynkReadTimeOut)
blynk.virtual_sync(34)
blynk.read_response(timeout=BlynkReadTimeOut)
blynk.virtual_sync(35)
blynk.read_response(timeout=BlynkReadTimeOut)
print(time.asctime( time.localtime(time.time())),“Einde: uren, notificatie, TenH synchroniseren”)

schedule.every(30).seconds.do(Synchroniseer_uren)
schedule.every(6).seconds.do(verwerktLSstatus)

try:

while True:             
    blynk.run()
    blynk.notify(str(time.asctime( time.localtime(time.time())))+": Hayfeeder is opgestart.")
    Synchroniseer_uren()
    verwerktLSstatus()
    while True:
        blynk.run()
        schedule.run_pending()
        wachten(10)

except KeyboardInterrupt:
GPIO.cleanup()

Can anyone help me?

ps I am from Belgium some things are written in Dutch.

Arno

@ArnoVanDeynze please edit your post, using the pencil icon at the bottom, and add triple backticks at the beginning and end of your code so that it displays correctly.
Triple backticks look like this:
```

Pete.