blynk1 / app.py
yoon2566's picture
Update app.py
ea6c4ee 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()