FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Müller am 01 Februar 2019, 22:16:54

Titel: presence modul
Beitrag von: Müller am 01 Februar 2019, 22:16:54
Hallo,

ich habe ein Problem mit meinem "presence module".

Meine Fritzbox meldet die Mac Adresse: mac_38_2D_E8_00_AA_D1

In meinem Presence module lautet die DEF:
function {checkFritzMACpresent("Fritzbox","mac_38_2D_E8_00_AA_D1")} 60 60

aber state ist permanent "error"

Ich habe einige Beiträge durchsucht, finde aber nicht meinen Fehler.
Wer kann mir helfen??
Titel: Antw:presence modul
Beitrag von: Frank_Huber am 01 Februar 2019, 22:20:41
"mac_" muss raus, dann sollte es gehen.

Gesendet von meinem Doogee S60 mit Tapatalk

Titel: Antw:presence modul
Beitrag von: Müller am 01 Februar 2019, 22:23:48
function {checkFritzMACpresent("Fritzbox","38_2D_E8_00_AA_D1")} 60 60

tut leider auch nicht
Titel: Antw:presence modul
Beitrag von: Neuhier am 01 Februar 2019, 22:25:59
Mit : statt _ versucht?
Titel: Antw:presence modul
Beitrag von: Müller am 01 Februar 2019, 22:29:21
auch schon probiert

function {checkFritzMACpresent("Fritzbox","38:2D:E8:00:AA:D1")} 60 60
Titel: Antw:presence modul
Beitrag von: Frank_Huber am 01 Februar 2019, 22:29:23
Zitat von: Müller am 01 Februar 2019, 22:23:48
function {checkFritzMACpresent("Fritzbox","38_2D_E8_00_AA_D1")} 60 60

tut leider auch nicht
Ja, : anstatt _, dann passt der define.

Heisst dein Fritzbox device auch Fritzbox?

Den checkFritzMACpresent Code hast in die 99_myUtils.pm kopiert?

Gesendet von meinem Doogee S60 mit Tapatalk
Titel: Antw:presence modul
Beitrag von: Müller am 01 Februar 2019, 22:31:22


Heisst dein Fritzbox device auch Fritzbox?
JA

Den checkFritzMACpresent Code hast in die 99_myUtils.pm kopiert?

NEIN, das wird es wohl sein.
Titel: Antw:presence modul
Beitrag von: Frank_Huber am 01 Februar 2019, 22:34:06
Mit sehr hoher Wahrscheinlichkeit. [emoji6]

Gesendet von meinem Doogee S60 mit Tapatalk

Titel: Antw:presence modul
Beitrag von: Otto123 am 02 Februar 2019, 01:44:08
Zitat von: Müller am 01 Februar 2019, 22:31:22

Den checkFritzMACpresent Code hast in die 99_myUtils.pm kopiert?

NEIN, das wird es wohl sein.
Hi,

da ich Teile davon verzapft habe: Wie kam es zu dem Ansatz, das define zu machen und die Funktion in die 99_myUtils nicht einzutragen? War das unklar beschrieben?

Gruß Otto
Titel: Antw:presence modul
Beitrag von: Müller am 02 Februar 2019, 17:38:38
hallo, ich habe in "commandref" gesucht und auch in der Wiki tat ich mir (als Anfänger) schwer alle Infos zusammen zutragen.

Das folgende habe ich nun gefunden, aber gleich eine Fehlermeldung kassiert:
Ist wohl nicht mit "$StatusFritz" zufrieden. Was sollte dafür stehen?

Danke

sub checkFritzMACpresent($$) {
  # Benötigt: Name der zu testenden Fritzbox ($Device),   
  #           zu suchende MAC ($MAC),       
  # Rückgabe: 1 = Gerät gefunden
  #           0 = Gerät nicht gefunden
  my (Fritzbox, 38_2D_E8_79_07_D1) = @_;
  my $Status = 0;
  38_2D_E8_79_07_D1 =~ tr/:/_/;
  38_2D_E8_79_07_D1 = "mac_".uc(38_2D_E8_00_AA_D1);
  my $StatusFritz = ReadingsVal(Fritzbox, 38_2D_E8_00_AA_D1
, "weg");
  if ($StatusFritz eq "weg") {
    Log 1, ("checkFritzMACpresent (Fritzbox): 38_2D_E8_00_AA_D1
nicht gefunden, abwesend.");
    $Status = 0;
  } elsif ($StatusFritz eq "inactive") {
    Log 1, ("checkFritzMACpresent (Fritzbox): 38_2D_E8_00_AA_D1
ist >inactive<, also abwesend.");
    $Status = 0;
  } else {
    # Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät per WLAN angemeldet.
    Log 1, ("checkFritzMACpresent (Fritzbox): 38_2D_E8_00_AA_D1
gefunden, Gerät heißt >$StatusFritz<.");
    $Status = 1;
  }
  return $Status
}
Titel: Antw:presence modul
Beitrag von: the ratman am 02 Februar 2019, 17:49:38
darf ich mich aus dem fenster lehnen?
hab sicher wieder irgendwas überlesen und ihr machts das deshalb so umständlich *g* wenn ja, weiteres einfach ignorieren ...

bspl.-doif für meinen laser-drucker
([fritzbox:mac_30_05_5C_FC_23_22,"absent"] =~ "AugenLaser")
( setreading $SELF ping present )
DOELSEIF
([fritzbox:mac_30_05_5C_FC_23_22,"absent"] !~ "AugenLaser")
( setreading $SELF ping absent )
attr do alwas
attr devStateIcon   cmd_1:control_standby@darkgreen cmd_2:control_standby@red .*:edit_settings@orange  (wenn gleich ne anzeige gewünscht)
Titel: Antw:presence modul
Beitrag von: Otto123 am 02 Februar 2019, 17:54:33
Hallo Müller,

was genau wolltest Du tun und was soll das in Deiner Frage sein?
Beachte bitte die Hinweise hier -> https://forum.fhem.de/index.php/topic,71806.0.html
Vor allem bez. der Code Tags

Der Code im Wiki ist nicht dazu gedacht direkt Mac Adressen dort einzutragen. Die Werte werden übergeben.
Die Anleitung im Wiki ist doch ziemlich eindeutig, was ist Dir daran unklar?

Sowas wie von ratman ist eine alternative Lösung für presence.

Gruß Otto
Titel: Antw:presence modul
Beitrag von: Müller am 03 Februar 2019, 00:50:09
Vielen Dank für eure Antworten. Ich tue mir nur etwas schwer auch alles zu verstehen, da ich bisher noch keine Programmiersprache gelernt habe.

Letztendlich möchte ich über das presence modul bestimmen ob meine handy im wlan gemeldet ist, um damit bspw eine Lampe oder anderes einzuschalten, wenn ich heimkomme.

das doif scheint mir eine recht einfache Lösung zu sein. Jedoch was macht der "Augenlaser" im code?
Ich habe den code mal probiert, bekomme bisher immmer absent beim reading. Muss da mit dem ping noch etwas eingestellt werden?

Den Code hatte ich aus einer Forums Diskussion. Ich probiere mal den Code vom Wiki mal die nächsten Tage aus 
Titel: Antw:presence modul
Beitrag von: amenomade am 03 Februar 2019, 01:10:33
Augenlaser ist wahrscheinlich der Hostname seines Druckers: kommt im Reading mit entspr. mac Adresse, wenn das Gerät angemeldet ist.
Titel: Antw:presence modul
Beitrag von: the ratman am 03 Februar 2019, 09:10:18
steht ja drüber *g* ich zitiere mich mal selber --> "bspl.-doif für meinen laser-drucker"
anstelle "augenlaser" ist halt der name z.b. deines handys, der hinter der mac im fritzbox-modul zu lesen ist einzutragen.
ein eintrag im fritzbox-modul sehe ja so aus z.b.:mac_00_04_20_FC_F2_C8 wzHUB (WLAN, 72 / 39 Mbit/s, -80)wichtig ist eben hier zu erkennen, ob "wzHUB" (einer meiner ir-sender) unter anderem (darum das "=~" d.h.: wenn der begriff im reading vorkommt) da steht. steht er nämlich da, ist das gerät online, steht was anderes bei der mac, ist er eben nicht erreichbar und somit für mich offline.

ich hab angenommen, du willst per fritzbox und mac festlegen, ob ein gerät online ist oder nicht und das presence-modul ist dir dazu zu viel action. mein doif braucht nix weiter als sich selber und natürlich ein fritzbox modul.
das geht in meinen augen, mit einem doif eben am einfachsten.
du hast mit "meiner" lösung aber ein problem: die fritzbox kann schon mal 10 bis 15 minuten brauchen, um  ein offline gegangenes gerät auch als offline anzuzeigen. grade im wlan dauert das gerne "ewig". d.h. die erkennung, ob ein gerät online gekommen ist, geht zwar schnell, das anzeigen des offline gehens kann aber lange dauern.

ausserdem hat meine lösung nix mit dem presence-module ( https://wiki.fhem.de/wiki/PRESENCE ) zu tun, dass es ja dafür auch geben würde. das wäre auch schneller beim offline-erkennen.
Titel: Antw:presence modul
Beitrag von: Otto123 am 03 Februar 2019, 10:43:51
Zitat von: the ratman am 03 Februar 2019, 09:10:18
das wäre auch schneller beim offline-erkennen.
Nö, das glaub ich nicht. Zumindest nicht bei der Methode die Müller in seinem Post (allerdings etwas verwurschtelt) angewendet hat. Das Problem ist dabei die Fritzbox.
Wenn man mit dem Presence Modul  mit Ping arbeiten würde könnte es schneller gehen, allerdings kommt dann ein anderes Problem -> Schlafmodus der Smartphones.

Gruß Otto
Titel: Antw:presence modul
Beitrag von: the ratman am 03 Februar 2019, 11:05:52
naja, des müllers methode versteh ich sowieso ned - man hat 1000 fertige möglichkeiten - je nach geschmack - da muß man nicht auch noch eigenes zeugs scripten.
ich denke aber, dem herrn müller gehts wie mir am anfang: der wird grade von den 1000 möglichkeiten erschlagen und sieht den wald vor lauter bäumen nicht mehr.

vielleicht sollten wir deshalb mal fragen: was will herr müller genau?
o) anwesenheitserkennung mit dem presence-module, das ja auch noch verschiedene möglichkeiten der erkennung von haus aus mit sich bringt und keine eigenen scripte erfordert.
o) vielleicht - um für die totale verwirrung zu sorgen - wären da z.b. g-tags mit einer erkennung über bt auch ne gute alternative?
o) oder er ist n bastler und löst die anwesenheit (was ich immer noch geil finde) mit einem schlüsselbrett und dahinter steckenden hm-kontakten.
o) oder reicht sowas "langsames" wie das doif mit der fritzbox? das wäre übrigens, um ein anwendungsbspl. zu bringen, meine art um das "abkacken" div. hardware zu erkennen. mir ists völlig wurst, ob ich 5 min. früher oder später weiß, das mein drucker nicht mehr da is - hauptsache ich erfahrs innerhalb einer bestimmten zeit.
o) oder will er nur wissen, was sein handy so macht? dann wäre bei android wohl amad am besten geeignet. da würde auch der deep sleep nimma stören am handy. is aber in meinen augen als presence ungeeigenet, dafür weiß ich halt über jeden fürz am handy bescheid und kanns auch noch steuern.
o) ... was auch immer ich noch vergessen hab
Titel: Antw:presence modul
Beitrag von: Müller am 03 Februar 2019, 11:26:19
Hallo,
das doif habe ich nun am Laufen. Es dauert wirklich lange bis die Abmeldung registriert wird.


([Fritzbox:mac_38_2D_E8_00_AA_D1,"present"] =~ "Handy")
( setreading $SELF ping present )
DOELSEIF
([Fritzbox:mac_38_2D_E8_00_AA_D1,"absent"] !~ "Handy")
( setreading $SELF ping absent )


ich habe anders als vorgeschlagen in meiner ersten Zeile "present" eingetragen, aber dies scheinit nix zu ändern??
Wenn man es löscht functioniert es auch....

Ich hätte noch eine Frage zum "presence module". Warum wäre dies schneller beim Abmelden? Wird nicht in beiden Modulen die Anmeldung an der Fritzbox ausgelesen? (Die gleiche Überlegung hatte wohl Otto, während ich das getippt habe.)

Ja, ich ich bin am Anfang und bin auch erschlagen von den 1000 Möglichkeiten.

Mein aktuelles Wunschprojekt wäre. Ich komme von der Arbeit und wenn ich im Hof bin verbindet sich mein Handy mit meinem Wlan. Dies wäre das Signal um nun beispielsweise Lichter einzuschalten.

(Da ich Perl Anfänger bin, würde ich durch aus gerne auf eigene Skripte verzichten, aber das "presence module" benötigt die Anpassung von der "99_myUtils.pm"? )
Titel: Antw:presence modul
Beitrag von: Otto123 am 03 Februar 2019, 11:35:22
Zitat von: Müller am 03 Februar 2019, 11:26:19
(Da ich Perl Anfänger bin, würde ich durch aus gerne auf eigene Skripte verzichten, aber das "presence module" benötigt die Anpassung von der "99_myUtils.pm"? )
Nein, nicht zwingend. Aber auch das presence modul bietet 100 Möglichkeiten. Die Verwendung einer Sub zur Abfrage ist eine. Die scheint im Vergleich zur DOIF Lösung auch noch viel aufwendiger...
Titel: Antw:presence modul
Beitrag von: KernSani am 03 Februar 2019, 11:44:25
Prsence o.ä. auf Handy, auslesen Fritzbox etc... sind meiner Erfahrung nach alle für Anwesenheitserkennung ungeeignet (Punkte wurden schon genannt). Was gut funktioniert (und wo man z.B.auch den Blumen giessenden Nachbarn mit einbinden kann) sind GTags. Gute Erfahrungen habe ich auch mit geofancy gemacht. (Nachteil: Port-Weiterleitung notwendig)


Kurz, weil mobil
Titel: Antw:presence modul
Beitrag von: the ratman am 03 Februar 2019, 12:28:32
Zitat von: Müller am 03 Februar 2019, 11:26:19
Hallo,
das doif habe ich nun am Laufen. Es dauert wirklich lange bis die Abmeldung registriert wird.
~~~snip~~~
ich habe anders als vorgeschlagen in meiner ersten Zeile "present" eingetragen, aber dies scheinit nix zu ändern??
Wenn man es löscht functioniert es auch....
wenn du den teil "..._D1,"present"]..." meinst. das gibt nur den wert vor der angegeben wird, wenn was nicht stimmt bei der abfrage. da kannst du auch "kaputt" oder so hinschreiben. geht nur drum, dass überhaupt was als ergebnis kommt, weil sich module gern mal beschweren, wenns leere werte kriegen.
Zitat von: Müller am 03 Februar 2019, 11:26:19
Ich hätte noch eine Frage zum "presence module". Warum wäre dies schneller beim Abmelden? Wird nicht in beiden Modulen die Anmeldung an der Fritzbox ausgelesen? (Die gleiche Überlegung hatte wohl Otto, während ich das getippt habe.)
weil das presence modul auch andere möglichkeiten als die fritzbox-abfrage anbietet, wie z.b. einen ping übers (w)lan, also direkt beim zu überwachenden gerät nachfragt. aber da kommt schon das erwähnte problem des sleeps der handys dazu - das meldet sich dann mal gerne nicht, obwohls im haus ist.
Zitat von: Müller am 03 Februar 2019, 11:26:19
Ja, ich ich bin am Anfang und bin auch erschlagen von den 1000 Möglichkeiten.
willkommen im club - das vergeht aber mit der zeit ... wie männergrippe. man darf nur ned aufgeben.
Zitat von: Müller am 03 Februar 2019, 11:26:19
Mein aktuelles Wunschprojekt wäre. Ich komme von der Arbeit und wenn ich im Hof bin verbindet sich mein Handy mit meinem Wlan. Dies wäre das Signal um nun beispielsweise Lichter einzuschalten.

(Da ich Perl Anfänger bin, würde ich durch aus gerne auf eigene Skripte verzichten, aber das "presence module" benötigt die Anpassung von der "99_myUtils.pm"? )
nö, du KANNST im presence modul eigenen code verwenden, presence schlagt aber schon viele möglichkeiten auch ohne eigenes zutun vor.  grade in dem bereich solltest mal grundlegendes verwenden. ist schon schwer genug, da eventuelle fehler zu finden. erst wenn alles geht würd ich eigenes scripten ... sofern das überhaupt nötig ist.
am besten, du lest dich mal im wiki/referenz ein und schaust mal, was so von haus aus geht. ist viel, aber immer noch weniger als wenn du auch noch deine eigenen fehler mit ein baust *g*.

ich will mich aber generell meinem vorredner anschließen, das ganz presence-zeugs über wlan oder bt ist in meinen augen auch viel zu unsicher, hat viel zu viele mögliche problemstellen. da wirst weinen, wenn du das so löst.
ich hab tatsächlich noch keine lösung gefunden, die bei mehreren leuten im haus zuverlässig funzt - da kommen auch noch so viele menschen-probleme mit rein und sei es so n blödsinn, wie: "mein handy is leer, ich nehm mal deines als einkaufszettel mit" oder "schlüssel mit g-tag in den garten mitgenommen, haus geht auf abwesend". geil wär gesichtserkennung, aber da stellt sich meine holde quer.
würd ich da weitermachen, würd ich mir tatsächlich geofency angucken, auch wenns ein potentielles sicherheitsrisiko ist. das würde auch den vorteil bringen, die heizung bei nem größeren abstand vom haus als z.b. das licht zu schalten.
Titel: Antw:presence modul
Beitrag von: loescher am 03 Februar 2019, 21:53:58
Hi!

Das PRESENCE Modul kann übrigens auch mit Events arbeiten. Das nutze ich bei mir und bin sehr zufrieden.
Im Prinzip muss man nur seine FritzBox definieren:


define FritzBox1 FRITZBOX 192.168.178.1
set FritzBox1 password XXX
attr FritzBox1 event-on-change-reading .*


Und das PRESENCE:


define galaxy_stephan_FB1 PRESENCE event FritzBox1:mac_22_44_88_99_AA_CC:\s+inactive FritzBox1:mac_22_44_88_99_AA_CC:\s+.+\s+\(WLAN,.+\)


Das ist alles.  :)

LG,
Stephan.
Titel: Antw:presence modul
Beitrag von: MadMax-FHEM am 03 Februar 2019, 22:01:37
Ich werfe dann doch mal (eine weitere Methode mit Presence ;)  ) folgendes ins Rennen: https://forum.fhem.de/index.php/topic,76342.msg682218.html#msg682218

Bzw. eher das: https://forum.fhem.de/index.php/topic,76342.msg898099.html#msg898099

(Basisscript: https://forum.fhem.de/index.php/topic,76342.msg769242.html#msg769242)

Läuft mit Mobiltelefon seit geraumer Zeit problemlos...
Erkennungszeit legt die Zeitangabe beim lan-ping Presence fest...
Bei mir dauert es somit ca. 1min...

Gruß, Joachim
Titel: Antw:presence modul
Beitrag von: fireball am 18 Juli 2019, 22:31:05
Hi, habt ihr bei schon mal wieder den LAN-ping mit einem Samsung Galaxy Smartphone ausprobiert... Es läuft mit meinem s9+ und aktuellen Betriebssystem Android 9 und funktioniert auch, wenn sich das Handy schlafen legt.

VG René