Roberto Salgado (DRoBeR). 📧 Contact me through Github if needed.
- Donations accepted (PayPal)
Get code from BlackHouse Github Source pull requests are welcomed. 😄
Get images at BlackHouse Images from Docker Hub pull requests are welcomed. 😄
The main service is a container which will contact every device in the net. One must run a container on every node that want to use as switch/push button device
Mainly tested in Raspberry Pi Zero W
Currently the only non-GPIO device supported. It's cheap (I got a few for 20€ each) and easy to handle. Plus there are some nice python libraries to use it.
There is an example of device configuration written in YAML (and JSON)
Use users.json
file must be in container's /app/etc/
folder to list valid panel users.
WARNING: if no users.json
found in configuration folder, user admin
will be created using the first password requested.
Telegram bots require a token to authenticate. Talk to @BotFather to create your bot at get your token
Telegram Bot Token can be retrieved from docker secret called telegram_token
File in data volume must contain /app/etc/.telegram_token
to authenticate your Telegram bot. Check source code for examples.
Telegram valid users must be set on /app/etc/users.json
. Check source code for examples.
The main service is a container which will contact every device in the net. One must run a container on every node that want to use as switch/push button device
HTTP will listen at 5000
port.
HTTPS will listen at 5001
port.
It 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
Example of running the controller in a Raspberry Pi 3
docker run -d -ti \
-v /app/etc:/app/etc \
--cap-add SYS_RAWIO --device /dev/mem \
-e BH_SERVICE_TYPE=push \
-p 5000:5000 -p 5001:5001 \
drober/blackhouse:v1_pi3
Stack example. It uses a secret for the Telegram Bot, which is optional.
version: '3.1'
services:
control:
image: drober/blackhouse:v1_pi3
ports:
- 5000:5000
- 5001:5001
volumes:
- /app/etc:/app/etc
networks:
- blackhousenet
secrets:
- telegram_token
deploy:
mode: replicated
replicas: 1
placement:
constraints: [ node.role == manager ]
labels:
es.blackhouse.description: "Blackhouse Domotica"
es.blackhouse.awesome: ""
networks:
blackhousenet:
driver: overlay
secrets:
telegram_token:
external: true
HTTP will listen at 5002
port.
HTTPS will listen at 5003
port.
It 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
Example to run on a device name as gate which is a push device and is running on a Raspberry Pi Zero W
docker run -d -ti \
--name blackhouse_switch_gate \
-v /app/etc:/app/etc \
--cap-add SYS_RAWIO --device /dev/mem \
-e BH_SERVICE_TYPE=push \
-p 5002:5002 -p 5003:5003 \
drober/blackhouse:v1_piZeroW