doc: openScale milstolpe 1-4 klara + README (våg, GPL) + version 0.4.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2GA94E1f3cmrvdQLQhYdg
This commit is contained in:
16
README.md
16
README.md
@@ -70,5 +70,21 @@ vid varje push till `main` och lägger den på den rullande `latest`-releasen.
|
|||||||
Eftersom Googles aapt2 bara finns för x86_64 använder bygget en statiskt byggd
|
Eftersom Googles aapt2 bara finns för x86_64 använder bygget en statiskt byggd
|
||||||
arm64-aapt2 via `android.aapt2FromMavenOverride`.
|
arm64-aapt2 via `android.aapt2FromMavenOverride`.
|
||||||
|
|
||||||
|
## Bluetooth-våg
|
||||||
|
|
||||||
|
Appen kan hämta vägningar (vikt + muskel/fett/vatten-%) direkt från en
|
||||||
|
BLE-personvåg med [openScale](https://github.com/oliexdev/openScale)s
|
||||||
|
drivrutiner (vendrade under `app/src/main/java/com/health/openscale/`).
|
||||||
|
Koppla vågen under *Inställningar → Bluetooth-våg* och väg dig från profilen.
|
||||||
|
Först ut: Biltema 84-1002 (PT-727), som är en Exingtech Y1 ("VScale").
|
||||||
|
Detaljer: [`doc/openscale-integration.md`](doc/openscale-integration.md).
|
||||||
|
|
||||||
|
## Licens
|
||||||
|
|
||||||
|
GPL-3.0 (se [`LICENSE`](LICENSE)). Relicensierad från och med BT-vågstödet —
|
||||||
|
openScales drivrutiner är GPL-3.0, vilket kräver att hela appen är det.
|
||||||
|
BLE-biblioteket [Blessed-Kotlin](https://github.com/weliem/blessed-kotlin)
|
||||||
|
är MIT.
|
||||||
|
|
||||||
Mer om arkitektur och planer: [`doc/plan.md`](doc/plan.md) och
|
Mer om arkitektur och planer: [`doc/plan.md`](doc/plan.md) och
|
||||||
[wikin](https://gitea.brasse-pc.eu/brasse/FitnessDroid/wiki).
|
[wikin](https://gitea.brasse-pc.eu/brasse/FitnessDroid/wiki).
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ android {
|
|||||||
minSdk = 31
|
minSdk = 31
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = ciRunNumber ?: 1
|
versionCode = ciRunNumber ?: 1
|
||||||
versionName = "0.3.2" + (ciRunNumber?.let { "+build.$it" } ?: "-dev")
|
versionName = "0.4.0" + (ciRunNumber?.let { "+build.$it" } ?: "-dev")
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
|
|||||||
@@ -67,34 +67,55 @@ cachas lokalt (som kroppsvikten) för offline och för BIA-beräkningen.
|
|||||||
|
|
||||||
**Webb (brasse-pc.eu-v2):** samma fält på profil-fliken via `updateProfile`.
|
**Webb (brasse-pc.eu-v2):** samma fält på profil-fliken via `updateProfile`.
|
||||||
|
|
||||||
|
## Användarens våg (identifierad 2026-08-23)
|
||||||
|
|
||||||
|
**Biltema 84-1002 "Bluetooth Analyser Scale", modell PT-727** (Ningbo Putian).
|
||||||
|
Annonserar som BLE-namnet **"VScale"** (verifierat med `bluetoothctl` på
|
||||||
|
brasse-linux01: `Device C4:BE:84:79:D0:6C VScale`) → openScales
|
||||||
|
**`ExingtechY1Handler`** matchar (exakt namnmatch `vscale`).
|
||||||
|
|
||||||
|
Protokoll (GATT): appen skriver `[0x10, userId, kön, ålder, längd_cm]` till
|
||||||
|
vågen; vågen räknar ut kroppssammansättningen **ombord** och notifierar en
|
||||||
|
20-bytes-ram (vikt, fett-%, vatten-%, muskel-%, benmassa kg, bukfettsindex).
|
||||||
|
Ingen BIA-formel behövs i appen — men längd/födelseår/kön måste finnas.
|
||||||
|
|
||||||
## Milstolpar (byggbara steg)
|
## Milstolpar (byggbara steg)
|
||||||
|
|
||||||
1. **Grund + licens + About** — LICENSE → GPL-3.0; `blessed-kotlin`-beroende;
|
1. **Grund + licens + About** *(klar 2026-08-23)* — LICENSE → GPL-3.0;
|
||||||
BLE-permissions i manifestet; About-vy under Profil (attribution + länkar +
|
`blessed-kotlin` 3.0.12 via JitPack (krävde Kotlin 2.0.21→2.2.0, KSP2,
|
||||||
openetlicens-text); körruntime-permission-flöde. *Ingen vågkod än — bara
|
Room 2.7.2); BLE-permissions (`BLUETOOTH_SCAN` neverForLocation +
|
||||||
att allt kompilerar och About visas.*
|
`BLUETOOTH_CONNECT`); About-vy under Profil med GPL-attribution.
|
||||||
2. **Porta bluetooth-paketet** — vendora `com.health.openscale.core.bluetooth`
|
2. **Porta bluetooth-paketet (grund)** *(klar 2026-08-23)* — vendrat
|
||||||
(ScaleCommunicator, ScaleFactory, scales/, adaptrar, data/, libs/) med
|
`com.health.openscale.core.bluetooth` med copyright-headers kvar:
|
||||||
copyright-headers kvar. Slimmad `ScaleMeasurement`/`ScaleUser`. Får det att
|
ScaleDeviceHandler, Gatt/Broadcast/Spp-adaptrar, ScaleFactory (utan Hilt),
|
||||||
kompilera mot Blessed.
|
ScaleCommunicator, BleScanner, ConverterUtils, ScaleMeasurement/ScaleUser,
|
||||||
3. **Skanna + koppla** — "Anslut våg" i inställningar: skanna BLE, kör
|
samt **ExingtechY1Handler**. Shims i samma paketnamn för openScales
|
||||||
`ScaleFactory` mot varje enhet, visa matchade vågar, spara vald MAC.
|
interna beroenden (facades → DataStore, slimmade enums, LogManager →
|
||||||
4. **Väg dig-flöde** — knapp som skannar/kopplar vald våg, tar emot en
|
logcat), så fler drivrutiner kan portas nästan rakt av.
|
||||||
`ScaleMeasurement`, förhandsvisar och sparar via `addBodyMeasurement`
|
*Kvar: resterande ~59 handlers + libs/ portas allteftersom.*
|
||||||
(offline-kön tar resten). Live-status ("står på vågen…").
|
3. **Skanna + koppla** *(klar 2026-08-23)* — Inställningar → Bluetooth-våg:
|
||||||
|
BLE-skanning, vågar med drivrutinsstöd överst (drivrutinsnamn visas),
|
||||||
|
spara/ta bort vald våg. Runtime-permission-flöde.
|
||||||
|
4. **Väg dig-flöde** *(klar 2026-08-23, otestat mot fysisk våg)* — knapp i
|
||||||
|
profilen → väg-skärm med livestatus, resultat och spara via
|
||||||
|
`addBodyMeasurement`. Kroppsdata (längd/födelseår/kön) i profilen skickas
|
||||||
|
till vågen. **Nästa steg: verifiera mot Biltema-vågen.**
|
||||||
5. **API: längd (+ ålder/kön)** — utöka gym-API:ts `User` med `HeightCm`
|
5. **API: längd (+ ålder/kön)** — utöka gym-API:ts `User` med `HeightCm`
|
||||||
(+ `BirthDate`/`Sex`), migration, `myProfile` + `updateProfile`, deploy.
|
(+ `BirthDate`/`Sex`), migration, `myProfile` + `updateProfile`, deploy.
|
||||||
App + webb får profilfält. Se "API-ändring" ovan.
|
App + webb får profilfält; appens lokala kroppsdata börjar synka mot
|
||||||
6. **Impedansvågar + bättre kalorier** — BIA-beräkning för vågar som skickar
|
API:t. Se "API-ändring" ovan.
|
||||||
rå impedans (använder längd/ålder/kön), och BMR-baserad energiförbrukning.
|
6. **Fler drivrutiner + impedansvågar + bättre kalorier** — porta resterande
|
||||||
Verifieras mot din våg.
|
handlers + `libs/` (BIA-beräkningar för vågar som skickar rå impedans),
|
||||||
|
och BMR-baserad energiförbrukning.
|
||||||
7. **Polering + docs** — felhantering, timeouts, ominställning av våg;
|
7. **Polering + docs** — felhantering, timeouts, ominställning av våg;
|
||||||
uppdatera README/wiki + infra-Doc (GPL-relicens noterad).
|
uppdatera README/wiki + infra-Doc (GPL-relicens noterad).
|
||||||
|
|
||||||
## Öppna frågor / risker
|
## Öppna frågor / risker
|
||||||
|
|
||||||
- **Vilken våg du har** avgör om milstolpe 5 (impedans-BIA) behövs eller om
|
- ~~Vilken våg du har~~ → Biltema PT-727 = Exingtech Y1 ("VScale"), räknar
|
||||||
din våg skickar färdiga procent. Identifieras i milstolpe 3 via skanning.
|
ombord — milstolpe 6:s BIA behövs inte för den.
|
||||||
- Blessed-Kotlins exakta koordinater/version verifieras vid milstolpe 1.
|
- ~~Blessed-Kotlins koordinater~~ → `com.github.weliem:blessed-kotlin:3.0.12`
|
||||||
|
(JitPack). Byggd med Kotlin 2.2 → tvingade upp projektets Kotlin/KSP/Room.
|
||||||
- APK växer (drivrutiner + BLE-lib) — troligen någon MB, oproblematiskt.
|
- APK växer (drivrutiner + BLE-lib) — troligen någon MB, oproblematiskt.
|
||||||
- GPL-relicens är permanent för koden; medvetet val.
|
- GPL-relicens är permanent för koden; medvetet val.
|
||||||
|
- Väg-flödet är obekräftat mot fysisk våg (kräver test med telefon + våg).
|
||||||
|
|||||||
@@ -61,9 +61,11 @@ mallar, grunddata och profil.
|
|||||||
mätningar från profilen med datumväljare, viktgraf i statistiken med
|
mätningar från profilen med datumväljare, viktgraf i statistiken med
|
||||||
glidande medelvärde och linjär trendlinje. Profilens bodyWeightKg
|
glidande medelvärde och linjär trendlinje. Profilens bodyWeightKg
|
||||||
speglar alltid senaste mätningen.
|
speglar alltid senaste mätningen.
|
||||||
4. **BT-våg via openScale-drivrutiner** *(planerad)* — hämta vägningar
|
4. **BT-våg via openScale-drivrutiner** *(påbörjad 2026-08-23 — milstolpe 1–4
|
||||||
(vikt + %muskler/fett/vatten) direkt från en Bluetooth-våg genom att
|
klara, väntar på fysiskt vågtest)* — hämta vägningar (vikt +
|
||||||
bädda in openScales drivrutiner. Kräver relicens till GPL-3.0. Full plan:
|
%muskler/fett/vatten) direkt från en Bluetooth-våg genom att bädda in
|
||||||
|
openScales drivrutiner. Relicensierad till GPL-3.0. Först ut:
|
||||||
|
Biltema 84-1002 (PT-727) = Exingtech Y1 ("VScale"). Full plan:
|
||||||
[`doc/openscale-integration.md`](openscale-integration.md).
|
[`doc/openscale-integration.md`](openscale-integration.md).
|
||||||
5. **Passhistorik** — lista, visa, redigera och ta bort tidigare pass.
|
5. **Passhistorik** — lista, visa, redigera och ta bort tidigare pass.
|
||||||
4. **Logga lyft (snabbloggning) + PB** — enkel lyftlogg och PB-matrisen.
|
4. **Logga lyft (snabbloggning) + PB** — enkel lyftlogg och PB-matrisen.
|
||||||
|
|||||||
Reference in New Issue
Block a user