Sens'it Discovery v3 byte 1 layout per official spec:
bits 7-3: mode
bit 2 : special / button alert
bits 1-0: MSB (2 bits) of sensor data
Previous decoder had button on bit 0 and used only bit 2 as data MSB
(9-bit values). Real payloads confirmed 10-bit: e.g. b609a861 was
decoded as -4°C but correctly resolves to 28°C with the fixed layout.
Fixes applied consistently to all v3 modes:
- Temperature: 10-bit temp with formula (raw - 200) / 8
- Light: 10-bit brightness with formula raw / 96
- Door/Vibration/Magnet: 2-bit status from bits 1-0
Existing DB entries re-decoded in place.
Sens'it v2 has a totally different payload layout than Discovery v3:
- Bit order LSB→MSB (was MSB→LSB in v3)
- Mode in bits 0-2 (was bits 7-3 in v3)
- Battery split across bytes 0 & 1 (was 5 contiguous bits in v3)
- Temperature always sent (in T° MSB byte 1) even outside temp mode
Auto-detection uses byte 0 reserved bits: 0b110 = v3, otherwise = v2.
Frontend updated to render new fields: move_events, reed_events, fw_major/minor.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Small companion service that receives SNEK callbacks, decodes Sens'it
Discovery payloads for all 6 modes (Standby, Temperature, Light, Door,
Vibration, Magnet), stores in SQLite, and serves a responsive dashboard.
Backend (Python Flask):
- POST /webhook: receive SNEK callback
- GET /api/devices, /api/messages, /api/decode
- GET /events: Server-Sent Events for live push
- SQLite persistence at /data/messages.db
Frontend:
- Tailwind CSS via CDN, Chart.js for temp/humidity graph
- Live updates via SSE
- Device cards with icons per mode
- Message log with human-readable summaries
Deploy:
- Separate deployment (snek-dashboard) with own PVC
- LoadBalancer on 192.168.1.213:80
- SNEK callback URL: http://snek-dashboard.snek.svc.cluster.local/webhook
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>