Research summary and build plan for a subscription-free camper van hub: Meshtastic LoRa mesh for tracking & alerts, Home Assistant for monitoring & control, internet strictly optional. Working title — rename at will.
Origin story: a friend's cat went missing in Scotland because the cellular GPS tracker wasn't on the cat. Commercial trackers (Tractive et al.) work but bleed subscription fees and depend entirely on cellular coverage. Meanwhile the VW T2 camper already has solar, a battery bank, and a long wishlist: temperature, battery and charge monitoring, security/break-in alerts, remote-controlled lights and fans, gas/CO awareness.
The thesis: one LoRa/Meshtastic-based hub in the van covers the "few kilometers around camp" radius — which handles ~99% of real scenarios (scared dog hiding in a ditch nearby, kids around the campsite, checking the van from a hike or a restaurant) — with zero subscriptions and no cellular dependency. Internet, when available, is a bonus tier, not a requirement.
The genuinely novel part is LoRa/Meshtastic as the subscription-free remote link. Van sensor hubs exist (Victron ecosystem, countless DIY Home-Assistant-in-a-van builds). Nobody has productized the mesh link well. Everything else is assembly.
The mesh only reaches as far as the mesh. This is not "check the van from the sofa in Zürich while it's parked in Graubünden" — that gap requires internet (Tier 3). Design target: reliable alerts and queries within a few km of the van, more with hops or elevation.
LoRa is just the radio layer: 868 MHz in Europe, license-free, extremely long range at very low power, tiny bandwidth (bytes, not megabytes). Signals can be reconstructed even below the noise floor. On top of it sit two ecosystems that must not be confused:
Verdict: go Meshtastic. Mobile ad-hoc use is exactly what it's built for, friends must run the same firmware and Meshtastic has the bigger user base and friendlier apps, and — decisive — its Home Assistant integration is mature. LIKELY
| # | Decision | Rationale |
|---|---|---|
| D1 | No custom app. | HA companion app + Meshtastic app cover it. iPad "command central" = HA dashboard in Safari kiosk mode. Custom app is where the project dies. |
| D2 | Meshtastic over MeshCore & LoRaWAN. | Peer-to-peer, best apps, mature HA integration, biggest community. See PKT 03. |
| D3 | Home Assistant as the brain. | ~80% of the software already exists as open source; our work is config + glue, not app development. |
| D4 | In-van sensors on WiFi/ESPHome, never LoRa. | Don't use a 10 km radio to cross 4 meters of van. LoRa is the long-haul tier only. |
| D5 | Safety sensors (gas/CO) = certified off-the-shelf units HA listens to. | DIY safety-critical sensing is a liability wall (CE, RED, product liability) if this ever becomes a product. |
| D6 | Cellular is Tier 3, optional. | Prepaid LTE stick or campsite WiFi when available; system fully functional without it. |
| D7 | Physical backup key stays. | Magnetic box under chassis. Lockout scenario usually means the phone is inside the van too — mesh unlock can't be the only path. |
| D8 | Open-source kit before any commercial thought. | Documented parts list + image + config repo. Reputation, hardening, zero certification headaches. |
| Use case | Tier | Notes |
|---|---|---|
| Dog tracking (Nova) — firework bolt, campsite roaming | 2 | T1000-E on collar (Houdini-style 3D-printed clip; printer available). Charge-per-outing workflow — battery is ~18 h reporting, not an AirTag. Finds a running dog nearby, not a dog lost for 6 h in a 20 km radius — cheap cellular tracker stays as insurance. |
| Convoy tracking — multiple campers on the road | 2 | Private channel, every van on the map in the Meshtastic app. Zero infrastructure. 2–10 km van-to-van; expect dropouts behind terrain that self-heal. |
| Kids/people around camp | 2 | Pocket nodes; positions + texting, no cellular. |
| Van telemetry while hiking — battery, temp, alarm | 2 | HA automations → mesh DMs. Query with status, get one compact line back. |
| Climate/power monitoring & control — fans, heating, lights-before-arrival, solar/shore/battery | 1(+2/3) | ESPHome relays + sensors; iPad dashboard; pre-arrival triggers via mesh or internet. |
| Security — door/window, ultrasonic presence, arm/disarm | 1→2 | Detection in Tier 1, alerting over Tier 2. Certified gas/CO alarms as listen-only inputs (D5). |
| Remote unlock (lockout aid) | 1/2 | Build it because it's cool, but see D7 and the replay-protection note in PKT 11. |
| Qty | Item | ~Price | Role |
|---|---|---|---|
| 2 | Heltec LoRa32 V3 (868 MHz) | €22 ea | Fixed nodes: home + office (~3 km LOS test link); later one becomes van gateway |
| 2 | Seeed SenseCAP T1000-E | €40 ea | Pocket / collar trackers (GPS, IP65, ~30 g) |
| 1 | Node for Swisscom friend (Heltec V3 or T1000-E) | €22–40 | Third fixed point (~3 km), co-conspirator recruitment |
| Qty | Item | ~Price | Role |
|---|---|---|---|
| 1 | Raspberry Pi 4/5 (likely already owned) + SSD | 0–100 | HA + Mosquitto + WiFi AP, powered from van battery via buck converter |
| 1 | Outdoor 868 MHz roof antenna (~3 dBi whip or small fiberglass omni) + short low-loss coax | CHF 20–40 | 80% of mesh performance lives here |
| 3–4 | ESP32 dev boards + sensors (INA226 or shunt, BME280, reed switches, HC-SR04, relay boards) | €5–10 ea | Tier 1 satellites: power / climate / security |
| 1 | USB LTE stick + prepaid data SIM | ~CHF 40 | Tier 3, optional |
| 1 | Certified 12 V gas/CO alarm (off-the-shelf) | CHF 50–100 | Listen-only safety input (D5) |
Check amazon.de first (German shipping address available; usually cheaper than Swiss retail). Verify 868 MHz / EU_868 variants — US 915 MHz hardware is useless here. Verify SMA vs RP-SMA on every antenna/pigtail; they look identical and don't mate. Swiss option for pre-flashed nodes: meshnodes.ch.
Total projected build: CHF 400–600 — roughly two years of one Tractive subscription, for an entire smart camper. GUESSING
| Layer | Choice | Notes |
|---|---|---|
| OS / host | Home Assistant OS on Pi | Simplest ops; add-on store for Mosquitto etc. |
| Broker | Mosquitto (HA add-on) | MQTT backbone for everything |
| Mesh ↔ HA | Official Meshtastic HA integration (HACS) | Connects to gateway node via USB serial/TCP/BLE; service actions; incoming texts fire meshtastic_api_text_message events for automations; bundled web client; can forward radio → MQTT |
| In-van sensors | ESPHome | Declarative YAML per satellite; auto-discovery |
| Power (if Victron) | Native Victron Bluetooth integrations | Open question Q1: if solar is Victron (MPPT / SmartShunt), power monitoring is solved in an afternoon, no soldering |
| Remote access | Tailscale | Free, no subscription, works behind CGNAT LTE |
| Dashboard | HA Lovelace, iPad in kiosk mode | The "command central" — no custom app (D1) |
| Node firmware | Meshtastic, flashed via web browser (Chrome/Brave, USB) | Region EU_868; data-capable USB cable required (many are charge-only) |
Tier 2 packets are ~200 bytes and airtime is shared — the vocabulary is terse by design. HA automations parse inbound DMs to the gateway node and reply on the same channel. To be refined in Phase 3.
# inbound commands (human → van) status → one-line reply, see below lights on|off → toggle exterior/interior relay group heat on|off → heater relay (with interlock rules in HA) arm | disarm → security mode locate → van replies with its GPS position packet # outbound alerts (van → pocket nodes, HA-triggered) ALARM door 14:32 armed + door opened ALARM motion 03:11 armed + ultrasonic trip ALARM gas certified alarm relay tripped — highest priority WARN batt 11.8V aux battery low threshold WARN temp 41C interior high (dog-in-van guard rail) WARN temp 2C interior low / frost OK 12.6V 24C solar+ reply to `status`: batt · temp · charging
Any actuating command (unlock, heat) must not trigger on a plain channel message. Minimum: direct message + PKC, allow-listed sender node IDs, and replay protection (timestamp/nonce check in the HA automation — community precedent uses RTC + GPS checks for vehicle remote start).
3–4 nodes: home, office (~3 km LOS), friend's place (~3 km), pocket. Flash EU_868, create private channel + PSK, test real-world range in Zürich terrain, learn config quirks. Recruit the Swisscom friend (tech lead, dog owner, dead-cat grudge — ideal co-conspirator; his rooftop is free infrastructure).
Exit criterion: reliable text + position between all three fixed points and the pocket node.
Pi with HA OS in the van, gateway node on USB, roof antenna mounted, battery voltage + interior temp sensors. HACS Meshtastic integration installed.
Exit criterion: the status → OK 12.6V 24C solar+ loop works from a pocket node a few km away. This alone beats most commercial camper monitors.
Relays for lights/fan, door reed switch, ultrasonic presence, arm/disarm logic, certified gas/CO alarm as listen-only input, iPad kiosk dashboard. Victron check (Q1) resolved.
Exit criterion: armed van sends ALARM door to pocket node; lights toggle from dashboard and mesh.
LTE stick + Tailscale, alert vocabulary hardened (replay protection), Nova collar clip printed, second unit in the friend's camper. Convoy channel tested on a real multi-van trip (Mystic Creatures, September?).
Exit criterion: two vans, two households, one shared map, zero subscriptions.
Public repo: parts list, HA config, ESPHome YAMLs, flashing guide, antenna notes, STLs. Community hardens it for free. Commercial thoughts only after this — and only for the non-safety-critical parts (D5, D8).
| # | Question | Resolves in |
|---|---|---|
| Q1 | Is the T2's solar controller Victron? (If yes: native BT integration, no shunt soldering.) | Phase 1 |
| Q2 | Roof antenna model + mounting (drill vs. glass-mount vs. bracket on existing solar rail). | Phase 1 |
| Q3 | Nova collar: T1000-E + printed Houdini-style clip fit and weight check. | Phase 3 |
| Q4 | Which protocol dominates the local public mesh where we roam (Meshtastic vs MeshCore) — only relevant if we want public-backbone hops. | Phase 0 |
| Q5 | 12 V power tree: buck converter sizing for Pi + node, fusing, parasitic draw budget. | Phase 1 |
This document is the project brief. Suggested private repo layout:
vanmesh/ ├── README.md # distilled from this doc ├── docs/ │ ├── plan.html # this file │ ├── decisions.md # D1–D8, append-only ADR style │ └── range-tests.md # Phase 0 field notes: link, RSSI/SNR, terrain ├── homeassistant/ │ ├── configuration.yaml │ ├── automations/ # mesh vocabulary handlers, alerts │ └── dashboards/ # iPad kiosk view ├── esphome/ │ ├── power.yaml # INA226/shunt, shore detect │ ├── climate.yaml # BME280, fan relay │ └── security.yaml # reed, ultrasonic, arm state ├── meshtastic/ │ ├── channels.md # channel plan, PSK handling (PSKs NOT committed) │ └── node-configs/ # exported configs per node, roles pinned └── hardware/ ├── bom.md └── stl/ # collar clip, node mounts
secrets.yaml.decisions.md when a phase closes.