- app/build.gradle.kts: remove hardcoded keystore password (was 'adacam-varroa-2026' in 4 spots across a duplicated signingConfigs block). Now reads VARROA_KEYSTORE_PATH + VARROA_KEYSTORE_PASSWORD + VARROA_KEY_PASSWORD from env. Password vaulted as 'Varroa — release keystore'. Drops orphan zxing/camera deps that aren't wired up. - app/src/main/res/xml/network_security_config.xml: tighten cleartext scope from global to just 192.168.0.10 (Bee AP). HTTPS strict for everything else. - app/src/main/java/.../api/AdaMapsApiClient.kt: drop apiKey.take(8) in log to apiKey.length — no need to leak prefix to logcat. - README.md: add. Public repo without one was a bad first impression. - docs/BEE-CAMERA.md: rewrite (811→467 lines). Keep all paths, pinouts, bus diagrams, depthai/VPU/xlink details, intercept architecture. Strip Executive-Summary framing, verdict box, phased roadmap, appendices. - docs/AIR-QUALITY-INTEGRATION.md: rewrite (712→369 lines). Keep BOM, sensor comparisons, wiring, IAQ calc, ingest endpoint shape. Strip feasibility-report scaffolding. - docs/AIR-API-PATCH.py: delete. Was a one-shot apply-and-discard patch script, not docs.
46 lines
1.3 KiB
Markdown
46 lines
1.3 KiB
Markdown
# varroa
|
|
|
|
Android companion for the Hivemapper Bee dashcam. Pulls detection
|
|
landmarks off the on-Bee `adacam-api`, queues them in a local Room
|
|
DB, forwards to AdaMaps when the phone has real internet.
|
|
|
|
Sister piece: `blackbox/` — Python aggregator that runs on a truck
|
|
Pi (BME680 + PMS5003) and ships air-quality readings into the same
|
|
AdaMaps stream.
|
|
|
|
## Build
|
|
|
|
```
|
|
JDK 17, Android SDK 34
|
|
./gradlew :app:assembleDebug
|
|
```
|
|
|
|
Release signing needs:
|
|
|
|
```
|
|
VARROA_KEYSTORE_PATH=/path/to/varroa-release.keystore
|
|
VARROA_KEYSTORE_PASSWORD=<see vault>
|
|
VARROA_KEY_PASSWORD=<see vault>
|
|
./gradlew :app:assembleRelease
|
|
```
|
|
|
|
## Config (set in-app)
|
|
|
|
- **Bee URL** — defaults to `http://192.168.0.10:5000` (Bee AP).
|
|
- **AdaMaps URL + ingest key** — required before uploads run.
|
|
- **Cardano wallet** — optional. Attaches to detection ingest for
|
|
rewards routing.
|
|
|
|
## Architecture
|
|
|
|
- `BeeCollectorService` — polls the Bee, writes landmarks to Room.
|
|
- `AdaMapsUploadWorker` — drains Room to `api.adamaps.org` once
|
|
validated internet is available.
|
|
- `ImageCollectorService` — pulls detection JPEGs from the Bee.
|
|
|
|
## blackbox
|
|
|
|
The air-quality side. `air_aggregator.py` reads BME680 +
|
|
PMS5003 over USB, posts to AdaMaps every 60s. Systemd unit at
|
|
`blackbox/air-aggregator.service` — set `ADAMAPS_KEY` and
|
|
`AGGREGATOR_BEE_URL` in the unit before enabling.
|