2个版本
0.1.1 | 2021年7月1日 |
---|---|
0.1.0 | 2021年6月26日 |
在 嵌入式开发 中排名 1861
每月下载 27 次
在 6 个 存储库中使用
90KB
2.5K SLoC
Houseflow
Houseflow是一个开源的家庭自动化系统,支持各种配件,如灯光、开关、门、传感器等。
特性
- 快速,使用高性能语言Rust编写。
- 使用配置文件可配置和可重现。
支持的配件
支持的客户端
- iOS Apple Home应用程序。参见 HomeKit配件协议
- Google Home。
架构
中心配置
中心需要配置,默认情况下位于 $XDG_CONFIG_HOME/houseflow/hub.toml
。
示例配置
# Houseflow hub configuration
[hub]
# UUID of the Hub, generate using `uuidgen` command
id = "00000000-0000-0000-0000-000000000000"
# Uncomment to allow outside network accesss
# [network]
# address = "0.0.0.0"
[[accessories]]
id = "1c59f25a-a5b4-4248-810f-01422cee16b0"
name = "super termometr"
room-name = "Bedroom"
manufacturer = "xiaomi-mijia"
model = "hygro-thermometer"
mac-address = "A4:C1:38:EF:77:51"
[providers.mijia]
[controllers.hap]
pin = "11122333"
name = "ExampleHub"
[controllers.meta]
控制器
控制器从外部控制配件。
HomeKit配件协议
允许您将Apple Home应用程序与Houseflow中心集成。
示例配置
[controllers.hap]
# The `Pin` struct represents the server's 8 digit pin used for pairing.
#
# The pin consists of eight digits between 0 and 9 and defaults to `11122333`.
#
# The following pins are considered too easy and are therefore not allowed:
# - `00000000`
# - `11111111`
# - `22222222`
# - `33333333`
# - `44444444`
# - `55555555`
# - `66666666`
# - `77777777`
# - `88888888`
# - `99999999`
# - `12345678`
# - `87654321`
pin = "11122333"
# Name of the Hub. The name will be visible in the Apple Home app
name = "ExampleHub"
要清除缓存,请删除 ~/.local/share/houseflow/hap/
文件夹。
元HTTP API
为Houseflow中心通信提供HTTP API。有关详细信息,请参阅 元HTTP API方案。
请记住在URL路径之前添加 /controllers/meta/
。例如
GET houseflow_hub.local:5001/controller/meta/characteristic/00000000-0000-0000-0000-000000000000/temperature-sensor/current-temperature
示例配置
[controllers.metea]
提供者
提供者为中心提供配件。
Mijia
允许小米米家设备连接
示例配置
[providers.mijia]
元HTTP API方案
读取特征
请求
GET /characteristic/:accessory-id/:service-name/:characteristic-name
响应
{
"name": :characteristc_name
// ... values of the characteristic
}
示例
使用以下参数读取特征
accessory-id: 00000000-0000-0000-0000-000000000000
service-name: temperature-sensor
characteristic-name: current-temperature
GET /characteristic/00000000-0000-0000-0000-000000000000/temperature-sensor/current-temperature
如果配件已连接,并实现了具有该特征的服务,则应返回
{
"name": "current-temperature",
"temperature": 21.89 // or whatever the current temperature is
}
写入特征
请求
POST /characteristic/:accessory-id/:service-name
Content-Type: application/json
{
"name": :characteristic-name,
// ... values of the characteristic
}
响应
如果状态为OK,则返回空体,否则以JSON格式返回错误消息。
示例
使用以下参数读取特征
accessory-id: 00000000-0000-0000-0000-000000000000
service-name: garage-door-opener
characteristic.name: target-door-state
characteristic.open-percent: 80
POST /characteristic/00000000-0000-0000-0000-000000000000/garage-door-opener
{
"name": "target-door-state",
"open-percent": 80 // or whatever the current temperature is
}
贡献
欢迎贡献者! 没有任何贡献太小,所有贡献都受到重视。
获取帮助
在Discord上联系我 gbaranski#5119,或通过电子邮件 [email protected]。
依赖项
~1–13MB
~162K SLoC