From efb11df983746c3373d58632b71fa42e4c59da47 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Mon, 20 Apr 2026 15:47:18 -0400 Subject: [PATCH] docs(fusion_iot): Tailscale + SSH cheat sheet for the pilot Pi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fp-iot-01 is now on Tailscale at 100.108.41.97. SSH config on the Mac aliases `ssh fp-iot-01` to the Tailscale IP with key-based auth (no more sshpass + password flying around in shell history). Also noted the Pi-side folder structure (pi/ + scripts/) and the live deployment facts (probe serial, systemd unit, config path) so future sessions can pick up from zero without re-investigating. Verified end-to-end with real hardware: - Physical probe heated to 79.94°C → auto-raised HOLD-0015 - 30 subsequent out-of-spec readings → no duplicate holds (as designed) - hold_id correctly linked back to the triggering reading Co-Authored-By: Claude Opus 4.7 (1M context) --- fusion_iot/CLAUDE.md | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/fusion_iot/CLAUDE.md b/fusion_iot/CLAUDE.md index 6cd35c5d..129d8372 100644 --- a/fusion_iot/CLAUDE.md +++ b/fusion_iot/CLAUDE.md @@ -11,11 +11,39 @@ and any other device Odoo's IoT framework supports. ``` fusion_iot/ -├── iot_base/ # Repackaged from Odoo S.A. — shared JS utils -├── iot/ # Repackaged from Odoo S.A. — IoT Box mgmt models + UI -└── fusion_plating_iot/ # Our wrapper — sensor→tank mapping + out-of-spec holds +├── iot_base/ # Repackaged from Odoo S.A. — shared JS utils +├── iot/ # Repackaged from Odoo S.A. — IoT Box mgmt models + UI +├── fusion_plating_iot/ # Our wrapper — sensor→tank mapping + out-of-spec holds +├── pi/ # Pi-side: lightweight systemd poller (no iot_drivers) +│ ├── fp_iot_poller.py +│ └── fp-iot-poller.service +└── scripts/ # One-shot setup + smoke tests ``` +## Live deployments + +### Pi #1 — pilot probe (DS18B20, Tank TK-EN-01) + +| Attribute | Value | +|-----------|-------| +| Hostname | `fp-iot-01` | +| LAN IP | `192.168.10.112` | +| **Tailscale IP** | **`100.108.41.97`** | +| SSH | `ssh fp-iot-01` (aliased in `~/.ssh/config`, key-based via Tailscale — no password, no sshpass) | +| User | `fp` | +| Probe serial | `28-000000b276e4` (DS18B20) | +| Poller service | `fp-iot-poller.service` — posts to entech every 30s | +| Poller config | `/etc/fp-iot/poller.conf` | +| Poller logs | `journalctl -u fp-iot-poller -f` | + +**Tailscale auth**: pre-authed to the `gurpreet6672@` tailnet. Survives reboots (`tailscaled` enabled). + +### entech LXC (Odoo server) + +- `iot_base` + `iot` + `fusion_plating_iot` all installed +- Ingest endpoint: `POST http://10.200.1.26:8069/fp/iot/ingest` +- Token lives in `ir.config_parameter['fusion_plating_iot.ingest_token']` — rotated via `scripts/fp_iot_setup_live_sensor.py` at setup time; rotate again in Settings → Technical → System Parameters as needed + ## Repackaging notes — `iot_base` + `iot` Both copied as-is from `/Users/gurpreet/Github/RePackaged-Odoo/_dependencies/`