一个查询apd.sensor端点并聚合其结果的程序。
项目描述
APD传感器聚合器
一个查询apd.sensor端点并聚合其结果的程序。
通用的单数据库配置。
数据库设置
要生成所需的数据库表,您必须创建一个alembic.ini文件,如下所示
[alembic]
script_location = apd.aggregation:alembic
sqlalchemy.url = postgresql+psycopg2://apd@localhost/apd
然后运行alembic upgrade head
。这应该在软件的每次升级后也完成。
定义端点
要收集的端点由sensor_deployments
CLI工具管理。安装后,将没有定义部署
sensor_deployments add --db postgresql+psycopg2://apd@localhost/apd
--api-key 97f6b3e5ceb64a6ba88968d7c3786b38
--colour xkcd:red
http://rpi4:8081
Loft
可选的颜色参数是使用内置图表工具绘制图表时使用的颜色。这使用matplotlib的颜色规范系统,文档见https://matplotlib.net.cn/tutorials/colors/colors.html
然后可以使用sensor_deployments list
列出传感器
Loft
ID 53998a5160de48aeb71a5c37cd1455f2
URI http://rpi4:8081
API key 97f6b3e5ceb64a6ba88968d7c3786b38
Colour xkcd:red
ID是部署ID,由端点设置。只有在可以连接到它们时才能添加端点。
整理数据
可以使用collect_sensor_data
命令行工具从所有定义的端点收集数据。虽然您可以指定URL和API密钥以显式从单个端点加载数据,但未指定这些参数将使用数据库中配置的端点。
collect_sensor_data --db postgresql+psycopg2://apd@localhost/apd
查看数据
您可以编写脚本从数据库中可视化数据。我推荐使用Jupyter,因为它在绘制图表和交互方面有很好的支持。
所有配置的图表都可以使用以下方式显示
from apd.aggregation.analysis import plot_multiple_charts
display(await plot_multiple_charts())
通过传递configs=
到该函数,可以使用定义在apd.aggregation.analysis
中的配置对象实现更复杂的图表。可以使用Jupyter/IPyWidgets的现有交互支持使用interactable_plot_multiple_charts
函数实现交互性。
可以使用该模块中的其他函数实现更多控制,例如,使用以下方法从给定传感器获取所有数据点
from apd.aggregation.query import with_database, get_data
with with_database("postgresql+psycopg2://apd@localhost/apd") as session:
points = [(dp.collected_at, dp.data) async for dp in get_data() if dp.sensor_name=="RelativeHumidity"]
这些可以从任何Python代码中调用,而不仅仅是Jupyter笔记本
分析和触发器
聚合器允许一个长时间运行的过程,该过程处理插入到数据库中的记录并应用规则。
这是使用基于Python的配置文件配置的,例如以下配置来记录温度波动超过或低于18°C的情况
import operator
from apd.aggregation.actions.action import OnlyOnChangeActionWrapper, LoggingAction
from apd.aggregation.actions.runner import DataProcessor
from apd.aggregation.actions.trigger import ValueThresholdTrigger
handlers = [
DataProcessor(
name="TemperatureBelow18",
action=OnlyOnChangeActionWrapper(LoggingAction()),
trigger=ValueThresholdTrigger(
name="TemperatureBelow18",
threshold=18,
comparator=operator.lt,
sensor_name="Temperature",
),
)
]
这是运行方式
run_apd_actions --db postgresql+psycopg2://apd@localhost/apd sample_actions.py
可选的--historical
选项会导致对数据库中的所有事件触发操作。如果省略,则默认行为适用,即只分析在操作过程开始后添加到数据库中的数据。
可能的行为包括
apd.aggregation.actions.action.LoggingAction()
- 记录数据点apd.aggregation.actions.action.SaveToDatabaseAction()
- 将数据点保存到数据库
这些可以通过OnlyOnChangeActionWrapper(subaction)
包装来仅在底层值更改时触发操作,或者通过OnlyAfterDateActionWrapper(subaction, min_date)
来仅在发现的对象的日期严格在min_date
之后时触发。
可能的触发器包括
apd.aggregation.actions.trigger.ValueThresholdTrigger(...)
- 这会将传感器的值与阈值进行比较,使用指定的比较器。任何不匹配sensor_name
和deployment_id
参数的记录将被排除。
提示
所有命令行工具的--db
参数可以省略,并设置APD_DB_URI
环境变量。
更改
2.0.2 (2020-08-14)
- 修复collect CLI脚本的错误处理
2.0.1 (2020-08-14)
- 提高与Python 3.7的兼容性,便于在RPis上使用
2.0.0 (2020-05-21)
- 删除容忍失败选项,改为始终容忍失败
1.1.0 (2020-05-21)
- 解决APD书籍的技术审查评论。使用此版本而不是1.0.0版本。
- 提高与Pint新版本的兼容性
1.0.0 (2020-01-27)
- 添加已知传感器端点的管理
- 添加CLI脚本来收集数据
- 添加Jupyter的分析工具
- 添加长时间运行的数据合成和操作系统
版权(c)2019,Matthew Wilkes
保留所有权利。
在满足以下条件的情况下,允许重新分配和使用源代码和二进制形式,无论是否修改
-
源代码重新分配必须保留上述版权声明、本条件列表和以下免责声明。
-
二进制形式的重新分配必须在文档和/或其他随重新分配提供的材料中重新生产上述版权声明、本条件列表和以下免责声明。
-
未经版权所有者或其贡献者事先书面许可,不得使用其名称或其贡献者的名称来认可或推广源自本软件的产品。
本软件由版权所有者和贡献者提供“按原样”以及任何明示或暗示的保证,包括但不限于适销性和针对特定目的的适用性保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论此类损害是由于何种原因以及何种责任理论(合同、严格责任或侵权(包括疏忽或不计后果))产生,即使已告知此类损害的可能性。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码发行版
构建发行版
apd.aggregation-2.0.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9ea10b98dc0de5226d817528e0b0a389c5663ffdee069451ea1c3f3b105a449a |
|
MD5 | f1f614310f9363ed310f6a96a1e37e0a |
|
BLAKE2b-256 | 815d011fba59b5b01128756041d48c53a5c10b335659c91964586169dd541de5 |