Commit Graph

10 Commits

Author SHA1 Message Date
Your Name
c20ea823e9 docs(miotiq): repurpose payload byte 9 as command (ping test trigger)
Le champ `version` (offset 9 du payload NebuleAir Pro 4G) était hardcodé
`0x01` côté firmware et n'a jamais porté un vrai versioning protocole.
Renommé en `command` et réaffecté à un type de trame :

- 0x00 = données mesure
- 0x01 = ping test (firmware → Miotiq → backend, pas d'archivage)

Versioning protocole reste sur `version_major/minor/patch`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 16:22:27 +02:00
Your Name
a4ecbd7133 docs(miotiq): drop generic server parser skeleton
Will be moved to its own file later. Kept only the descriptor format
spec and per-sensor binary layout in this doc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 11:22:26 +02:00
Your Name
232f1b7097 docs(miotiq): integrate lat/lon/misc into NebuleAir Pro 4G descriptor
- latitude / longitude: 4 bytes each, offset-unsigned encoding
  (raw = round((deg + 90|180) * 1e6), Miotiq equation x/1000000-90|180)
  to sidestep the absence of signed hex2dec. Precision ~11cm.
- misc: 1 byte, enum 0-6 (documented as extensible without breaking
  the byte layout).
- "No fix" authority = device_status.GPS_NO_FIX bit; defensive rule
  for legacy firmwares documented.
- 9 of the 11 reserved bytes consumed; 2 bytes remain reserved.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 11:21:07 +02:00
Your Name
33c4472350 docs: merge parsers/ into formats/ and drop misleading JSON wrapper
Parsers and formats are tightly linked (a parser produces a format) and
the split made cross-links heavy for a single parser file. Also removed
the confusing "Enveloppe JSON" block in udp-miotiq.md that mixed the
raw webhook wrapper with what the backend actually consumes — the
decoded payload schema lives in json-payload.md and is now referenced
directly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 11:02:10 +02:00
fee8b7dc15 docs: add cellular data budget estimation vs Miotiq 1GB/10y quota
Breakdown per-transmission size (UDP+IP overhead + payload), daily/monthly/
yearly/10y consumption tables for both fixed (NebuleAir Pro 4G, 83B) and
mobile (MobileAir, 17B) modes at various transmission intervals, and a
with-signaling majorant (x1.5) for LTE-M worst case.

Recommended intervals: 5 min fixed (~12% budget) and 30s-in-motion mobile
(~16%), both leaving ample margin for descriptor growth and retries.

Flags scenarios that would exceed budget (fixed 30s continuous, mobile 10s
24/7) and lists TODOs around validating counting policy via Miotiq reports.
2026-04-23 01:04:07 +02:00
9d006ecf19 docs(miotiq): plan to integrate lat/lon/misc into NebuleAir Pro 4G descriptor
Today these 3 fields appear in the JSON final but are absent from the 83B
descriptor. The 11-byte 'reserved' block has room for all three (4+4+1=9).

TODO section now proposes concrete encoding lines:
  8|latitude|hex2dec|degrees|x/1000000|
  8|longitude|hex2dec|degrees|x/1000000|
  2|misc|hex2dec|||
...with an open question on whether Miotiq hex2dec supports signed ints,
and a note to keep 2 bytes reserved for future growth.
2026-04-23 00:59:01 +02:00
efd1aa438a docs: align with AirCarto 2026 JSON template + fix ISO mapping
formats/json-payload.md: full rewrite around the actual server-side template
  (endpoint api.aircarto.com/receive_data?device_type=<model>, flat schema,
  _unit suffix companions, -1 and 255 sentinel semantics, full bitfield
  tables for error_flags/npm_status/device_status, misc context codes).

formats/iso-pollutant-codes.md: fill in the LCSQA mapping. Fixes my earlier
  inversion — ISO_39=PM2.5 and ISO_24=PM10 (not the other way). Add gases:
  ISO_03=NO2, ISO_04=CO, ISO_05=H2S, ISO_08=O3, ISO_21=NH3.

parsers/udp-miotiq.md:
  - string base function outputs hex (not ASCII) — update description and
    generic Python parser accordingly.
  - Fix ISO_39/ISO_24 labels in NebuleAir Pro 4G byte layout.
  - Name the 5 gases by offset, cross-link bitfield docs and JSON canonical.
  - New TODO: origin of latitude/longitude/misc in final JSON (not in 83B
    descriptor).

README.md: reflect the new file layout and data flow summary.
2026-04-23 00:55:25 +02:00
96260120fc docs(miotiq): align descriptor spec with official Miotiq docs
- 6th column is 'export to JSON' (Y/W/N), not a writable flag.
- Add base functions hex2bin (bitfield string) and userdef (pass-through).
- Rename 'scale' to 'equation' (expression in x, e.g. (x-32)*5/9 possible).
- Update generic Python parser to handle all base functions and emit Y-style unit rows.
- Remove resolved TODO on flag W semantics.
2026-04-23 00:49:22 +02:00
7f8d6a21e9 docs(miotiq): Miotiq descriptor format as canonical parser + NebuleAir Pro 4G 83B descriptor
- Refactor parsers/udp-miotiq.md around the pipe-separated descriptor format used on Miotiq side.
- Document the full 83-byte NebuleAir Pro 4G descriptor (PM, gases, noise, weather, power, status).
- Keep legacy MobileAir 17B binary format for reference.
- Add formats/iso-pollutant-codes.md placeholder for AirCarto ISO 7168 code mapping.
- Open TODOs: flag W semantics, endianness, signed battery_current, MobileAir migration.
2026-04-23 00:46:35 +02:00
278775e7e8 chore: initial skeleton — NextPM sensor, JSON format, Miotiq UDP parser 2026-04-23 00:36:19 +02:00