NEWS
Anwesenheitserkennung mit ESPresense
-
Hallo,
für alle interessierten ich habe dieses Youtube-Video gefunden wie man eine anwesenheitserkennung mit Espresense und iobroke rumsetzen kann.Ich habe dies mit einer Apple-Watch getestet und funktioniert.
Meine Frage wäre noch das skript hier wurde von einem User vorgeschlagen dies mit folgenden Punkten umzusetzen um die Zeitsteuerung nicht zu haben.- Triggern auf Aktualisierung des ESPresence-Datenpunkt
- Iobroker Variable-Anwesenheit auf Wahr aktualisieren
- Stoppe 30 Sekunden-Timeout
- Im Timeout: Variable-Anwesenheit auf Falsch aktualisieren
Punkt 1-2 war kein Problem allerdings verstehe ich Punkt 3 und 4 nicht wie soll dies mit einem Stop und einer im Timeout funktionieren.
Hat hier vielleicht jemand einen Vorschlag? -
@leachim200 ich glaube er meint mit "stoppe" das eine Zeit von 30 Sek gestoppt werden soll (mittels Timeout).
Und dann hast du im Blockly 2 verschiedene Programme laufen, dass eine ist Punkt 1/2 und setzt bei Aktualisierung Anwesenheit auf Wahr und das andere Punkt 3/4 lässt einen Timer laufen und setzt danach die Variable auf Falsch -
Hier mal ein Update an Interessierte. Das Skript aus dem o.g. youtube Tutorial habe ich so ähnlich umgesetzt, der Erfolg war aber eher bescheiden und wirklich funktioniert hat das alles nicht.
Ich hab das jetzt mal ganz simpel umgesetzt: Im Moment habe ich in 5 Räumen D1 Mini ESP32... mit ESPresence. Arbeitszimmer im Keller, Wohnztimmer/Flur/Wintergarten im EG, Schlafzimmer im OG und Gartenhütte (im Garten )
2 * Blockly, ein Skript das im Minutentakt prüft, ob Zeitstempel in den Räumen "abgelaufen" sind, sprich >60 Sekunden und ein 2. Skript, was bei Aktualisierung eines Zeitstempels eine Variable auf den entsprechenden Raum setzt. Das Skript läuft ziemlich gut, Finetuning mache ich dann nur noch in den D1 Minis (Maximale Grenze ab wann er zählen soll feinjustieren).Skript1:
Skript2 (nur Auszug, geht noch weiter mit anderen Räumen):
Wenn ich mit meinem Handy von einem Raum in den nächsten gehe, springt es sehr schnell um (habe mir dafür testhalber in der VIS eine Ausgabe der Variable Position_Andreas_Text eingefügt).
Off Topic: Die D1 Minis verbaue ich jetzt noch in vorhandene Geräte, 1. sieht man dann den hässlichen D1 nicht, 2. spart man sich ein zusätzliches USB Netzteil für die Stromversorgung. Ein D1 ist z.B. in einem IKEA Vindrikting mit verbaut, da ist super viel Platz drin, einen 2. baue ich grade in einen Amazon Echo Dot 2. Generation ein (der hat genügend Luft zwischen Platine und Lautsprecher).
-
@amg_666 sehr cool werde ich nachher mal testen hast du eventuell den blockly Export noch für mich ??
Beste Grüße
Silvan -
@navlis sagte in Anwesenheitserkennung mit ESPresense:
hast du eventuell den blockly Export noch für mich
Bitteschön, musst du aber noch einkürzen, weil die Skripte jeweils doppelt sind (einmal Handy, einmal Fitnessarmband):
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="schedule" id="^Vg{iwQ~PHBeu2{!WK[V" x="-1687" y="-1812"> <field name="SCHEDULE">{"time":{"start":"00:00","end":"24:00","mode":"minutes","interval":1},"period":{"days":1}}</field> <statement name="STATEMENT"> <block type="controls_if" id=".0p?cR|N8*q-e5PScU_S"> <value name="IF0"> <block type="logic_compare" id="g/;v{lR6aNfQ#!.eu5ON"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="L4w$GoBeL[OO9=Y|mjZY"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.exp:20.arbeitszimmer</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="SxuyPbN_k[GOZj$K;cVE"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="9agp,/U%z}!Bd_H8$t0-"> <field name="NUM">1</field> </shadow> <block type="time_get" id="pty?4J^?Ybk/rUf]f,.U"> <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="/xIm4DM9PIGdPmXk?)VW"> <field name="NUM">1</field> </shadow> <block type="math_number" id="D}1ae$^v0z..^t}=eJsq"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="f$HbwQ[87i5?24^.7T1k"> <value name="IF0"> <block type="logic_compare" id="~[kEF|j*UGj@3Fv_x*yH"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="Ec/;/:Z86V);HU?7:=7?"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.exp:20.flur</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="o7aWD5Sy3vFpsCBN0_r/"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="a}UlqtiDQp[2q%J/7vj9"> <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="Tm$qg72Gy{okfVD{,CYq"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="WOBWKqkfobsRSSv!t8gL"> <value name="IF0"> <block type="logic_compare" id="o;phV40E[5CHg|+!+:O%"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="[138|=cgne=kIWsMMa2$"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.exp:20.schlafzimmer</field> </block> </value> <value name="B"> <block type="math_arithmetic" id=")!|3.v4wf08LWOrA*po;"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="ZUM6W.qP9`~](Vi-0bs8"> <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="gBj9BD@L[X9hrCR^u447"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="iFbC[LWje7WEfj)=hcDm"> <value name="IF0"> <block type="logic_compare" id="JfNTFcL5N^J^MHKG#3pC"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="_@qx9d*Glms_t%Ysov{V"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.exp:20.wintergarten</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="p=),SS(S,v(sjbRx5n8+"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="NYeK$Y~N^xYOB9Kd`t.^"> <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="z]V./})y=cuymj313^K;"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="N@k[juPDG~/6[2h?GRh*"> <value name="IF0"> <block type="logic_compare" id="mqzz:a7bqh?-]GBnQ!bX"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="9-**H$oa-sY^]tKuyioG"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.exp:20.gartenhaus</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="`t!%|n}RcvkhzWHfC7!q"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="8B!O^O1^!Rl:Z9aTr+oV"> <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="u9}sn}!M[2!=Shp4/nX["> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="Q1=PLKcC5Xiunf@qxFQL"> <value name="IF0"> <block type="logic_compare" id="2%NGpO+LP@iS-c.N}/JH"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="f6x$f+;tQE6:,3hy8j;d"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.exp:20.wohnzimmer</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="^o?MzqyOo|6J-~$Hrr97"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="$5Il7RXaG(t:H9G~=/ha"> <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="s_*P+|~HNCVGg:rC:Z0_"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="NkEg6AOJshJ1p4rAJ=Tn"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Position_Andreas</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="vw4oO8.EbTYnvPVk`|z`"> <field name="NUM">-1</field> </block> </value> <next> <block type="update" id="8u3;oUE2u]YXIkO@sAkL"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Position_Andreas_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id=")n;.}OzEp1#cq:*_CC*-"> <field name="TEXT">???</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </statement> </block> </statement> </block> </statement> <next> <block type="controls_if" id="6}`;5=.Hc+jetS`?=3Ie"> <value name="IF0"> <block type="logic_compare" id="}#`9)fd@1ft9ej`B)U;`"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="rFK^Tx7I@s*k4_E?QDeD"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.mifit:f54207d89c63.arbeitszimmer</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="V%yvC(5d(dyRl2eXAcQ?"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="_Brg7nb.@@)2kFU^W%_E"> <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="aa##nkyk$J1^nGq[Qz*)"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="WDIW}(_)*6fB+bOQHj~!"> <value name="IF0"> <block type="logic_compare" id="4kG5$YBMAhq9}:g-@#x5"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="xpDVqv3[;_GpyAf$?OD3"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.mifit:f54207d89c63.flur</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="E0|}}4|c1`mdmlT8}}B_"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="3S1,f0g1iZaJ(.*X(nQ@"> <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="r:{$W~f-M{w!j%n[yp8."> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="Q%p@-1cE8/7k,ch.jusE"> <value name="IF0"> <block type="logic_compare" id="`ayI?hukL[MCPSP{jVjr"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="RWoyY.U/dx:5!~OyYa;r"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.mifit:f54207d89c63.schlafzimmer</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="]B0-8@U%I60,M_xDDB)W"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="SY@zBejVtf*W{O8J,Zw?"> <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="6a[ULlqqWu07xgDcFnNt"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="?K#OiOB#FZ?Rnzy+$%+Z"> <value name="IF0"> <block type="logic_compare" id="/o2O68]gv#yc#E1IKWwO"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="]dDy-wesF6N*vJm:*s/r"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.mifit:f54207d89c63.wintergarten</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="z8DoG?ozW-$g`tDp*Y@m"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id=",}I3/M{xh@NmIryGU~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="{Ns#M5{`BYRjL+xBUP`/"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="i*f7#CD/!=n}8*{JJa.5"> <value name="IF0"> <block type="logic_compare" id="pEtH3*f*.yCz1YpN,/12"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="Yp(k{PG|f44qi9-U-)G0"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.mifit:f54207d89c63.gartenhaus</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="^2t3n7!!j}|7N`[I9[0G"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="WGS$tZX7kA1FW_ibk6iR"> <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="+=6$u%=ivRjqBVmXH$Mb"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id=",zht8UnEHqKf5F=4y#ds"> <value name="IF0"> <block type="logic_compare" id="sP?QjHYT^$xYnZ:JUgy9"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="OGTPM.uc,q[3OQSsky5Y"> <field name="ATTR">ts</field> <field name="OID">mqtt.0.espresense.devices.mifit:f54207d89c63.wohnzimmer</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="e~2~{jwa9s/d#!A-{G+h"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="time_get" id="@5f?-;.))08:3G=ZxPKM"> <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="X9=-TEK:~UuA7iRt-@,*"> <field name="NUM">60000</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id=",Zo*`]-yZC3Q7E0u?iZ3"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Positon_Andreas_Mi_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="VXR0h1Cs4)E3~o,Jyu8k"> <field name="TEXT">???</field> </block> </value> </block> </statement> </block> </statement> </block> </statement> </block> </statement> </block> </statement> </block> </statement> </block> </next> </block> </statement> </block> <block type="on_ext" id="?ubjY4H%Tu_.NRm!=HDh" x="-1659" y="-928"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="i$Jh,vSEwaev.vDI^Rfr"> <field name="oid">mqtt.0.espresense.devices.exp:20.arbeitszimmer</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="om]%g{8,uie+%zaFbHW@"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Position_Andreas_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="URXOV_fBtGKt}CQAjgGe"> <field name="TEXT">Arbeitszimmer</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="Y4sz(0j_[({viMBVcLF?"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="rk,#)%1+dK$9$.u_e*;F"> <field name="oid">mqtt.0.espresense.devices.exp:20.flur</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="oVqzeIh}v`|VL..LSBhp"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Position_Andreas_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="$I:9j_MUrG3+?8`%XKMU"> <field name="TEXT">Flur</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="%=V$[G`c.nm`jS_(_g$N"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="GOrC-r`K:y+p3Ry+e;(R"> <field name="oid">mqtt.0.espresense.devices.exp:20.gartenhaus</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="lr:v]1l/FvHIS%!ldN6f"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Position_Andreas_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="!oRop`Q]su]ymNt0eZZ8"> <field name="TEXT">Gartenhaus</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="nr@NC^Qq]-REcf(74fj8"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="4*~=MIO_qVRb`Q,|muMk"> <field name="oid">mqtt.0.espresense.devices.exp:20.schlafzimmer</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="yan0h|:9!nxmRbR,h8=X"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Position_Andreas_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="7reVF8U?z6]_6m]1dd$P"> <field name="TEXT">Schlafzimmer</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="/^3~.m#k%8T@w0O7],tC"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="yyP=FW.3uh7=`H7[0XQ/"> <field name="oid">mqtt.0.espresense.devices.exp:20.wintergarten</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="9`=V^[M$ux$asKF19eP4"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Position_Andreas_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="bHJmaDfX)9)z4v2-SW]k"> <field name="TEXT">Wintergarten</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="Q+o,:[j|q+K9_GKtW^/h"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="9/{lgw[.u{@bOXC%noh!"> <field name="oid">mqtt.0.espresense.devices.exp:20.wohnzimmer</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="Jg.e}o3]03D@57h7Q6Jx"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Position_Andreas_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="VXrT]r4LFif-}lw-Je#Q"> <field name="TEXT">Wohnzimmer</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="on_ext" id="?,nI+L{$OgM2{HYz$$@r" x="-937" y="-937"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="%p47_hNI+:o*3|qfezT8"> <field name="oid">mqtt.0.espresense.devices.mifit:f54207d89c63.arbeitszimmer</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="U]s{~})r!)Nfu1Vzh;Z7"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Positon_Andreas_Mi_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="wqmu,pBe(]-~Tc^gbu~A"> <field name="TEXT">Arbeitszimmer</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="N[{|:UV:J0.d2FM,zfAY"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="~C{|%ly1U#Wn,`5R]H|w"> <field name="oid">mqtt.0.espresense.devices.mifit:f54207d89c63.flur</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id=".S=WvewbF5,r9Lx]Hm.@"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Positon_Andreas_Mi_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="!H3CPBQ-1|KuMBPp`U$4"> <field name="TEXT">Flur</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="v==vw*#GwAGa8*^/Bn:J"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="$+CfRN87@Dq8R~dSL3B0"> <field name="oid">mqtt.0.espresense.devices.mifit:f54207d89c63.gartenhaus</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="3vNGNRMOX]V%Ot6B`SM7"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Positon_Andreas_Mi_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="?bpPP.#U[JPSkX-::s_+"> <field name="TEXT">Gartenhaus</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="7){.[EqIF*o,}8[3Pvb3"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="_[li7_jsy~j9IgPIq1@j"> <field name="oid">mqtt.0.espresense.devices.mifit:f54207d89c63.schlafzimmer</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="8O`,]Hn@zJ00]+6-Vm[v"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Positon_Andreas_Mi_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="pVeT}Vb/~*#Kryg.oP]$"> <field name="TEXT">Schlafzimmer</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="ejmDVTPwswc%Y9M2VI4q"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="?L^3sMl6UPp;Rbn``4II"> <field name="oid">mqtt.0.espresense.devices.mifit:f54207d89c63.wintergarten</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="Y+.{qNUmb6.h8KIov[Hv"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Positon_Andreas_Mi_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="mlNIR}:pDEtzw%V1Rl+G"> <field name="TEXT">Wintergarten</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="ufpWxhA_/!g+EM9wK[*y"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="9@|*KutgWS^H%A]Ti{9U"> <field name="oid">mqtt.0.espresense.devices.mifit:f54207d89c63.wohnzimmer</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="HQU2|fkNrfTpCw`tpOVu"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Positon_Andreas_Mi_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="d+ocX.Cy-]ny;2!No1ZU"> <field name="TEXT">Wohnzimmer</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
-
Mal eine Frage: erzielt mit den ESP32 irgendjemand ein auch nur halbwegs brauchbares Ergebnis? Bei mir zeigen die Dinger z.B. bei der Entfernung irgendwas an, aber zu 95% nichts, was der realen Entfernung entspricht. Mein Handy liegt 30-50cm neben dem ESP32 - und plötzlich erkennt er das Handy als nicht mehr im Raum (bzw. in der Nähe). So ist das Zeugs für mich zumindest nicht brauchbar, aber vielleicht mache ich ja auch etwas falsch...
-
@higginsd Ne, die Teile sind schon extrem ungenau (kann man wohl auch für so Billigteile wie ESP32 nicht anders erwarten...).
In der aktuellen Version (ESPresense Version: v3.1.0) kann man aber noch im Webfrontend nachjustieren.
Mein Handy liegt grade direkt vor einem D1 Mini, laut DP ist es 63cm entfernt. Mein mifit Armband ist ca 60cm vom D1 entfernt, DP sagt 1,69m.
Also zum ermitteln ob sich was eingebucht hat ist es ok, aber Entfernungen messen kannst du imho vergessen. -
Wie habt ihr denn eure Apple Watch eingebunden bekommen? Ich habe eine Anleitung gesehen, dazu wurde allerdings ein Mac benötigt
Die Entfernung klappt bei mir relativ zuverlässig. Ich würde sagen +/- 20% -
@darkdevil so wie verdrahtet das in sein Video zeigt. Klappte wunderbar und ist sehr zuverlässig. Hab das nur in blockly ein bisschen anders gemacht als er.
-
@ciddi89 würdest du dein blockly posten?
-
@leachim200 said in Anwesenheitserkennung mit ESPresense:
@ciddi89 würdest du dein blockly posten?
Klar gerne, musst nur die Werte/Objekte anpassen. TS ist der Abstand.
Und hier der Code:
-
@higginsd
Evtl sendet das Gerät dann auch kein Bluetooth-Signal mehr? -
@amg_666 Das ist mir schon klar und ich will auch gar keine Entfernungen messen. Aber es ist natürlich für den Sinn einer Personenerkennung im Raum nicht hilfreich, wenn der Sensor plötzlich das (mein) iPhone nicht mehr erkennt und die Software im ioBroker dahinter mich dann aus dem Raum "ausbucht".
Ich habe auch noch keine brauchbare Zeit gefunden, nach der man sagen kann: "jetzt kommen keine Meldungen mehr zu dem iPhone, also ist es nicht mehr in der Nähe/im Raum". Manchmal sendet der ESP32 alle 5 Sekunden, dann wieder häufiger, tja und gelegentlich auch erst wieder nach 30-40 Sekunden. Da ist für mich dann aber schon der Zeitpunkt erreicht, ab dem ich sage, daß die Person nicht mehr im Raum ist.
Woran liegt das, daß da so unregelmäßig Meldungen kommen? Bedeutet es, daß wenn nach 5 Sekunden keine Meldung kommt, das iPhone dann auch nicht erkannt wurde?
Das eine ich mit "wenig brauchbar". Aber ok, hatte wohl zu viel erwartet. Und das "Nachjustieren" im Frontend bringt rein gar nichts, damit habe ich schon stundenlang rumprobiert.
@OliverIO Warum sollte ein iPhone plötzlich für 40 Sekunden aufhören, Bluetooth zu senden? Leuchtet mir nicht ganz ein. Wie funktioniert denn dann eigentlich der ESP32-Sensor? Er schickt jedesmal, wenn er eine Bluetooth (KeepAlive?) Nachricht von einem Gerät empfängt, welches auf der WhiteList steht, eine Nachricht über mqtt raus? Oder prüft der Sensor regelmäßig, ob noch Kontakt zu dem Device in der WhiteList besteht und sendet dann eine Nachricht?
Ich will es verstehen, um den Fehler zu finden oder meine Erkennung anzupassen.
Viele Grüße
Dirk -
@higginsd
aus energiespargründen.
warum sollte ein gerät kontinuierlich ein signal senden?das selbe haben wir bei einigen iphones (leider nicht bei allen und ein schema lässt sich aktuell nicht ableiten), die nicht ständig im wlan angemeldet sind
und erst durch ein wecksignal wieder im wlan sichtbar sind. -
@higginsd sagte in Anwesenheitserkennung mit ESPresense:
Woran liegt das, daß da so unregelmäßig Meldungen kommen?
Das kann ich dir nicht beantworten, ich vermute aber dass es am Device liegt. Mein Samsung Handy bucht sich sehr zeitnah in espresence ein wenn ich den Raum wechsle, mein Fitnesstracker ist mal schnell, mal nicht wie von dir für dein iPhone beschrieben.
-
Bin ebenfalls gerade am rumspielen mit esp32 dev kit c v4 mit espresense. Aktuell habe ich 2 Module in 2 Räumen im einsatz welche ein iphone und eine Garmin Smartwatch tracken.
Bin leider mit den Ergebnissen absolut nicht zufrieden, da die Entfernungsangaben absolut nicht stimmen. iphone und watch liegen beide ohne hindernisse an verschiedenen Positionen ca 3m vom Esp32 entfernt. Iphone sagt 1,2m, watch sagt 5,5m. Wenn ich beide geräte in den Nebenraum lege - ca 6m vom esp entfernt ändert sich die watch auf 4,9m und das iphone auf 2,5m
Habe heute einen Radarbewegungsmelder RCWL-0516 and das ESP angeschlossen, ist aber auch nicht zufriedenstellend. Auf 3m Distanz erkennt er nur massive Bewegungen.
Bin dann bei weiterer Recherche auf diesen thermischen Präsenzsensor gestossen. Wenn dich dieser einbinden lässt wäre es vielleicht eine vernünftige Lösung.
-
@stefan_tr96
Problem ist halt Funkstrahlen reflektieren mal und mal nicht. So kann jemand im Nachbar Raum eine geringere Dämpfung des Signals haben wie jemand im gleichen Raum hinter einer Pflanze
Wasser schluckt mehr von dem 2.4 ghz Signal wie andere Stoffe.
Irgendwo bei github habe ich mal eine ki. Gesehen die das lernen kann. Aber zaubern kann die auch nicht. Im Zweifel benötigt man pro Raum 2 oder gar 3 Empfänger (triangulation) um genau zu ermitteln wo sich jemand befindet -
@stefan_tr96 sagte in Anwesenheitserkennung mit ESPresense:
D6T1A02 Thermischer MEMS-Präsenzsensor
Denkst du, das klappt zuverlässig?
Vom ersten lesen her gibt das Teil die durchschnittliche Temperatur seiner Zellen aus.Was ist wenn der Raum wärmer wird während man drinnen ist? Erkennt er einen dann noch im Übergangsberech?
-
Ich denke es könnte funktionieren, habe diese info im room-Assistent projekt gefunden:
Präsenzerkennung mit Omron D6T
Eventuell wäre der Grid Eye Sensor auch eine Möglichkeit
-
@stefan_tr96 sagte in Anwesenheitserkennung mit ESPresense:
da die Entfernungsangaben absolut nicht stimmen.
Richtig, daher werte ich auch aus, wann wo sich das Device zuletzt angemeldet hat (bei welchem ESP in welchem Raum) und dann habe ich eine ziemlich zuverlässige "Ortung" (Samsung Galaxy Smartphone iom Test).
Eine thermische Präsenzmessung hat m.E. den gravierenden Nachteil, dass man nur feststellt "da ist jemand im Raum". ich möchte aber idealerweise auch wissen WER da im Raum ist (bzw wessen Handy/Fitnesstracker)