folgende anleitung bezieht sich auf die xiaomi mi body composition scale 2. die normale mi waage (ohne körper sensoren) sollte mit diversen anpassungen aber auch funktionieren.
als vorlage habe ich mich bei den kollegen der ha comunity bedient um bluetooth2mqtt umzusetzen.
das ganze kann dann bspw so aussehen
https://www.amazon.de/gp/product/B07VD9F419/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1&tag=kodinerds04-21 [Anzeige]
für eine integration ins openhab system braucht ihr weiterhin natürlich bluetooth an eurer zentrale. ob stick oder intern bt ist dabei völlig egal.
das archiv miscale.zip runterladen, entpacken und in der datei wrapper.sh eure anpassungen vornehmen. die bluetooth mac der waage findet ihr in der mi fit app (profil -> geräte->miscale -> ganz unten).
den gesamten ordner "miscale" nun nach /etc/openhab2/scripts schieben und verzeichnisrechte setzen.
dann mittels ssh folgendes ausführen:
nun das script als crontab ins system integrieren
sudo crontab -e -> dort ganz unten @reboot bash /etc/openhab2/scripts/miscale/wrapper.sh eintragen
das wars auch schon mit den vorbereitungen. nun zu openhab.
in die things datei, in eure mqtt bridge folgendes:
Thing topic Waage_Horschte "Waage Horschte" @ "HWR" {
Channels:
Type number : Waage_Gewicht_Horschte "Gewicht" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.weight"]
Type number : Waage_BMI_Horschte "BMI" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.bmi"]
Type number : Waage_Grundumsatz_Horschte "Grundumsatz" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.basal_metabolism"]
Type number : Waage_Koerperfett_Horschte "Körperfett" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.body_fat"]
Type number : Waage_Viszeralfett_Horschte "Viszeralfett" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.visceral_fat"]
Type number : Waage_Wasseranteil_Horschte "Wasseranteil" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.water"]
Type number : Waage_Knochenmasse_Horschte "Knochenmasse" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.bone_mass"]
Type number : Waage_Muskelmasse_Horschte "Muskelmasse" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.muscle_mass"]
Type number : Waage_Eiweiss_Horschte "Eiweiss" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.protein"]
Type string : Waage_Koerpertyp_Horschte "Körpertyp" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.body_type"]
Type number : Waage_Metabolisch_Horschte "Metabolisches Alter" [stateTopic="miscale/Horschte/weight", transformationPattern="JSONPATH:$.metabolic_age"]
}
Alles anzeigen
Name vorne natürlich ersetzen, hinten im state topic muss der name eurem eintrag in der wrapper.sh (zeile 17) entsprechen. für eine zweite person muss natürlich auch ein weiterer thing eintrag angelegt werden.
in die items datei folgendes (unique namen und channel wieder anpassen):
Number Horschte_Gewicht "Gewicht [%.1f Kg]" <weight> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Gewicht_Horschte"}
Number Horschte_BMI "BMI [%d]" <bmi> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_BMI_Horschte"}
Number Horschte_Grundumsatz "Grundumsatz [%.0f Kcal]" <calories> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Grundumsatz_Horschte"}
Number Horschte_Koerperfett "Körperfett [%.1f %%]" <bodyfat> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Koerperfett_Horschte"}
Number Horschte_Viszeralfett "Viszeralfett [%.1f %%]" <visceralfat> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Viszeralfett_Horschte"}
Number Horschte_Wasseranteil "Wasseranteil [%.1f %%]" <water> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Wasseranteil_Horschte"}
Number Horschte_Knochenmasse "Knochenmasse [%.1f Kg]" <bones> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Knochenmasse_Horschte"}
Number Horschte_Muskelmasse "Muskelmasse [%.1f Kg]" <muscle> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Muskelmasse_Horschte"}
Number Horschte_Eiweiss "Körpereiweiß [%.1f %%]" <protein> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Eiweiss_Horschte"}
String Horschte_Koerpertyp "Körpertyp [MAP(waage.map):%s]" <body> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Koerpertyp_Horschte"}
Number Horschte_Metabolisch "Metabolisches Alter [%.0f Jahre]" <metabolic> {channel="mqtt:topic:embedded-mqtt-broker:Waage_Horschte:Waage_Metabolisch_Horschte"}
Alles anzeigen
jetzt den anhang icons.zip runterladen, entpacken und die icons (ohne ordner) nach /etc/openhab2/icons/classic schieben.
archiv waage.zip runterladen, entpacken und die datei nach /etc/openhab2/transform schieben.
in die sitemap dann bspw
Text item=Horschte_Gewicht label="Horschte" {
Frame label="Fett-O-Meter"{
Text item=Horschte_Gewicht
Text item=Horschte_BMI
Text item=Horschte_Grundumsatz
Text item=Horschte_Koerperfett
Text item=Horschte_Viszeralfett
Text item=Horschte_Wasseranteil
Text item=Horschte_Knochenmasse
Text item=Horschte_Muskelmasse
Text item=Horschte_Eiweiss
Text item=Horschte_Koerpertyp
Text item=Horschte_Metabolisch
}
}
Alles anzeigen
abschliessend das system neu starten um den crontab ausführen zu lassen. warten bis alles hochgefahren ist und wiegen. die dauer der aktualisierung eurer daten entspricht dem eintrag in der wrapper.sh (TIME_INTERVAL).