Presence und iPhone / Android

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

Vorheriges Thema - Nächstes Thema

JoWiemann

Hallo,

da Apple die iPhones immer wieder schlafen schickt habe ich mich nochmal auf die Suche nach einer Lösung gemacht und folgendes im openhab Forum gefunden: https://openhabforum.de/viewtopic.php?t=137 und es etwas angepasst:


#!/bin/bash

declare -a DEVICES
sudo hping3 -2 -c 10 -p 5353 -i u1 $1 -q >/dev/null 2>&1
DEVICES=`arp -an | awk '{print $4}'`
CHECK="$2"
if [[ ${DEVICES[*]} =~ $CHECK ]]
then
echo "1"
else
echo "0"
fi


Das Script habe ich unter /opt/fhem/FHEM/presence.sh lauffähig gespeichert.

In meiner ))_myUtils.pm dann folgende Sub eingetragen:


sub CheckiPhone($$)
{
  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 "CheckiPhone", 2, "CheckiPhone: $ret";
    return 0;
  }

  return $ret;

}


und in Presence dann definiert:

function {CheckiPhone("192.168.n.n", "xx:xx:xx:xx:xx:xx")} 60 60
                                        IP                        MAC

Siehe da, es läuft sehr zuverlässig.

Grüße Jörg


Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Thyraz

Verrückt, warum hat man hier davor noch nichts von hping3 in Verbindung mit dem iPhone gelesen?
Auf Google findet man da Einiges, hier ist dein Post der einzige Treffer.

Vielen Dank für diesen Hinweis, wird daheim gleich mal getestet.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

f-zappa

Das dürfte allerdings auch einen Effekt auf die Akkulaufzeit haben ...

Thyraz

Klar,

muss man mal schauen wie stark das auf den Akku geht.
Da es daheim Strom gibt, würde es mich nicht weiter stören solange es nicht gravierend schnell den Akku leersaugt.

Geofencing klappt bei uns im neuen Zuhause nicht mehr so zuverlässig.
Problem ist das Heimkommen per Rad oder Auto über die Tiefgarage.

Hier hab ich immer wieder mal das Problem, dass das Telefon gerade dann kein Empfang/Wlan hat wenn die Geofencing App Fhem informieren will.
Eine Erkennung direkt von FHEM Seite wäre mir daher grundsätzlich lieber, als das iPhone die Erkennung zu überlassen mit der Notwendigkeit dann FHEM zu informieren.

Mal sehen wie das läuft.
Dafür hat man hier dann das Problem, dass Akku leer = abwesend bedeuted.
Aber evtl. kann man hier fast alle Fehlerfälle abfangen wenn man den Timestamp des Türkontakts an der Wohnungstür in die Presence-Logik mit einbezieht...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Benni

Hallo Jörg,

danke fürs Finden!  8)

Testbetrieb läuft bei mir inzwischen auch, werde ebenfalls beobachten und berichten.

gb#

Thyraz

Bei mir will das Ganze leider noch nicht so recht.
Müsste hping3 schon was zurück liefern, oder ist es Ok, dass hier 100% "packet loss" ist?

So kann ich mein iPhone anpingen wenn es gerade aktiv ist:

ping 192.168.1.44


Hier bekomme folgende Meldung:

sudo hping3 -2 -c 10 -p 5353 -i u1 192.168.1.44 -q

Zitat
HPING 192.168.1.44 (eth0 192.168.1.44): udp mode set, 28 headers + 0 data bytes

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

Die CheckiPhone Funktion liefert auch immer 0 zurück.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

JoWiemann

Zitat von: Thyraz am 07 September 2017, 18:45:56
Bei mir will das Ganze leider noch nicht so recht.
Müsste hping3 schon was zurück liefern, oder ist es Ok, dass hier 100% "packet loss" ist?

Die CheckiPhone Funktion liefert auch immer 0 zurück.

Die Rückgabe von hping3 ist so Ok. hping3 dient ja auch nur dazu das iPhone aufzuwecken. Mit arp wird dann die Liste der sichtbaren Geräte geholt. Ist da iPhone wach, wird seine MAC aufgelistet und gefunden.

Was hast Du bisher gemacht und was steht im Fhem Log?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Benni

Ich hatte auch kleinere Startschwierigkeiten.

Bei mir war das Problem, dass der User fhem arp nicht im Suchpfad hatte. Ich habe es dann in der presence.sh einfach mit vollem Pfad (bei mir /usr/sbin/arp) angegeben, seither läufts bei mir. 
Evtl. muss auch noch die sudoers angepasst werden.

Es empfiehlt sich bei Problemen auch mal noch die Kommentare auf der von Jörg oben verlinkten Quelle durchzulesen, da wird einiges schon behandelt.

gb#

CQuadrat

Zitat von: Benni am 07 September 2017, 19:06:37
Bei mir war das Problem, dass der User fhem arp nicht im Suchpfad hatte. Ich habe es dann in der presence.sh einfach mit vollem Pfad (bei mir /usr/sbin/arp) angegeben, seither läufts bei mir. 
Evtl. muss auch noch die sudoers angepasst werden.


Bei mir auch.

Bei mir ist auch notwendig, dass in der MAC Kleinbuchstaben stehen.
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), KM271 (per ser2net), SONOS (div. Gimmicks), OneWire, Hue

Thyraz

Arghs...

Nachdem ich mir die Ausgabe von arp angeschaut hab, ist mir mein Fehler klar geworden.
Ich hab die Mac Adresse aus Gewohnheit mit Großbuchstaben geschrieben.
Arp liefert aber Kleinbuchstaben und der Vergleich schlägt fehl.  ::)

Nachdem ich das geändert hab funktioniert der Spaß einwandfrei...

edit: haha, ok du hast die Gleiche Fehlersuche hinter dir CQuadrat. ;)
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

JoWiemann

#10
Ich hab mal ein lowercase eingebaut.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Jamo

Ich habs bei mir seit gestern auch am laufen, funktioniert bisher prima, ich konnte über Nacht keinen negativen Einfluss auf die Batterielaufzeit feststellen.

Wenn ich das WLAN ausschalte (ich benutze auch die Presence parameter "60 60"), dauert es etwa 2 Minuten bis das 'absent' kommt, beim WLAN einschalten maximal eine Minute bis zum 'present'.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Thyraz

#12
Ja, beim abschalten kommt eben max. eine Minute bis das Gerät aus dem ARP Cache fliegt und eine weiter max. Minute bis FHEM wieder abfrägt zusammen.
Beim einschalten gibt es nur die max. Minute bis FHEM wieder abfrägt.

Keine Ahnung ob man dem Pi noch beibringen kann bestimmte ARP Einträge sofort zu vergessen und dann erst mit hping3 eine neue ARP Anfrage zu starten?
Das würde die weitere Gedenkminute eliminieren.

edit: Zumindest gibt es

arp -d 192.168.xxx.xxx

als delete Option.

Teste das später daheim mal...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Benni

#13
Ich hatte gestern plötzlich aus irgendeinem Grund das Phänomen, dass mein iPhone regelmäßig fälschlicherweise absent gemeldet wurde und zwar immer direkt gefolgt von einem present (iPhone-Restart und arp-cache löschen hat nix gebracht).
Es hatte irgendwie den Anschein, als ob der hping3 erst verspätet Wirkung zeigt, bzw. nicht mehr richtig durchkommt.

Ich habe mir für den hPing-Aufruf nun einen cronjob (root) eingerichtet, seither läuft es wirklich zuverlässig. Jetzt ist zwar nicht mehr alles schön in einem Skript und die ip für den Ping kein Parameter mehr, sondern direkt im cronjob hart eingetragen, aber dafür läuft der Ping jetzt auf jeden Fall mit root-Rechten, so dass ich nicht mehr darauf achten muss, dass fhem die erforderlichen Rechte für dafüt hat (Stw. sudoers)

Der Eintrag in der crontab sieht wie folgt aus (name-of-phone natürlich durch den echten Namen ersetzt):


* * * * * /usr/sbin/hping3 -2 -c 10 -p 5353 -i u1 <name-of-phone> -q >/dev/null 2>&1


Wie gesagt, seither habe ich keine Probleme mehr damit. Wenn ich mal noch Lust habe, mache ich mich mal noch an die Ursachenforschung für das o.g. Phänomen.

gb#

Update (09.09.2017):
Das mit der Zuverlässigkeit hat leider schon wieder ein Ende. Habe jetzt wieder das selbe Phänomen.
Habe den Testbetrieb nun erst mal eingestellt, da es sich außerdem auch spürbar auf den Akku auswirkt.

Schade! Wäre schön gewesen  :(

Update (01.02.2018)
Aufgrund einer Nachfrage habe ich mal den crontab-Eintrag hier noch ergänzt.

MadMax-FHEM

Hi,

ich häng mich hier mal dran...

Suche schon länger nach einer Lösung für Presence mit dem Handy.

Habe zwar Android aber ich dachte: probieren kann ich's ja mal.

Habe es seit einigen Tagen parallel zum "normalen" Presence lan-ping laufen und bis jetzt funktioniert die hping3-Methode so wie es sein soll...

Werde das mal noch weiter testen und sehen...

Gruß und danke, 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)