NEWS
G-Tag, IBeacon, Anwesenheitserkennung
-
Hab den HM BWM als Sicherheit mit drin.
An dem m
ü
ssen wir vorbeifahren zum Carport.
Nun hab ich das vorhin getestet, Licht blieb dunkel.
BWM wurde um 19:55:00 ausgel
ö
st
G Tag um 19:54:34Also 26sek dazwischen.

Wie kriege ich das hin, dass wenn alle geforderten Werte eingehalten wurden, das Gewollte ausgel
ö
st wird.
Muss alles zeitgleich passieren, damit das Blockly passt?@haselchen mit einem zweiten Trigger auf den HM BWM m
ü
sste es gehen. Ich w
ü
rde zus
ä
tzlich als Bedingung reinnehmen, dass das Licht auch aus ist um den Funktraffic zu minimieren (Licht muss ja nicht angeschaltet werden, wenn es schon an ist). -
@haselchen mit einem zweiten Trigger auf den HM BWM m
ü
sste es gehen. Ich w
ü
rde zus
ä
tzlich als Bedingung reinnehmen, dass das Licht auch aus ist um den Funktraffic zu minimieren (Licht muss ja nicht angeschaltet werden, wenn es schon an ist).Viele Wege f
ü
hren nach Rom ...Ich habe das Ganze f
ü
r das Ein- und Ausschalten der HMIP Alarmfunktion mit den GTags und dem BLE- Adapter gemacht.Der BLE Adapter schreibt alle paar Sekunden die Signalst
ä
rke der GTags in einen State pro GTAG.Jedes mal, wenn die Signalst
ä
rke geschrieben wird, dann setzte ich eine Variable auf TRUE, das der entsprechende GTag da ist.Nur wenn die Variable auf TRUE ge
ä
ndert wird, dann deaktiviere ich die Alarmanlage. Im Fall hier k
ö
nnte dann das Licht im Carport eingeschaltet werden.Auf FALSE wird die Variable gesetzt, wenn der Zeitstempel der letzten
Ä
nderung der Signalst
ä
rke > 60 Sekunden ist. Und nur bei der
Ä
nderung der Variable auf FALSE wird die Alarmanlage aktiviert.Gru
ß
,
Moses123 -
@Maik-0
Ich versuche auch gerade meine Anwesenheitserkennung mit Esp32 und Beacon zu basteln.
Ich hab nur st
ä
ndige Verbindungsabbr
ü
che des ESP32 zum WLan, und sonstige problemchen.
Wobei du mir aber helfen k
ö
nntest:
Du bekommst einen RSSI Wert vom ESPHome-Adapter ist das richtig?
Ich mache es jedenfalls so, nur wenn ich den Trigger "falls rssi wurde aktualisiert" benutze und die beacon sind nicht erreichbar, wird der rssi nicht mehr aktualisiert.
Ich habe die absolut wahnsinnige Zauberei um es halbwegs zuverl
ä
ssig zu erfassen:<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="rGM/6a0x(,3^[f[%$e=." x="513" y="-437"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Ke)Im[.t$Xcb$/||[XsD"> <field name="oid">esphome.0.A848FA9B5288.Sensor.3257868514.state</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_setinterval" id=",x_Wi31gf8)n(%qaO8ki"> <field name="NAME">Intervall</field> <field name="INTERVAL">4</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="update" id="@n}$bxzS:xt}=0e8Ge7p"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.Anwesenheit.Pnutrssi</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">8</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="+R*fQ.`WM?fu3@Q_:Kgs"> <field name="ATTR">val</field> <field name="OID">esphome.0.A848FA9B5288.Sensor.3257868514.state</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="^H%xiJnQ{#f;h53W.2,G"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="QnVmO-JQvSY5AC1,j]-."> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="NaV%!cuNA1!4Xs]J$Jxc"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Anwesenheit.Pnutrssi</field> </block> </value> <value name="B"> <block type="logic_operation" id="De1sb$x$:gWSRH9H=.fN"> <field name="OP">OR</field> <value name="A"> <block type="get_value" id="Q{@RL-*lP%*]ij2j}#6H"> <field name="ATTR">val</field> <field name="OID">esphome.0.A848FA9B5288.Sensor.3257868514.state</field> </block> </value> <value name="B"> <block type="logic_null" id="%9{t2tsMkc`{~0kgjhID"></block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="oZ?mPBj.Rv*VeHctx#,T"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> <value name="DELTA"> <shadow type="math_number" id="7!07YDKL7.2yTT[S6Xl]"> <field name="NUM">1</field> </shadow> </value> <next> <block type="variables_set" id="pXe:WH+5wUmtMt68747N"> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> <value name="VALUE"> <block type="math_number" id="pzx~p.=w?G%l$.?OVGX#"> <field name="NUM">0</field> </block> </value> <next> <block type="debug" id="d2ue#BIG[QLu9#JG#,at"> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Gf6zNnnr~j#FsWO/s:_a"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="*|7au5VmBygvu[v?WU{2"> <field name="TEXT">awayCount:</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="dG7Tipl~/@R}GzQ8sKlF"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> </block> </value> <value name="ADD2"> <block type="get_value" id="l0n^o^!0I0oRkL.l0(Bk"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Anwesenheit.Pnutrssi</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="math_change" id="J#-HL,WRdHR/1xbv,gI."> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> <value name="DELTA"> <shadow type="math_number" id="dit@K0Wk;EE=K#$z]x$e"> <field name="NUM">1</field> </shadow> </value> <next> <block type="variables_set" id="E4eHQdX,._YGqR1|.O-1"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> <value name="VALUE"> <block type="math_number" id="][%p#n_BZ82Z{p$-8^K("> <field name="NUM">0</field> </block> </value> <next> <block type="debug" id="b,`r91eD(%8DNTaC;l=."> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="^w-9%o)0a^{-%e_8P:0x"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="n..iEeaG+.h}[j-XEtJw"> <field name="TEXT">presentCount:</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="deEHCo`E).s.!Bck^r35"> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="controls_if" id="@crrhoDO#B=iavWIG3+I"> <value name="IF0"> <block type="logic_compare" id="pM7-++%2(DwKnm[p`4E~"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="5QHo#rswQab_`pZ%x8U5"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> </block> </value> <value name="B"> <block type="math_number" id="%Ao_A}Yi(a$:F;Nigg3H"> <field name="NUM">10</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="z2sp:nmr12kP3*rqh3~n"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Anwesenheit.Patrick_anweseheit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="H`##WiJF`MjC.GZUbZ@B"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="=/ZWrT1D=RcjUWJOrBi4"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> <value name="VALUE"> <block type="math_number" id="ks_;K}^:8o5HonxvUl9S"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> <next> <block type="controls_if" id="sl2;W5?aG:?h.=JPUL1/"> <value name="IF0"> <block type="logic_compare" id="MN(/Mj`S`r*hfFo6J11+"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="z|tjgy?uYXO8(rFVSdFZ"> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> </block> </value> <value name="B"> <block type="math_number" id="|:B6J+V,5/E-,lS)~FhQ"> <field name="NUM">4</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="1Zf|bgBtg[EQ;VLMktA?"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Anwesenheit.Patrick_anweseheit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="RK66d3=~rHgwKW2DG|S5"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="variables_set" id="_(1g.LSHR+!M92BMy[V)"> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> <value name="VALUE"> <block type="math_number" id="Nv|B-hM3oZuo_:ryL[F:"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block>
Ich glaube nicht das das wirklich schlau von mir ist, aber.. na ja.
Mein ESPHome Yaml sieht so aus:esphome: name: esp32presence platform: ESP32 board: esp32dev # Enable logging logger: # Enable Home Assistant API api: ota: wifi: ssid: "DieSSID" password: "passwort" power_save_mode: LIGHT manual_ip: static_ip: 192.10.10.10 gateway: 192.10.10.11 subnet: 255.255.255.0 ap: ssid: "Esp32presence Fallback Hotspot" password: "passwort" captive_portal: esp32_ble_tracker: scan_parameters: window: 300ms sensor: - platform: ble_rssi mac_address: DF:AA:CA:AA:BB:CC name: "PatrickNut" - platform: ble_rssi mac_address: 66:CC:DD:FF:57:D7 name: "NicoleNut"K
ö
nntest du mir vielleicht mit deinen Scripten weiterhelfen wenn du was funktionierendes hast?
Gru
ß
Patrick -
@Maik-0
Ich versuche auch gerade meine Anwesenheitserkennung mit Esp32 und Beacon zu basteln.
Ich hab nur st
ä
ndige Verbindungsabbr
ü
che des ESP32 zum WLan, und sonstige problemchen.
Wobei du mir aber helfen k
ö
nntest:
Du bekommst einen RSSI Wert vom ESPHome-Adapter ist das richtig?
Ich mache es jedenfalls so, nur wenn ich den Trigger "falls rssi wurde aktualisiert" benutze und die beacon sind nicht erreichbar, wird der rssi nicht mehr aktualisiert.
Ich habe die absolut wahnsinnige Zauberei um es halbwegs zuverl
ä
ssig zu erfassen:<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="rGM/6a0x(,3^[f[%$e=." x="513" y="-437"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Ke)Im[.t$Xcb$/||[XsD"> <field name="oid">esphome.0.A848FA9B5288.Sensor.3257868514.state</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_setinterval" id=",x_Wi31gf8)n(%qaO8ki"> <field name="NAME">Intervall</field> <field name="INTERVAL">4</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="update" id="@n}$bxzS:xt}=0e8Ge7p"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.Anwesenheit.Pnutrssi</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">8</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="+R*fQ.`WM?fu3@Q_:Kgs"> <field name="ATTR">val</field> <field name="OID">esphome.0.A848FA9B5288.Sensor.3257868514.state</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="^H%xiJnQ{#f;h53W.2,G"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="QnVmO-JQvSY5AC1,j]-."> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="NaV%!cuNA1!4Xs]J$Jxc"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Anwesenheit.Pnutrssi</field> </block> </value> <value name="B"> <block type="logic_operation" id="De1sb$x$:gWSRH9H=.fN"> <field name="OP">OR</field> <value name="A"> <block type="get_value" id="Q{@RL-*lP%*]ij2j}#6H"> <field name="ATTR">val</field> <field name="OID">esphome.0.A848FA9B5288.Sensor.3257868514.state</field> </block> </value> <value name="B"> <block type="logic_null" id="%9{t2tsMkc`{~0kgjhID"></block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="oZ?mPBj.Rv*VeHctx#,T"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> <value name="DELTA"> <shadow type="math_number" id="7!07YDKL7.2yTT[S6Xl]"> <field name="NUM">1</field> </shadow> </value> <next> <block type="variables_set" id="pXe:WH+5wUmtMt68747N"> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> <value name="VALUE"> <block type="math_number" id="pzx~p.=w?G%l$.?OVGX#"> <field name="NUM">0</field> </block> </value> <next> <block type="debug" id="d2ue#BIG[QLu9#JG#,at"> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Gf6zNnnr~j#FsWO/s:_a"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="*|7au5VmBygvu[v?WU{2"> <field name="TEXT">awayCount:</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="dG7Tipl~/@R}GzQ8sKlF"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> </block> </value> <value name="ADD2"> <block type="get_value" id="l0n^o^!0I0oRkL.l0(Bk"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Anwesenheit.Pnutrssi</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="math_change" id="J#-HL,WRdHR/1xbv,gI."> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> <value name="DELTA"> <shadow type="math_number" id="dit@K0Wk;EE=K#$z]x$e"> <field name="NUM">1</field> </shadow> </value> <next> <block type="variables_set" id="E4eHQdX,._YGqR1|.O-1"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> <value name="VALUE"> <block type="math_number" id="][%p#n_BZ82Z{p$-8^K("> <field name="NUM">0</field> </block> </value> <next> <block type="debug" id="b,`r91eD(%8DNTaC;l=."> <field name="Severity">debug</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="^w-9%o)0a^{-%e_8P:0x"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="n..iEeaG+.h}[j-XEtJw"> <field name="TEXT">presentCount:</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="deEHCo`E).s.!Bck^r35"> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="controls_if" id="@crrhoDO#B=iavWIG3+I"> <value name="IF0"> <block type="logic_compare" id="pM7-++%2(DwKnm[p`4E~"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="5QHo#rswQab_`pZ%x8U5"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> </block> </value> <value name="B"> <block type="math_number" id="%Ao_A}Yi(a$:F;Nigg3H"> <field name="NUM">10</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="z2sp:nmr12kP3*rqh3~n"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Anwesenheit.Patrick_anweseheit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="H`##WiJF`MjC.GZUbZ@B"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="=/ZWrT1D=RcjUWJOrBi4"> <field name="VAR" id="@nWK-It]VKg2b:$$U)ww">awayCountP</field> <value name="VALUE"> <block type="math_number" id="ks_;K}^:8o5HonxvUl9S"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> <next> <block type="controls_if" id="sl2;W5?aG:?h.=JPUL1/"> <value name="IF0"> <block type="logic_compare" id="MN(/Mj`S`r*hfFo6J11+"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="z|tjgy?uYXO8(rFVSdFZ"> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> </block> </value> <value name="B"> <block type="math_number" id="|:B6J+V,5/E-,lS)~FhQ"> <field name="NUM">4</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="1Zf|bgBtg[EQ;VLMktA?"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Anwesenheit.Patrick_anweseheit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="RK66d3=~rHgwKW2DG|S5"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="variables_set" id="_(1g.LSHR+!M92BMy[V)"> <field name="VAR" id="mjIE{DMAN;i0MY~~*3zj">presentCountP</field> <value name="VALUE"> <block type="math_number" id="Nv|B-hM3oZuo_:ryL[F:"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block>
Ich glaube nicht das das wirklich schlau von mir ist, aber.. na ja.
Mein ESPHome Yaml sieht so aus:esphome: name: esp32presence platform: ESP32 board: esp32dev # Enable logging logger: # Enable Home Assistant API api: ota: wifi: ssid: "DieSSID" password: "passwort" power_save_mode: LIGHT manual_ip: static_ip: 192.10.10.10 gateway: 192.10.10.11 subnet: 255.255.255.0 ap: ssid: "Esp32presence Fallback Hotspot" password: "passwort" captive_portal: esp32_ble_tracker: scan_parameters: window: 300ms sensor: - platform: ble_rssi mac_address: DF:AA:CA:AA:BB:CC name: "PatrickNut" - platform: ble_rssi mac_address: 66:CC:DD:FF:57:D7 name: "NicoleNut"K
ö
nntest du mir vielleicht mit deinen Scripten weiterhelfen wenn du was funktionierendes hast?
Gru
ß
Patrick@marsm
ä
nnchen
Ja richtig, ich mache das
ü
ber den rssi Wert. Bei Aktualisierung wird ein Timeout gestoppt und neu gestartet.
Wenn der rssi Wert nicht mehr aktualisiert wird, l
ä
uft er in den Timeout.
Ein passendes Script habe ich doch schon gepostet. -
@marsm
ä
nnchen
Ja richtig, ich mache das
ü
ber den rssi Wert. Bei Aktualisierung wird ein Timeout gestoppt und neu gestartet.
Wenn der rssi Wert nicht mehr aktualisiert wird, l
ä
uft er in den Timeout.
Ein passendes Script habe ich doch schon gepostet.@maik-0
Ah ich glaube jetzt verstehe ich erst die Logik von deinem Script. Gerade weil es nicht mehr aktualisiert wird, wird auf abwesend geschaltet. -
@maik-0
Ah ich glaube jetzt verstehe ich erst die Logik von deinem Script. Gerade weil es nicht mehr aktualisiert wird, wird auf abwesend geschaltet. -
@marsm
ä
nnchen
Genau, wenn der Wert 60 Sekunden nicht mehr aktualisiert wird, schaltet es auf Abwesenheit. Kann sein, das 60 Sekunden etwas knapp ist. Musst du vieleicht etwas h
ö
her setzen.@maik-0
Is nat
ü
rlich die sch
ö
nere L
ö
sung als meine hilflose Zauberei.
Werd das gleich mal abpausen. Vielen Dank -
@maik-0
Is nat
ü
rlich die sch
ö
nere L
ö
sung als meine hilflose Zauberei.
Werd das gleich mal abpausen. Vielen Dank@Maik-0
Sorry will nicht nerven, aber:
Wenn ich, wie gerade eben, nicht anwesend bin, dann wird der Baustein ja nicht aktualisiert.
Wenn der Baustein nicht aktualisiert wird, schaltet die untere "falls-mache ->auf abwesend"
ü
berhaupt?Ab wann wird eigentlich aktualisiert?
Hintergrund ist n
ä
mlich das mein Status sich
ä
ndert obwohl nicht daheim, und "RSSI (null)db" ist.
Vielleicht hast du in der Yaml vom ESP32 was besseres stehen?Wie kann DAS sein?
im debug-log bekomme ich die Variable (roter Kreis) mit "false"
Und bei den Objekten schaltet der Datenpunkt (blauer Kreis) auf "true"!
Wo hab ich da was
ü
bersehen..... mal wieder.

Ich vermute weil der ESP32 auch meine Abwesenheit in form von "NaN" sendet.
Ok.bin scheinbar schon zu bl
ö
d zum abschauen... Erinnert mich an meine Schulzeit.
Hab glatt was vergessen
Gut, jetzt hab ich auch rausgefunden womit es zu tun hat.
Wenn der ble_tracker vom ESP32[16:35:10][D][sensor:113]: 'PatrickNut': Sending state nan dB with 0 decimals of accuracySendet, wird logischerweise aktualisiert, und ich bin anwesend.
-
@Maik-0
Sorry will nicht nerven, aber:
Wenn ich, wie gerade eben, nicht anwesend bin, dann wird der Baustein ja nicht aktualisiert.
Wenn der Baustein nicht aktualisiert wird, schaltet die untere "falls-mache ->auf abwesend"
ü
berhaupt?Ab wann wird eigentlich aktualisiert?
Hintergrund ist n
ä
mlich das mein Status sich
ä
ndert obwohl nicht daheim, und "RSSI (null)db" ist.
Vielleicht hast du in der Yaml vom ESP32 was besseres stehen?Wie kann DAS sein?
im debug-log bekomme ich die Variable (roter Kreis) mit "false"
Und bei den Objekten schaltet der Datenpunkt (blauer Kreis) auf "true"!
Wo hab ich da was
ü
bersehen..... mal wieder.

Ich vermute weil der ESP32 auch meine Abwesenheit in form von "NaN" sendet.
Ok.bin scheinbar schon zu bl
ö
d zum abschauen... Erinnert mich an meine Schulzeit.
Hab glatt was vergessen
Gut, jetzt hab ich auch rausgefunden womit es zu tun hat.
Wenn der ble_tracker vom ESP32[16:35:10][D][sensor:113]: 'PatrickNut': Sending state nan dB with 0 decimals of accuracySendet, wird logischerweise aktualisiert, und ich bin anwesend.
@marsm
ä
nnchen
Unsch
ö
n ist nat
ü
rlich wenn das Script zum ersten Mal gestartet w
ä
hrend du nicht zu hause bist, passiert nichts. Bis zum ersten Kontakt zum Beacon.
Dann w
ü
rde ja beim weggehen der Timeout greifen.
Wenn sich aber dein Status
ä
ndert w
ä
hrend du abwesend bist,
m
ü
sste ja auch ohne Kontakt zum Beacon der rssi Wert aktualisiert werden.
Das ist bei mir nicht der Fall. Etwas merkw
ü
rdig.
Alternativ w
ä
re auch es auch noch m
ö
glich das
ü
ber den ESPHome Presence Melder zu machen.
https://www.esphome.io/components/binary_sensor/ble_presence.html -
@marsm
ä
nnchen
Unsch
ö
n ist nat
ü
rlich wenn das Script zum ersten Mal gestartet w
ä
hrend du nicht zu hause bist, passiert nichts. Bis zum ersten Kontakt zum Beacon.
Dann w
ü
rde ja beim weggehen der Timeout greifen.
Wenn sich aber dein Status
ä
ndert w
ä
hrend du abwesend bist,
m
ü
sste ja auch ohne Kontakt zum Beacon der rssi Wert aktualisiert werden.
Das ist bei mir nicht der Fall. Etwas merkw
ü
rdig.
Alternativ w
ä
re auch es auch noch m
ö
glich das
ü
ber den ESPHome Presence Melder zu machen.
https://www.esphome.io/components/binary_sensor/ble_presence.html@maik-0
Ja, is scheinbar wirklich so, das er trotzdem ab und zu "state nan" sendet.
ich versuche das mit:
Solch einem Konstrukt zu verhindern. mal sehn was passiert.
Sonst versuche ich mal ble_presence -
@maik-0
Ja, is scheinbar wirklich so, das er trotzdem ab und zu "state nan" sendet.
ich versuche das mit:
Solch einem Konstrukt zu verhindern. mal sehn was passiert.
Sonst versuche ich mal ble_presence -
@marsm
ä
nnchen
Du solltest aber den
„
stop timeout
“
noch verschieben. Als ersten Befehl in
deine eingef
ü
gte if-Abfrage. Sonst stoppt er auch den timeout auch wenn
„
state nan
“
kommt.Hi
bin aktuell auf der Suche nach einer besseren Anwesenheitserkennung da die Smartphones (Android)
ü
ber Wlan und TR064 teilweise erst nach >10Minuten erkannt werden, da die Ger
ä
te sich erst dann einloggen. Das ist f
ü
r mich keine gute L
ö
sung.Ihr habt jetzt viel mit den G-Tags getestet. Seit ihr damit zufrieden?
Bei der L
ö
sung stelle ich mir andauernd die Frage ob man dies nicht
ü
ber das Handy l
ö
sen kann (Bluetooth BLE)? Im Zug von Corona App etc. ist diese Funktion der Smartphones sehr aktuell und senden die nicht auch dauernd ohne Energiesparmodus Signale
ü
ber BLE um sich zu erkennen zu geben? -
Hi
bin aktuell auf der Suche nach einer besseren Anwesenheitserkennung da die Smartphones (Android)
ü
ber Wlan und TR064 teilweise erst nach >10Minuten erkannt werden, da die Ger
ä
te sich erst dann einloggen. Das ist f
ü
r mich keine gute L
ö
sung.Ihr habt jetzt viel mit den G-Tags getestet. Seit ihr damit zufrieden?
Bei der L
ö
sung stelle ich mir andauernd die Frage ob man dies nicht
ü
ber das Handy l
ö
sen kann (Bluetooth BLE)? Im Zug von Corona App etc. ist diese Funktion der Smartphones sehr aktuell und senden die nicht auch dauernd ohne Energiesparmodus Signale
ü
ber BLE um sich zu erkennen zu geben?@dieter_p Also wie du eine Unterhaltung weiter oben sehen kannst habe ich jetzt am Schl
ü
sselbund einen beacon(heisst nut beacon) und in der N
ä
he der eingangst
ü
re einen esp32 mit externer Antenne. Ich muss sagen das ist f
ü
r mich die optimale L
ö
sung. Erkennt zuverl
ä
ssig und schnell. Soweit meine Erfahrung. -
@dieter_p Also wie du eine Unterhaltung weiter oben sehen kannst habe ich jetzt am Schl
ü
sselbund einen beacon(heisst nut beacon) und in der N
ä
he der eingangst
ü
re einen esp32 mit externer Antenne. Ich muss sagen das ist f
ü
r mich die optimale L
ö
sung. Erkennt zuverl
ä
ssig und schnell. Soweit meine Erfahrung.@marsm
ä
nnchen
Danke f
ü
rs Feedback. Habe hier jetzt auch ein paar Beacons bestellt und einen ESP32. Damit wollte ich mal testen. Falls ich es noch sinnvoll schaffe die Smartphones auch mit zu scannen, kann eine redundante L
ö
sung ja nicht schaden.Welche Software verwendest Du auf dem ESP32? Ich finde sehr viele Skripte und Github-Code. Bin da nicht so ein gro
ß
er Freund und w
ü
rde lieber eine st
ä
ndig gepflegte L
ö
sung verwenden. Glaube gelesen zu haben, dass Tasmota f
ü
r diesen Zweck auch m
ö
glich ist?Welche Reichweiten schaffst Du bei Dir um die Beacons zu erkennen und welche maximale Zeitverz
ö
gerung hast Du um gesichert Anwesenheit erkennen zu k
ö
nnen?
Dein blockly oben deutet auf 60 Sekunden hin.
W
ü
rde ungern den Alarm der Alarmanlage noch l
ä
nger verz
ö
gern. -
@marsm
ä
nnchen
Danke f
ü
rs Feedback. Habe hier jetzt auch ein paar Beacons bestellt und einen ESP32. Damit wollte ich mal testen. Falls ich es noch sinnvoll schaffe die Smartphones auch mit zu scannen, kann eine redundante L
ö
sung ja nicht schaden.Welche Software verwendest Du auf dem ESP32? Ich finde sehr viele Skripte und Github-Code. Bin da nicht so ein gro
ß
er Freund und w
ü
rde lieber eine st
ä
ndig gepflegte L
ö
sung verwenden. Glaube gelesen zu haben, dass Tasmota f
ü
r diesen Zweck auch m
ö
glich ist?Welche Reichweiten schaffst Du bei Dir um die Beacons zu erkennen und welche maximale Zeitverz
ö
gerung hast Du um gesichert Anwesenheit erkennen zu k
ö
nnen?
Dein blockly oben deutet auf 60 Sekunden hin.
W
ü
rde ungern den Alarm der Alarmanlage noch l
ä
nger verz
ö
gern.@dieter_p ich verwende esphome Adapter, die Reichweite ist so ca. 20meter.esp32 ist im innenraum, Eingangs Bereich. Die Zeit von 60sekunden ist ausreichend f
ü
r mich. Habe noch nicht daran rumgespielt.Das auslesen des Handys mit Bluetooth stell ich mir mit esphome nicht viel anders vor, brauchst nur die Mac Adresse des Bluetooth. -
@dieter_p ich verwende esphome Adapter, die Reichweite ist so ca. 20meter.esp32 ist im innenraum, Eingangs Bereich. Die Zeit von 60sekunden ist ausreichend f
ü
r mich. Habe noch nicht daran rumgespielt.Das auslesen des Handys mit Bluetooth stell ich mir mit esphome nicht viel anders vor, brauchst nur die Mac Adresse des Bluetooth. -
@dieter_p ich verwende esphome Adapter, die Reichweite ist so ca. 20meter.esp32 ist im innenraum, Eingangs Bereich. Die Zeit von 60sekunden ist ausreichend f
ü
r mich. Habe noch nicht daran rumgespielt.Das auslesen des Handys mit Bluetooth stell ich mir mit esphome nicht viel anders vor, brauchst nur die Mac Adresse des Bluetooth.Habe nun erste Versuche mit ESP32 und ESPHome gemacht aber scheine da noch ein Format Verst
ä
ndnis Problem zu haben. Meine Beacons sind noch nicht da aber auch sonst w
ä
re die Android App "Beacon Simulator" eine sch
ö
ne dauerhafte Erg
ä
nzung.Kann mir jemand sagen was hier mit der UUID eines iBeacon gemacht wird?
Ü
ber Online Converter (Hex zu String o.
ä
.) oder die verschiedenen Typen UUID vs. GUID etc. bin ich nicht schlau draus geworden:Im Simulator/App benutzt:

Im Code von ESPHome jedoch so detektiert:
esp32_ble_tracker: on_ble_advertise: - then: # - if: # condition: # lambda: |- # for (auto data : x.get_manufacturer_datas()) { # return (strcmp(hexencode(data.data).c_str(), "02.15.2B.9E.6A.0A.14.92.41.74.AC.06.26.7B.BB.4B.B0.50.00.00.00.00.BF (23)") == 0); # } # return false; # then: - lambda: |- ESP_LOGD("ble_adv", "New BLE device"); ESP_LOGD("ble_adv", " rssi: %d", x.get_rssi()); ESP_LOGD("ble_adv", " Advertised manufacturer data:"); for (auto data : x.get_manufacturer_datas()) { ESP_LOGD("ble_adv", " - %s", hexencode(data.data).c_str()); if (strcmp(hexencode(data.data).c_str(), "02.15.2B.9E.6A.0A.14.92.41.74.AC.06.26.7B.BB.4B.B0.50.00.00.00.00.BF (23)") == 0) { ESP_LOGD("ble_adv", "in if"); } }Oder kurz: wie wird aus iBeacon UUID:
2b9e6a0a-1492-4174-ac06-267bbb4bb05002.15.2B.9E.6A.0A.14.92.41.74.AC.06.26.7B.BB.4B.B0.50.00.00.00.00.BFThx!
-
Habe nun erste Versuche mit ESP32 und ESPHome gemacht aber scheine da noch ein Format Verst
ä
ndnis Problem zu haben. Meine Beacons sind noch nicht da aber auch sonst w
ä
re die Android App "Beacon Simulator" eine sch
ö
ne dauerhafte Erg
ä
nzung.Kann mir jemand sagen was hier mit der UUID eines iBeacon gemacht wird?
Ü
ber Online Converter (Hex zu String o.
ä
.) oder die verschiedenen Typen UUID vs. GUID etc. bin ich nicht schlau draus geworden:Im Simulator/App benutzt:

Im Code von ESPHome jedoch so detektiert:
esp32_ble_tracker: on_ble_advertise: - then: # - if: # condition: # lambda: |- # for (auto data : x.get_manufacturer_datas()) { # return (strcmp(hexencode(data.data).c_str(), "02.15.2B.9E.6A.0A.14.92.41.74.AC.06.26.7B.BB.4B.B0.50.00.00.00.00.BF (23)") == 0); # } # return false; # then: - lambda: |- ESP_LOGD("ble_adv", "New BLE device"); ESP_LOGD("ble_adv", " rssi: %d", x.get_rssi()); ESP_LOGD("ble_adv", " Advertised manufacturer data:"); for (auto data : x.get_manufacturer_datas()) { ESP_LOGD("ble_adv", " - %s", hexencode(data.data).c_str()); if (strcmp(hexencode(data.data).c_str(), "02.15.2B.9E.6A.0A.14.92.41.74.AC.06.26.7B.BB.4B.B0.50.00.00.00.00.BF (23)") == 0) { ESP_LOGD("ble_adv", "in if"); } }Oder kurz: wie wird aus iBeacon UUID:
2b9e6a0a-1492-4174-ac06-267bbb4bb05002.15.2B.9E.6A.0A.14.92.41.74.AC.06.26.7B.BB.4B.B0.50.00.00.00.00.BFThx!
Lange rumprobiert und nun ist es nutzbar. F
ü
r Interessierte:Der Code oben scheint mir nur bestimme Bestandteile des Bluetooth BLE Datenpakets auszufilter.
Nutzt man als Beispiel diesen Code in ESPHome:
esp32_ble_tracker: on_ble_advertise: - then: - lambda: |- bool redmi_note_9_pro_status = false; for (auto data : x.get_manufacturer_datas()) { if (strcmp(hexencode(data.data).c_str(), "02.15.49.01.F3.6B.E9.1A.44.B7.B3.62.FF.2E.B6.43.05.04.00.00.00.00.BF (23)") == 0) { ESP_LOGD("ble_adv", "redmi_note_9_pro found"); redmi_note_9_pro_status = true; } ESP_LOGD("ble_adv", " - %s", hexencode(data.data).c_str()); } id(redmi_note_9_pro).publish_state(redmi_note_9_pro_status); binary_sensor: - platform: template device_class: presence name: "Redmi Note 9 Pro BLE presence" id: redmi_note_9_pro filters: - delayed_off: 3sBekommt man im Logging Fenster viel mehr Informationen wie Manufacturer DATA wenn man mit der App Beacon Simulator sendet, aber auch die
ä
nderbare UUID. ACHTUNG! im Logging Fenster ist die UUID in umgekehrter Reihenfolge geschrieben![13:37:18][VV][esp32_ble_tracker:493]: Parse Result: [13:37:18][VV][esp32_ble_tracker:510]: Address: 5C:86:26:05:12:C0 (RANDOM) [13:37:18][VV][esp32_ble_tracker:512]: RSSI: -83 [13:37:18][VV][esp32_ble_tracker:513]: Name: '' [13:37:18][VV][esp32_ble_tracker:527]: Manufacturer data: 02.15.B3.6E.AB.BD.56.CA.48.6E.9E.F4.C9.2D.AC.F7.9B.5F.00.00.00.00.BF (23) [13:37:18][VV][esp32_ble_tracker:530]: iBeacon data: [13:37:18][VV][esp32_ble_tracker:531]: UUID: 5D9BF7AC-2DC9-F49E-6E48-CA56BDAB6EB3 [13:37:18][VV][esp32_ble_tracker:532]: Major: 0 [13:37:18][VV][esp32_ble_tracker:533]: Minor: 0 [13:37:18][VV][esp32_ble_tracker:534]: TXPower: -65 [13:37:18][VV][esp32_ble_tracker:543]: Adv data: 1A.FF.4C.00.02.15.B3.6E.AB.BD.56.CA.48.6E.9E.F4.C9.2D.AC.F7.9B.5F.00.00.00.00.BF (27) [13:37:18][D][ble_adv:070]: google_pixel_4a found [13:37:18][D][ble_adv:073]: - 02.15.B3.6E.AB.BD.56.CA.48.6E.9E.F4.C9.2D.AC.F7.9B.5F.00.00.00.00.BF (23)So l
ä
sst sich mit diesem Code die richtigen "IDs" f
ü
r das eigene Telefon finden und dann der Code in ESPHome anpassen, dass dort bei Pr
ä
senz der Datenpunkt in IObroker auch gesetzt wird.Jetzt noch etwas mit der Delay_Off Zeit spielen, damit es weniger sensibel reagiert.
-
Lange rumprobiert und nun ist es nutzbar. F
ü
r Interessierte:Der Code oben scheint mir nur bestimme Bestandteile des Bluetooth BLE Datenpakets auszufilter.
Nutzt man als Beispiel diesen Code in ESPHome:
esp32_ble_tracker: on_ble_advertise: - then: - lambda: |- bool redmi_note_9_pro_status = false; for (auto data : x.get_manufacturer_datas()) { if (strcmp(hexencode(data.data).c_str(), "02.15.49.01.F3.6B.E9.1A.44.B7.B3.62.FF.2E.B6.43.05.04.00.00.00.00.BF (23)") == 0) { ESP_LOGD("ble_adv", "redmi_note_9_pro found"); redmi_note_9_pro_status = true; } ESP_LOGD("ble_adv", " - %s", hexencode(data.data).c_str()); } id(redmi_note_9_pro).publish_state(redmi_note_9_pro_status); binary_sensor: - platform: template device_class: presence name: "Redmi Note 9 Pro BLE presence" id: redmi_note_9_pro filters: - delayed_off: 3sBekommt man im Logging Fenster viel mehr Informationen wie Manufacturer DATA wenn man mit der App Beacon Simulator sendet, aber auch die
ä
nderbare UUID. ACHTUNG! im Logging Fenster ist die UUID in umgekehrter Reihenfolge geschrieben![13:37:18][VV][esp32_ble_tracker:493]: Parse Result: [13:37:18][VV][esp32_ble_tracker:510]: Address: 5C:86:26:05:12:C0 (RANDOM) [13:37:18][VV][esp32_ble_tracker:512]: RSSI: -83 [13:37:18][VV][esp32_ble_tracker:513]: Name: '' [13:37:18][VV][esp32_ble_tracker:527]: Manufacturer data: 02.15.B3.6E.AB.BD.56.CA.48.6E.9E.F4.C9.2D.AC.F7.9B.5F.00.00.00.00.BF (23) [13:37:18][VV][esp32_ble_tracker:530]: iBeacon data: [13:37:18][VV][esp32_ble_tracker:531]: UUID: 5D9BF7AC-2DC9-F49E-6E48-CA56BDAB6EB3 [13:37:18][VV][esp32_ble_tracker:532]: Major: 0 [13:37:18][VV][esp32_ble_tracker:533]: Minor: 0 [13:37:18][VV][esp32_ble_tracker:534]: TXPower: -65 [13:37:18][VV][esp32_ble_tracker:543]: Adv data: 1A.FF.4C.00.02.15.B3.6E.AB.BD.56.CA.48.6E.9E.F4.C9.2D.AC.F7.9B.5F.00.00.00.00.BF (27) [13:37:18][D][ble_adv:070]: google_pixel_4a found [13:37:18][D][ble_adv:073]: - 02.15.B3.6E.AB.BD.56.CA.48.6E.9E.F4.C9.2D.AC.F7.9B.5F.00.00.00.00.BF (23)So l
ä
sst sich mit diesem Code die richtigen "IDs" f
ü
r das eigene Telefon finden und dann der Code in ESPHome anpassen, dass dort bei Pr
ä
senz der Datenpunkt in IObroker auch gesetzt wird.Jetzt noch etwas mit der Delay_Off Zeit spielen, damit es weniger sensibel reagiert.
@dieter_p
Ich beobachte das ESPHome AddOn f
ü
r den ioBroker schon lange bei Github, jedoch ist es bisher noch nicht in den "Stable"-Modus gewechselt, damit es im AddOn-Reporisitory auftaucht. Eine Anfrage
ü
ber GitHub beim Entwickler ergab die Antwort, das er da noch zwei
Ä
nderungen machen muss und das war bereits vor einem Jahr. Direkt wollte ich mir das AddOn on Github nicht installieren, da ich mir mit sowas schon mal die aktuelle Produktivumgebung zerschossen hatte.Solange also das AddOn nicht regelm
ä
ß
ig gepflegt wird, behelfe ich mich selber mit Tasmota und einem ESP32, um die G-Tags zu tracken, funktioniert auch bisher ganz praktikabel in Kombination ioBroker ... -
@dieter_p
Ich beobachte das ESPHome AddOn f
ü
r den ioBroker schon lange bei Github, jedoch ist es bisher noch nicht in den "Stable"-Modus gewechselt, damit es im AddOn-Reporisitory auftaucht. Eine Anfrage
ü
ber GitHub beim Entwickler ergab die Antwort, das er da noch zwei
Ä
nderungen machen muss und das war bereits vor einem Jahr. Direkt wollte ich mir das AddOn on Github nicht installieren, da ich mir mit sowas schon mal die aktuelle Produktivumgebung zerschossen hatte.Solange also das AddOn nicht regelm
ä
ß
ig gepflegt wird, behelfe ich mich selber mit Tasmota und einem ESP32, um die G-Tags zu tracken, funktioniert auch bisher ganz praktikabel in Kombination ioBroker ...viele Wege f
ü
hren nach Rom....Mindestens seit Jan 2022 l
ä
uft das bei mir absolute Problemlos. Habe inzwischen auch klare Favoriten bei den Beacons gefunden. Bei den G-Tags konnte ich nie finden was drinsteckt und Nordic Data (nrf... Chips) Versionen haben mich im Vergleich bzgl. Batterielaufzeit nicht
ü
berzeugt und mit voller Sendeleistung ist der Feasycom FSC-BP103B mit Dialog Semiconductor Chip mein Favorit.Bzgl. ESPHome bin ich nicht wirklich von der Implementierung angetan. Mir kommt das bzgl. installation mit ben
ö
tigtem Python sehr "zusammengebastelt" vor, dass ich als Nichtwissender bei kleinsten Abweichungen schnell in Sackgassen laufe. Entsprechend st
ö
rt mich auch, das im Fall von Updates f
ü
r eines dieser Komponenten schon das ganze Konstrukt ins Wanken geraten kann. Ist halt irgendwie nicht "aus einem Guss" die ESPHome IOBroker Integration wie ich sie empfinde. Deswegen habe ich auch meine weiteren bestehenden ESPs auf ESPEasy weiter gelassen, da dies absolute gut l
ä
uft. ESPEasy war nur bzgl. BLE Erkennung schwierig etwas zu finden und dort umzusetzen.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden