Hi Roy,
No worries, I know “life happens” to all of us and I am just appreciative of whatever time and replies you are able to give here 
Since my last reply above, I did attempt the basics and ran into some roadblocks. I am happy to help with testing the add-on stuff, but that is not the priority if I cannot get the basics working.
So, I have a Pi 4 running the standard Raspberry Pi OS 64-bit, I am SSH’ed in, and the Wifi+BLE Anova is sitting nearby on the desk ready for a success that has not yet occurred.
I tried both the docker build and the python venv instructions above and ran into what appears to be the same issue which is ModuleNotFoundError: No module named 'app'.
ray@raspberrypi-bplus-anova:~/anova_server $ docker build -t anova-server .
[+] Building 201.3s (16/16) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 899B 0.0s
=> WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 1) 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:22.04 0.8s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [ 1/11] FROM docker.io/library/ubuntu:22.04@sha256:1ec65b2719518e27d4d25f104d93f9fac60dc437f81452302406825c46fcc9cb 11.3s
=> => resolve docker.io/library/ubuntu:22.04@sha256:1ec65b2719518e27d4d25f104d93f9fac60dc437f81452302406825c46fcc9cb 0.0s
=> => sha256:1ec65b2719518e27d4d25f104d93f9fac60dc437f81452302406825c46fcc9cb 6.69kB / 6.69kB 0.0s
=> => sha256:e8054b48720c54efdb365e6b4340d042a3e29e1eefaa0070ac1e246187605b71 424B / 424B 0.0s
=> => sha256:61cbdeb57a0f863e1780e060468aa64ae41f9a11252196626dfb7d4c2035caf7 2.31kB / 2.31kB 0.0s
=> => sha256:ef6d179edc98e93dc6073cb3ddec6f1a6ed1d68d04cd7836a82abfd397922a05 27.36MB / 27.36MB 7.7s
=> => extracting sha256:ef6d179edc98e93dc6073cb3ddec6f1a6ed1d68d04cd7836a82abfd397922a05 2.6s
=> [internal] load build context 0.2s
=> => transferring context: 833.14kB 0.1s
=> [ 2/11] WORKDIR /anova 4.4s
=> [ 3/11] COPY / /anova 0.2s
=> [ 4/11] RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends software-properties-common gpg-agent 89.7s
=> [ 5/11] RUN ln -snf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime && echo Europe/Amsterdam > /etc/timezone 0.4s
=> [ 6/11] RUN add-apt-repository ppa:deadsnakes/ppa -y 10.3s
=> [ 7/11] RUN apt-get install -y --no-install-recommends python3.11 python3.11-venv python3.11-distutils python3-pip 42.8s
=> [ 8/11] RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 0.5s
=> [ 9/11] RUN update-alternatives --config python3 0.8s
=> [10/11] RUN python3.11 -m pip install --upgrade pip 9.5s
=> [11/11] RUN pip install pyproject.toml bleak uvicorn fastapi pydantic-settings 21.0s
=> exporting to image 9.3s
=> => exporting layers 9.2s
=> => writing image sha256:3bd733a113bee0035c31a4466404b3c017234927ea4772c7982a2c16c19081eb 0.0s
=> => naming to docker.io/library/anova-server 0.0s
2 warnings found (use docker --debug to expand):
- FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 1)
- JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 23)
ray@raspberrypi-bplus-anova:~/anova_server $ docker run --restart unless-stopped -p 8080:8080 --privileged --net=host anova-server
WARNING: Published ports are discarded when using host network mode
INFO: Will watch for changes in these directories: ['/anova']
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started reloader process [7] using StatReload
Process SpawnProcess-1:
Traceback (most recent call last):
File "/usr/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
self.run()
File "/usr/lib/python3.11/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.11/dist-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
target(sockets=sockets)
File "/usr/local/lib/python3.11/dist-packages/uvicorn/server.py", line 67, in run
return asyncio.run(self.serve(sockets=sockets))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/uvicorn/server.py", line 71, in serve
await self._serve(sockets)
File "/usr/local/lib/python3.11/dist-packages/uvicorn/server.py", line 78, in _serve
config.load()
File "/usr/local/lib/python3.11/dist-packages/uvicorn/config.py", line 436, in load
self.loaded_app = import_from_string(self.app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/uvicorn/importer.py", line 22, in import_from_string
raise exc from None
File "/usr/local/lib/python3.11/dist-packages/uvicorn/importer.py", line 19, in import_from_string
module = importlib.import_module(module_str)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'app'
Here I attempt the python venv instructions, and reach a failure of ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
ray@raspberrypi-bplus-anova:~/anova_server $ sudo apt-get install -y --no-install-recommends python3.11 python3.11-venv python3.11-distutils python3-pip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'python3-distutils' instead of 'python3.11-distutils'
python3-distutils is already the newest version (3.11.2-3).
python3-distutils set to manually installed.
python3-pip is already the newest version (23.0.1+dfsg-1+rpt1).
The following packages were automatically installed and are no longer required:
criu libintl-perl libintl-xs-perl libmodule-find-perl libnet1 libproc-processtable-perl libprotobuf-c1 libsort-naturally-perl libterm-readkey-perl needrestart
python3-protobuf tini
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
libpython3.11 libpython3.11-dev libpython3.11-minimal libpython3.11-stdlib python3.11-dev python3.11-minimal
Suggested packages:
python3.11-doc binfmt-support
The following packages will be upgraded:
libpython3.11 libpython3.11-dev libpython3.11-minimal libpython3.11-stdlib python3.11 python3.11-dev python3.11-minimal python3.11-venv
8 upgraded, 0 newly installed, 0 to remove and 190 not upgraded.
Need to get 11.8 MB of archives.
After this operation, 2,048 B of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main arm64 python3.11-dev arm64 3.11.2-6+deb12u6 [617 kB]
Get:2 http://deb.debian.org/debian bookworm/main arm64 libpython3.11-dev arm64 3.11.2-6+deb12u6 [4,390 kB]
Get:3 http://deb.debian.org/debian bookworm/main arm64 libpython3.11 arm64 3.11.2-6+deb12u6 [1,841 kB]
Get:4 http://deb.debian.org/debian bookworm/main arm64 python3.11-venv arm64 3.11.2-6+deb12u6 [5,896 B]
Get:5 http://deb.debian.org/debian bookworm/main arm64 python3.11 arm64 3.11.2-6+deb12u6 [573 kB]
Get:6 http://deb.debian.org/debian bookworm/main arm64 libpython3.11-stdlib arm64 3.11.2-6+deb12u6 [1,746 kB]
Get:7 http://deb.debian.org/debian bookworm/main arm64 python3.11-minimal arm64 3.11.2-6+deb12u6 [1,859 kB]
Get:8 http://deb.debian.org/debian bookworm/main arm64 libpython3.11-minimal arm64 3.11.2-6+deb12u6 [810 kB]
Fetched 11.8 MB in 3s (3,882 kB/s)
apt-listchanges: Reading changelogs...
(Reading database ... 130293 files and directories currently installed.)
Preparing to unpack .../0-python3.11-dev_3.11.2-6+deb12u6_arm64.deb ...
Unpacking python3.11-dev (3.11.2-6+deb12u6) over (3.11.2-6+deb12u5) ...
Preparing to unpack .../1-libpython3.11-dev_3.11.2-6+deb12u6_arm64.deb ...
Unpacking libpython3.11-dev:arm64 (3.11.2-6+deb12u6) over (3.11.2-6+deb12u5) ...
Preparing to unpack .../2-libpython3.11_3.11.2-6+deb12u6_arm64.deb ...
Unpacking libpython3.11:arm64 (3.11.2-6+deb12u6) over (3.11.2-6+deb12u5) ...
Preparing to unpack .../3-python3.11-venv_3.11.2-6+deb12u6_arm64.deb ...
Unpacking python3.11-venv (3.11.2-6+deb12u6) over (3.11.2-6+deb12u5) ...
Preparing to unpack .../4-python3.11_3.11.2-6+deb12u6_arm64.deb ...
Unpacking python3.11 (3.11.2-6+deb12u6) over (3.11.2-6+deb12u5) ...
Preparing to unpack .../5-libpython3.11-stdlib_3.11.2-6+deb12u6_arm64.deb ...
Unpacking libpython3.11-stdlib:arm64 (3.11.2-6+deb12u6) over (3.11.2-6+deb12u5) ...
Preparing to unpack .../6-python3.11-minimal_3.11.2-6+deb12u6_arm64.deb ...
Unpacking python3.11-minimal (3.11.2-6+deb12u6) over (3.11.2-6+deb12u5) ...
Preparing to unpack .../7-libpython3.11-minimal_3.11.2-6+deb12u6_arm64.deb ...
Unpacking libpython3.11-minimal:arm64 (3.11.2-6+deb12u6) over (3.11.2-6+deb12u5) ...
Setting up libpython3.11-minimal:arm64 (3.11.2-6+deb12u6) ...
Setting up python3.11-minimal (3.11.2-6+deb12u6) ...
Setting up libpython3.11-stdlib:arm64 (3.11.2-6+deb12u6) ...
Setting up python3.11 (3.11.2-6+deb12u6) ...
Setting up libpython3.11:arm64 (3.11.2-6+deb12u6) ...
Setting up python3.11-venv (3.11.2-6+deb12u6) ...
Setting up libpython3.11-dev:arm64 (3.11.2-6+deb12u6) ...
Setting up python3.11-dev (3.11.2-6+deb12u6) ...
Processing triggers for systemd (252.36-1~deb12u1) ...
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for mailcap (3.70+nmu1) ...
Processing triggers for desktop-file-utils (0.26-1) ...
Processing triggers for gnome-menus (3.36.0-1.1) ...
Processing triggers for libc-bin (2.36-9+rpt2+deb12u10) ...
Scanning processes...
Scanning processor microcode...
Scanning linux images...
Running kernel seems to be up-to-date.
The processor microcode seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this host.
ray@raspberrypi-bplus-anova:~/anova_server $ cd ..
ray@raspberrypi-bplus-anova:~ $ ls
anova_server Bookshelf Desktop Documents Downloads Music Pictures Public Templates Videos
ray@raspberrypi-bplus-anova:~ $ cd ~/anova_server
ray@raspberrypi-bplus-anova:~/anova_server $
ray@raspberrypi-bplus-anova:~/anova_server $ ls
'anova_server [HOST]' 'ble_proxy [RPI]' Dockerfile pyproject.toml README.md startup.sh uv.lock
ray@raspberrypi-bplus-anova:~/anova_server $ python3.11 -m venv .venv
source .venv/bin/activate
ray@raspberrypi-bplus-anova:~/anova_server $
ray@raspberrypi-bplus-anova:~/anova_server $ source .venv/bin/activate
(.venv) ray@raspberrypi-bplus-anova:~/anova_server $
(.venv) ray@raspberrypi-bplus-anova:~/anova_server $ pip install --upgrade pip
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pip in ./.venv/lib/python3.11/site-packages (23.0.1)
Collecting pip
Downloading pip-25.2-py3-none-any.whl (1.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 3.3 MB/s eta 0:00:00
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 23.0.1
Uninstalling pip-23.0.1:
Successfully uninstalled pip-23.0.1
Successfully installed pip-25.2
(.venv) ray@raspberrypi-bplus-anova:~/anova_server $
(.venv) ray@raspberrypi-bplus-anova:~/anova_server $ pip install -r requirements.txt
ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
I manually install the requirements instead as per your next instructions.
(.venv) ray@raspberrypi-bplus-anova:~/anova_server $ pip install bleak uvicorn fastapi pydantic-settings
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting bleak
Downloading bleak-1.0.1-py3-none-any.whl.metadata (5.0 kB)
Collecting uvicorn
Downloading uvicorn-0.35.0-py3-none-any.whl.metadata (6.5 kB)
Collecting fastapi
Downloading fastapi-0.116.1-py3-none-any.whl.metadata (28 kB)
Collecting pydantic-settings
Downloading pydantic_settings-2.10.1-py3-none-any.whl.metadata (3.4 kB)
Collecting dbus-fast>=1.83.0 (from bleak)
Downloading dbus_fast-2.44.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (10 kB)
Collecting typing-extensions>=4.7.0 (from bleak)
Downloading typing_extensions-4.14.1-py3-none-any.whl.metadata (3.0 kB)
Collecting click>=7.0 (from uvicorn)
Downloading click-8.2.1-py3-none-any.whl.metadata (2.5 kB)
Collecting h11>=0.8 (from uvicorn)
Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)
Collecting starlette<0.48.0,>=0.40.0 (from fastapi)
Downloading starlette-0.47.2-py3-none-any.whl.metadata (6.2 kB)
Collecting pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4 (from fastapi)
Downloading pydantic-2.11.7-py3-none-any.whl.metadata (67 kB)
Collecting annotated-types>=0.6.0 (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi)
Downloading https://www.piwheels.org/simple/annotated-types/annotated_types-0.7.0-py3-none-any.whl (13 kB)
Collecting pydantic-core==2.33.2 (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi)
Downloading pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (6.8 kB)
Collecting typing-inspection>=0.4.0 (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi)
Downloading typing_inspection-0.4.1-py3-none-any.whl.metadata (2.6 kB)
Collecting anyio<5,>=3.6.2 (from starlette<0.48.0,>=0.40.0->fastapi)
Downloading anyio-4.10.0-py3-none-any.whl.metadata (4.0 kB)
Collecting idna>=2.8 (from anyio<5,>=3.6.2->starlette<0.48.0,>=0.40.0->fastapi)
Downloading https://www.piwheels.org/simple/idna/idna-3.10-py3-none-any.whl (70 kB)
Collecting sniffio>=1.1 (from anyio<5,>=3.6.2->starlette<0.48.0,>=0.40.0->fastapi)
Downloading https://www.piwheels.org/simple/sniffio/sniffio-1.3.1-py3-none-any.whl (10 kB)
Collecting python-dotenv>=0.21.0 (from pydantic-settings)
Downloading python_dotenv-1.1.1-py3-none-any.whl.metadata (24 kB)
Downloading bleak-1.0.1-py3-none-any.whl (135 kB)
Downloading uvicorn-0.35.0-py3-none-any.whl (66 kB)
Downloading fastapi-0.116.1-py3-none-any.whl (95 kB)
Downloading pydantic-2.11.7-py3-none-any.whl (444 kB)
Downloading pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.9/1.9 MB 3.4 MB/s 0:00:00
Downloading starlette-0.47.2-py3-none-any.whl (72 kB)
Downloading anyio-4.10.0-py3-none-any.whl (107 kB)
Downloading pydantic_settings-2.10.1-py3-none-any.whl (45 kB)
Downloading click-8.2.1-py3-none-any.whl (102 kB)
Downloading dbus_fast-2.44.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (879 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 879.6/879.6 kB 2.7 MB/s 0:00:00
Downloading h11-0.16.0-py3-none-any.whl (37 kB)
Downloading python_dotenv-1.1.1-py3-none-any.whl (20 kB)
Downloading typing_extensions-4.14.1-py3-none-any.whl (43 kB)
Downloading typing_inspection-0.4.1-py3-none-any.whl (14 kB)
Installing collected packages: typing-extensions, sniffio, python-dotenv, idna, h11, dbus-fast, click, annotated-types, uvicorn, typing-inspection, pydantic-core, bleak, anyio,
starlette, pydantic, pydantic-settings, fastapi
Successfully installed annotated-types-0.7.0 anyio-4.10.0 bleak-1.0.1 click-8.2.1 dbus-fast-2.44.3 fastapi-0.116.1 h11-0.16.0 idna-3.10 pydantic-2.11.7 pydantic-core-2.33.2 pydantic-settings-2.10.1 python-dotenv-1.1.1 sniffio-1.3.1 starlette-0.47.2 typing-extensions-4.14.1 typing-inspection-0.4.1 uvicorn-0.35.0
(.venv) ray@raspberrypi-bplus-anova:~/anova_server $
(.venv) ray@raspberrypi-bplus-anova:~/anova_server $ ls
'anova_server [HOST]' 'ble_proxy [RPI]' Dockerfile pyproject.toml README.md startup.sh uv.lock
(.venv) ray@raspberrypi-bplus-anova:~/anova_server $ cd ble_proxy\ \[RPI\]/
(.venv) ray@raspberrypi-bplus-anova:~/anova_server/ble_proxy [RPI] $ ls
ble_server.py
(.venv) ray@raspberrypi-bplus-anova:~/anova_server/ble_proxy [RPI] $ nano ble_server.py
(.venv) ray@raspberrypi-bplus-anova:~/anova_server/ble_proxy [RPI] $ uvicorn app.main:app --reload --app-dir ./anova_server/python --port 8000 --host 0.0.0.0
INFO: Will watch for changes in these directories: ['/home/ray/anova_server/ble_proxy [RPI]']
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started reloader process [2854] using StatReload
Process SpawnProcess-1:
Traceback (most recent call last):
File "/usr/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
self.run()
File "/usr/lib/python3.11/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/home/ray/anova_server/.venv/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
target(sockets=sockets)
File "/home/ray/anova_server/.venv/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run
return asyncio.run(self.serve(sockets=sockets))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/ray/anova_server/.venv/lib/python3.11/site-packages/uvicorn/server.py", line 71, in serve
await self._serve(sockets)
File "/home/ray/anova_server/.venv/lib/python3.11/site-packages/uvicorn/server.py", line 78, in _serve
config.load()
File "/home/ray/anova_server/.venv/lib/python3.11/site-packages/uvicorn/config.py", line 436, in load
self.loaded_app = import_from_string(self.app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ray/anova_server/.venv/lib/python3.11/site-packages/uvicorn/importer.py", line 22, in import_from_string
raise exc from None
File "/home/ray/anova_server/.venv/lib/python3.11/site-packages/uvicorn/importer.py", line 19, in import_from_string
module = importlib.import_module(module_str)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'app'
I also tried building the python venv same instructions on my Macbook and got the same result of No module named 'app'
When I go in to debug by “trying other things” I was sometimes confused by whether I should always be issuing these commands from the base folder of /anova_server or if I would ever do something from inside a subdir like /anova_server/ble_proxy. I treat the instructions as literally as I can, they say to issue the commands from /anova_server so that’s what I did. But I still have some confusion about how the 2 parts of the project (the anova_server [HOST] and the ble_proxy [RPI]) work together, and hopefully that will become more clear to me once I can get something up and running.
Also, once we (hopefully) get these issues resolved, I’m not clear on future instructions like this and just want to make sure: Is the intention to use a tool like Postman to interact with the API? I know how to do this. Bruno seems to be a less bad version of it I have been using recently. Or do I just go into the browser with those appended to the base path and the browser will render UI to take inputs?
BLE Setup & WiFi Migration
- Pair Anova over BLE:
Use /api/ble/secret_key and save the key and device name.
- Push server config:
/api/ble/config_wifi_server — Add the server IP/host and port.
- Install WiFi config:
Add your WiFi SSID and password via the API.
Thank you, thank you, thank you for any time and assistance you are able to give. I want to get this working (but not in any hurry).