This repository contains the Dockerfile, basic scripts and additional libraries required for the BTLE Application tool. helium/gateway-config is the upstream repo that this is built against.
Directory layout:
.github/
: Github workflows and other settings.example/
: Files that are examples of what will be loaded on an actual hotspot. These files are especially useful for testing without a full hotspot.gatewayconfig/
: The main Python application.lib/
: Python files copied from other reposittories.protos/
: Protobuf definitions. Generated protos go to gatewayconfig/protos/
by default.tests/
: Test files.Running locally:
PYTHONPATH=./ MINER_KEYS_FILEPATH=./example/onboarding_key.txt ETH0_MAC_ADDRESS_PATH=./example/eth0_mac_address.txt python minerconfig
Because the stack is tightly intertwined with Balena, the easiest way to test the code base on your own Raspberry Pi in your own Balena project. The code has been developped and tested with the Raspberry Pi 3 B+. There are a few ways to build this app:
balena deploy dev-XXX --build
(preferred method)docker buildx build --platform linux/arm64 .
git push balena YourLocalBranch:master
(deprecated)balena push local
(over 10 hours)balena deploy hm-diag --build --debug
git remote add balena BALENA_USERNAME@git.balena-cloud.com:BALENA_USERNAME/BALENA_PROJECT.git
)FREQ
, SENTRY_CONFIG
, SENTRY_DIAG
, SENTRY_PKTFWD
, and VARIANT
git remote add balena YourUser@git.balena-cloud.com:YourUser/YourProject.git
)You can now push your changes using the following command:
$ git push balena YourLocalBranch:master
These are optional instructions to have an Ubuntu environment closely mimic production.
curl https://pyenv.run | bash
sudo apt-get install -y libffi-dev libssl-dev make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git \
libdbus-glib-1-dev libgirepository1.0-dev python3-gi bluez
pyenv install 3.9.16 && pyenv local 3.9.16
python -V
python3 -m venv venv && source venv/bin/activate
wheel
package: python3 -m pip install wheel
poetry
package: python3 -m pip install poetry
poetry install --with dev
Assuming virtualenv has been activated, execute the following command to run the tests:
poetry install --with dev
poetry run pytest --cov=gatewayconfig --cov=lib --cov-fail-under=70
sudo snap install protobuf
brew install protobuf
(also see here)generate-protos.sh
sh protos/generate-protos.sh
or simply protos/generate-protos.sh
if it is executableThis repo automatically builds docker containers and uploads them to two repositories for easy access:
The images are tagged using the docker long and short commit SHAs for that release. The current version deployed to miners can be found in the helium-miner-software repo.