varroa/README.md
Cobb Hayes 1b3f10b7f5 Public-flip prep: env-driven keystore, README, hardened cleartext, leaner docs
- 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.
2026-05-27 10:30:02 -07:00

1.3 KiB

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.