Anwesenheit HC3

Hallo, ich wollte mal fragen wie ihr so alle die Erkennung der Anwesenheit in Haus oder Wohnung gestaltet habt? Ich hab jetzt auch seit 3 Wochen eine Lösung über Wlan und MAC-Adressen Erkennung. Die ich natürlich auf Wunsch auch posten.

Gruß Robert

Hallo Racer98 funktioniert die auch mit einem IPhone ? Gruß Sven

@sven_gomann ja die funktioniert auch mit dem Iphone. Obwohl ich feststellen musste das sie ab dem Iphone X besser funktioniert als z. B. mit dem 7er.

{
  conditions = { {
      isTrigger = true,
      operator = "matchInterval",
      property = "cron",
      type = "date",
      value = {
        date = { "18", "10", "19", "1", "*", "2021" },
        interval = 400
      }
    } },
  operator = "all"
}

interval gibt hier an wie in welchem Zeitabstand nach dem Gerät gesucht werden soll. Da ihr in Szene dann noch die Anzahl der Durchläufe ändern könnt (Bei mir 40) und nach jedem Durchlauf 3s gewartet wird ergibt sich eine mindest Zeit von 120s! Das ist dann ein klein wenig Probieren wie es bei euch am besten läuft und wie oft es nötig ist. Ich habe eine zusätzlichen Start der Szene beim öffnen der Tür mit dem Fingerprint hinterlegt.

----Anwesenheit über Gerät im Netzkerk (Handy, Smartwatch, ...)                 V1.0 c Racer98
    -- außer number noch alle Variablen füllen!

local variable = " "                                                -- Variable die gesetzt werden soll
local lastphone = fibaro.getGlobalVariable("")                      -- aktueller Zustand Variable
local mac = " "                                                     -- MAC des Gerätes
local number = 40                                                   -- Durchläufe (zu niedrig bringt Fehlmeldungen)
local phone =                                                       -- Handy für Push
local textan = " "                                                  -- Nachrichtentext Anwesenheit
local textab = " "                                                  -- Nachrichtentext Abwesenheit

---------------------------------------------------------------------------------------------------------
local foundUser = false
for j=1,number do
    local jsonTable = api.post("/networkDiscovery/arp", {})
	  
	for i, name in ipairs(jsonTable) do
  		if(name['mac'] == mac) then
   		foundUser = true;
 		end
	end

    if (foundUser == true) then
    break
    end 
   print(j) 
   fibaro.sleep(3*1000)
end

-- MAC gefunden oder nicht gefunden
print(foundUser)

-- Globale Variable ändern und beliebigem Nutzer eine Nachricht schicken
if (foundUser == true) then
	print("Device has been found.")
	fibaro.setGlobalVariable(variable,"anwesend")
        if lastphone == "abwesend" then
        fibaro.alert('push', {[1] = phone, }, textan)
        end
	else
    print("Device was not found!")
	fibaro.setGlobalVariable(variable,"abwesend")
        if lastphone == "anwesend" then
        fibaro.alert('push', {[1] = phone, }, textab)
        end
end

   

hallo Racer98 danke dir, aber bekomme es nicht zum laufen…in welcher Form trage ich die MAC ein? xx:xx… oder xxxx… oder "xx:xx…?
Gruß Sven

@sven_gomann so sollte es aussehen

local mac = "26:46:9b:2b:51:a3"

alle Buchstaben müssen klein geschrieben werden!

@Racer98
Hallo Robert
Das hat bei mir etwas gedauert, bis es dann funktionierte.

Folgende Gegebenheiten :
Fritzbox 7590 FW [07.24-85841 BETA]
Samsung S21+ Android 11, UI3.1

Erst habe ich unter Telefoninfo im Samsung Statusinformationen die WLAN-MAC-Adresse des Telefons rausgesucht und diese dann in deiner Deine Scene eingefügt.
Nichts passiere, immer wieder „nicht gefunden“.
Dann im Router nachgesehen und siehe da da stand eine Andere MAC ???
Mit der MAC funktionierte es bis ich mal den Bereich verlassen hatte und neu rein kam.
Sie da nichts ging ! :frowning_face:
Dann habe ich festgestellt das die MAC-Adresse vom Handy immer bei einer Neuanmeldung neu generiert wird.
Hat natürlich gedauert bis ich darauf gekommen bin.
Hier die Lösung oder Das Problem je nach dem.

Im Handy unter :
Einstellungen
—Verbindungen
------WLAN
---------Router SSID
------------Einstellungen (Zahnrad)
---------------Erweitert
-------------------MAC-Adresstyp
kann man wählen ob nun eine „Zufällige MAC“ oder „Telefon-MAC“ genommen werden soll.
Das wahr die Lösung !
Ob das nun bei meinem Neuen Handy nur so ist oder auch bei Älteren kann ich nicht sagen aber damit kann man sich die Karten legen !
Gruss Frank

PS.
Danke für die Scene hätte ich fast vergessen !

hallo @Racer98 konnte es auch gerade erst ausprobieren…funktioniert ganz gut bis jetzt…muss mir jetzt mal überlegen, wie ich es genau nutze. Aber vielen Dank

@Berges01 ja ich weis was du meinst. Das hatte ich beim iPhone noch dem Update letztes Jahr weil so das Tracking des Handys über verschiedene WLAN Netze verhindert werden soll. Habe es dann für mein WLAN ausgeschaltet.
@sven_gomann das freut mich das es funktioniert. Bei mir schließen sich zum Beispiel alle Türen zu wenn ich gehe oder Die Steckdosen in denen ein Duftstecker ist werden ausgeschaltet wenn niemand zuhause ist. Alarmanlage geht über diese Vatianze an und aus …

1 „Gefällt mir“

@Berges01 nix zu danken, du stellst doch auch vieles ein hier! Da hab ich mir auch das ein oder andere abgeguckt :sunglasses: vorallem die QA‘s, von denen hab ich lange nix verstanden

1 „Gefällt mir“

Ich habe ein IPhone 11 mit IOS14. Bei mir funktioniert es nur zuverlässig, wenn das Handy entsperrt ist. Ich habe in den Einstellungen die „private MAC-Adresse“ deaktiviert. Dadurch hat das Handy immer die gleiche MAC-Adresse. Im gesperrten Modus bekomme ich „Device not found“, aber auch nicht bei jedem Start der Szene.Manchmal wird das Handy gefunden. :thinking: Woran könnte das liegen?

Hallo, hast du die Anzahl der Versuche so gelassen oder weniger genommen? Das wäre das eine, das andere ist vllt dein Router. Bei mir läuft ne FRITZ!Box.
Da du die private MAC ja schon eingestellt hast, gibts sonst eigentlich nix was du ändern musst.

Habe eine Fritz Box 7590. DasHandy ist auch in der Nähe der Box. In der Fritz Box passt die MAC-Adresse auch. Die Versuche habe ich auf 40 und habe auch mit 50 getestet.Es kommt nach jedem 2. bzw. 3. Start der Szene immer not found und sobald ich entsperre, während die Szene läuft, wird die Adresse erkannt…

Schau dir mal bitte den Link an
[https://community.swisscom.ch/t5/Archiv-Telefonie/iPhone-unterbricht-Wlan-Verbindung-wenn-es-gesperrt-ist/td-p/510287]

Das IPhone hat da ein Problem mit dem WLAN und trennt die Verbindung in Standby, da kann die Zentrale auch nix mehr finden :grimacing:

Moin Moin
irgendwie bekomme ich das nicht richtig zum laufen. :sleepy:
Ich habe versucht das Script anzupassen, das ich zwei IPhone damit erfassen kann. Sowohl mit der Einstellung „private WLAN-Adresse“ als auch ohne funktioniert das leider nur sporadisch.

Habe ich das Scipt mit meinen nicht wirklich vorhandenen Programmierkenntnissen „geschrottet“?? Oder ist es grundsätzlich nicht möglich zwei Iphone zu erfassen?
Kann mir bitte jemand helfen??

--#########################################################
-- Anwesenheit über MAC-Adresse im Netzwerk steuern
--#########################################################

--Aus SIIO-Forum kopiert am 13.02.2021
--Anwesenheit über Gerät im Netzkerk (Handy, Smartwatch, ...)                 V1.0 c Racer98
--außer number noch alle Variablen füllen!

local variable = fibaro.getGlobalVariable("PresentState")   -- Variable die gesetzt werden soll
local mac  = "xx:xx:xx:xx:xx:xx"  --MAC Iphone 1 ohne private WLAN-Adresse
local mac2 = "xx:xx:xx:xx:xx:xx" --MAC Iphone 2 ohne private WLAN-Adresse
local mac3 = "xx:xx:xx:xx:xx:xx" -- MAC IPhone 2a
local mac4 = "xx:xx:xx:xx:xx:xx" -- MAC IPhone 1a
local number = 30                 -- Durchläufe (zu niedrig bringt Fehlmeldungen)
local phone = 38                 -- Handy für Push
local textan = "Anwesenheit erkannt. Aktiviere HOME-Status"     -- Nachrichtentext Anwesenheit
local textab = "Abwesend erkannt. Aktiviere AWAY-Staus"        -- Nachrichtentext Abwesenheit
---------------- debug-Ausgaben ------------------------------------------------------------------------
local debug = false --true|false
---------------- Setzen von Farbcodierungen ------------------------------------------------------------
local fc_r  = '<font color="red">'
local fc_g  = '<font color="green">'
---------------- Beginn der Funktionen -----------------------------------------------------------------
local foundUser = false
for j=1,number do
    local jsonTable = api.post("/networkDiscovery/arp", {})
	  
	for i, name in ipairs(jsonTable) do
  		if(name['mac'] == mac) or (name['mac'] == mac2) or (name['mac'] == mac3) or (name['mac'] == mac4) then
   		foundUser = true;
 		end
	end

    if (foundUser == true) then
    break
    end 
    if debug then print(j) end
   fibaro.setTimeout(3*1000, function() end)
   --fibaro.sleep(3*1000)
end

---------------- MAC gefunden oder nicht gefunden -------------------------------------------------------
if debug then print(foundUser) end

---------------- Globale Variable ändern und beliebigem Nutzer eine Nachricht schicken ------------------
if (foundUser == true) then
        print("Es wurde "..'<font color="green">EIN</font>'.." Gerät im WLAN gefunden "..textan)
        if variable == "Away" then
        fibaro.alert('simplePush', {[1] = phone, }, textan, false)
        fibaro.profile(1, 'activateProfile')
        fibaro.setGlobalVariable("PresentState", "Home")
        end
	else
        if debug then print("Es wurde "..'<font color="red">KEIN</font>'.." Gerät im WLAN gefunden. "..textab) end
	    if variable == "Home" then
        --fibaro.alert('simplePush', {[1] = phone, }, textab, false)
        fibaro.profile(2, 'activateProfile')
        fibaro.setGlobalVariable("PresentState", "Away")
        end
end

Gruß
Kai

Moin. Also der wahnsinnige Programmierer bin ich auch nicht. Aber ich habe für jedes Handy eine extra Scene und so klappt es recht gut. Gruß Robert

Hallo @Racer98
Ich hatte auch überlegt mir für jedes Handy eine eigene Scene zu basteln. Aber dann fehlt mir die Idee wie ich das umsetze mit den Variablen. Beispiel wenn Handy1 anwesend ist und Handy2 abwesend; wie soll die Variable geschaltet werden?
Deshalb war meine Idee die Anwesenheit über eine Scene abzufragen.

Aber meine Anfrage von gestern hat sich vermutlich schon von selbst erledigt. Bei einem Handy war die Einstellung „private WLAN-Adresse“ wieder zurückgesetzt. Keine Ahnung warum.

Jetzt scheint es zu funktionieren.

Danke nochmals für Deine Rückmeldung und natürlich fürs teilen der Scene

Ich habe dann noch eine Scene die alle auswertet weil da noch mehr Sachen reingehen. Z.B. eine qa in der ich auch auf manuelle Anwesenheit stellen kann oder Besucher registriere