跳转到主要内容

WeatherBit Rest API的Python包装器

项目描述

Python包装器,用于WeatherBit API

Latest PyPI version Supported Python

本模块通过其REST API与WeatherBit.io通信。该模块仅支持免费层API,有关更多信息,请参阅此处

对于免费层,可以检索以下数据

  • 当前条件
  • 预报数据 - 每日数据。
  • 严重天气警报

它需要一个API密钥才能工作,可以从Weatherbit免费获取

该模块主要编写用于在Home Assistant中用作名为weatherbit的定制集成,但也可能用于其他目的。

安装

pyweatherbitdata可在PyPi上使用

pip install pyweatherbitdata

用法

此库主要设计用于在异步上下文中使用。

库的主要接口是pyweatherbitdata.WeatherBitApiClient。此接口接受7个选项

  • api_key:(必需) 从WeatherBit获取的个人API密钥(见上方)。
  • latitude:(必需) 需要数据的位置的纬度。
  • longitude:(必需) 需要数据的位置的经度。
  • units:(可选) 此处有效的选项是metricimperial。此模块始终以metric单位检索数据,因此仅在未选择metric的情况下才会进行值转换。默认值为metric
  • language: (可选)从WeatherBit获取的所有文本值的语言。默认为 英文
  • homeassistant: (可选)有效选项为 TrueFalse。如果设置为True,则某些单位类型将不会被转换,因为Home Assistant会处理这个问题。默认值为 True

示例程序

"""Test Program."""
from __future__ import annotations

import asyncio
import logging
import time

from pyweatherbitdata.api import WeatherBitApiClient
from pyweatherbitdata.data import (
    ObservationDescription,
    BaseDataDescription,
    ForecastDescription
)
from pyweatherbitdata.exceptions import (
    InvalidApiKey,
    RequestError,
    ResultError,
)

_LOGGER = logging.getLogger(__name__)

async def main() -> None:
    logging.basicConfig(level=logging.DEBUG)
    start = time.time()

    weatherbit = WeatherBitApiClient(
        "YOU_API_KEY",
        55.625053,
        12.136619,
        language="da",
    )
    try:
        await weatherbit.initialize()

    except InvalidApiKey as err:
        _LOGGER.debug(err)
    except RequestError as err:
        _LOGGER.debug(err)
    except ResultError as err:
        _LOGGER.debug(err)

    data: BaseDataDescription = weatherbit.station_data
    if data is not None:
        for field in data.__dataclass_fields__:
            value = getattr(data, field)
            print(field, "-", value)

    data: ObservationDescription = await weatherbit.update_sensors()
    if data is not None:
        for field in data.__dataclass_fields__:
            value = getattr(data, field)
            print(field, "-", value)

    data: ForecastDescription = await weatherbit.update_forecast()
    if data is not None:
        for field in data.__dataclass_fields__:
            value = getattr(data, field)
            print(field, "-", value)

    end = time.time()

    await weatherbit.req.close()

    _LOGGER.info("Execution time: %s seconds", end - start)

asyncio.run(main())

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

pyweatherbitdata-1.0.15.tar.gz (12.5 kB 查看哈希)

上传时间

构建分发

pyweatherbitdata-1.0.15-py3-none-any.whl (11.4 kB 查看哈希)

上传时间 Python 3

由以下支持