Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Mi Body Scale 2 in IoBroker

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Mi Body Scale 2 in IoBroker

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @Thomas Jansen last edited by

      @thomas-jansen

      bedeutet das, ich mußte einen homeassistent server aufsetzen ?

      Thomas Jansen 3 Replies Last reply Reply Quote 0
      • Thomas Jansen
        Thomas Jansen @liv-in-sky last edited by

        @liv-in-sky Hi, bei mir läuft das System auf einem Proxmox Server, hier eine kleine VM mit Homeassistant. Ich liebe den Hass Adapter in Iobroker. In Kombination mit Homeassistant bekomme ich halt noch einiges mehr in den Iobroker. z.B meine ARLO Kameras.

        liv-in-sky 1 Reply Last reply Reply Quote 0
        • Thomas Jansen
          Thomas Jansen @liv-in-sky last edited by

          @liv-in-sky Wie gesagt, ist eine Lösung über Umweg, aber ich bin kein Programmierer, der hätte evt. einen anderen Weg. LG

          1 Reply Last reply Reply Quote 0
          • Thomas Jansen
            Thomas Jansen @liv-in-sky last edited by

            @liv-in-sky Ich hoffe ich darf den Link hier teilen, an dem Video hab ich mich orientiert.

            https://www.youtube.com/watch?v=RttJP_3FRwI&t=588s

            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @Thomas Jansen last edited by

              @thomas-jansen

              muss mal darüber nachdenken - der hass adapter und auch die vm könnten ja nur morgens und abends laufen - ansonsten abgeschaltet

              mein iob läuft in einem lxc und da soll es probleme geben, die bluetooth sache durchzureichen. daher kann ich wohl den bluetooth adapter nicht nutzen

              1 Reply Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @Thomas Jansen last edited by

                @thomas-jansen sagte in Mi Body Scale 2 in IoBroker:

                @liv-in-sky Ich hoffe ich darf den Link hier teilen, an dem Video hab ich mich orientiert.

                https://www.youtube.com/watch?v=RttJP_3FRwI&t=588s

                danke für das video - ich habe einen esp mit esphome für bluetooth thermostate - evtl kann ich die waage damit einbinden - es geht ja nur in eine richtung - von der waage zu iob (mqtt). dann könnte ich ohne bluetooth-stick oder homeassistant auskommen

                im video wird das ganze letztlich auch über esphome gemacht

                wenn ich die zeit finde, werde ich das mal testen

                Thomas Jansen 2 Replies Last reply Reply Quote 0
                • Thomas Jansen
                  Thomas Jansen @liv-in-sky last edited by

                  @liv-in-sky Ja mega, würde mich freuen wenn Du hier mal berichtest... LG

                  1 Reply Last reply Reply Quote 0
                  • Thomas Jansen
                    Thomas Jansen @liv-in-sky last edited by

                    @liv-in-sky Hey, kurze Info,
                    ich habe eben auf meinem Testsystem esp home im IoBroker installiert. Er findet den ESP direkt auch die IP und liest die Daten aus der config aus. Leider habe ich die Anleitung aus dem Video genommen, somit legt er im Datenpunkt nur das Gewicht und einen Ohm Wert an. Ich wüsste nicht wie die Config datei geändert werden muss um die anderen Werte der Waage zu bekommen. Hier mal die Config aus ESP Home:

                    esphome:
                      name: xiaomi-scale
                      platform: ESP32
                      board: esp32dev
                    
                    # Enable logging
                    logger:
                    
                    # Enable Home Assistant API
                    api:
                    
                    ota:
                      password: "12345"
                    
                    wifi:
                      ssid: "Wlan Name"
                      password: "vom Wlan"
                    
                      # Enable fallback hotspot (captive portal) in case wifi connection fails
                      ap:
                        ssid: "Xiaomi-Scale Fallback Hotspot"
                        password: "12345"
                    
                    captive_portal:
                    esp32_ble_tracker:
                    sensor:
                      - platform: xiaomi_miscale
                        mac_address: 'von der Waage'
                        weight:
                          name: "Xiaomi Mi Scale Weight"
                        impedance:
                          name: "Xiaomi Mi Scale Impedance"
                    
                    liv-in-sky 1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @Thomas Jansen last edited by liv-in-sky

                      @thomas-jansen

                      so schnell und soweit bin ich nocht nicht - wird sicher bis ende dieser woche dauern - ich kann dir mal meine yaml datei posten.

                      so sieht das log meines esp's aus und ich habe gehofft, die waage wird sich dann dort schon melden - die waage ist momentan nicht bei mir, daher kann ich es im moment nicht beobachten

                      Image 107.png

                      hier ist das yaml, welches die daten sammelt und über mqtt an den iob sendet
                      im log sieht man dann die zuweisung im yaml

                      esphome:
                       name: xiaomitemp
                       platform: ESP32
                       board: esp32doit-devkit-v1
                      
                      wifi:
                       ssid: "xxxx"
                       password: "xxxxxx"
                       use_address: xiaomitemp.fritz.box
                      
                      
                       # Enable fallback hotspot (captive portal) in case wifi connection fails
                       ap:
                         ssid: "xiaomitemp"
                         password: "xxxxx"
                      
                      captive_portal:
                      
                      # Enable logging
                      logger:
                      
                      # Enable Home Assistant API
                      api:
                      
                      ota:
                      
                      web_server:
                       port: 80
                       
                      time:
                       - platform: homeassistant
                         on_time:
                           - seconds: 0
                             minutes: 0
                             hours: 4
                             days_of_week: MON-SUN
                             then:
                                - switch.toggle: re_switch
                      switch:
                       - platform: restart
                         name: "ESP_Erdgeschoss Restart"
                         id: re_switch
                      
                      mqtt:
                       broker: 192.168.178.59
                       port: 1506
                       topic_prefix: xiaomiantenna/sensors
                      
                      text_sensor:
                         - platform: wifi_info
                           ip_address:
                            name: "ESP IP Address"
                           mac_address:
                            name: "ESP Mac Wifi Address"
                      
                      # Example configuration entry
                      sensor:
                       - platform: xiaomi_lywsd03mmc
                         mac_address: "A4:C1:38:D2:CC:4D"
                         bindkey: "90e09dfa24c9b481ea4ee838850cbcf5"
                         temperature:
                           name: "xia_D2CC4D_temp"
                           id: temp_D2CC4D
                         humidity:
                           name: "xia_D2CC4D_hum"
                           id: hum_D2CC4D
                         battery_level:
                           name: "xia_D2CC4D_batt"
                           id: batt_D2CC4D
                      
                       - platform: xiaomi_lywsd03mmc
                         mac_address: "A4:C1:38:21:36:89"
                         bindkey: "e960e82a0fff245f3615ff714c7218dc"
                         temperature:
                           name: "xia_213689_temp"
                           id: temp_213689
                         humidity:
                           name: "xia_213689_hum"
                           id: hum_213689
                         battery_level:
                           name: "xia_213689_batt"
                           id: batt_213689
                      
                       - platform: xiaomi_lywsd03mmc
                         mac_address: "A4:C1:38:28:CB:DE"
                         bindkey: "f985a0ca16ad31ca0079bdbe2abe1600"
                         temperature:
                           name: "xia_28CBDE_temp"
                           id: temp_28CBDE
                         humidity:
                           name: "xia_28CBDE_hum"
                           id: hum_28CBDE
                         battery_level:
                           name: "xia_28CBDE_batt"
                           id: batt_28CBDE
                       
                       - platform: xiaomi_lywsd03mmc
                         mac_address: "A4:C1:38:5A:30:90"
                         bindkey: "8e3657b39e433e5f8b000fbe0e47138d"
                         temperature:
                           name: "xia_5A3090_temp"
                           id: temp_5A3090
                         humidity:
                           name: "xia_5A3090_hum"
                           id: hum_5A3090
                         battery_level:
                           name: "xia_5A3090_batt"
                           id: batt_5A3090
                      
                       - platform: xiaomi_lywsd03mmc
                         mac_address: "A4:C1:38:0A:22:80"
                         bindkey: "3eb673840665f66b43e76b213eeed79f"
                         temperature:
                           name: "xia_0A2280_temp"
                           id: temp_0A2280
                         humidity:
                           name: "xia_0A2280_hum"
                           id: hum_0A2280
                         battery_level:
                           name: "xia_0A2280_batt"
                           id: batt_0A2280
                      
                       - platform: xiaomi_lywsd03mmc
                         mac_address: "A4:C1:38:E4:B8:ED"
                         bindkey: "ce6dec11a0f59cf69623b7d4e3e52294"
                         temperature:
                           name: "xia_E4B8ED_temp"
                           id: temp_E4B8ED
                         humidity:
                           name: "xia_E4B8ED_hum"
                           id: hum_E4B8ED
                         battery_level:
                           name: "xia_E4B8ED_batt"
                           id: batt_E4B8ED
                      
                       - platform: xiaomi_lywsd03mmc
                         mac_address: "A4:C1:38:A9:71:08"
                         bindkey: "6058c097bf31464fa9e1ee78864ffa0e"
                         temperature:
                           name: "xia_A97108_temp"
                           id: temp_A97108
                         humidity:
                           name: "xia_A97108_hum"
                           id: hum_A97108
                         battery_level:
                           name: "xia_A97108_batt"
                           id: batt_A97108
                       
                       - platform: xiaomi_lywsd03mmc
                         mac_address: "A4:C1:38:48:65:66"
                         bindkey: "3950535a7ddc587c901f2a317e4b935b"
                         temperature:
                           name: "xia_486566_temp"
                           id: temp_486566
                         humidity:
                           name: "xia_486566_hum"
                           id: hum_486566
                         battery_level:
                           name: "xia_486566_batt"
                           id: batt_486566
                      
                      
                      binary_sensor:
                       - platform: status
                         name: "Living Room Status"
                      
                      
                      esp32_ble_tracker:
                      
                      
                      

                      wenn die waage hier ist, kann ich mehr schreiben - irgendwie finden wir dann schon raus, was die waage alles sendet und wie man das ins yaml bringen kann

                      ps: fand ich übrigens eine innovative idee, dass ganze über homeassistant einzubinden 🙂

                      ide datenpunkte sehen dann so aus:

                      Image 108.png

                      Thomas Jansen 1 Reply Last reply Reply Quote 0
                      • Thomas Jansen
                        Thomas Jansen @liv-in-sky last edited by

                        @liv-in-sky Oh, vielen Dank 🙂 ich versuche halt einfach learning by doing 😉
                        Aber wäre cool, am Thema dran zu bleiben, ich denke das so einige User hier die Waage auch haben oder kaufen werden 🙂 wenn das hier klappt lach...

                        LG
                        Thomas

                        liv-in-sky 4 Replies Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky @Thomas Jansen last edited by

                          @thomas-jansen sage dir auf jeden fall bescheid, wenn ich weitermache

                          du kannst dir mal den BLE Scanner für android laden und nachsehen, was für daten da kommen - könnte verschlüsselt sein aber testen geht immer 🙂

                          mit wireshark könnte man das auch auf dem pc machen - aber wireshark ist mir zu kompliziert

                          1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @Thomas Jansen last edited by

                            @thomas-jansen also das mit dem gewicht klappt schon mal - mußte noch eine zeile ins yaml einfügen und esphome updaten

                            der andere wert (impedance) kommt jedoch nicht

                            bisher habe ich aber keine weiteren werte finden können, die man aufzeichnen könnte

                            werd morgen nochmal etwas suchen - mit esphome auf dem richtigen esp32 braucht man also keinen weiteren server - wobei ich deine lösung nicht schlecht machen möchte, da man nicht unbedingt mit einem esp32 rumspielen möchte 🙂

                            habe diesen linkgefunden - https://github.com/dckiller51/bodymiscale - irgendwie verstehe ich nicht,was da genau steht - ganz zum schluss steht wieder nur: sensor for weight and optional impedance

                            1 Reply Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @Thomas Jansen last edited by

                              @thomas-jansen

                              hab mich geirrt - beide werte sind da auch da

                              Image 116.png

                              und die dp in mqtt:

                              Image 117.png

                              Thomas Jansen 1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @Thomas Jansen last edited by liv-in-sky

                                @thomas-jansen

                                ich glaube langsam, dass die werte berechnet werden - man könnte es also mit einem iob script machen - der bmi kann definitiv berechnet werden

                                BMI = Körpergewicht : (Körpergröße)² oder mit alter aus einer tabelle

                                oder hier wird das alles berechnet
                                https://github.com/dckiller51/bodymiscale/blob/main/custom_components/bodymiscale/metrics/impedance.py

                                1 Reply Last reply Reply Quote 0
                                • Thomas Jansen
                                  Thomas Jansen @liv-in-sky last edited by

                                  @liv-in-sky Hey, hm die beiden Werte habe ich auch in meinem Testsystem unter esp32 Adapter.
                                  Ich habe mal testweise einfach mal bmi und Körperfett eingetragen. Jedoch kommen hier keine Werte an. Ich verstehe nicht wie das Homeassistant Plugin die Werte ermittelt....

                                  liv-in-sky 2 Replies Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky @Thomas Jansen last edited by

                                    @thomas-jansen

                                    irgendwo muss z.b. deine größe konfiguriert werden - aber mit homeassis. habe ich halt 0 ahnung

                                    1 Reply Last reply Reply Quote 0
                                    • liv-in-sky
                                      liv-in-sky @Thomas Jansen last edited by

                                      @thomas-jansen

                                      wie sieht es eigntlich mit deinen programmier-kenntnissen aus - willst/kannst du ein script schreiben

                                      Thomas Jansen 1 Reply Last reply Reply Quote 0
                                      • Thomas Jansen
                                        Thomas Jansen @liv-in-sky last edited by

                                        @liv-in-sky hey, leider bin ich nicht so der Programmierer, ich hole mir halt viel aus Google und probiere halt aus.... 😞

                                        liv-in-sky 2 Replies Last reply Reply Quote 0
                                        • liv-in-sky
                                          liv-in-sky @Thomas Jansen last edited by

                                          @thomas-jansen

                                          wie erwähnt - wie das einbindender werte in Homeassistant weiß ich nicht - hier https://github.com/dckiller51/bodymiscale - ganz unten kann man das wohl über einen link machen - kannste mal probieren - das script frägt dann nach deiner homeassistent adresse

                                          habe nicht so viel zeit im moment um das selbst zu programmieren - aber in diesem link sieht man,wie das berechnet wird - zeile 12 enthält die formel für LBM

                                          https://github.com/dckiller51/bodymiscale/blob/main/custom_components/bodymiscale/metrics/impedance.py

                                          oder eine andere formel: https://jumk.de/bmi/lbm.php

                                          damit kann man dann die werte z.b. mit blockly errechnen lassen, wenn neue daten ankommen

                                          1 Reply Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky @Thomas Jansen last edited by liv-in-sky

                                            @thomas-jansen

                                            habe mich etwas gespielt - bmi anzeige mit grafik

                                            script-vis1.gif

                                            [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"5500","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"\n<canvas id=\"myCanvas\" width=\"300\" height=\"208\"> </canvas>\n\n\n<script type=\"text/javascript\">\nvar c=document.getElementById(\"myCanvas\");\nvar ctx=c.getContext(\"2d\");\nvar img=new Image();\nimg.onload = function(){\nctx.drawImage(img,0,0);\n};\nimg.src=\"/vis.0/armin/img/bmi2.png\";\n\n  </script>\n\n<script>  \n\nsetTimeout( () => {  Self=this;\n  Self.servConn.getStates(['0_userdata.0.CONTROL-OWN.WAAGE.Groesse','0_userdata.0.CONTROL-OWN.WAAGE.test'], (error, states) => { \nvar groesse=states['0_userdata.0.CONTROL-OWN.WAAGE.Groesse'].val ;\nvar gewicht=states['0_userdata.0.CONTROL-OWN.WAAGE.test'].val   \n    // Get a reference to the element.\nvar elem = document.getElementById('myCanvas');\n\n// Always check for properties and methods, to make sure your code doesn't break\n// in other browsers.\nif (elem && elem.getContext) {\n\t// Get the 2d context.\n\t// Remember: you can only initialize one context per element.\n\tvar context = elem.getContext('2d');\n\tif (context) {\n\t\t// You are done! Now you can draw your first rectangle.\n\t\t// You only need to provide the (x,y) coordinates, followed by the width and\n\t\t// height dimensions.\n\t/*\tcontext.fillRect(16,188, 10, 10); */\n\t/*\tcontext.fillRect(16,1, 10, 10);   */\n\t/*\tcontext.fillRect(287,188, 10, 10);*/\n\t\tcontext.fillRect(Math.round(16+((groesse-150)*(5.4))),Math.round(-(1-188+(gewicht-40)*2.1)), 10, 10); /* 278/50*/  /* 188/90*/\n\t\t/*console.log(  Math.round( -(1-188+((gewicht-40)*188/90)) )  ); */\n\t\tcontext.font = \"bold 16px Arial\";\n        context.fillText(Math.round(gewicht/Math.pow((groesse/100),2)), Math.round(16+((groesse-150)*(5.4)))+15, Math.round(-(1-188+(gewicht-40)*2.1))+15);\n\t}\n}\n/*alert(Math.round(16+((groesse-150)*287/50)));*/ }, 1000);\n} );    \n</script>\n\n"},"style":{"left":"532px","top":"748px","width":"300px","height":"208px","transform":"scale(1)"},"widgetSet":"basic"}]
                                            

                                            die id für die größe im im html teil angegeben werden - also der dp dafür, den du anlegen musst - genauso der dp für das gewicht (dieser kommt von xiaomi)

                                            Image 148.png


                                            bmi2.png

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            654
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            23
                                            1614
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo