Wpis z mikrobloga

TLTR : stworzyłem małą apkę (na Androida) do przesyłania danych z wagi Xiaomi do Garmin Connect na moje własne potrzeby, ale może komuś się przyda

Jakiś czas temu szukałem rozwiązań jak przenieść dane z wagi Mi Body Composition Scale do chmury Garmina. Jako, że MiFit nie ma bezpośredniej integracji z Garminem, a polecane rozwiązania zmuszały wykorzystanie po drodze jeszcze z 2 różnych apek (np MyFitnessPal), a efekt był taki, że przysłała się tylko waga.

Poszperałem trochę na githubie i okazało się, że ludzie za pomocą inżynierii odwrotnej dość dobrze odtworzyli API Garmina i jest dostepny bardzo dobry wraper napisany w GO. Dodatkowo Garmin w swoim api udostępnia tworzenie pełnej historii ważenia.

Nawet przez ich stronę można dodać tylko wagę i datę ważenia, bez poziomów tłuszczu itp.

Najpierw znalazłem narzędzie konsolowe, które z poziomu CLI umożliwia przesyłanie tych danych do Garmina.
https://github.com/davidkroell/bodycomposition

Jako, że przepisywanie tych danych z apki MiFita było lekko uciążliwe i powstała potrzeba by to zautomatyzować natknąłem się na rozwiązanie które postawione na osobnym serwerku (np Raspberry Pi) zrobi to za mnie.
https://github.com/RobertWojtowicz/miscale2garmin

Jako, że nie chciało mi się stawiać raspberry pi blisko łazienki to postanowiłem wykorzystać bibliotekę z pierwszego programu, opakować ją w web API i napisać apkę na telefon dzięki której po ważeniu będę mógł przesłać wynik do Garmin Connect.

W ten sposób powstał ten o to mały projekcik:
https://github.com/lswiderski/mi-scale-exporter

Od teraz wchodzę na wagę, po ważeniu odpalam apkę, pobieram dane i wysyłam do Garmin Connect. Nie muszę odpalać mifita.

Niestety dostępny publicznie algorytm obliczania tych danych z impedancji wagi ma małe wady. Np w moim przypadku źle dobierany jest typ sylwetki. Reszta danych zgada się z tymi w MiFit

Aplikacja może nie wygląda za specjalnie ale działa. Na co dzień nie zajmuję się mobilkami, ani tez nie mam aktualnie jabłka by skompilowac to pod iosa.

W repo są linki do .aab i .apk na Androida

API nie zapisuje żadnych danych, ale jak ktoś się boi o dane, to może postawić własne api (w repo jest adres kontenera dockerowego) i zmienić url w aplikacji, lub wszystko samemu zbudować.

API póki co jest wystawione na mikrusie, który leżał u mnie odłogiem (https://garmin.bieda.it/)

Aplikacja idealna na tłusty czwartek []

PS. Nie wiem czy apka zadziała z Mi Body Composition Scale 2 (wersja ze szkłem) bo takiej nie mam by przetestować.

#chwalesie #mifit #garmin #programowanie #miscale
neufrin - TLTR : stworzyłem małą apkę (na Androida) do przesyłania danych z wagi Xiao...

źródło: comment_1645650105YTltTzj0CLCy2IIdHUrD5I.jpg

Pobierz
  • 16
@neufrin: Ha, brawo. Sam mam wagę Mi Scale i... przepisuję dane do Garmina. Kiedyś w wolnej chwili może do tego przysiądę co by zobaczyć jak kompatybilność z innymi modelami (jak moja) wag.

Póki co bo kontuzji (2 lata wycięty z ruchu) każde ważenie to u mnie święto, więc wpisywanie wagi to i tak radość wielka ;)
via Wykop Mobilny (Android)
  • 1
@neufrin: Super pomysł. Kiedyś próbowałem to ogarnąć przez te kilka apek pośrednich. Dałoby radę dodać obsługę Mi Smart Scale v1? Teraz podczas próby skanowania wywala mi apkę. Pixel 4a 5g Android 12.
via Wykop Mobilny (Android)
  • 0
@neufrin: Hej, dzięki za pamięć. Wersja 1.1 wywala się przy uruchomieniu. Wersja 1.2 uruchamia się, przy skanowaniu się wywala i nie widzę aby tworzył się podany przez Ciebie folder.
@MoroMoro: Dzięki za feedback. Niestety osobiście nie posiadam Androida 12 by potestować, a to w nim Google trochę namieszało z uprawnieniami, a na emulatorze nie da się testować bluetooth :( Jeszcze raz może coś pokombinuję, a jak się nie uda to będę musiał kiedyś dorwać fizycznie jakiegoś andka na 12 lub wrócić do starych czasów zabaw z custom romami.
via Wykop Mobilny (Android)
  • 0
@neufrin: Mam jeszcze HTC U11 z Androidem 9. Tam wersja 1.1 się wywala, a wersja 1.2 działa i próbuje skanować ale nie pojawiają się w wewnętrznej pamięci żadne logi.
via Wykop Mobilny (Android)
  • 0
@neufrin: Brakowało uprawnień do zapisywania plików. Po ich udzieleniu log się tworzy i zapisuje jedną linijkę:

2022-04-11 22:06:42.4753|ERROR|E:\Projects\mi-scale-exporter\src\MiScaleExporter\App.xaml.cs|Data could not be obtained. try again
@neufrin: gratuluje jeszcze raz apki, bardzo dobra robota!
pozdrawia twórca miscale2garmin ;)

P.S. Dodam od siebie że czuwam nad poprawnym działaniem bodycomposition (używam w swoim rozwiązaniu 2 lata)
Garmin potrafi coś zmajstrować po drodze, wiadomo każde rozwiązanie wymaga zmian :P (dużo się działo z autoryzacją po włamaniu na serwery Garmina)

Przyda się dodatkowa pomoc w debugu :)