{"id":23895072,"url":"https://github.com/droberin/blackhouse","last_synced_at":"2026-04-20T05:34:39.222Z","repository":{"id":74583374,"uuid":"101196982","full_name":"droberin/blackhouse","owner":"droberin","description":"Home control through REST API or web frontend","archived":false,"fork":false,"pushed_at":"2017-11-01T18:47:31.000Z","size":1668,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-26T04:28:27.304Z","etag":null,"topics":["angularjs","docker","domotics","materializecss-framework","python3","raspberry","rest-api"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/droberin.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,"zenodo":null}},"created_at":"2017-08-23T15:37:52.000Z","updated_at":"2020-06-10T17:04:59.000Z","dependencies_parsed_at":"2023-02-25T09:30:31.765Z","dependency_job_id":null,"html_url":"https://github.com/droberin/blackhouse","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/droberin/blackhouse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/droberin%2Fblackhouse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/droberin%2Fblackhouse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/droberin%2Fblackhouse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/droberin%2Fblackhouse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/droberin","download_url":"https://codeload.github.com/droberin/blackhouse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/droberin%2Fblackhouse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32034746,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["angularjs","docker","domotics","materializecss-framework","python3","raspberry","rest-api"],"created_at":"2025-01-04T15:50:24.792Z","updated_at":"2026-04-20T05:34:39.209Z","avatar_url":"https://github.com/droberin.png","language":"JavaScript","funding_links":["https://www.paypal.me/drober/10"],"categories":[],"sub_categories":[],"readme":"# BlackHouse Domo Control\n## Author info\nRoberto Salgado (DRoBeR). :email: Contact me through Github if needed.\n* [Donations accepted](https://www.paypal.me/drober/10) (PayPal)\n\n## Source code\nGet code from [BlackHouse Github Source](https://github.com/droberin/blackhouse) pull requests are welcomed. :smile:\n## Docker Images\nGet images at [BlackHouse Images from Docker Hub](https://hub.docker.com/r/drober/blackhouse/) pull requests are welcomed. :smile:\n## Controller\nThe main service is a container which will contact every device in the net.\nOne must run a container on every node that want to use as switch/push button device\n## Switch Device Support\n### GPIO pins (any Raspberry Pi)\nMainly tested in Raspberry Pi Zero W\n### TP-Link HS100\nCurrently the only non-GPIO device supported. It's cheap (I got a few for 20€ each) and easy to handle.\nPlus there are some nice python libraries to use it.\n## Deployment\n### Configuration files\n#### Devices\nThere is an example of [device configuration](examples/devices.yaml.example) written in YAML (~~and JSON~~)\n#### Panel Users\nUse `users.json` file must be in container's `/app/etc/` folder to list valid panel users.\n\n**WARNING:** if no `users.json` found in configuration folder, user `admin` will be created using the first password requested.\n#### Telegram bot (optional)\n##### Bot token\nTelegram bots require a token to authenticate. Talk to [@BotFather](https://telegram.me/BotFather) to create your bot at get your token\n###### Docker Secret\nTelegram Bot Token can be retrieved from [docker secret](https://docs.docker.com/engine/reference/commandline/secret_create/) called ```telegram_token```\n###### token file\nFile in data volume must contain ```/app/etc/.telegram_token``` to authenticate your Telegram bot. Check source code for examples.\n##### Telegram users config\nTelegram valid users must be set on ```/app/etc/users.json```. Check source code for examples.\n### Controller / Frontend\nThe main service is a container which will contact every device in the net.\nOne must run a container on every node that want to use as switch/push button device\n![image](examples/control_panel_example.png)\n#### Considerations\nHTTP will listen at ```5000``` port.\nHTTPS will listen at ```5001``` port.\nIt will only listen in one of them. Depending on if it can find or not the SSL certificates in container's ```/app/etc/ssl``` folder\n\n#### Running as a simple container\nExample of running the ___controller___ in a _Raspberry Pi 3_\n```\ndocker run -d -ti \\\n  -v /app/etc:/app/etc \\\n  --cap-add SYS_RAWIO --device /dev/mem \\\n  -e BH_SERVICE_TYPE=push \\\n  -p 5000:5000 -p 5001:5001 \\\n  drober/blackhouse:v1_pi3\n```\n#### Deploying controller in a Docker Stack (swarm)\nStack example. It uses a secret for the Telegram Bot, which is optional.\n```\nversion: '3.1'\nservices:\n  control:\n    image: drober/blackhouse:v1_pi3\n    ports:\n      - 5000:5000\n      - 5001:5001\n    volumes:\n      - /app/etc:/app/etc\n    networks:\n      - blackhousenet\n    secrets:\n      - telegram_token\n    deploy:\n      mode: replicated\n      replicas: 1\n      placement:\n        constraints: [ node.role == manager ]\n    labels:\n      es.blackhouse.description: \"Blackhouse Domotica\"\n      es.blackhouse.awesome: \"\"\nnetworks:\n  blackhousenet:\n    driver: overlay\nsecrets:\n  telegram_token:\n    external: true\n```\n\n### Switch Device\n#### Considerations\nHTTP will listen at ```5002``` port.\nHTTPS will listen at ```5003``` port.\nIt will only listen in one of them. Depending on if it can find or not the SSL certificates in container's ```/app/etc/ssl``` folder\n\n#### Running as simple container\nExample to run on a device name as ___gate___ which is a push device and is running on a _Raspberry Pi Zero W_\n```\ndocker run -d -ti \\\n  --name blackhouse_switch_gate \\\n  -v /app/etc:/app/etc \\\n  --cap-add SYS_RAWIO --device /dev/mem \\\n  -e BH_SERVICE_TYPE=push \\\n  -p 5002:5002 -p 5003:5003 \\\n  drober/blackhouse:v1_piZeroW\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdroberin%2Fblackhouse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdroberin%2Fblackhouse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdroberin%2Fblackhouse/lists"}