Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. EspHome und Espresence - Sensoren und Anwesenheitserkennung

    NEWS

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    EspHome und Espresence - Sensoren und Anwesenheitserkennung

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Sushibomba last edited by

      Hey ich habe aktuell 8X ESP32 D1 Mini mit denen ich meine Xiaomi Sensoren tracke was Temperatur, Luftfeuchtigkeit etc. angeht. Ich nutze dafür ESPHome.

      Ich möchte die gleichen D1 Mini nun ebenfalls für die Anwesenheitserkennung nutzen. Dafür ist ja ESPresence eigentlich gedacht. Möchte aber nicht noch 8x weitere ESPs in den Räumen verteilen.

      Ist es nicht irgendwie möglich beides zusammen zu bekommen mit ESPHome in ioBroker? Und nein Shellys möchte ich keine einbauen.

      Gerne möchte ich meine Amazfit GTR 4 als Anwesenheitsgerät verwenden und kein MiBand 4 oder 5.

      VG und danke vorab 🙂

      SBorg 1 Reply Last reply Reply Quote 0
      • SBorg
        SBorg Forum Testing Most Active @Sushibomba last edited by

        @sushibomba Kurze Grätsche, hast du die Frage auch bei Daniel (smarthome...) auf YT gestellt?
        Dann antworte ich dir hier lieber als dort, denn YT ist da wenig anwenderfreundlich 😉

        Falls ja, ich bin der der dort auch geantwortet hat 😉

        YAML (einfach einen weiteren Eintrag bei "sensor"):

        sensor:
          # RSSI based on MAC address
          - platform: ble_rssi
            mac_address: 11:22:33:AA:BB:FF
            name: "Amazfit Signal Schlafzimmer"
        

        dann bekommst du automatisch einen neuen Datenpunkt mit der RSSI.

        S 1 Reply Last reply Reply Quote 1
        • S
          Sushibomba @SBorg last edited by

          @sborg

          Ja genau der bin ich dort gewesen 🙂
          Vielen Dank. Bekomme es nur mit der min_rssi nicht hin. er will es einfach nicht akzeptieren.
          Scheint wohl an der alten esphome version in iorboker zu liegen 😞

          SBorg 1 Reply Last reply Reply Quote 0
          • SBorg
            SBorg Forum Testing Most Active @Sushibomba last edited by

            @sushibomba
            YT ist da ein "Gewürge". Nicht immer bekomme ich auch eine Nachricht, dann war 2x meine Antwort weg (ist mir beim ersten mal erst Aufgrund deiner Nachricht/Nachfrage aufgefallen, beim zweiten mal direkt einen Refresh der Seite gemacht, Antwort weg...)

            Bekommst du beim kompilieren eine Fehlermeldung oder geht "es einfach nicht"?
            Die RSSI bekommst du aber nun korrekt? Dann müsste man notfalls per Blocky/Trigger aktiv werden.

            Ich kann es aktuell leider selbst nicht testen. Notnagel wäre noch eine Lambda-Funktion: Falls RSSI > xx dann...

            S 1 Reply Last reply Reply Quote 1
            • S
              Sushibomba @SBorg last edited by Sushibomba

              @sborg

              Ja da gebe ich dir recht. ist hier deutlich angenehmer 🙂
              Was ist denn eine Lambda Funktion?
              Ja genau RSSI klappt. Bei min_rssi kommt en Fehlermeldung.

              ```YAML
              [min_rssi] is an invalid option for [binary_sensor.ble_presence]. Did you mean [on_press]?
                min_rssi: -80
              binary_sensor.ble_presence: [source /opt/iobroker/iobroker-data/esphome.0/esphome-web-esp32-1.yaml:82]
                platform: ble_presence
                mac_address: C7:B9:89:5E:0C:97
                name: Amazfit GTR2e im Esszimmer
                
                [min_rssi] is an invalid option for [binary_sensor.ble_presence]. Did you mean [on_press]?
                min_rssi: -80
              

              Aktuell baue ich gerade mein Blockly.
              Sieht zur Zeit so aus (siehe unten)
              Was merkwürdig ist. Wenn ich im Wohnzimmer bin, die rssi bei -90dBm ist er mir aber manchmal im Wechsel anzeigt das ich auch im Kinderzimmer bin obwohl der Wert deutlich über -80dBm ist.

              Ne Ahnung wieso?

              <block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="3mx;*!J{fY;/3RR]fVTy" disabled="true" x="187" y="138">
                <field name="SCHEDULE">{"time":{"start":"00:00","end":"23:59","mode":"minutes","interval":1},"period":{"days":1}}</field>
                <statement name="STATEMENT">
                  <block type="comment" id="{f%9td;bzlY|AdF[fCi7">
                    <field name="COMMENT">Anwesenheit Wohnzimmer GTR4</field>
                    <next>
                      <block type="controls_if" id="P`tbhh}7ZdOz*K*}JdWQ">
                        <value name="IF0">
                          <block type="logic_compare" id="n{d~uc5YlLRI8nl6tHnl">
                            <field name="OP">LTE</field>
                            <value name="A">
                              <block type="get_value" id="0ng=WB[LlVvqEhAaL}:6">
                                <field name="ATTR">val</field>
                                <field name="OID">alias.0.Räume.Wohnzimmer.Sensoren.Anwesenheit.Amazfit GTR4 Wohnzimmer.Amazfit_GTR4_Signal_Wohnzimmer</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="math_number" id="lZ~ERKK6]e;vhd2y@GK^">
                                <field name="NUM">-90</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="debug" id="iVyLYk~I{OF8,v!,]yeO">
                            <field name="Severity">log</field>
                            <value name="TEXT">
                              <shadow type="text" id="(ixOp@Mwy%?DwvUlkJ*z">
                                <field name="TEXT">GTR4 im WZ</field>
                              </shadow>
                            </value>
                            <next>
                              <block type="update" id="KEj%0,{k(Uo^?7A}[uwM">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">0_userdata.0.Anwesenheit.Amazfit_GTR4_im_Wohnzimmer</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="logic_boolean" id=":E3@wkg+/wc}b/9R/{9v">
                                    <field name="BOOL">TRUE</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="update" id="x_V@s+v$?5?qtU#o~,c|">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">0_userdata.0.Anwesenheit.Amazfit_GTR4_letzter_Aufenthalt</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="text" id="jtd$*uZ(tW(G}H?`{IQ!">
                                        <field name="TEXT">Wohnzimmer</field>
                                      </block>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </statement>
                        <next>
                          <block type="controls_if" id="g95P%ML^C!(X-p8?@Ibn">
                            <value name="IF0">
                              <block type="logic_compare" id="R2h{L(jLEA%Y53W!z1BB">
                                <field name="OP">LT</field>
                                <value name="A">
                                  <block type="get_value" id="iKpXOcL;6gBjR8:7E)Wc">
                                    <field name="ATTR">ts</field>
                                    <field name="OID">alias.0.Räume.Wohnzimmer.Sensoren.Anwesenheit.Amazfit GTR4 Wohnzimmer.Amazfit_GTR4_Signal_Wohnzimmer</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="math_arithmetic" id="|:lCTJcY(]{xdizaIL3t">
                                    <field name="OP">MINUS</field>
                                    <value name="A">
                                      <shadow type="math_number" id="8/)R]t|z5Vd7@i_3w]+I">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="time_get" id="w#g7WkL48((+/Ev-7a!k">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                        <field name="OPTION">object</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <shadow type="math_number" id="qkD$/1Gc)_Tt-hLHt?lG">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="math_number" id="~RIcg6QEaGZXl:!Qjaqb">
                                        <field name="NUM">30000</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="debug" id="eH)xiG8UdER5EA32BkIp">
                                <field name="Severity">log</field>
                                <value name="TEXT">
                                  <shadow type="text" id="vfFo[GHzVrl$E$mgPuOp">
                                    <field name="TEXT">GTR4 nicht mehr im WZ</field>
                                  </shadow>
                                </value>
                                <next>
                                  <block type="update" id="pr6#Q~lZ5Cbj{!=qE3S!">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">0_userdata.0.Anwesenheit.Amazfit_GTR4_im_Wohnzimmer</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="logic_boolean" id="qiGQh)7Ne$zs7^)?TKZ;">
                                        <field name="BOOL">FALSE</field>
                                      </block>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                            <next>
                              <block type="comment" id="HO;2.mi0^O3^oM35_GdN">
                                <field name="COMMENT">Anwesenheit Wohnzimmer GTR2e</field>
                                <next>
                                  <block type="controls_if" id="Nr@TZ$Y%xZMS1EqlSL}7">
                                    <value name="IF0">
                                      <block type="logic_compare" id="CjzC`dIC|Fv!b_/}Fx4x">
                                        <field name="OP">LTE</field>
                                        <value name="A">
                                          <block type="get_value" id="+lUv(c,=1b_jZ5/)4}t@">
                                            <field name="ATTR">val</field>
                                            <field name="OID">alias.0.Räume.Wohnzimmer.Sensoren.Anwesenheit.Amazfit GTR2e Wohnzimmer.Amazfit_GTR2e_Signal_Wohnzimmer</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <block type="math_number" id="gR}(R[//OR[1K_IaN_Bo">
                                            <field name="NUM">-90</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="debug" id="kjiw+K@C`Gy]dNrZ;xQc">
                                        <field name="Severity">log</field>
                                        <value name="TEXT">
                                          <shadow type="text" id="7*9N-lCOh]r-_!k}q0eZ">
                                            <field name="TEXT">GTR2e im WZ</field>
                                          </shadow>
                                        </value>
                                        <next>
                                          <block type="update" id="#VPmVf*1LU1Y%,={#G~T">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                            <field name="OID">0_userdata.0.Anwesenheit.Amazfit_GTR2e_im_Wohnzimmer</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="+[Z{noT1qFw(DZ(V`uhb">
                                                <field name="BOOL">TRUE</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="update" id="XfSmeGn(|*@cD2uT?3Fg">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                <field name="OID">0_userdata.0.Anwesenheit.Amazfit_GTR2e_letzter_Aufenthalt</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="text" id="SemBSUZ@V$|7XC@}kW8Z">
                                                    <field name="TEXT">Wohnzimmer</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                    <next>
                                      <block type="controls_if" id="lk#hdcD_88G=Vx#r.KLQ">
                                        <value name="IF0">
                                          <block type="logic_compare" id="=^K2LwXx+9RNWcVOGbgm">
                                            <field name="OP">LT</field>
                                            <value name="A">
                                              <block type="get_value" id="SL2[^rhc;GhaZaGNUTKO">
                                                <field name="ATTR">ts</field>
                                                <field name="OID">alias.0.Räume.Wohnzimmer.Sensoren.Anwesenheit.Amazfit GTR2e Wohnzimmer.Amazfit_GTR2e_Signal_Wohnzimmer</field>
                                              </block>
                                            </value>
                                            <value name="B">
                                              <block type="math_arithmetic" id="I5Gci};_V(%3~}],OwA#">
                                                <field name="OP">MINUS</field>
                                                <value name="A">
                                                  <shadow type="math_number">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                  <block type="time_get" id="6}CRjP!+66Gi(9f6-])7">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                    <field name="OPTION">object</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <shadow type="math_number">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                  <block type="math_number" id="(fdIY};d*hR=|6g$I}==">
                                                    <field name="NUM">30000</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="debug" id="I}YnN.g43+Q;lk{cy`s#">
                                            <field name="Severity">log</field>
                                            <value name="TEXT">
                                              <shadow type="text" id="XZ/o-Hqpt|cGBBn^6xuE">
                                                <field name="TEXT">GTR2e nicht mehr im WZ</field>
                                              </shadow>
                                            </value>
                                            <next>
                                              <block type="update" id="^+`pvv/b~#XIVO%bZD1b">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                <field name="OID">0_userdata.0.Anwesenheit.Amazfit_GTR2e_im_Wohnzimmer</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="logic_boolean" id="LJ1hp`v:Ai^w-X[/}L)B">
                                                    <field name="BOOL">FALSE</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
              
              1 Reply Last reply Reply Quote 0
              • S
                Sushibomba last edited by

                Und was ich auch nicht verstehe ist, warum der ESP im Kinderzimmer viel häufiger das Signal aktualisiert als im WZ. Siehe log vom Blockly:

                08:17:15.386	info	javascript.0 (368) script.js.Überwachung.Anwesenheit.Anwesenheit_Smartwaches_Raeume: GTR4 im KZ
                08:17:16.209	info	javascript.0 (368) script.js.Überwachung.Anwesenheit.Anwesenheit_Smartwaches_Raeume: -82
                08:17:49.545	info	javascript.0 (368) script.js.Überwachung.Anwesenheit.Anwesenheit_Smartwaches_Raeume: GTR4 im SZ
                08:17:59.215	info	javascript.0 (368) script.js.Überwachung.Anwesenheit.Anwesenheit_Smartwaches_Raeume: GTR2e im KZ
                08:18:01.774	info	javascript.0 (368) script.js.Überwachung.Anwesenheit.Anwesenheit_Smartwaches_Raeume: GTR2e im KZ
                08:18:11.327	info	javascript.0 (368) script.js.Überwachung.Anwesenheit.Anwesenheit_Smartwaches_Raeume: GTR2e im KZ
                08:18:41.099	info	javascript.0 (368) script.js.Überwachung.Anwesenheit.Anwesenheit_Smartwaches_Raeume: GTR2e im KZ
                08:18:47.172	info	javascript.0 (368) script.js.Überwachung.Anwesenheit.Anwesenheit_Smartwaches_Raeume: GTR2e im KZ
                

                Zu dem Zeitpunkt bin ich gerade im WZ und meine Lebensgefährtin im Kinderzimmer.

                SBorg 1 Reply Last reply Reply Quote 0
                • SBorg
                  SBorg Forum Testing Most Active @Sushibomba last edited by

                  @sushibomba sagte in EspHome und Espresence - Sensoren und Anwesenheitserkennung:

                  Was ist denn eine Lambda Funktion?

                  Damit wird der µC direkt programmiert. ESPHome stellt für alle Funktionen Bibliotheken bereit, aber hinter bspw. einem "Sensor" muss ja eine gewisse Logik stecken. Sagen wir mal der Temperatursensor stellt einen Messwert in °C oder alternativ in °F dar, du willst es jetzt aber partout in °K haben, dann sagst du mit der Lambda-Funktion nimm den Messwert und multipliziere/teile/addiere oder was auch immer und gib dieses Ergebnis zurück.

                  Der Rest dürfte sich dann mittels ESPresense ja erledigt haben 😉

                  S 1 Reply Last reply Reply Quote 1
                  • S
                    Sushibomba @SBorg last edited by

                    @sborg

                    Ok verstehe. Und wie bekomme ich jetzt wie beim ESPHome die Datenpunkte aus der JSON des jeweiligen Thermoters als neuen Datenpunkt ohne dafür jeweil ein Blockly Script zu schreiben?

                    Also vorher stand es ja so in ESPHome und er hat mir unter dem ESP dann die Datenpunkte automatisch geschrieben.

                    ### Esszimmer
                     
                    sensor:
                      - platform: atc_mithermometer
                        mac_address: "A4:C1:38:1B:03:F5"
                        temperature:
                          name: "Esszimmer Temperature"
                        humidity:
                          name: "Esszimmer Humidity"
                        battery_level:
                          name: "Esszimmer Battery-Level"
                        battery_voltage:
                          name: "Esszimmer Battery-Voltage"
                        signal_strength:
                          name: "Esszimmer Bluetooth Signal"
                    

                    Unter ESPresense habe ich nur noch einen Json Datenwert pro Temp und Humidity Sensor der so aussieht.

                    {
                      "id": "miTherm:a4c138f3a385",
                      "idType": 110,
                      "rssi@1m": -71,
                      "rssi": -99,
                      "raw": 6.31,
                      "distance": 6.21,
                      "speed": 0,
                      "mac": "a4c138f3a385",
                      "interval": 18341,
                      "mV": 2558,
                      "batt": 36,
                      "temp": 22.9,
                      "rh": 68
                    }
                    

                    bzw. so:

                    {"id":"miTherm:a4c138f3a385","idType":110,"rssi@1m":-71,"rssi":-99,"raw":6.31,"distance":6.21,"speed":0.00,"mac":"a4c138f3a385","interval":18341,"mV":2558,"batt":36,"temp":22.9,"rh":68.0}
                    

                    Und noch ne Frage. Habe jetzt verschiedene Datenpunkt für die Räume angelegt. Einmal ob die Uhr von mir oder meiner Frau im jeweiligen Raum ist und wie weit sie entfernt ist. Wie müsste ein Blockly aussehen was alle diese Datenpunkte auswertet und mir dann als Wert den letzten Aufenthaltsraum raus gibt?

                    räume espresense dp.png

                    SBorg 1 Reply Last reply Reply Quote 0
                    • SBorg
                      SBorg Forum Testing Most Active @Sushibomba last edited by

                      @sushibomba sagte in EspHome und Espresence - Sensoren und Anwesenheitserkennung:

                      Thermoters als neuen Datenpunkt ohne dafür jeweil ein Blockly Script zu schreiben?

                      Kurz und schmerzlos: gar nicht

                      Sie bieten dir nur das JSON an. Somit musst du damit leben, einen Feature Request stellen oder eine andere Lösung suchen (zB. mittels 2x ESP pro Raum...). ESPresense ist halt in HA einfach besser integriert als im ioB.

                      Mittels eines "Selectors" kann man über mehrere Datenpunkte iterieren. Da muss ich aus Zeitgründen aber passen.

                      S 1 Reply Last reply Reply Quote 1
                      • S
                        Sushibomba @SBorg last edited by Sushibomba

                        @sborg

                        Ok schade. Aber trotzdem herzlichen Dank für deine Hilfe bis hier hin.

                        An die anderen hier im Forum...

                        Wie müsste ein Blockly aussehen?

                        Ich stelle es mir folgendermaßen vor:

                        • Prüfe alle Räume auf die Anwesenheit von den Uhren GTR2e & GTR4 auf "true"

                        • Prüfe welcher Datenpunkt zuletzt auf "true" gesetzt wurde

                        • Prüfe ob Distanz von allen Räumen die kleinste ist und schreibe diesen Raum jeweils in einen neuen Datenpunkt (0_userdata.0.Anwesenheit.Amazfit_GTR2e_letzter_Aufenthalt) & (0_userdata.0.Anwesenheit.Amazfit_GTR4_letzter_Aufenthalt)

                        • Falls letzter Aufenthaltsraum wurde länger als X Tage nicht aktualisiert, schreibe in Datenpunkt.XY das Smartwatch GTR2e oder GTR4 "Ausgeschaltet oder Akku leer"

                        Ich hoffe es kann mir wer helfen 🙏 🙏 🙏

                        Wenn noch jemand Optimierungen hat oder nützliche Abfragen vorschlagen kann über die ich aktuell nicht nachgedacht habe dann gerne her damit 🙂

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        565
                        Online

                        32.1k
                        Users

                        80.7k
                        Topics

                        1.3m
                        Posts

                        esp32 esphome espresence
                        2
                        10
                        1216
                        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