Skip to content

Valentin-Golyonko/HomeBox

Repository files navigation

HomeBox

Smart home server on Django.

Collects and displays data from sensors, weather forecast service (OpenWeather).

You can connect your devices (such as Arduino).

! the project is under development !

Server install:

  • sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt autoremove -y
  • install docker https://docs.docker.com/engine/install/debian/ for Raspbian!
  • install PostgreSQL locally:
    • sudo apt install postgresql postgresql-contrib -y
    • config DB: sudo -u postgres psql
  • (*or optional) create and run PostgreSQL container with auto restart:
    • docker run -d --name rpi-postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres --restart always postgres:latest
    • config DB: docker exec -it rpi-postgres psql -U postgres
  • create and run Rabbitmq (with manager) container docker run -d --hostname localhost --name some-rabbit -p 5672:5672 -p 15672:15672 --restart always rabbitmq:3-management
  • install some packages:
    • sudo apt-get install -y nginx python3-dev libpq-dev virtualenv supervisor
    • sudo python3 -m pip install --upgrade setuptools pip wheel pip-tools
  • clone repository git clone https://github.com/Valentin-Golyonko/HomeBox.git and cd HomeBox/
  • add permissions to .sh scripts:
    • chmod +x config/gunicorn/start_gunicorn.sh
    • chmod +x config/celery_sh/celery.sh
  • create config/settings/local.py with postgres and celery config
  • create and activate virtual environment:
    • python3 -m venv venv
    • . venv/bin/activate
  • inside venv:
    • pip install --upgrade setuptools pip wheel pip-tools
    • generate requirements.txt: pip-compile
    • install dependencies: pip-sync or pip install -r requirements.txt
    • python manage.py migrate
    • python manage.py collectstatic --no-input
    • python manage.py createsuperuser
    • check celery:
    • check django:
    • if all good - stop django server (ctrl+c), celery (kill -HUP $pid)
    • check gunicorn:
      • . ./config/gunicorn/start_gunicorn.sh
      • if you see django on http://127.0.0.1:8001, it's mean that gunicorn is ok
  • edit nginx config:
    • sudo nano /etc/nginx/sites-enabled/default
    • copy your config from 'config/nginx/nginx.conf'
  • check if it's ok sudo nginx -t
  • and sudo service nginx restart
  • you may run start_gunicorn.sh and see django on 'server_ip' (not port needed)
  • setup supervisor config for gunicorn and celery:
    • sudo nano /etc/supervisor/conf.d/homebox.conf
    • sudo nano /etc/supervisor/conf.d/celeryd.conf
  • sudo service supervisor restart
  • supervisor logs is here sudo nano /var/log/supervisor/supervisord.log
  • celery result backend check on http://'server_ip'/api/core/celery_test_run/

Sensors install:

  • check I2C BME280 sensor - i2cdetect -y 1