Presence und iPhone / Android

Begonnen von JoWiemann, 07 September 2017, 11:58:59

Vorheriges Thema - Nächstes Thema

Master_Nick

@Beetle2003 :-D  Steht deine Frage in dem Zitat?
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

CoolTux

#241
Zitat von: MadMax-FHEM am 11 September 2017, 10:44:06
Hmmm, Stromverbrauch...

Gefühlt etwas mehr, leider nicht wissenschaftlich ermittelt (keine Zeit) ;)

Aktuell experimetiere ich mit einem zweistufigen Konzept:

Ein Presence mit normalem lan-ping und wenn der absent bzw. present erkennt, dann wird ein statusRequest beim hping3-Presence ausgelöst per Notify
Das hping3-Presence hat ein Intervall von (aktuell) alle Stunde ist aber das "führende" Presence

Erste Tests sind positiv (gut vielleicht etwas umständlich aber wenn es zuverlässig läuft kommt das so ins Hauptsystem) mal sehen wie es nachts wird...

Gruß, Joachim
[/quote


Guten Morgen Joachim,

Mich würde die Lösung aus Kombination von lan-ping und hping3 interessieren.

Hast du diese irgendwo vorgestellt?

Danke

Gruss

Ralf

Meinst Du das hier

https://forum.fhem.de/index.php/topic,76342.0.html
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Master_Nick

Also der großflächig genutzte Ansatz ist soweit ich persönlich das sehe dieser hier: https://forum.fhem.de/index.php/topic,76342.msg769242.html#msg769242
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Beetle2003

Zitat von: Master_Nick am 30 Januar 2019, 10:43:10
Also der großflächig genutzte Ansatz ist soweit ich persönlich das sehe dieser hier: https://forum.fhem.de/index.php/topic,76342.msg769242.html#msg769242

Hallo,

Danke für den Link.

Genau das habe ich gesucht.


MadMax-FHEM

#244
Zitat von: Beetle2003 am 30 Januar 2019, 07:03:38
Zitat von: MadMax-FHEM am 11 September 2017, 10:44:06
Hmmm, Stromverbrauch...

Gefühlt etwas mehr, leider nicht wissenschaftlich ermittelt (keine Zeit) ;)

Aktuell experimetiere ich mit einem zweistufigen Konzept:

Ein Presence mit normalem lan-ping und wenn der absent bzw. present erkennt, dann wird ein statusRequest beim hping3-Presence ausgelöst per Notify
Das hping3-Presence hat ein Intervall von (aktuell) alle Stunde ist aber das "führende" Presence

Erste Tests sind positiv (gut vielleicht etwas umständlich aber wenn es zuverlässig läuft kommt das so ins Hauptsystem) mal sehen wie es nachts wird...

Gruß, Joachim

Guten Morgen Joachim,

Mich würde die Lösung aus Kombination von lan-ping und hping3 interessieren.

Hast du diese irgendwo vorgestellt?

Danke

Gruss

Ralf

Hallo Ralf,

hier mal das "2-Stufige Konzept" im Detail:

das ist das Presence Device, welches meine "tatsächliche Anwesenheit" signalisiert.
Es ist das hier im Thread beschriebene hping3:


define pIch PRESENCE function {my_CheckPhone("192.168.X.X", "XX:XX:XX:XX:XX:XX")} 3600
attr pIch update-on-change-reading .*


Die Wiederholzeit ist bewusst sehr hoch (könnte auch noch höher sein weil eigentlich wird es durch das Notify "aktualisiert")...


Das hier ist ein "normales" lan-ping Presence Device.
Das hatte ich vorher als einziges Presence Device.
Allerdings geht es nicht immer, daher zusätzlich das hping3.
Da das hping3 (gefühlt) den Akku leer saugt hab ich das "normale" gelassen und für den Fall, dass es absent ist wird (per Notify) durch das hping3 geprüft, ob es nur "schläft" oder tatsächlich weg ist...


define pIch_light PRESENCE lan-ping 192.168.X.X
attr pIch_light absenceThreshold 2


Das hier ist das Notify auf das pIch_light:

define nPresenceHandy notify pIch_light:(absent|present) {my_CheckPresence()}


Hier die sub in der ich prüfe, ob der Status unterschiedlich ist und wenn ja: hping3 anstossen...
...ansonsten ist es wohl tatsächlich weg ;)

sub my_CheckPresence()
{
  my $pIchStatus = ReadingsVal("pIch", "state", "absent");
  my $pIchLightStatus = ReadingsVal("pIch_light", "state", "present");

#  Log3(undef, 1, "my_CheckPresence      pIchLightStatus: $pIchLightStatus      pIchStatus: $pIchStatus");
 
  if($pIchLightStatus ne $pIchStatus)
  {
    fhem("set pIch statusRequest");
#    Log3(undef, 1, "my_CheckPresence statusRequest      pIchLightStatus: $pIchLightStatus      pIchStatus: $pIchStatus");
  }
}


Ich logge beides mit und hab gesehen, dass ab und an (v.a. nachts) die beiden kurz "auseinanderlaufen", also das pIch_light absent anzeigt aber der hping3 tatsächlich present anzeigt (was auch stimmt).

Da ich mich bzgl. Anwesenheit auf das pIch (hping3) abstütze läuft es bei mir stabil (ohne den Akku leer zu saugen)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beetle2003

Hallo Joachim,

vielen Dank für die Hilfestellung bei der zweistufigen Methode.
Es schein sehr gut zu funktionieren.
Ich lasse alle meine Geräte, welche in WLAN sind und durch PRESENCE überwacht werden nun mit dieser Methode überwachen.

Ich habe die CheckPresence Routine in zwei Punkten angepasst:
1. Ich übergebe in zwei Variablen das Gerät
2. Die Funktion Lit hat bei mir nicht funktioniert. Musste diese abändern.

Als nächsten werde ich mir etwas ausdenken, dass ich die IP Adresse und MAC aus der FritzBox auslese und übergebe.

Gruss

Ralf 

1dz

Hallo zusammen,

ich habe mich auch einmal an der Anwesenheitserkennung versucht.
Allerdings scheitere ich als Anfänger bereits an einem weit niedrigeren Level.
Wäre toll wenn mir jemand ein wenig auf die Sprünge helfen könnte.
Ich hatte mich am Beitrag #145von Ajuba orientiert.

Folgendes habe ich auf meinem Raspberry gemacht:

sudo apt-get install arp-scan

Dabei gab es diese Fehlermeldungen:
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
arp-scan ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 9 nicht aktualisiert.
N: Datei »mosquitto-jessie.list.1« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-wheezy.list.2« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-wheezy.list.1« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-jessie.list.1« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-wheezy.list.2« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-wheezy.list.1« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.


danach

sudo apt-get install hping3

Dabei erschienen diese Fehlermeldungen:
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
hping3 ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 9 nicht aktualisiert.
N: Datei »mosquitto-jessie.list.1« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-wheezy.list.2« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-wheezy.list.1« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-jessie.list.1« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-wheezy.list.2« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.
N: Datei »mosquitto-wheezy.list.1« in Verzeichnis »/etc/apt/sources.list.d/« wird ignoriert, da sie eine ungültige Dateinamen-Erweiterung hat.


Danach in /opt/fhem/FHEM mit nano presence.sh erstellt

sudo nano presence.sh

und das script von post 141 hinein kopiert.

Gespeichert und anschließend den Owner angepasst und ausführbar gemacht.

sudo chown fhem:dialout presence.sh
sudo chmod +x presence.sh

Wenn ich nun versuche die presence.sh aufzurufen bekomme ich folgende Fehlermeldung:

sudo /opt/fhem/FHEM/presence.sh

/opt/fhem/FHEM/presence.sh: Zeile 19: Syntaxfehler beim unerwarteten Wort `while'
/opt/fhem/FHEM/presence.sh: Zeile 19: ` fi fi while [ ${PRECOUNT} -lt ${PREMAXRETRIES} ] do'


Wäre klasse wenn mir jemand einen Tip geben könnte.

Gruß
Thomas



Beetle2003

Hallo Thomas,

ich habe es wie folgt gelöst (Dank viel Unterstützung im Form )
in 99_myUtils

###############   Presence von WLAN Geraeten
sub Check_WLAN_Device($$)
{
  my ($ip,$mac)= @_;
  my $ret = "";

  $mac = lc($mac);

  $ret = qx(/opt/fhem/FHEM/presence.sh $ip $mac);

  $ret =~ s,[\r\n]*,,g;        # remove CR from return-string

  if ( $ret != 0 && $ret != 1) {
    # Log3 "CheckWLANDevice", 2, "CheckWLANDevice: $ret";
    return 0;
  }

  return $ret;

}


########  Check Presence
sub CheckPresence($$)
{
  my ($hping,$pres)= @_;

  my $Status = ReadingsVal($hping, "state", "absent");
  my $LightStatus = ReadingsVal($pres, "state", "present");

#  Log3(undef, 1, "my_CheckPresence      pIchLightStatus: $pIchLightStatus      pIchStatus: $pIchStatus");

  if($LightStatus ne $Status)
  {
    fhem("set $hping statusRequest");
#    Log3(undef, 1, "my_CheckPresence statusRequest      $pres_Status: $LightStatus      $hping_Status: $Status");
  }
}


############## Check ob Geraet an der Fritz!Box angemeldet ist ( ueber MAC Adresse )
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 ($Device, $MAC) = @_;
  my $Status = 0;
  $MAC =~ tr/:/_/;
  $MAC = "mac_".uc($MAC);
  my $StatusFritz = ReadingsVal($Device, $MAC, "weg");
  if ($StatusFritz eq "weg") {
   # Log 1, ("checkFritzMACpresent ($Device): $MAC nicht gefunden, abwesend.");
    $Status = 0;
  } elsif ($StatusFritz eq "inactive") {
   # Log 1, ("checkFritzMACpresent ($Device): $MAC ist >inactive<, also abwesend.");
    $Status = 0;
  } else {
    # Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät per WLAN angemeldet.
   # Log 4, ("checkFritzMACpresent ($Device): $MAC gefunden, Gerät heißt >$StatusFritz<.");
    $Status = 1;
  }
  return $Status
}


In der Cfg Datei

define Smartphone_Ralf PRESENCE function {checkFritzMACpresent("FritzBox_Keller","11:22:33:44:55:66")} 600 900
##Mac Adresse des Smartphone

define Smartphone_Ralf_hping PRESENCE function {Check_WLAN_Device("192.168.188.100", "11:22:33:44:55:66")} 3600
##IP und Mac Adresse des Smartphone

define Presence_Smartphone_Ralf notify Smartphone_Ralf:(absent|present) {CheckPresence("Smartphone_Ralf_hping", "Smartphone_Ralf")}
##Das notify welches das Smartphone aufweckt

Die Datei /opt/fhem/FHEM/presence.sh anlegen und Dateirechte und Besitzer setzten - wenn nicht richtig.

Das funktioniert bei mir sehr gut.

Ich habe die Meldungen im Log deaktiviert.



1dz

Hallo Ralf und Alle,

ich habe es am Laufen, allerdings bislang nur einstufig mit der hping3 Methode.
Bin froh das es zunächst überhaupt erstmal funktioniert.
Habe nicht viel Ahnung von Linux und bin dankbar für alles was ich kopieren kann.

Die von mir beschrienen Fehlermeldungen sind wohl ohne Bedeutung !?!
Die Syntaxfehler beim Aufruf von presence.sh führe ich mal auf fehlerhaftes copy und paste zurück.

Die Anwesenheitserkennung mit einem Galaxy S5 ist schon ziemlich gut aber noch nicht perfekt.
Ca. 2-3 Mal in der Nacht wir das Phone fälschlicherweise als abwesend erkannt, und danach wieder anwesend.

Mal schauen ob ich die ,,2 stufige Methode" hin bekomme.

Gruß und vielen Dank
Thomas

RappaSan

Die Androiden sparen gerne zwischendurch Strom, da kann man einstellen, was man will. Interessiert die leider nicht. :(

Beetle2003

Zitat von: 1dz am 19 Februar 2019, 13:26:59
Hallo Ralf und Alle,

ich habe es am Laufen, allerdings bislang nur einstufig mit der hping3 Methode.
Bin froh das es zunächst überhaupt erstmal funktioniert.
Habe nicht viel Ahnung von Linux und bin dankbar für alles was ich kopieren kann.

Die von mir beschrienen Fehlermeldungen sind wohl ohne Bedeutung !?!
Die Syntaxfehler beim Aufruf von presence.sh führe ich mal auf fehlerhaftes copy und paste zurück.

Die Anwesenheitserkennung mit einem Galaxy S5 ist schon ziemlich gut aber noch nicht perfekt.
Ca. 2-3 Mal in der Nacht wir das Phone fälschlicherweise als abwesend erkannt, und danach wieder anwesend.

Mal schauen ob ich die ,,2 stufige Methode" hin bekomme.

Gruß und vielen Dank
Thomas

Hallo Thomas,

Für die zweistufige Methode musst du die Fritz!Box in dem einbinden.
Dann kannst du die Anwesenheit der Geräte über die Mac Adresse abfragen.

Ob es ein Plugin für andere Router gibt, ist mir derzeit nicht bekannt.

1dz

Hallo Ralf und Joachim,

würdet Ihr wohl so nett sein und mir Eure komplette "99_myUtils" mal zeigen.
Ich habe versucht das nachzuvollziehen kriege es aber nicht hin.

Gruß und danke im vorraus.

Thomas

Beetle2003

Zitat von: 1dz am 22 Februar 2019, 20:23:05
Hallo Ralf und Joachim,

würdet Ihr wohl so nett sein und mir Eure komplette "99_myUtils" mal zeigen.
Ich habe versucht das nachzuvollziehen kriege es aber nicht hin.

Gruß und danke im vorraus.

Thomas

Hallo Thomas,

hast Du die Fritz!Box in Fhem eingebunden? Erklärung siehe   https://wiki.fhem.de/wiki/FRITZBOX

Meine 99_myUtils (mit den hierfür notwendigen Routinen) habe ich in dem Post hinterlegt

Wo liegt aktuell deine Herausforderung?

Wenn Du die Fritz!Box eingebunden hast, siehst Du in den Readings die angemeldeten Geräte. Ist das auch bei Dir?

Gruss


eurofinder

@Beetle2003:
Ich habe deine Anwesenheitsprüfung jetzt bei mir mal zwecks Probe umgesetzt.
Smartphone_XXX
Smartphone_XXX_hping
Presence_Smartphone_XXX
werden auch mit present bzw absent gesetzt.

Welches Device trage ich dann jetzt unter meinem ROOMMATE unter rr_presenceDevices ein, damit der Status auch aktualisiert wird. Muss ich an den Attributen noch was ändern und wenn ja wie?
Bin zwar nicht ganz unwissend was Linux betrifft, aber mit FHEM erst seit kurzem befasst und noch in der Lernphase:-)

Gruß und schönes Wochenende
eurofinder
RPI3+; Raspbian Buster Lite; RPI-RF-MOD; piVCCU3, HMIP-eTRV-2, HmIP-SWDO, HmIP-SRH, HmIP-STHO, HmIP-SLO

Fowler

Hi,

ich habe bei mir im Netz das Problem,dass der Aufruf von hping3 immer 100% packet loss hat.
Ein normaler ping funktioniert jedoch.

sudo hping3 -q -2 -c 10 -p 5353 -i u1 192.168.178.25
HPING 192.168.178.25 (eth0 192.168.178.25): udp mode set, 28 headers + 0 data bytes

--- 192.168.178.25 hping statistic ---
10 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms


ping -c 5 192.168.178.25
PING 192.168.178.25 (192.168.178.25) 56(84) bytes of data.
64 bytes from 192.168.178.25: icmp_seq=1 ttl=64 time=137 ms
64 bytes from 192.168.178.25: icmp_seq=2 ttl=64 time=45.0 ms
64 bytes from 192.168.178.25: icmp_seq=3 ttl=64 time=74.2 ms
64 bytes from 192.168.178.25: icmp_seq=4 ttl=64 time=103 ms
64 bytes from 192.168.178.25: icmp_seq=5 ttl=64 time=128 ms

--- 192.168.178.25 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 45.023/97.979/137.833/34.484 ms



Hatte jemand von euch schon einmal das Problem, und weiss woran das liegen könnte?