8个版本
使用旧的Rust 2015
0.5.0 | 2018年5月15日 |
---|---|
0.4.3 | 2017年12月8日 |
0.4.1 | 2017年10月20日 |
0.3.6 | 2017年10月19日 |
0.3.4 | 2017年9月13日 |
#18 in #hub
63 每月下载次数
53KB
755 行
Geeny Hub SDK
简介
Geeny Hub SDK提供了一种抽象,用于连接物理或虚拟设备到Geeny云所需的API和通信接口。Hub SDK可以以两种方式使用:作为Rust库crate,或者作为可以由其他语言编写的应用程序使用的独立二进制文件,它通过提供进程间通信(IPC)接口来实现。
对于拥有现有Hub设备(如智能家居网关)的开发者,可以使用独立的Geeny Hub服务,以提供与Geeny云服务通信的单个本地接口,从而实现设备配置、向云发送消息和从云接收消息。Geeny Hub服务可以作为软件包安装,或作为Buildroot或Yocto等固件生成过程的一部分。作为服务使用时,无需具备Rust开发知识。
对于构建新Hub设备的新开发者,可以将Geeny Hub SDK作为库(或crate)使用,并可以紧密集成到基于Rust的应用程序中。这允许开发者通过惯用的Rust库接口与Geeny云进行交互,而不是必须实现REST、MQTT和其他通信协议。
组件
使用 - 作为库crate
extern crate hub_sdk;
use hub_sdk::{HubSDK, HubSDKConfig};
fn main() {
let sdk_cfg = HubSDKConfig::default();
// Begin running the SDK. The hub_sdk handle may be used to interact with
// the SDK. This handle may be cloned and given to multiple consumers.
let hub_sdk = HubSDK::new(sdk_cfg);
let msgs = hub_sdk.receive_messages("ABC123")
.expect("No known device with that serial number.");
println!("Messages: {:?}", msgs);
}
文档完整的库文档可以在[Geeny文档网站] (https://docs.geeny.io/sdk/)找到,或者可以使用cargo doc --open
在本地生成和显示。
使用 - 作为独立服务
# (Optional) Install the recommended version of the Rust toolchain
rustup install nightly-2018-04-08
# Move to Service Project directory
cd services/rest_api/rocket_api
# Create a valid config file for this service
cp ./geeny_hub_service.mvdb.json.example ./geeny_hub_service.mvdb.json
# Run the service, serving a REST IPC on localhost:9000
cargo +nightly-2018-04-08 run --release
文档有关REST IPC接口的更多信息,请参阅[此Swagger API规范] (./docs/rest-ipc/swagger.json)。
要求
Geeny Hub SDK库可以在Rust的稳定或夜间构建中使用。我们目前使用稳定版本1.25
和夜间版本nightly-2018-04-08
测试库。
Geeny Hub SDK二进制服务需要Rust的夜间构建。我们目前使用夜间版本nightly-2018-04-08
测试服务。
安装和配置
作为库
在你的Cargo.toml
中,添加以下行
[dependencies]
hub-sdk = "0.5"
在你的主项目文件中(可能是 lib.rs
或 main.rs
),添加以下行
extern crate hub_sdk;
作为一个服务
请参阅上方的 Usage - 作为独立服务
部分。
测试
可以使用 cargo test
运行单元测试。
许可证
版权所有 (C) 2017-2018 Telefónica Germany Next GmbH,Charlottenstraße 4,10969 柏林。
本项目遵循 Mozilla 公共许可证版本 2.0 的条款。
联系方式:[email protected]
第三方组件
本项目使用以下第三方组件,并遵循以下许可证
许可证 | 数量 | 依赖项 |
---|---|---|
Apache-2.0 | 2 | openssl, thread-id |
Apache-2.0/MIT | 76 | antidote, backtrace, backtrace-sys, base64, bitflags, bitflags, cfg-if, coco, cookie, core-foundation, core-foundation-sys, custom_derive, dtoa, either, env_logger, error-chain, foreign-types, futures, gcc, httparse, hyper-native-tls, idna, isatty, itoa, lazy_static, libc, log, mqtt-protocol, native-tls, num-traits, num_cpus, ordermap, pear, pear_codegen, percent-encoding, pkg-config, quick-error, quote, rand, rayon, rayon-core, regex, regex, regex-syntax, regex-syntax, reqwest, rocket, rocket_codegen, rocket_contrib, rustc-demangle, scopeguard, security-framework, security-framework-sys, serde, serde_derive, serde_derive_internals, serde_json, serde_urlencoded, state, syn, synom, tempdir, thread_local, thread_local, threadpool, time, toml, traitobject, unicode-bidi, unicode-normalization, unicode-xid, unreachable, url, uuid, vcpkg, yansi |
BSD-3-Clause | 3 | adler32, magenta, magenta-sys |
MIT | 21 | advapi32-sys, conv, crypt32-sys, dbghelp-sys, hyper, kernel32-sys, language-tags, libflate, matches, mime, mvdb, openssl-sys, redox_syscall, schannel, secur32-sys, typeable, unicase, version_check, void, winapi, winapi-build |
MIT OR Apache-2.0 | 1 | safemem |
MIT/Unlicense | 9 | aho-corasick, aho-corasick, byteorder, byteorder, memchr, memchr, rumqtt, utf8-ranges, utf8-ranges |
MPL-2.0 | 2 | geeny-api, smallvec |
其他* |
2 | ring, untrusted |
*
请参阅 ring 的许可证 以获取有关 ring
和 untrusted
许可证的更多信息。
依赖项
~26–38MB
~624K SLoC