Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Tipp] Anwesenheit mit unifi-Adapter

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Tipp] Anwesenheit mit unifi-Adapter

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

      Hallo,

      habe meine Anwesenheit mit folgendem Blockly gelöst, allerdings nicht über unifi-Adapter. Aber vielleicht hilf es ja.

      8d1d6f0b-2f33-4d6f-ba7e-cb17b3c56576-image.png

      Allerdings lese ich die eingeloggten Telefone über die Fritzbox aus.

      4f7cee05-f215-486c-875c-2338e102bdad-image.png

      Variable habe ich unter admin angelegt.

      ea5168f0-63a9-4a8b-a01b-0a52897a0d3d-image.png

      Gruß
      Egbert

      1 Reply Last reply Reply Quote 0
      • oek
        oek last edited by

        Guten Morgen,

        ich habe einen ähnlichen Ansatz mit dem Wert "Last seen by UAP" über die Listenfunktionen realisiert und setze/plausibilisiere damit eine entsprechende Systemvariable in Homematic (die ansonsten von den Handys aus über Automagic gesteuert wird):

        2019-04-20_08h03_19.png

        Der Server auf dem iobroker läuft ist recht potent ;-), ich merke von den Scripts - es werden u. a. zwei Handys mit dem hier gezeigten Script beobachtet - keine Änderung an den Ressourcen.

        Schöne Ostern,
        Marko

        smile 1 Reply Last reply Reply Quote 0
        • smile
          smile @oek last edited by

          @oek Hi, dein Blockly sieht umfangreich aber gut aus 🙂 Könntest du davon einen Export machen? Das wäre total klasse.

          Und wie ist deine Erfahrung in Bezug auf die Zuverlässigkeit?
          Ich überlege selber ob ich die Anwesenheit über Tasker oder Automagic (Anhand des verbundenen WLANs und dann der Ansteuerung einer Homematic Variable) realisiere oder über meinen Ubiquiti.

          Danke und viele Grüße an alle unif-begeisterten hier 🙂

          1 Reply Last reply Reply Quote 0
          • smile
            smile last edited by

            Ich hab mir ein eigenes Script überlegt. Da ich gerne mit Timern arbeite und damit bereits sehr viele zuverlässige Scripte erstellen konnte, habe ich es nun auch hier umgesetzt. Anbei das Blockly dazu:

            javascript - ioBroker - Mozilla Firefox 2019-07-18 22.59.26.png

            Blockly-Export:

            [s=]
            <xml xmlns="http://www.w3.org/1999/xhtml">
              <block type="schedule" id="[D!Y|Y0!/s}5S#QowHdi" x="188" y="38">
                <field name="SCHEDULE">*/12 * * * * *</field>
                <statement name="STATEMENT">
                  <block type="controls_if" id="09V`$.8rpC5DkV?F4VIC">
                    <value name="IF0">
                      <block type="logic_compare" id="W2[Rih^Ko#XWUXG2Gd6:">
                        <field name="OP">GT</field>
                        <value name="A">
                          <block type="get_value" id="[AXuEaaR%nFRK@ALkWFI">
                            <field name="ATTR">val</field>
                            <field name="OID">javascript.0.Anwesenheit_Hendrik_Timer</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="math_number" id="j.[+-(9fhXJ%%?!kxg|b">
                            <field name="NUM">0</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="control" id="-Vt7U[Lj/mQ9]qu^eWaS">
                        <mutation delay_input="false"></mutation>
                        <field name="OID">javascript.0.Anwesenheit_Hendrik_Timer</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_arithmetic" id="{toQ*0{*#`a!7il4~t){">
                            <field name="OP">MINUS</field>
                            <value name="A">
                              <shadow type="math_number" id="G3MyA-[N_La]{hQgq)$H">
                                <field name="NUM">1</field>
                              </shadow>
                              <block type="get_value" id="j)l;E|8GC.YQPq+?P{zN">
                                <field name="ATTR">val</field>
                                <field name="OID">javascript.0.Anwesenheit_Hendrik_Timer</field>
                              </block>
                            </value>
                            <value name="B">
                              <shadow type="math_number" id="2m7hF)0D?+Rt(pQF^6+0">
                                <field name="NUM">1</field>
                              </shadow>
                            </value>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <next>
                      <block type="controls_if" id="PtQdOf!qs+T.pqwMEC9U">
                        <value name="IF0">
                          <block type="logic_compare" id="dPR+r3AudsDe8D@Qoh_2">
                            <field name="OP">GT</field>
                            <value name="A">
                              <block type="get_value" id="61|EmWSN3zEg?oSmw{/{">
                                <field name="ATTR">val</field>
                                <field name="OID">javascript.0.Anwesenheit_Vanessa_Timer</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="math_number" id="VF6diEdQN_*e[k2IMdWh">
                                <field name="NUM">0</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="control" id="^5gh*[Q?u072[x3zKo;h">
                            <mutation delay_input="false"></mutation>
                            <field name="OID">javascript.0.Anwesenheit_Vanessa_Timer</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_arithmetic" id="UF$A}ff[DtF2;Fh^x7FN">
                                <field name="OP">MINUS</field>
                                <value name="A">
                                  <shadow type="math_number" id="G3MyA-[N_La]{hQgq)$H">
                                    <field name="NUM">1</field>
                                  </shadow>
                                  <block type="get_value" id="=TpjDNG?PP[m6=nzs.$E">
                                    <field name="ATTR">val</field>
                                    <field name="OID">javascript.0.Anwesenheit_Vanessa_Timer</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <shadow type="math_number" id="^.81S99^:GJ-3|`JV:O~">
                                    <field name="NUM">1</field>
                                  </shadow>
                                </value>
                              </block>
                            </value>
                          </block>
                        </statement>
                      </block>
                    </next>
                  </block>
                </statement>
                <next>
                  <block type="on" id="i-mc0I}G=t`U40x9dTJ3">
                    <field name="OID">unifi.0.default.clients.08:c5:e1:06:15:8b._uptime_by_uap</field>
                    <field name="CONDITION">any</field>
                    <field name="ACK_CONDITION"></field>
                    <statement name="STATEMENT">
                      <block type="control" id="EPZ5ubSzZFM--WJQ*i$k">
                        <mutation delay_input="false"></mutation>
                        <field name="OID">javascript.0.Anwesenheit_Hendrik_Timer</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="LM[`QPMY{{aX`L]sq-Jh">
                            <field name="NUM">12</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <next>
                      <block type="on" id="euBJJ@@4_pxk3^=0{y~T">
                        <field name="OID">unifi.0.default.clients.78:53:64:01:06:ec._uptime_by_uap</field>
                        <field name="CONDITION">any</field>
                        <field name="ACK_CONDITION"></field>
                        <statement name="STATEMENT">
                          <block type="control" id="V6b$]:-l:|EJ3DjsyuK0">
                            <mutation delay_input="false"></mutation>
                            <field name="OID">javascript.0.Anwesenheit_Vanessa_Timer</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_number" id=".!NOP4LLP*-7)p{-[k~w">
                                <field name="NUM">12</field>
                              </block>
                            </value>
                          </block>
                        </statement>
                        <next>
                          <block type="on" id=".P:*}Jt__`wOO;t(`Vw5">
                            <field name="OID">javascript.0.Anwesenheit_Hendrik_Timer</field>
                            <field name="CONDITION">ne</field>
                            <field name="ACK_CONDITION"></field>
                            <statement name="STATEMENT">
                              <block type="controls_if" id="J4tf_{/X=hCM2#pMH{gn">
                                <value name="IF0">
                                  <block type="logic_compare" id="0omMjW%G9iZNe(uPhe`-">
                                    <field name="OP">EQ</field>
                                    <value name="A">
                                      <block type="get_value" id="sP213T)5iwktU.4l8y$m">
                                        <field name="ATTR">val</field>
                                        <field name="OID">javascript.0.Anwesenheit_Hendrik_Timer</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <block type="math_number" id="_k!Gemf]tkfv{Wgh%k3f">
                                        <field name="NUM">0</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="controls_if" id="%GVO=f$jr?1)X]mc`;nn">
                                    <value name="IF0">
                                      <block type="logic_compare" id="/)`sYRGP|CW5|)zZdab:">
                                        <field name="OP">EQ</field>
                                        <value name="A">
                                          <block type="get_value" id="A=a~vktFphmmTsVgUJZy">
                                            <field name="ATTR">val</field>
                                            <field name="OID">javascript.0.Anwesenheit_Hendrik</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <block type="logic_boolean" id="t$tOiEM=U(o+e6]G|QZI">
                                            <field name="BOOL">TRUE</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="control" id="OTDe^dxfr8vh:Jj8QZ-}">
                                        <mutation delay_input="false"></mutation>
                                        <field name="OID">javascript.0.Anwesenheit_Hendrik</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="logic_boolean" id="mIkFEj]H,T#;d5br5g#W">
                                            <field name="BOOL">FALSE</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="pushover" id="qWgEtK+uUp*G[RDcFDhK">
                                            <field name="INSTANCE">.0</field>
                                            <field name="SOUND"></field>
                                            <field name="PRIORITY">0</field>
                                            <field name="LOG"></field>
                                            <value name="MESSAGE">
                                              <shadow type="text" id=")oIACTM=FO5|/QvxOtPb">
                                                <field name="TEXT">Hendrik abwesend</field>
                                              </shadow>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                  </block>
                                </statement>
                                <next>
                                  <block type="controls_if" id="n_(H,k3JYYAjpU2i~.)h">
                                    <value name="IF0">
                                      <block type="logic_compare" id="Qk$wQBL+QGe}-:Mp0H(/">
                                        <field name="OP">GT</field>
                                        <value name="A">
                                          <block type="get_value" id="=9pJU0Ttw;*kLEgZ9+ZI">
                                            <field name="ATTR">val</field>
                                            <field name="OID">javascript.0.Anwesenheit_Hendrik_Timer</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <block type="math_number" id="mSAB$bhJyL}YMS;oBb/9">
                                            <field name="NUM">0</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="controls_if" id="Y0?PAW]l=MU@bR*6L=^o">
                                        <value name="IF0">
                                          <block type="logic_compare" id="G,]_EHms-,z*34-Hz*).">
                                            <field name="OP">EQ</field>
                                            <value name="A">
                                              <block type="get_value" id="HKfV6^Dd`BltVL1a=Gki">
                                                <field name="ATTR">val</field>
                                                <field name="OID">javascript.0.Anwesenheit_Hendrik</field>
                                              </block>
                                            </value>
                                            <value name="B">
                                              <block type="logic_boolean" id="hh)5FCtFrbnxN_u|w)I+">
                                                <field name="BOOL">FALSE</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="control" id=":}~fifR6*yg6VE|61lp%">
                                            <mutation delay_input="false"></mutation>
                                            <field name="OID">javascript.0.Anwesenheit_Hendrik</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="ezPL{[{u2q08nOBVcd{`">
                                                <field name="BOOL">TRUE</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="pushover" id="}xX?!6XG~18r_L~OiNnH">
                                                <field name="INSTANCE">.0</field>
                                                <field name="SOUND"></field>
                                                <field name="PRIORITY">0</field>
                                                <field name="LOG"></field>
                                                <value name="MESSAGE">
                                                  <shadow type="text" id="lN0[ln]?5*NiZ62(e;]|">
                                                    <field name="TEXT">Hendrik ist da!</field>
                                                  </shadow>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                  </block>
                                </next>
                              </block>
                            </statement>
                            <next>
                              <block type="on" id="#jSK0DHOQxx}I[*F,j7F">
                                <field name="OID">javascript.0.Anwesenheit_Vanessa_Timer</field>
                                <field name="CONDITION">ne</field>
                                <field name="ACK_CONDITION"></field>
                                <statement name="STATEMENT">
                                  <block type="controls_if" id="ygJTGQFyIMPCJm8WCZkk">
                                    <value name="IF0">
                                      <block type="logic_compare" id="*Hq9oDX(e0k+0xsjoBx^">
                                        <field name="OP">EQ</field>
                                        <value name="A">
                                          <block type="get_value" id="Jc0bz%.b1X1($AzSrux3">
                                            <field name="ATTR">val</field>
                                            <field name="OID">javascript.0.Anwesenheit_Vanessa_Timer</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <block type="math_number" id="{bBcyWjs)M^Xq-5gBtqR">
                                            <field name="NUM">0</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="controls_if" id="#YN(7AsvKhstaO]=,o!|">
                                        <value name="IF0">
                                          <block type="logic_compare" id="A$pC_$)%cO5)WpY?p0H6">
                                            <field name="OP">EQ</field>
                                            <value name="A">
                                              <block type="get_value" id="5/3,vvrF`k1.7fmJdCXz">
                                                <field name="ATTR">val</field>
                                                <field name="OID">javascript.0.Anwesenheit_Vanessa</field>
                                              </block>
                                            </value>
                                            <value name="B">
                                              <block type="logic_boolean" id="@bxpq~SVcXJH;Nd92_md">
                                                <field name="BOOL">TRUE</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="control" id="OPVmtZ*jM3g`lE?Yu(^M">
                                            <mutation delay_input="false"></mutation>
                                            <field name="OID">javascript.0.Anwesenheit_Vanessa</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="_m~!;5w$FT!q*-~L^(75">
                                                <field name="BOOL">FALSE</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="pushover" id="Gnm/hV2Y*9,8oTs!G21i">
                                                <field name="INSTANCE">.0</field>
                                                <field name="SOUND"></field>
                                                <field name="PRIORITY">0</field>
                                                <field name="LOG"></field>
                                                <value name="MESSAGE">
                                                  <shadow type="text" id=")q4h$Z+WQvU4|-,-Yacu">
                                                    <field name="TEXT">Vanessa abwesend</field>
                                                  </shadow>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                    <next>
                                      <block type="controls_if" id=":rFigzgdB2J/Ny)d5_BC">
                                        <value name="IF0">
                                          <block type="logic_compare" id="N4O0y?G5)k[Y-F]h9cS]">
                                            <field name="OP">GT</field>
                                            <value name="A">
                                              <block type="get_value" id="hfX3FceQa,3#Nmuk8-#F">
                                                <field name="ATTR">val</field>
                                                <field name="OID">javascript.0.Anwesenheit_Vanessa_Timer</field>
                                              </block>
                                            </value>
                                            <value name="B">
                                              <block type="math_number" id="aj0=UiMV`:RHe]BEL:Lm">
                                                <field name="NUM">0</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="controls_if" id="i1m/3xhNdxjb3x%njq)v">
                                            <value name="IF0">
                                              <block type="logic_compare" id="nJ~ZN)GOZ66]@IEHvKYV">
                                                <field name="OP">EQ</field>
                                                <value name="A">
                                                  <block type="get_value" id="M)i}kcSUJ.Nw);=F(N3g">
                                                    <field name="ATTR">val</field>
                                                    <field name="OID">javascript.0.Anwesenheit_Vanessa</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <block type="logic_boolean" id="+|[rq/2#)KkDjK;+Ooj%">
                                                    <field name="BOOL">FALSE</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <statement name="DO0">
                                              <block type="control" id="FHL5CEn%3S,!Nc2_2.}C">
                                                <mutation delay_input="false"></mutation>
                                                <field name="OID">javascript.0.Anwesenheit_Vanessa</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="logic_boolean" id="pn_%6Vg!zANeoD*j$[c/">
                                                    <field name="BOOL">TRUE</field>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="pushover" id="Tn2?PSoHV2@]L{N)h@5~">
                                                    <field name="INSTANCE">.0</field>
                                                    <field name="SOUND"></field>
                                                    <field name="PRIORITY">0</field>
                                                    <field name="LOG"></field>
                                                    <value name="MESSAGE">
                                                      <shadow type="text" id="57KV!iKw.b:O7e0tKX05">
                                                        <field name="TEXT">Vanessa ist jetzt da!</field>
                                                      </shadow>
                                                    </value>
                                                  </block>
                                                </next>
                                              </block>
                                            </statement>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                                <next>
                                  <block type="on_ext" id="s,]7f|j$zYi]1(Qgzy92">
                                    <mutation items="2"></mutation>
                                    <field name="CONDITION">ne</field>
                                    <field name="ACK_CONDITION"></field>
                                    <value name="OID0">
                                      <shadow type="field_oid" id="gWEM2j.7w6-btXItc!f^">
                                        <field name="oid">javascript.0.Anwesenheit_Hendrik</field>
                                      </shadow>
                                    </value>
                                    <value name="OID1">
                                      <shadow type="field_oid" id="GZ]~t;0!LkYcy8KnZ^4|">
                                        <field name="oid">javascript.0.Anwesenheit_Vanessa</field>
                                      </shadow>
                                    </value>
                                    <statement name="STATEMENT">
                                      <block type="controls_if" id="XgP]FdJSEyU;^)c{4C@L">
                                        <mutation else="1"></mutation>
                                        <value name="IF0">
                                          <block type="logic_operation" id="5o%iG_3Sob)QTy^CIj|F" inline="false">
                                            <field name="OP">AND</field>
                                            <value name="A">
                                              <block type="logic_compare" id="ZUC$T?);^:ZliW^8t}nd">
                                                <field name="OP">EQ</field>
                                                <value name="A">
                                                  <block type="get_value" id="vJ{;;BQNU]]g;#yOV(Un">
                                                    <field name="ATTR">val</field>
                                                    <field name="OID">javascript.0.Anwesenheit_Vanessa</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <block type="logic_boolean" id="YA@lKjn[U(13F[hmc6pK">
                                                    <field name="BOOL">TRUE</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <value name="B">
                                              <block type="logic_compare" id="uqmBtBe{^f21=e;_1YCV">
                                                <field name="OP">EQ</field>
                                                <value name="A">
                                                  <block type="get_value" id="bkZ|AnJ7e!N7jw{${V|*">
                                                    <field name="ATTR">val</field>
                                                    <field name="OID">javascript.0.Anwesenheit_Hendrik</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <block type="logic_boolean" id="-0$lte2;osWyIpAj(af)">
                                                    <field name="BOOL">TRUE</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="control" id="gdVfr-gdcrciSig8;;|K">
                                            <mutation delay_input="false"></mutation>
                                            <field name="OID">javascript.0.Anwesenheit</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="KS8.ms_`^qat(ul+/WCb">
                                                <field name="BOOL">TRUE</field>
                                              </block>
                                            </value>
                                          </block>
                                        </statement>
                                        <statement name="ELSE">
                                          <block type="control" id="^3F0qVJ$Spkj!l5;Efcr">
                                            <mutation delay_input="false"></mutation>
                                            <field name="OID">javascript.0.Anwesenheit</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="%p}#q-*%|OcKKJ%iV]Gd">
                                                <field name="BOOL">FALSE</field>
                                              </block>
                                            </value>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </xml>
            [/s]
            
            1 Reply Last reply Reply Quote 0
            • M
              martinschm @pix last edited by martinschm

              @pix said in [Tipp] Anwesenheit mit unifi-Adapter:

              Hallo,
              vielen Dank für das Skript.
              Ich habe es für meine Zwecke angepasst und will das auch hier teilen.
              Meine Zwecke heisst: Mehrere Nutzer. Dazu werden die Daten der Nutzer oben im Objekt wificlients eingegeben, Skript macht den Rest.
              Unter
              javascript.[instanz].Unifi.Anwesenheit.UAP.[Name_des_Nutzers]

              wird dann der Status true oder false gesetzt. Dieser Datenpunkt wird dann mit History/Influx geloggt.
              /* Weiteres Skript zur Überwachung des Uptime Datenpunktes im Unifi-Adapter fragt alle zwei Minuten den Datenpunkt _uptime_by_uap des eingebuchten Gerätes ab wenn keine Änderung, dann Anwesenheit = false 18.10.2017 erstellt von lobomau auf Basis des Unifi Adapters von jens_maus http://forum.iobroker.net/viewtopic.php?f=30&t=8556#p90883 19.10.2017 angepasst von Pix (mehrere Geräte) / const wificlients = { "devices": [ { "nutzer": "Tom", "mac": "8a:8b:8c:8f:8g:ab", "name": "Kater's iPhone", "geraet": "iPhone" }, { "nutzer": "Jerry", "mac": "e1:e2:e3:e4:e5:e6", "name": "Maeusephone", "geraet": "iPhone" } ] // Ende devices }; const logging = false; const fC = false; // forceCreation für createState // Ab hier nix mehr ändern ++++++++++++++++++++++ function createStates() { for (var j=0; j<wificlients.devices.length; j++) { var idUAP = "javascript." + instance + ".Unifi.Anwesenheit.UAP." + wificlients.devices[j].nutzer; createState(idUAP, false, fC, { name: 'WLAN Anwesenheit (UAP) - ' + wificlients.devices[j].nutzer, desc: 'Anwesenheit über Uptime-Datenpunkt des Unifi Adapters', type: 'boolean', def: false, role: 'indicator', custom: { "influxdb.0": { "enabled": true, "changesOnly": false, "debounce": "", "retention": 63072000 // 2 Jahre } } }); } } function checkUAP () { for (var i=0; i<wificlients.devices.length; i++) { // UAP abfragen var lchange = getState("unifi.0.default.clients." + wificlients.devices[i].mac + "._uptime_by_uap").lc; var uap_anwesenheit = (lchange - ((new Date().getTime()) - 120000) < 0 === true) ? false : true; if (logging) log('Gerät ' + wificlients.devices[i].geraet + ' von ' + wificlients.devices[i].nutzer + ' ist ' + uap_anwesenheit); // Datenpunkt verzögert beschreiben var idUAP = "javascript." + instance + ".Unifi.Anwesenheit.UAP." + wificlients.devices[i].nutzer; setStateDelayed(idUAP, uap_anwesenheit, 1000); } } // alle 2min schedule("/2 * * * ", checkUAP); // bei Skriptstart createStates(); // Datenpunkte erstmal anlegen setTimeout(function() { // 2s verzögert Abfrage erstmals ausführen checkUAP(); }, 21000);
              Viel Spaß,
              Gruß
              Pix

              Hi @pix,
              hab mir dein Skript kopiert und die Client infos angepasst. Außerdem den Teil mit custom auskommentiert, da ich kein influx benutze. Leider werden die Datenpunkte nicht angelegt. Bin grade über die Cloud mit meiner ioBroker Instanz verbunden, aber das sollte ja kein Unterschied machen. Fehlermeldungen sehe ich im Log auch nicht.

              Habe grade im Browser das Fenster neu geladen und die Datenpunkte sind aufgetaucht. Das einfache Neuladen des Objektbaums scheint nicht zu reichen.

              1 Reply Last reply Reply Quote 0
              • O
                oroettger last edited by oroettger

                Moin,

                ich erziele sehr genaue Ergebnisse mit "last_seen_by_uap" und folgendem einfachen Script, dass eine Homematic Variable umschaltet:
                Screenshot 2019-08-07 11.51.26.png

                das Abfrageintervall des Unifi Adapters beträgt 60 sek. so lange ein Handy in Reichweite und mit dem Wlan verbunden ist, ändert sich der Wert (ein Zeitstempel) im unifi Adapter bei jeder Abfrage des Adapters. Wenn sich der Wert länger als 60 sek. nicht ändert, ist das Handy nicht mehr mit dem Wlan verbunden.

                Fehler: seit 10 Tagen keine
                Erkennungsgeschwindigkeit:
                Anwesend: zwischen sofort und 60 sek. (hängt vom Abfrageintervall des unifi Adapters ab.)
                Abwesend: 100 sek.

                Ich denke, das ist bisher die ressourcenschonendste Scriptvariante. Mir reicht eine Detektierung innerhalb von 60 bzw. 100 sek. Um diese Zeit zu reduzieren, müsste man das Abfrageinterval des unifi Adapters verkürzen.

                Nashra Y Woody C T 5 Replies Last reply Reply Quote 2
                • Nashra
                  Nashra Most Active Forum Testing @oroettger last edited by

                  @oroettger sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                  Moin,

                  ich erziele sehr genaue Ergebnisse mit "last_seen_by_uap" und folgendem einfachen Script, dass eine Homematic Variable umschaltet:
                  Screenshot 2019-08-07 11.51.26.png

                  das Abfrageintervall des Unifi Adapters beträgt 60 sek. so lange ein Handy in Reichweite und mit dem Wlan verbunden ist, ändert sich der Wert (ein Zeitstempel) im unifi Adapter bei jeder Abfrage des Adapters. Wenn sich der Wert länger als 60 sek. nicht ändert, ist das Handy nicht mehr mit dem Wlan verbunden.

                  Fehler: seit 10 Tagen keine
                  Erkennungsgeschwindigkeit:
                  Anwesend: zwischen sofort und 60 sek. (hängt vom Abfrageintervall des unifi Adapters ab.)
                  Abwesend: 100 sek.

                  Ich denke, das ist bisher die ressourcenschonendste Scriptvariante. Mir reicht eine Detektierung innerhalb von 60 bzw. 100 sek. Um diese Zeit zu reduzieren, müsste man das Abfrageinterval des unifi Adapters verkürzen.

                  Super Idee. Schnell nachgebaut und es funktioniert wirklich sauber 👍
                  Endlich eine vernünftige Erkennung der Handy's

                  B 1 Reply Last reply Reply Quote 0
                  • Y
                    Yoschi147 @oroettger last edited by Yoschi147

                    @oroettger

                    Hi,

                    habe dein Script mal nachgebaut, was auch teilweise Funktioniert. Nur habe ich das Problem das Anwesende Geräte die WLAN Energiesparmodus verwenden (Sind im WLAN angemeldet aber nicht aktiv, also kein Trafic) im Unifi Adapter unter den Objekten das Feld "last_seen_by_uap" sich nicht verändert. Womit das Script von einer Abwesenheit ausgeht.

                    Im Unifi Controller selbst steht bei dem Gerät "Letzte Aktivität Gerade eben"
                    Aber in den iobroker Objekten ändert sich der Wert nicht?

                    Hat das Problem noch jemand?

                    Das andere Script mit der uptime by uap konnte ich leider auch nicht nachbauen hier habe ich das gleiche Problem wie @hanan in seinem Post vom 17.4.2019

                    PS: gerade gesenen das sich der Wert von uptime bei dem Gerät auch nicht ändert. 😞
                    Scheint also ein generelles Problem mit Geräten zu geben die zwar anwesend und eingebucht sind aber den WLAN Eco Modus nutzen?

                    Jemand eine Idee?

                    Danke im Vorraus 🙂

                    1 Reply Last reply Reply Quote 0
                    • Woody
                      Woody @oroettger last edited by

                      @oroettger Ich habe das Script mal nachgebaut, da ich es zur Steuerung vom Garagentor verwende. Mein Fahrzeug hat WLAN und bucht sich bei der Ankunft ins WLAN ein. Das funktioniert auch gut, aber da sich ja der Wert _last_seen_by_uap ständig ändert, öffnet/schließt das Garagentor ständig. Gibts eigentlich die Möglichkeit das Script nur einmal auszuführen. Sorry bin Anfänger, und vielleicht kann mir ja wer weiterhelfen.

                      LG
                      Erich

                      crunchip 1 Reply Last reply Reply Quote 0
                      • crunchip
                        crunchip Forum Testing Most Active @Woody last edited by

                        @Woody vielleicht möchtest du da mal rein sehen, Ressourcen schonender ohne den Adapter
                        https://forum.iobroker.net/topic/25066/unifi-wlan-script-2-mit-anwesenheitskontrolle

                        1 Reply Last reply Reply Quote 0
                        • B
                          Borkenkaefer @Nashra last edited by

                          @Nashra said in [Tipp] Anwesenheit mit unifi-Adapter:

                          @oroettger sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                          Moin,

                          ich erziele sehr genaue Ergebnisse mit "last_seen_by_uap" und folgendem einfachen Script, dass eine Homematic Variable umschaltet:
                          Screenshot 2019-08-07 11.51.26.png

                          das Abfrageintervall des Unifi Adapters beträgt 60 sek. so lange ein Handy in Reichweite und mit dem Wlan verbunden ist, ändert sich der Wert (ein Zeitstempel) im unifi Adapter bei jeder Abfrage des Adapters. Wenn sich der Wert länger als 60 sek. nicht ändert, ist das Handy nicht mehr mit dem Wlan verbunden.

                          Fehler: seit 10 Tagen keine
                          Erkennungsgeschwindigkeit:
                          Anwesend: zwischen sofort und 60 sek. (hängt vom Abfrageintervall des unifi Adapters ab.)
                          Abwesend: 100 sek.

                          Ich denke, das ist bisher die ressourcenschonendste Scriptvariante. Mir reicht eine Detektierung innerhalb von 60 bzw. 100 sek. Um diese Zeit zu reduzieren, müsste man das Abfrageinterval des unifi Adapters verkürzen.

                          Super Idee. Schnell nachgebaut und es funktioniert wirklich sauber 👍
                          Endlich eine vernünftige Erkennung der Handy's

                          Hi zusammen,

                          bin auch noch blutiger Anfänger und habe das mal nachgebaut. Funktioniert auch gut, aber es löst auch aus wenn sich mein Handy an einem anderen AP anmeldet (habe derzeit zwei). Gibt es hier eine Lösung ?

                          Besten Dank schon einmal und Gruß
                          Andreas

                          Nashra 1 Reply Last reply Reply Quote 0
                          • Nashra
                            Nashra Most Active Forum Testing @Borkenkaefer last edited by

                            @Borkenkaefer sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                            @Nashra said in [Tipp] Anwesenheit mit unifi-Adapter:

                            @oroettger sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                            Moin,

                            ich erziele sehr genaue Ergebnisse mit "last_seen_by_uap" und folgendem einfachen Script, dass eine Homematic Variable umschaltet:
                            Screenshot 2019-08-07 11.51.26.png

                            das Abfrageintervall des Unifi Adapters beträgt 60 sek. so lange ein Handy in Reichweite und mit dem Wlan verbunden ist, ändert sich der Wert (ein Zeitstempel) im unifi Adapter bei jeder Abfrage des Adapters. Wenn sich der Wert länger als 60 sek. nicht ändert, ist das Handy nicht mehr mit dem Wlan verbunden.

                            Fehler: seit 10 Tagen keine
                            Erkennungsgeschwindigkeit:
                            Anwesend: zwischen sofort und 60 sek. (hängt vom Abfrageintervall des unifi Adapters ab.)
                            Abwesend: 100 sek.

                            Ich denke, das ist bisher die ressourcenschonendste Scriptvariante. Mir reicht eine Detektierung innerhalb von 60 bzw. 100 sek. Um diese Zeit zu reduzieren, müsste man das Abfrageinterval des unifi Adapters verkürzen.

                            Super Idee. Schnell nachgebaut und es funktioniert wirklich sauber 👍
                            Endlich eine vernünftige Erkennung der Handy's

                            Hi zusammen,

                            bin auch noch blutiger Anfänger und habe das mal nachgebaut. Funktioniert auch gut, aber es löst auch aus wenn sich mein Handy an einem anderen AP anmeldet (habe derzeit zwei). Gibt es hier eine Lösung ?

                            Besten Dank schon einmal und Gruß
                            Andreas

                            Hatte ich bei mir nicht. Haben alle deine AP's den gleichen Kanal?
                            Nutze mittlerweile dies https://forum.iobroker.net/topic/25066/unifi-wlan-script-2-mit-anwesenheitskontrolle

                            B 1 Reply Last reply Reply Quote 0
                            • B
                              Borkenkaefer @Nashra last edited by

                              @Nashra nope die stehen beide auf Kanal Auto und nehmen verschiedene. Ich bin leider programmiertechnisch eine Niete daher habe ich noch großen Respekt vor dieser Script Variante.

                              crunchip Nashra 2 Replies Last reply Reply Quote 0
                              • crunchip
                                crunchip Forum Testing Most Active @Borkenkaefer last edited by

                                @Borkenkaefer sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                                @Nashra nope die stehen beide auf Kanal Auto und nehmen verschiedene. Ich bin leider programmiertechnisch eine Niete daher habe ich noch großen Respekt vor dieser Script Variante.

                                Ist keine Große Sache, eigentlich nur deine Zugangsdaten eintragen, deine drei-vier Auswahl Möglichkeiten nach Bedarf anwählen und der Rest sollte automatisch laufen. Zur Visualisierung is da auch die ein oder Andere Variante zu finden. Ist eigentlich alles gut erklärt und bei Fragen wird dir sicherlich geholfen.

                                1 Reply Last reply Reply Quote 0
                                • Nashra
                                  Nashra Most Active Forum Testing @Borkenkaefer last edited by

                                  @Borkenkaefer sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                                  @Nashra nope die stehen beide auf Kanal Auto und nehmen verschiedene. Ich bin leider programmiertechnisch eine Niete daher habe ich noch großen Respekt vor dieser Script Variante.

                                  Stelle die alle mal auf einen festen und gleichen Kanal im 2,4 und 5 GHz Bereich

                                  1 Reply Last reply Reply Quote 0
                                  • smile
                                    smile last edited by

                                    Hat es schonmal jemand von euch mit dem Werte "idletime" versucht?
                                    Bei mir so wie es aussieht steigt diese nie höher als ca. 5 solange das Smartphone im WLAN noch registriert ist.
                                    Damit wäre dann ja eine Anwesenheitssteuerung super einfach zu lösen.

                                    1 Reply Last reply Reply Quote 0
                                    • C
                                      Communicator @oroettger last edited by

                                      @oroettger ich denke es müsste noch eine Kombination zwischen _last_seen_by_uap und _ideltime her. Es macht m.E. einen Unterschied, ob man sich aus dem WLAN-Empfangsbereich heraus bewegt oder einfach das WLAN am Handy ausschaltet.

                                      1 Reply Last reply Reply Quote 0
                                      • 6
                                        688attacksub last edited by

                                        Ich habe 3 Unifi APs und würde auch gerne eine ioBroker-Integration haben. Ich habe mir über Github die Beta des Adapters installiert, aber - und das ist meine Frage - wo finde ich den Adapter? Ich sehe ihn weder unter Instanzen noch sehe ich einen Eintrag unter Objekte. Er ist aber installiert.
                                        Sorry, sicher eine unschlaue Frage, aber ich bin Beginner.
                                        Danke!

                                        K 1 Reply Last reply Reply Quote 0
                                        • K
                                          Kueppert @688attacksub last edited by

                                          @688attacksub du musst eine Instanz hinzufügen. Dafür unter dem Reiter Adapter hinten bei dem Adapter auf + klicken.
                                          fc3a6dca-8610-42cb-8bb6-364e0355fee2-grafik.png

                                          1 Reply Last reply Reply Quote 0
                                          • 6
                                            688attacksub last edited by

                                            Ok. Ich hatte 0.5.0-beta.2 installiert, aber trotzdem auf das "+" geklickt. Nun sehe ich alles und kann mich an die Konfig machen. Stupid me. Dankeschön!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            975
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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