{"id":13478226,"url":"https://github.com/gbaranski/houseflow","last_synced_at":"2025-04-05T07:05:00.452Z","repository":{"id":40455280,"uuid":"267182382","full_name":"gbaranski/houseflow","owner":"gbaranski","description":"Home automation platform made in Rust 🦀.","archived":false,"fork":false,"pushed_at":"2023-04-13T16:53:24.000Z","size":28692,"stargazers_count":189,"open_issues_count":25,"forks_count":15,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-29T06:05:29.070Z","etag":null,"topics":["ble","embedded","home-automation","iot","raspberry-pi","rust","smart-home"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gbaranski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-27T00:33:51.000Z","updated_at":"2025-03-24T21:39:19.000Z","dependencies_parsed_at":"2024-06-18T22:39:25.361Z","dependency_job_id":"8efcd87c-df29-4030-8bc5-8a0608dc5fed","html_url":"https://github.com/gbaranski/houseflow","commit_stats":{"total_commits":2599,"total_committers":6,"mean_commits":433.1666666666667,"dds":"0.48287803001154295","last_synced_commit":"ce66a298ea5aa972bc480297bcd0e5ca21050ab7"},"previous_names":["gbaranski/homeflow"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbaranski%2Fhouseflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbaranski%2Fhouseflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbaranski%2Fhouseflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gbaranski%2Fhouseflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gbaranski","download_url":"https://codeload.github.com/gbaranski/houseflow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299831,"owners_count":20916190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ble","embedded","home-automation","iot","raspberry-pi","rust","smart-home"],"created_at":"2024-07-31T16:01:54.245Z","updated_at":"2025-04-05T07:05:00.427Z","avatar_url":"https://github.com/gbaranski.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Houseflow\n\n[![lines-of-code](https://img.shields.io/tokei/lines/github/gbaranski/houseflow)](https://github.com/gbaranski/houseflow)\n\nHouseflow is an open-source home automation system supporting various accessories like lights, switches, gates, sensors, and much more.\n\n# Features\n\n- [x] Fast, written in high-performance languague, Rust.\n- [x] Configurable and reproducable using config files.\n\n## Supported accessories\n\n- [X] [Xiaomi Mijia HygroThermometer](https://www.xiaomiproducts.nl/en/xiaomi-mijia-bluetooth-thermometer-and-hygrometer.html)\n- [ ] ESP8266/ESP32 Support(issue [#161](https://github.com/gbaranski/houseflow/issues/161))\n\n## Supported clients\n\n- [X] iOS Apple Home application. See [HomeKit Accessory Protocol](#homekit-accessory-protocol)\n- [ ] Google Home.\n\n# Architecture\n\n\u003cimg src=\"./docs/architecture.svg\"\u003e\n\n# Hub configuration\n\nHub must be configured, by default it's placed in `$XDG_CONFIG_HOME/houseflow/hub.toml`.\n\nExample configuration\n\n```toml\n# Houseflow hub configuration\n\n[hub]\n# UUID of the Hub, generate using `uuidgen` command\nid = \"00000000-0000-0000-0000-000000000000\"\n\n# Uncomment to allow outside network accesss\n# [network]\n# address = \"0.0.0.0\"\n\n[[accessories]]\nid = \"1c59f25a-a5b4-4248-810f-01422cee16b0\"\nname = \"super termometr\"\nroom-name = \"Bedroom\"\nmanufacturer = \"xiaomi-mijia\"\nmodel = \"hygro-thermometer\"\nmac-address = \"A4:C1:38:EF:77:51\"\n\n[providers.mijia]\n\n[controllers.hap]\npin = \"11122333\"\nname = \"ExampleHub\"\n\n[controllers.meta]\n```\n\n## Controllers\n\nControllers control the accessories from the outside.\n\n#### HomeKit Accessory Protocol\n\nAllows you to integrate Apple Home app with Houseflow Hub.\n\nExample configuration:\n```toml\n[controllers.hap]\n# The `Pin` struct represents the server's 8 digit pin used for pairing.\n#\n# The pin consists of eight digits between 0 and 9 and defaults to `11122333`.\n#\n# The following pins are considered too easy and are therefore not allowed:\n# - `00000000`\n# - `11111111`\n# - `22222222`\n# - `33333333`\n# - `44444444`\n# - `55555555`\n# - `66666666`\n# - `77777777`\n# - `88888888`\n# - `99999999`\n# - `12345678`\n# - `87654321`\npin = \"11122333\"\n# Name of the Hub. The name will be visible in the Apple Home app\nname = \"ExampleHub\"\n```\n\nTo clear caches, remove `~/.local/share/houseflow/hap/` folder.\n\n#### Meta HTTP API\n\nProvides HTTP API for Houseflow Hub communication.\nCheck [Meta HTTP API Scheme](#meta-http-api-scheme) for more details.\n\nRemember to add `/controllers/meta/` in the URL Path before. For example \n```\nGET houseflow_hub.local:5001/controller/meta/characteristic/00000000-0000-0000-0000-000000000000/temperature-sensor/current-temperature\n```\n\nExample configuration:\n```toml\n[controllers.metea]\n```\n\n## Providers\n\nProviders provide accessories for the hub.\n\n#### Mijia\n\nAllows Xiaomi Mijia devices to connect\n\nExample configuration:\n\n```toml\n[providers.mijia]\n```\n\n\n## Meta HTTP API Scheme\n\n### Read characteristic\n\n#### Request\n```\nGET /characteristic/:accessory-id/:service-name/:characteristic-name\n```\n\n#### Response\n\n```jsonc\n{\n    \"name\": :characteristc_name\n    // ... values of the characteristic\n}\n```\n\n#### Example\n\nReading characteristic with following params:\n```\naccessory-id: 00000000-0000-0000-0000-000000000000\nservice-name: temperature-sensor\ncharacteristic-name: current-temperature\n```\n\n```http\nGET /characteristic/00000000-0000-0000-0000-000000000000/temperature-sensor/current-temperature\n```\nAnd if the accessory is connected, and implements the service with the characteristic, it should return\n```jsonc\n{\n    \"name\": \"current-temperature\",\n    \"temperature\": 21.89 // or whatever the current temperature is\n}\n```\n\n### Write characteristic\n\n#### Request\n```jsonc\nPOST /characteristic/:accessory-id/:service-name\nContent-Type: application/json\n{\n    \"name\": :characteristic-name,\n    // ... values of the characteristic\n}\n```\n\n#### Response\n\nIf status is OK, then it returns empty body, otherwise it returns error message in JSON format.\n\n#### Example\n\nReading characteristic with following params:\n```\naccessory-id: 00000000-0000-0000-0000-000000000000\nservice-name: garage-door-opener\ncharacteristic.name: target-door-state\ncharacteristic.open-percent: 80\n```\n\n```jsonc\nPOST /characteristic/00000000-0000-0000-0000-000000000000/garage-door-opener\n{\n    \"name\": \"target-door-state\",\n    \"open-percent\": 80 // or whatever the current temperature is\n}\n```\n\n# Contributing\nContributors are very welcome! **No contribution is too small and all contributions are valued.**\n\n# Getting help\nGet in touch with me on Discord gbaranski#5119, or via email me@gbaranski.com.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbaranski%2Fhouseflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgbaranski%2Fhouseflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgbaranski%2Fhouseflow/lists"}