#site #api #monitoring #solaredge #solar #accessing #solar-edge

solar-api

Rust库,用于访问SolarEdge监控系统API

4个版本

0.1.3 2023年12月4日
0.1.2 2023年12月4日
0.1.1 2023年11月13日
0.1.0 2023年11月9日

1093Web编程

每月下载量 29

MIT 许可证

33KB
631 代码行

太阳能API

Solar Edge API的Rust库。该库使用在此找到的API文档

API密钥和站点ID

要访问您的安装数据,您需要获取一个API密钥。您可以从SolarEdge监控系统门户获取此密钥。使用您的SolarEdge账户登录,进入管理员部分,站点访问选项卡,并激活API访问。勾选复选框,您将看到API密钥和站点ID

速率限制

请注意,API是速率限制的,即达到每小时最大请求数量后,它将阻止请求。一小时后,它将再次可用。此外,请注意,测量值似乎限制为每十五分钟一个。您可以考虑在最后读取测量值的时间戳±15分钟后安排数据读取。例如,您可以使用15m 10s的持续时间

let next_update = last_updated_datetime + Duration::seconds(15 * 60 + 10);

有一个便利的方法来帮助解决这个问题

let site_overview: Overview = overview(api_key, site_id);
let (next_update, duration_from_now) = site_overview.estimated_next_update();

请注意,有时API会稍慢一些。在这种情况下,duration_from_now可以是负数,您需要等待更长一段时间,如下例所示。请注意,这里需要使用checked_add来处理添加负数的duration_from_now

let site_overview: Overview = overview(api_key, site_id);
let (next_update, duration_from_now) = site_overview.estimated_next_update();

let next = Instant::now()
    .checked_add(Duration::from_secs(duration_from_now as u64))
    .unwrap_or(Instant::now() + Duration::from_secs(30));

// wait next or set timeout at next_update before 
// getting power or energy data

使用此crate中的示例

示例将调用几个API方法。要运行它,请使用

cargo run --example use_api -- <API_KEY> <SITE_ID>

要查看HTTP请求和响应,请使用

RUST_LOG=solar_api=trace cargo run --example use_api -- <API_KEY> <SITE_ID>

状态

  • 站点数据API
    • 站点列表
    • 站点详情
    • 站点数据:开始和结束日期
    • 站点数据:批量版本
    • 站点能源
    • 站点能源:批量版本
    • 站点能源 – 时间段
    • 站点能源 – 时间段:批量版本
    • 站点功率
    • [ ]站点功率:批量版本
    • 站点概览
    • 站点概览:批量版本
    • 站点功率 - 详细信息
    • 站点能源 - 详细信息
    • 站点功率流
    • 存储信息
    • 站点图片
    • 站点环境效益
    • 安装商标志图片
  • 站点设备API
    • 组件列表
    • 库存
    • 逆变器技术数据
    • 设备更改日志
  • 账户列表API
  • 仪表API
    • 获取仪表数据
  • 传感器API
    • 获取传感器列表
    • 获取传感器数据
  • 数据类型
    • 时间单位
    • 站点状态
    • 站点类型

依赖关系

~8-24MB
~337K SLoC