BLYNK
HOME       📲 GETTING STARTED       📗 DOCS       ❓HELP CENTER       👉 SKETCH BUILDER

Blynk thru Python on RPi - how to send data from app to RPi - Write

(I use RPi 3 Model BV1.2 and Thonny 3.2.0)
This tutorial should get you a basic understanding of how you can get data from the app to your rpi in a python program. I researched it as i couldn’t get the basic ‘Blynk direct to RPi physical pins’ set up to work as it was documented here.

I was expecting the following code to work on RPi, but it doesn’t :worried::

import blynklib
import time

BLYNK_AUTH = 't7BQHE3PvBko6ql-HF_WzeO-JMsHb01-'
blynk = blynklib.Blynk(BLYNK_AUTH)

try:
    blynk.run()
    while True:
        time.sleep(.1)
    
except KeyboardInterrupt: 
    GPIO.cleanup()

I’m looking to open a hatch via relais connected by the RPi. that’s will be the use case for this code.
Make sure you import the libraries in Thonny via menu >Tools>Manage Packages…
So this is how i get a port controlled by a button widget on the app:
create a new project with 2 button widgets. one with pin V5 and the other with pin V6

the comments in the code are in Dutch / Nederlands

import RPi.GPIO as GPIO
import time
import blynklib

#definieer variabelen
Relais=[5,6] # lijst met poort nummers van de relais, zo kunnen we alle output poorten in 1 keer instellen

#configureer de input output poorten
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(Relais,GPIO.OUT)
global valueV5
valueV5=0
global valueV6
valueV6=0

BLYNK_AUTH = 'your auth code'

# initialize Blynk
blynk = blynklib.Blynk(BLYNK_AUTH)

# register handler for virtual pin V5 write event
@blynk.handle_event('write V5')
def write_virtual_pin_handler(pin, value):
    global valueV5
    valueV5 = int(value[0])
    print("V5 : ",valueV5)
    
# register handler for virtual pin V6 write event       
@blynk.handle_event('write V6')
def write_virtual_pin_handler(pin, value):
    global valueV6
    valueV6 = int(value[0])
    print("V6 : ",valueV6)
    

try:
    while True:
        blynk.run()
        
        if valueV5==1:
            GPIO.output(5,GPIO.HIGH)
        else:
            GPIO.output(5,GPIO.LOW)
        
        if valueV6==1:
            GPIO.output(6,GPIO.HIGH)
        else:
            GPIO.output(6,GPIO.LOW)
except KeyboardInterrupt: 
    GPIO.cleanup()      

one comment: I read that the blynk.run() statement should not be in the While True: loop but it doesn’t work if it is not in that loop…

comments to improve/optimize are very welcome
have fun