blynk2 / app.py
yoon2566's picture
Create app.py
d7d61b4 verified
import gradio as gr
import requests # requests ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€
def execute_get_request(token, virtual):
"""Generates a GET request URL for Blynk API and executes the request."""
url = "https://blynk.cloud/external/api/get?token=" + token + '&' + virtual
try:
response = requests.get(url)
response.raise_for_status() # ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ HTTPError ์˜ˆ์™ธ ๋ฐœ์ƒ
response_text = response.text # ์‘๋‹ต ํ…์ŠคํŠธ ์ถ”์ถœ
except requests.exceptions.RequestException as e:
response_text = f"์š”์ฒญ ์‹คํŒจ: {e}" # ์—๋Ÿฌ ๋ฉ”์‹œ์ง€
return url, response_text # URL๊ณผ ์‘๋‹ต ํ…์ŠคํŠธ ๋ฐ˜ํ™˜
def create_push_url(token, virtual,value):
"""Generates a PUSH request URL for Blynk API."""
url = "https://blynk.cloud/external/api/update?token=" + token + '&' + virtual + '=' + str(value)
try:
response = requests.get(url)
response.raise_for_status() # ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ HTTPError ์˜ˆ์™ธ ๋ฐœ์ƒ
response_text = response.text # ์‘๋‹ต ํ…์ŠคํŠธ ์ถ”์ถœ
except requests.exceptions.RequestException as e:
response_text = f"์š”์ฒญ ์‹คํŒจ: {e}" # ์—๋Ÿฌ ๋ฉ”์‹œ์ง€
return url
with gr.Blocks() as demo:
gr.Markdown("# Blynk ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์›น์•ฑ")
with gr.Row():
with gr.Column():
gr.Markdown("### ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ (GET)") # Section title for GET
get_token_textbox = gr.Textbox(label='ํ† ํฐ ๊ฐ’ (Token Value):') # Input for GET Token
get_virtual_pin_radio = gr.Radio(['V0','V1','V2','V3','V4'], label='Virtual Pin ์„ ํƒ (Virtual Pin Selection):') # Radio for GET Virtual Pin
generate_get_url_button = gr.Button("GET ์š”์ฒญ ์‹คํ–‰ (Execute GET Request)") # Button to trigger GET request (๋ฒ„ํŠผ ์ด๋ฆ„ ๋ณ€๊ฒฝ)
get_url_output_textbox = gr.Textbox(label='์ƒ์„ฑ๋œ GET URL (Generated GET URL):',show_copy_button=True) # Output textbox for GET URL
get_response_textbox = gr.Textbox(label='GET ์‘๋‹ต (GET Response):',show_copy_button=True) # ์‘๋‹ต ํ…์ŠคํŠธ๋ฅผ ๋ณด์—ฌ์ค„ ํ…์ŠคํŠธ ๋ฐ•์Šค ์ถ”๊ฐ€
generate_get_url_button.click(
fn=execute_get_request, # ํ•จ์ˆ˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ (์š”์ฒญ ์‹คํ–‰ ํ•จ์ˆ˜๋กœ ๋ณ€๊ฒฝ)
inputs=[get_token_textbox, get_virtual_pin_radio],
outputs=[get_url_output_textbox, get_response_textbox] # outputs์— ์‘๋‹ต ํ…์ŠคํŠธ ๋ฐ•์Šค ์ถ”๊ฐ€
)
with gr.Column():
gr.Markdown("### ๊ฐ’ ์„ค์ • (PUSH)") # Section title for PUSH
push_token_textbox = gr.Textbox(label='ํ† ํฐ ๊ฐ’ (Token Value):') # Input for PUSH Token
push_virtual_pin_radio = gr.Radio(['V0','V1','V2','V3','V4'], label='Virtual Pin ์„ ํƒ (Virtual Pin Selection):') # Radio for PUSH Virtual Pin
push_value = gr.Slider(1, 255, label='Virtual Pin ๊ฐ’ ์„ ํƒ')
generate_push_url_button = gr.Button("PUSH URL ์ƒ์„ฑ (Generate PUSH URL)") # Button to trigger PUSH URL generation
push_url_output_textbox = gr.Textbox(label='์ƒ์„ฑ๋œ PUSH URL (Generated PUSH URL):',show_copy_button=True) # Output textbox for PUSH URL
generate_push_url_button.click(
fn=create_push_url, # PUSH URL ์ƒ์„ฑ ํ•จ์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ
inputs=[push_token_textbox, push_virtual_pin_radio,push_value],
outputs=push_url_output_textbox
)
demo.launch()