跳转到主要内容

一个基于事件异步库,用于在本地网络中读取Weatherflow气象系统发送的UDP数据包,无需依赖任何云服务。

项目描述

pypi downloads Buy Me A Coffee/Beer

pyweatherflowudp

一个基于事件异步库,用于在本地网络中读取Weatherflow气象系统发送的UDP数据包,无需依赖任何云服务。

WeatherFlow传感器提供的原子数据都是原生公制的。为了帮助进行单位转换或进行计算和比较,本模块使用Pint的Quantity类作为大部分具有单位属性的类型。有关更多详细信息,请参阅下面的Quantity部分。

本模块利用PsychroLib帮助进行额外的天气计算,这些计算基于实际WeatherFlow传感器提供的各种数据点。虽然WeatherFlow通过应用程序和REST API提供了这些额外的数据点,但它们无法通过低级UDP数据包数据获取。而且,尽管已经发布了派生指标及其相关方程式列表,但实施起来可能相当复杂,例如计算露点温度。因此,PsychroLib是一个无价的资源,因为它已经完成了这项工作,并消除了在此模块中编写所有方程式(以及可能出错)的需求。您可能会注意到,其中一些值与WeatherFlow应用程序中显示的并不完全一致,因为存在不同的公式(有些简单,有些复杂)来计算派生的天气指标。这是因为WeatherFlow和PsychroLib可能会选择其中的一种有时很多不同的公式来得到所需的结果。然而,它们应该仍然相对接近。

DOI DOI

支持设备

  • Tempest
  • 空气(未测试)
  • 天空(未测试)

用法

与该模块及其发现的设备交互的主要方式是通过事件订阅。

它们目前支持以下类和事件,但您也可以在demo.py中看到如何将这些内容整合在一起。

客户端

WeatherFlowListener

  • EVENT_DEVICE_DISCOVERED - 当首次发现新设备(中心、空气、天空或Tempest)时发出

本节中的类和事件可以从pyweatherflowudp.client导入。

设备

HubDevice

  • EVENT_LOAD_COMPLETE - 中心首次完成状态更新解析时发出
  • EVENT_STATUS_UPDATE - 每次中心解析状态更新时发出,包括紧随EVENT_LOAD_COMPLETE之后

WeatherFlowSensorDeviceAirDeviceSkyDeviceTempestDevice的基类)

  • EVENT_LOAD_COMPLETE - 传感器首次完成一个状态更新和一个观测解析时发出
  • EVENT_OBSERVATION - 每次传感器解析观测时发出
  • EVENT_STATUS_UPDATE - 每次传感器解析状态更新时发出

AirSensorTypeAirDevice / TempestDevice

  • EVENT_STRIKE - 检测到闪电时发出

SkySensorTypeSkyDevice / TempestDevice

  • EVENT_RAIN_START - 检测到雨水时发出
  • EVENT_RAPID_WIND - 每3秒(或根据电池电压更频繁)发出一次,以告知当前风速

本节中的类和事件可以从pyweatherflowudp.device导入。

属性和方法

WeatherFlowListener

属性 类型 描述
devices 列表 已知的设备。
hubs 列表 已知的中心。
is_listening 布尔值 如果监听器目前正在监控网络上的UDP数据包,则为True,否则为False
sensors 列表 已知的传感器。

WeatherFlowDevice

中心和传感器的基类。

属性 类型 描述
firmware_revision 字符串 设备的当前固件版本。
load_complete 布尔值 如果设备已解析所有初始更新,则为True,否则为False
model 字符串 设备的型号(“中心”、“空气”、“天空”、“Tempest”)。
rssi 数量 设备在分贝中的信号强度。
serial_number 字符串 设备的序列号。
timestamp 日期时间 上次状态更新的UTC时间戳。
up_since 日期时间 设备启动并运行以来的UTC时间戳。
uptime 整数 设备已运行和运行的时间(秒)。

HubDevice

属性 类型 描述
reset_flags 列表 网关当前的重置标志。

WeatherFlowSensorDevice

传感器的基础。

属性 类型 描述
battery 数量 当前电池电压。
hub_rssi 数量 网关的信号强度(分贝)。
hub_sn 字符串 传感器所属网关的序列号。
last_report 日期时间 上一次观测的UTC时间戳。
sensor_status 列表 传感器当前报告的问题列表。
report_interval 数量 报告间隔(分钟)。
reset_flags 列表 网关当前的重置标志。

AirSensorType

"空气"传感器测量基础(Air/Tempest)。

属性 类型 描述
air_temperature 数量 当前空气温度(摄氏度)。
last_lightning_strike_event LightningStrikeEvent 上一次闪电事件。
lightning_strike_average_distance 数量 闪电的平均距离(公里)。
lightning_strike_count 整数 闪电的数量。
relative_humidity 数量 相对湿度百分比。
station_pressure 数量 观测到的气压(毫巴)。
air_density* 数量 计算出的空气密度(千克每立方米)。
delta_t* 数量 计算出的Delta T(温差摄氏度)。
dew_point_temperature* 数量 计算出的露点温度(摄氏度)。
heat_index* 数量 计算出的热指数(摄氏度)。
vapor_pressure* 数量 计算出的水汽压(毫巴)。
wet_bulb_temperature* 数量 计算出的湿球温度(摄氏度)。

* 表示派生属性

method 输入(类型) 返回 描述
calculate_cloud_base altitude (Quantity) 数量 计算到云层的估计海拔高度(平均海平面以上)。
calculate_freezing_level altitude (Quantity) 数量 计算温度在冰点(0°C/32°F)的平均海平面以上的估计海拔高度。
calculate_sea_level_pressure altitude (Quantity) 数量 计算海平面气压(毫巴)。

SkySensorType

"天空"传感器测量基础(Sky/Tempest)。

属性 类型 描述
illuminance 数量 当前照度(勒克斯)。
last_rain_start_event RainStartEvent 上一次降雨开始事件。
last_wind_event WindEvent 上一次风事件。
precipitation_type PrecipitationType 当前的降水类型:(无、雨、冰雹或雨冰雹)。
rain_accumulation_previous_minute 数量 上一分钟的降雨累积量(毫米)。
rain_rate* 数量 降雨率(基于上一分钟的累积量,毫米每小时)。
solar_radiation 数量 太阳辐射(每立方米瓦特)。
uv 整数 当前的UV指数。
wind_average 数量 报告间隔内的平均风速(米每秒)。
wind_direction 数量 报告间隔内的风向(度)。
wind_direction_cardinal 字符串 风向(16风向罗盘)。
wind_gust 数量 风速(最大3秒样本)以米每秒计。
wind_lull 数量 风速(最小3秒样本)以米每秒计。
wind_sample_interval 数量 风速样本间隔(秒)。
wind_speed 数量 风速(米每秒)。

* 表示派生属性

TempestDevice

属性 类型 描述
feels_like_temperature* 数量 计算出的“感觉”温度(摄氏度)。
wind_chill_temperature* 数量 计算出的风寒温度(摄氏度)。

* 表示派生属性

数量

pint.Quantity类被用于与测量单位相关的设备属性。这允许从本地公制单位转换为用户选择的另一种单位,例如摄氏度到华氏度,这将产生另一个pint.Quantity

device.air_temperature.to("degF")

要获取属性的数值部分,只需附加一个.magnitude(或短形式.m

device.air_temperature.m

您还可以使用.units(或短形式.u)来获取属性的单元部分

device.air_temperature.u

查看Pint 文档获取更多技巧。

项目详情


下载文件

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

源代码分发

pyweatherflowudp-1.4.5.tar.gz (20.5 kB 查看哈希值)

上传时间 源代码

构建版本

pyweatherflowudp-1.4.5-py3-none-any.whl (21.5 kB 查看哈希值)

上传时间 Python 3