Smarte Personenwaage
-
manes
- Beiträge: 235
- Registriert: 23. Jul 2020 17:49
- Wohnort: Kreis Wesel
Smarte Personenwaage
Ich überlege mir eine neue Personenwaage zuzulegen. Das sollte natürlich dann so sein, das sie die Standardwerte Gewicht, Körperfett usw. in mein OpenHab System einspielen kann. Hat jemand schon so seine Erfahrung damit gemacht und könnte was dazu sagen? Auf jeden Fall soll es keine externe Cloud sein. Schön wäre es, wenn die Waage sich über Wlan in das private Netzwerk verbindet und dort dann z.B. über MQTT Daten verschickt, die von OpenHab gelesen werden können. Gibt es sowas überhaupt? Und dann noch bezahlbar, oder träume ich so kurz vor Weihnachten einfach nur zu viel?
Also, hat jemand sowas in eigener Verwendung, oder kennt jemanden, der jemanden kennt?
Also, hat jemand sowas in eigener Verwendung, oder kennt jemanden, der jemanden kennt?
---------------------
liebe Grüße Manfred
liebe Grüße Manfred
- udo1toni
- Beiträge: 15545
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Smarte Personenwaage
Ich nutze hier eine Medisana BS444. Die Waage bietet 10 Personen-Speicher und überträgt die Daten jeweils nach der Wägung über Bluetooth.
Für die Verbindung zu openHAB nutze ich ein Tool, welches auf einem separaten Pi zero läuft, der - mit Mininetzteil im Spiegelschrank am Dauerstrom - die Waage abfragt, sobald er sie findet. Die Daten werden dann per mqtt weitergeleitet.
Näheres kann ich später zeigen
Für die Verbindung zu openHAB nutze ich ein Tool, welches auf einem separaten Pi zero läuft, der - mit Mininetzteil im Spiegelschrank am Dauerstrom - die Waage abfragt, sobald er sie findet. Die Daten werden dann per mqtt weitergeleitet.
Näheres kann ich später zeigen
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.4 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
Hostsystem Proxmox 9.1.4 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
-
manes
- Beiträge: 235
- Registriert: 23. Jul 2020 17:49
- Wohnort: Kreis Wesel
Re: Smarte Personenwaage
das klingt gut. Dann bin ich mal gespannt.
---------------------
liebe Grüße Manfred
liebe Grüße Manfred
-
manes
- Beiträge: 235
- Registriert: 23. Jul 2020 17:49
- Wohnort: Kreis Wesel
- udo1toni
- Beiträge: 15545
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Smarte Personenwaage
Vermutlich... 
Es gibt in github ein Projekt: https://github.com/keptenkurk/BS440.
Wie erwähnt nutze ich eine Medisana BS444. Es gibt noch diverse andere Körperanalysewaagen bei der Firma Medisana, und es ist durchaus möglich, dass alle Geräte der connect-Klasse (also mit eingebautem Bluetooth) das gleiche Kommunikationsprotokoll verwenden. Sicher funktioniert die Software aber auf jeden Fall mit dem Modell BS440 und BS444 (Erstere, weil sie dafür entwickelt wurde, Letztere, weil ich diese Waage nutze...)
Die Software habe ich bei mir auf einem Pi zero W installiert, der zusammen mit einem Netzteilmodul (hlk-5m05) im Spiegelschrank verbaut ist (ich habe im Spiegelschrank Dauerstrom). Auf dem Pi ist die Software installiert und als Dienst gestartet. Sobald die Software läuft, scannt sie alle 10 Sekunden nach Bluetooth Geräten. Findet sie ein Gerät mit passender ID, baut sie eine Verbindung auf und ruft die Analysedaten ab.
Anschließend sendet sie den letzten gültigen Datensatz an die konfigurierten Plugins (z.B. Daten irgendwohin schreiben, auf einer einfachen Webseite anzeigen, an ein mqtt Topic senden - diesen Weg nutze ich).
Man kann in der Waage bis zu zehn Personen definieren. Die Waage wählt (anhand des aktuellen Gewichts) automatisch den passenden Speicherplatz aus (natürlich kann man das auch manuell tun... soll ja Familien geben, in denen mehrere Personen ein sehr ähnliches Gewicht haben...)
Die Speicherplätze können über die Konfiguration auf dem Pi mit einem Namen versehen werden, so dass im Topic anschließend die Datensätze eindeutig zuzuordnen sind - die Speicherplatznummer wird aber immer auch mit ausgewiesen.
Ein übertragener Datensatz sieht dann so aus:
Aus nachvollziehbaren Gründen
sind das natürlich keine echten Daten...
In openHAB benötige ich also nur ein passendes mqtt Thing:
wobei ich wegen der Einheiten im Thing direkt die Daten in einzelne Channel zerlege. Wahlweise könnte man das auch im Link zwischen json-string Channel und diversen Number Items unterbringen, dann halt ohne vollständige UoM Unterstützung. Das json ist bei mir nur der Vollständigkeit halber konfiguriert, aber das kann auch bei der Fehlersuche praktisch sein.
Im json sind einige weitere Datenpunkte enthalten, die sich jedoch nicht ändern und somit auch nicht ausgewertet werden müssen.
Möchte man weitere Personen berücksichtigen, so müssen entsprechend weitere Channel nach obigem Schema angelegt werden, mit anderem stateTopic.
Die Waage überträgt stets die letzten 30 Datensätze der gemessenen Person an den Bluetooth Empfänger, die Software leitet den letzten Datensatz weiter.
Ab und zu kommt es vor, dass die Datenübertragung nicht richtig funktioniert, dann kann man beim nächsten Wiegevorgang (nach dem Wiegen) das Log des Dienstes öffnen und dort auf alle 30 Datensätze zugreifen. Ich habe mir ein Excel Arbeitsblatt angelegt, mit dem ich die Daten bequem in ein passendes Zielformat bringen kann (InfluxDB) so dass ich die Daten dann immer noch mit vertretbarem Aufwand nachpflegen kann.
Da die Waage ausschließlich über die zugehörige App konfiguriert werden kann, muss man ab und zu den Dienst mal anhalten, damit man die Waage mit dem Smartphone verbinden kann. Nur so kann man Körpergröße, Alter und Körpertyp (sportlich oder ich...) anpassen. Da die Waage kein Geburtsdatum kennt und auch keine richtige Uhr hat, wird das Alter nicht automatisch angepasst, das muss also auf jeden Fall über die zugehörige App geschehen. Wie so oft kann man an dieser Stelle nicht vermeiden, mit der Cloud in Berührung zu kommen, aber irgendwas ist ja immer...
Die Software hat außerdem noch eine "Macke", das macht sich bemerkbar, wenn sie mehrere Tage am Stück läuft. Mein Workaround hierfür ist, dass ich in der service Datei den Parameter RuntimeMaxSec auf 1d gesetzt habe, das bedeutet, dass der Dienst nach spätestens 24 Stunden automatisch erneut gestartet wird. Dabei wird auch die log-Datei neu initialisiert, so dass hier einigermaßen Platz gespart wird - natürlich hat das auch Nachteile
weil man nicht weit in die Vergangenheit schauen kann...
Fragen? Fragen!
Es gibt in github ein Projekt: https://github.com/keptenkurk/BS440.
Wie erwähnt nutze ich eine Medisana BS444. Es gibt noch diverse andere Körperanalysewaagen bei der Firma Medisana, und es ist durchaus möglich, dass alle Geräte der connect-Klasse (also mit eingebautem Bluetooth) das gleiche Kommunikationsprotokoll verwenden. Sicher funktioniert die Software aber auf jeden Fall mit dem Modell BS440 und BS444 (Erstere, weil sie dafür entwickelt wurde, Letztere, weil ich diese Waage nutze...)
Die Software habe ich bei mir auf einem Pi zero W installiert, der zusammen mit einem Netzteilmodul (hlk-5m05) im Spiegelschrank verbaut ist (ich habe im Spiegelschrank Dauerstrom). Auf dem Pi ist die Software installiert und als Dienst gestartet. Sobald die Software läuft, scannt sie alle 10 Sekunden nach Bluetooth Geräten. Findet sie ein Gerät mit passender ID, baut sie eine Verbindung auf und ruft die Analysedaten ab.
Anschließend sendet sie den letzten gültigen Datensatz an die konfigurierten Plugins (z.B. Daten irgendwohin schreiben, auf einer einfachen Webseite anzeigen, an ein mqtt Topic senden - diesen Weg nutze ich).
Man kann in der Waage bis zu zehn Personen definieren. Die Waage wählt (anhand des aktuellen Gewichts) automatisch den passenden Speicherplatz aus (natürlich kann man das auch manuell tun... soll ja Familien geben, in denen mehrere Personen ein sehr ähnliches Gewicht haben...)
Die Speicherplätze können über die Konfiguration auf dem Pi mit einem Namen versehen werden, so dass im Topic anschließend die Datensätze eindeutig zuzuordnen sind - die Speicherplatznummer wird aber immer auch mit ausgewiesen.
Ein übertragener Datensatz sieht dann so aus:
Code: Alles auswählen
{
"valid": true,
"weight": 12.3,
"timestamp": 1733904474,
"person": 1,
"bmi": 45.6,
"kcal": 7890,
"fat": 12.3,
"tbw": 45.6,
"muscle": 78.9,
"bone": 1.2,
"gender": "male",
"age": 11,
"size": 299,
"activity": "normal",
"model": "BS444",
"name": "Udo",
"date": "2024-12-11T09:08:40.397"
}In openHAB benötige ich also nur ein passendes mqtt Thing:
Code: Alles auswählen
Thing topic bs444 "Medisana Waage" {
Type string : json "Json" [ stateTopic="bs444/udo/" ]
Type number : weight "Gewicht" [ stateTopic="bs444/udo/", transformationPattern="JSONPATH:$.weight", unit="kg" ]
Type number : bmi "BMI" [ stateTopic="bs444/udo/", transformationPattern="JSONPATH:$.bmi" ]
Type number : kcal "kCal" [ stateTopic="bs444/udo/", transformationPattern="JSONPATH:$.kcal", unit="kcal" ]
Type number : fat "Fett" [ stateTopic="bs444/udo/", transformationPattern="JSONPATH:$.fat", unit="%" ]
Type number : tbw "Wasser" [ stateTopic="bs444/udo/", transformationPattern="JSONPATH:$.tbw", unit="%" ]
Type number : muscle "Muskel" [ stateTopic="bs444/udo/", transformationPattern="JSONPATH:$.muscle", unit="%" ]
Type number : bone "Knochen" [ stateTopic="bs444/udo/", transformationPattern="JSONPATH:$.bone", unit="kg" ]
Type number : timestamp "Zeitstempel" [ stateTopic="bs444/udo/", transformationPattern="JSONPATH:$.timestamp", unit="s" ]
}Im json sind einige weitere Datenpunkte enthalten, die sich jedoch nicht ändern und somit auch nicht ausgewertet werden müssen.
Möchte man weitere Personen berücksichtigen, so müssen entsprechend weitere Channel nach obigem Schema angelegt werden, mit anderem stateTopic.
Die Waage überträgt stets die letzten 30 Datensätze der gemessenen Person an den Bluetooth Empfänger, die Software leitet den letzten Datensatz weiter.
Ab und zu kommt es vor, dass die Datenübertragung nicht richtig funktioniert, dann kann man beim nächsten Wiegevorgang (nach dem Wiegen) das Log des Dienstes öffnen und dort auf alle 30 Datensätze zugreifen. Ich habe mir ein Excel Arbeitsblatt angelegt, mit dem ich die Daten bequem in ein passendes Zielformat bringen kann (InfluxDB) so dass ich die Daten dann immer noch mit vertretbarem Aufwand nachpflegen kann.
Da die Waage ausschließlich über die zugehörige App konfiguriert werden kann, muss man ab und zu den Dienst mal anhalten, damit man die Waage mit dem Smartphone verbinden kann. Nur so kann man Körpergröße, Alter und Körpertyp (sportlich oder ich...) anpassen. Da die Waage kein Geburtsdatum kennt und auch keine richtige Uhr hat, wird das Alter nicht automatisch angepasst, das muss also auf jeden Fall über die zugehörige App geschehen. Wie so oft kann man an dieser Stelle nicht vermeiden, mit der Cloud in Berührung zu kommen, aber irgendwas ist ja immer...
Die Software hat außerdem noch eine "Macke", das macht sich bemerkbar, wenn sie mehrere Tage am Stück läuft. Mein Workaround hierfür ist, dass ich in der service Datei den Parameter RuntimeMaxSec auf 1d gesetzt habe, das bedeutet, dass der Dienst nach spätestens 24 Stunden automatisch erneut gestartet wird. Dabei wird auch die log-Datei neu initialisiert, so dass hier einigermaßen Platz gespart wird - natürlich hat das auch Nachteile
Fragen? Fragen!
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.4 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
Hostsystem Proxmox 9.1.4 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
-
manes
- Beiträge: 235
- Registriert: 23. Jul 2020 17:49
- Wohnort: Kreis Wesel
Re: Smarte Personenwaage
jetzt muß ich erstmal die ganzen Infos verarbeiten und einsortieren. 
---------------------
liebe Grüße Manfred
liebe Grüße Manfred
-
manes
- Beiträge: 235
- Registriert: 23. Jul 2020 17:49
- Wohnort: Kreis Wesel
Re: Smarte Personenwaage
Hi,
ich habe meine BS444 heute erhalten. Aber auf den ersten Blick ist das nicht der Kracher. Wie bist Du denn mit der Waage zurecht gekommen? Die App macht ja einen saublöden ersten Eindruck. Wie bekommst Du die Waage dazu, das sie per Bluetooth von Deinem Pi gefunden wird? Ich bekomme erstmal nur das Gewicht angezeigt (Waage/App) und der Rest steht auf 0. OK, den BMI Wert noch. Wer weiß, was ich da falsch verstehe....?
ich habe meine BS444 heute erhalten. Aber auf den ersten Blick ist das nicht der Kracher. Wie bist Du denn mit der Waage zurecht gekommen? Die App macht ja einen saublöden ersten Eindruck. Wie bekommst Du die Waage dazu, das sie per Bluetooth von Deinem Pi gefunden wird? Ich bekomme erstmal nur das Gewicht angezeigt (Waage/App) und der Rest steht auf 0. OK, den BMI Wert noch. Wer weiß, was ich da falsch verstehe....?
---------------------
liebe Grüße Manfred
liebe Grüße Manfred
- udo1toni
- Beiträge: 15545
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Smarte Personenwaage
Hast Du die Schritte der Anleitung https://keptenkurk.wordpress.com/2017/0 ... -epilogue/ befolgt?
- App auf dem Smartphone einrichten
- Waage in der App einrichten (mindestens eine Person muss angelegt sein)
- Software auf dem Pi installieren
- bluetooth le auf dem pi einschalten
- hcitool lescan starten
- eine Messung auf der Waage ausführen (vollständig!) und dabei darauf achten, dass eine gültige Person (siehe Schritt 1) ausgewählt ist.
- hcitool sollte die MAC und den "Namen" der Waage ausgeben.
- BS440.example.ini nach BS440.ini kopieren, in der BS440.ini die notwendigen Daten eintragen (ble_address und device_name, device_model, plugins: BS440mqtt)
- im plugins Verzeichnis die BS440mqtt.example.ini nach BS440mqtt.ini kopieren. BS440mqtt.ini anpassen.
- MQTT Explorer starten, um zu sehen, ob die Daten ankommen.
- BS440-Dienst starten. Erneut einen vollständigen Wiegevorgang ausführen.
Nun sollten die Daten im MQTT Explorer sichtbar sein. Falls nicht, journalctl -u BS440 befragen und/oder das geschriebene Log einsehen.
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.4 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
Hostsystem Proxmox 9.1.4 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
-
manes
- Beiträge: 235
- Registriert: 23. Jul 2020 17:49
- Wohnort: Kreis Wesel
Re: Smarte Personenwaage
Moin,
so weit war ich noch gar nicht. Ich hatte gestern eigentlich nur wissen wollen, Wie Du generell mit der Waage klar gekommen bist am Anfang. Deine Anleitung werde ich erst abarbeiten müssen.
so weit war ich noch gar nicht. Ich hatte gestern eigentlich nur wissen wollen, Wie Du generell mit der Waage klar gekommen bist am Anfang. Deine Anleitung werde ich erst abarbeiten müssen.
---------------------
liebe Grüße Manfred
liebe Grüße Manfred
- udo1toni
- Beiträge: 15545
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Smarte Personenwaage
Ah.
Na, es ist halt eine Personenwaage... Drauf stellen, runter gucken, schämen, absteigen.
Die Einrichtung in der App war etwas umständlich, wenn ich mich richtig erinnere. Zumal das ja nur einmalig gebraucht wird.
Allenfalls könnte es sein, dass man die Zeit korrigieren will, oder meinetwegen kommt eine Person hinzu, da braucht man dann wieder die App (und man sollte vorher den Dienst auf dem Pi stoppen, sonst kommt die App nicht zum Zuge...)
Na, es ist halt eine Personenwaage... Drauf stellen, runter gucken, schämen, absteigen.
Die Einrichtung in der App war etwas umständlich, wenn ich mich richtig erinnere. Zumal das ja nur einmalig gebraucht wird.
Allenfalls könnte es sein, dass man die Zeit korrigieren will, oder meinetwegen kommt eine Person hinzu, da braucht man dann wieder die App (und man sollte vorher den Dienst auf dem Pi stoppen, sonst kommt die App nicht zum Zuge...)
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.4 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
Hostsystem Proxmox 9.1.4 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte