NEWS
Anwesenheitserkennung mit ESPresense
-
Habe gerade eine erste Anwesenheitserkennung in Betrieb genommen und brauchbare Beacons liegen nach meiner aktuellen Recherche bei 10-20€ je Stück.
Dabei gibt es wohl derzeit 3 brauchbare Optionen zum Innenleben.
- Nordic Semiconductor nrf528xx (wohl am häufigsten verbreitet)
- Texas Instruments CC2640
- Dialog SemiConductor DA14531 (lt. feasycom die längste Batterielebenszeit)
Ganz billiger Kram bei Beacons hält auch gerne mal nur 1 Monat. Was in den beliebten Gigaset Beacons steckt, konnte ich nicht heraus finden, gehe aber basierend auf deren Markteintritt von älteren Chipsätzen aus.
Alle Versionen findest Du zB bei feasycom im Portfolio. Ich habe leider bei AliExpress nrF52810 bei einem anderen Hardwarelöter gekauft und der Schwachpunkt ist die App fürs Smartphone, die nirgendwo funktioniert und läuft um die standard settings zu verändern. Zur App habe ich auch keine Referenz bei feasycom.
Per Standard Settings kann ich die Beacons zwar nutzen und rechne mit einer Batterielaufzeit von 1 Jahr. Mit eigenen Settings würde ich aber vermutlich das Doppelte erreichen.
-
Was ich auch öfters gelesen habe, ist dass Leute ein Xiaomi MiBand nutzen. Die halten ~2 Wochen und sind wiederaufladbar und man hat noch eine (halbwegs) smarte Uhr. Für ~20€ eine Option für jene, die noch keine (bessere) Smartwatch haben.
-
Ist das noch aktiv hier?
Ich bin auch gerade am Testen. Das mit den Beacons habe ich schon wieder aufgegeben. Ich möchte nicht extra was mit mir herum tragen.
Meine Amazfit funktioniert leider auch nicht. Sobald die mit dem Smartphone gekoppelt ist, verschwindet sie.Auf der Seite von espresence werden zwei Apps erwähnt, die Beacons emulieren und das bin ich aktuell mit zwei esp32 am Testen.
Der eine ist an meinem Schreibtisch und soll versuchsweise die Schreibtischlampe an machen, wenn ich da sitze bzw nach einer Minute wieder aus machen wenn ich aufstehe.
Gesteuert wird es von einem Blockly-Script.
Den zweiten habe ich im Wohnzimmer am Sofa. Der ist noch nicht integriert und sammelt gerade nur Daten - also die Entfernung und meldet sie per mqtt an den iobroker. -
@stefan_1969 Guten Abend,
Bin gerade durch Zufall über deinen Beitrag gestolpert bist du schon weitet in deinem blockly und wenn ja kannst du es evtl mir zu Verfügung stellen stehe auch gerade an dem Punkt
Beste Grüße
Silvan -
Ich bin auch interessiert . Wir haben aktuell das Problem, dass einige Scripte nur sinnvoll in jeder Situation funktionieren können , wenn eine anwesenheitserkennung im Raum möglich ist .
Muss aber ein Armband sein -
@smarthome2020 ich habe die app Beacon Simulator Android funktioniert eigentlich super in Verbindung mit dem esp32 und dann via mqtt die Daten an den iobroker. Nur jetzt weiß ich noch nicht so recht weiter bin noch am überlegen habe auch aktuell Nachtdienst also weniger zeit für IO. Kannst du deine skripte evtl zur Verfügung stellen für eine grobe Übersicht??
Würde mich auch aktiv an der Weiterentwicklung beteiligen. Würde gerne damit die Lichsteuerung größtenteils übernehmen und auch evtl bei meinem Putzwahn im Haus, die Musik mich verfolgen lassen.
Und halt eine generelle zusätzliche anwesenheitserkennung..LG
Silvan -
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.