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

Download history 4/week @ 2024-02-22 3/week @ 2024-02-29 43/week @ 2024-03-28 20/week @ 2024-04-04

63 每月下载次数

MPL-2.0 许可证

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.rsmain.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 的许可证 以获取有关 ringuntrusted 许可证的更多信息。

依赖项

~26–38MB
~624K SLoC