Crates.io | fuga-remo-api |
lib.rs | fuga-remo-api |
version | 0.1.2 |
source | src |
created_at | 2023-03-23 00:25:45.914445 |
updated_at | 2023-08-28 18:11:41.412206 |
description | Unofficial Remo Cloud API parser |
homepage | |
repository | https://github.com/ciniml/remo-api |
max_upload_size | |
id | 817631 |
size | 78,723 |
Nature RemoシリーズのCloud APIが返すJSONデータを解析し、各種情報を取り出すためのライブラリ (非公式)
GET /1/devices
https://swagger.nature.global/#/default/get_1_devices
ユーザーが操作可能なRemoデバイス一覧と状態を取得する
GET /1/appliances
https://swagger.nature.global/#/default/get_1_appliances
各アプライアンスに対する device
model
smart_meter
ノードのみ対応
他のノードは無視します。
appliances
の他のノードにも対応nature_api::read_devices
に embedded_io::Reader
を実装した型への参照、ストリームの長さ、デバイス情報を処理するコールバックを指定して呼び出すと、Reader実装型から読み出したデータを解析してデバイス情報が確定するたびに、コールバックが呼び出されます。
use embedded_io::adapters;
use nature_api::read_devices;
use std::{fs::File, io::Read};
fn main() {
let mut file = File::open("data/devices.json").unwrap();
let file_length = file.metadata().unwrap().len();
let mut reader = embedded_io::adapters::FromStd::new(&mut file);
let mut num_devices = 0;
read_devices(
&mut reader,
Some(file_length as usize),
|device, sub_node| {
if sub_node.is_none() {
num_devices += 1;
}
println!("{:?} {:?}", device, sub_node);
},
)
.unwrap();
println!("num_devices: {}", num_devices);
}
コールバックの第一引数は &nature_api::Device
, 第二引数は Option(&DeviceSubNode)
となっています。
本ライブラリはMIT Licenseの下で使用可能です。