Python+TuyaAPI(GUI 포함)를 사용하여 날씨 응용 프로그램 만들기

안녕하세요, 여러분!본고에서 우리는 파이톤, Tkinter, TuyaAPI를 사용하여 데스크톱 기반의 날씨 프로그램을 구축할 것이다. 위도와 경도를 입력하면 이 프로그램은 실시간 날씨 데이터(온도, 습도와 풍속)를 공유할 수 있다.시작하기 전에 투아운의 개발을 소개해 드리겠습니다.
Tuya Smart는 브랜드, OEM, 개발 업체, 소매 체인점이 광범위한 스마트 장비와 업계에서 스마트 수요를 충족시키기 위해 상호 연결 기준을 구축하는 글로벌 IoT 개발 플랫폼이다.도아는 전 세계 공공 클라우드를 바탕으로 하드웨어 개발 도구를 제공하고 공공 클라우드 서비스를 통합하며 스마트 업무 개발 플랫폼을 제공함으로써 서로 다른 스마트 장면과 스마트 설비를 연결한다.
도아의 공공 클라우드 서비스는 전자메일 서비스, 문자 서비스, 음성 정보 서비스, 날씨 서비스와 알림 서비스를 포함한다.

Note: If you want to learn more about TuyaAPI for Python, refer this article


왜 도아를 써야 합니까?


왜냐하면.이유가 많다!첫 번째는 Tuya docs를 한 시간 동안 배우면 무료이며 설정하기 쉽다는 것이다.그 자체에 API 자원 관리자가 있어 어떻게 일어났는지, 출력이 어떻게 되는지 알 수 있다.

만약 당신이 데이터 안전에 매우 관심이 있다면 Tuya Cloud는 5층 안전 전략을 제공하여 스마트 장비의 안전을 확보하고 정보 유출의 위험이 존재하지 않는다. 그러면 당신은 당신의 데이터가 고도로 안전한 금고 안에 있다고 생각할 수 있다!

선결 조건

  • 투아 개발상 계좌.이리 와- https://developer.tuya.com/en/
  • Tuya Python SDK 및 커넥터
  • 트킨트
  • pip install tuya-iot-py-sdk
    pip install tuya-iot-py-sdk
    
  • 파이톤의 기초 지식
  • 그림 프로젝트 만들기


    위의 링크를 사용하여 등록하면 대시보드로 이동합니다.거기에서 '클라우드' 로 넘어가서 프로젝트를 만들고 다음 정보를 삽입합니다.


    Make sure your Data Center is correct.


    그런 다음 API 권한 부여를 요청받게 됩니다.그들은 기본적으로 일부 API를 제공하지만, 우리는 그것들을 필요로 하지 않는다.따라서 대부분을 삭제하고 이 네 개만 보존해야 합니다. (장치 위치는 선택할 수 있으며, 미래의 개선을 위한 것입니다.)


    모든 것이 다 준비되었다!마지막으로 우리는

    인코딩 부분!


    우선, 우리는 아래 라이브러리를 가져와야 한다.
    from tuya_connector import (
    TuyaOpenAPI
    )
    
    import datetime
    from tkinter import *
    # Explicit imports to satisfy Flake8
    from tkinter import Tk, Canvas, Entry, Text, Button, PhotoImage, font
    
    
    그 후에 우리는 이 코드들을 통해 이 프로젝트를 권한을 부여해야 한다.
    ACCESS_ID = "*****fyb6fkekonk8qi"
    ACCESS_KEY = "*********0d1ab3fb275cf8040fa"
    API_ENDPOINT = "https://openapi.tuyain.com"
    MQ_ENDPOINT = "wss://mqe.tuyain.com:8285/"
    
    ACCESS_IDACCESS_KEY를 찾으려면 프로젝트로 이동하여 라이센스를 확인하십시오.


    Access Secret = Access Key


    API 끝점은 데이터 센터를 기반으로 해야 합니다.

    그런 다음 API를 초기화하고 연결해야 합니다.
    openapi = TuyaOpenAPI(API_ENDPOINT, ACCESS_ID, ACCESS_KEY)
    openapi.connect()
    
    이제 요청을 보내고 OpenAPI에서 출력을 가져오기만 하면 됩니다.
    weather = openapi.get("/v2.0/iot-03/weather/current?lat=7.040424985635364&lon=80.00000327776945")
    
    print(weather)
    
  • 이것은 요청 매개 변수입니다.클라우드 개발 플랫폼의 API 작업에 대한 매개 변수를 요청합니다.Tuya는 다음과 같은 요청 방법을 지원합니다.
  • POST: 서버에 지정된 작업이 필요합니다.
  • GET: 서버가 지정한 자원을 되돌려 달라고 요청합니다.
  • PUT: 지정된 리소스에 대한 서버 업데이트를 요청합니다.
  • DELETE: 서버가 지정한 자원을 삭제해야 합니다.
  • 너는 두 단어latlon를 볼 수 있다.그것들은 위도와 경도를 대표한다.위치를 설정하십시오. (정확한 위도와 경도를 얻으려면 구글 지도로 이동해서 정확한 위치에 놓고 핀을 우클릭하십시오. 핀을 누르기만 하면 클립보드로 복사됩니다.)
    프로그램을 실행하고 출력을 봅니다.이렇게 될 거야-
    {'result': {'air_quality': {'aqi': '62', 'co': '1081.47', 'no2': '13.4734', 'o3': '79.304', 'pm10': '28.8763', 'pm25': '17.6388', 'so2': '5.66989'}, 'coordinate': {'lat': '7.0404', 'lon': '80.0000'}, 'current_weather': {'condition': 'Overcast', 'condition_num': '132', 'humidity': '88', 'pressure': '1012.1', 'real_feel': '28', 'temp': '26', 'uvi': '0', 'wind_speed': '3.1'}}, 'success': True, 't': 1639762879759}
    
    위대하다이제 모든 정보가 생겼어.지금 우리가 해야 할 일은 GUI를 만드는 것이다.

    GUI 만들기


    Tkinter Canvas를 사용하겠습니다.
    
    window = Tk()
    window.state('zoomed')
    window.configure(bg = "#3eedd6")
    
    window.title('Tuya Weather App')
    
    photo = PhotoImage(file = "C:\\Users\\nethm\\Downloads\\tuya logo.png")
    window.iconphoto(False, photo)
    
    canvas = Canvas(
        window,
        bg = "#3eedd6",
        height = 1024,
        width = 1440,
        bd = 0,
        highlightthickness = 0,
        relief = "ridge"
    )
    
    
    이 코드는 로고가 있는 Tuya Weather app라는 제목의 연두색 배경의 간단한 창을 만듭니다.
    플래그:

    미리 보기:

    그 후에 우리는 더 많은 프로그램 논리 부분이 필요하다.다음과 같이 Tuya API에서 제공하는 사전에서 특정 출력을 얻어야 합니다.
    current_weather_condition = (weather['result']['current_weather']['condition'])
    temperature = (weather['result']['current_weather']['temp'])
    wind_speed = (weather['result']['current_weather']['wind_speed'])
    humidity = (weather['result']['current_weather']['humidity'])
    
    여기서 우리가 하는 것은 출력에서 일부 변수 keys 에 값을 부여하는 것이다.따라서 print(humidity)를 실행하면 습도가 인쇄됩니다.GUI 가 그러한 이유입니다.
    다음에 우리는 datetime 라이브러리를 사용하여 간단한 소원 부품을 만들어야 한다.
    hour = int(datetime.datetime.now().hour)
    
    wish = "Good Morning!"
    
    if hour>=0 and hour<12:
        wish = "Good Morning!"
    
    elif hour>=12 and hour<18:
        wish = "Good Afternoon!"
    
    else:
        wish = "Good Evening!"
    
    이 코드는 매우 간단하다. 만약 시간이 12:00보다 적으면, 그것은 단지 "좋은 아침"이라고 말할 뿐이다. 만약 시간이 12:00에서 18:00 사이라면, 그것은 "좋은 오후"라고 말할 것이다. 만약 시간이 오전도 아니고 오후도 아니라면, "좋은 저녁"이라고 말할 것이다.
    우리는 곧 도착할 것이다. 단지 몇 단락의 코드만 있을 뿐이다.지금 우리가 해야 할 일은 current_weather_condition에 따라 기호나 이모티콘을 표시하는 것이다.
    symbol = "🌞"
    
    if current_weather_condition == 'Cloudy':
        symbol = "☁"
    
    elif current_weather_condition == 'Sunny':
        symbol = "☀"
    
    elif current_weather_condition == 'Windy':
        symbol = "💨"
    elif current_weather_condition == 'Rainy':
        symbol = "🌧"
    
    한 걸음 더.우리는 텍스트 위젯을 만들고 변수를 정확하게 분배해야 한다. 아래와 같다.
    canvas.create_text(
        651.0,
        30.0,
        anchor="nw",
        text="Hola!",
        fill="#000000",
        font=("Roboto Condensed", 80 * -1)
    )
    
    canvas.create_text(
        544.0,
        154.0,
        anchor="nw",
        text=wish,
        fill="#000000",
        font=("Roboto Condensed", 60 * -1)
    )
    
    canvas.create_text(
        370.0,
        354.0,
        anchor="nw",
        text="Current Weather Condition:  ",
        fill="#000000",
        font=("Roboto Condensed", 50 * -1)
    )
    
    canvas.create_text(
        99.0,
        521.0,
        anchor="nw",
        text="Temperature:",
        fill="#000000",
        font=("Roboto Condensed", 40 * -1)
    )
    
    canvas.create_text(
        103.0,
        588.0,
        anchor="nw",
        text="Humidity:",
        fill="#000000",
        font=("Roboto Condensed", 40 * -1)
    )
    
    canvas.create_text(
        99.0,
        657.0,
        anchor="nw",
        text="Wind Speed:",
        fill="#000000",
        font=("Roboto Condensed", 40 * -1)
    )
    
    canvas.create_text(
        269.0,
        589.0,
        anchor="nw",
        text=humidity +"%",
        fill="#000000",
        font=("Roboto Condensed", 40 * -1)
    )
    
    canvas.create_text(
        307.0,
        657.0,
        anchor="nw",
        text=wind_speed + "km/h",
        fill="#000000",
        font=("Roboto Condensed", 40 * -1)
    )
    
    canvas.create_text(
        323.0,
        522.0,
        anchor="nw",
        text=temperature + "°",
        fill="#000000",
        font=("Roboto Condensed", 40 * -1)
    )
    
    canvas.create_text(
        909.0,
        354.0,
        anchor="nw",
        text=current_weather_condition + "" + symbol,
        fill="#000000",
        font=("Roboto Condensed", 50 * -1)
    )
    
    window.resizable(False, False)
    window.mainloop()
    
    텍스트 위젯을 만들기 위해 같은 코드를 반복합니다.너는 우리가 이전에 분배된 변수를 어떻게 사용하는지 볼 수 있다.지금 당신은 스크립트를 실행하고 직접 볼 수 있습니다!

    Get Full Code

    투아의 다음 행동👣


    강좌가 끝났으니 다른 항목으로 넘어가자!아니오, 아니오. 이 간단한 날씨 프로그램에 대해 많은 개선을 해서 다른 날씨 프로그램과 다르게 할 수 있습니다.만약 사용자가 앞으로 7일을 포함한 완전한 일기예보를 보고 싶다면, 당신은 Tuya의 7-day Weather Forecast 서비스만 사용하면 됩니다.
    Tuya 기상 서비스를 사용하면 많은 일을 할 수 있을 뿐만 아니라,lat와long은 일기예보를 얻는 유일한 방법이 아니다.너도 도시와 IP 주소로 할 수 있다.

    자세한 내용은 documentation를 참조하십시오.
    여러분, 지금 이 정도예요.다음 글 안녕!✌

    도구책

  • Tuya Cloud
  • Tuya IoT Management
  • 좋은 웹페이지 즐겨찾기