PRESENCE lan-ping + GalaxyS5 Standby = unzuverlässig?

Begonnen von snoopy1978, 28 Mai 2015, 13:42:32

Vorheriges Thema - Nächstes Thema

CoolTux

Zitat von: riker1 am 04 September 2018, 08:40:57
Hi Feature oder Fehler?
wo ist der Vorteil?

- WLAN verbindung steht mit der FB
- LAN abgeschaltet?

Merkwürdigerweise kommen ja whatsapp im standby (Datenmodus aus) an

Was genau schaltet Android ab 7 da denn ab?

Habe im Netz auch was von Fehler in der firmware gelesen...

Das ganze ist ne Art Standby Funktion was Strom sparen soll. Wie genau das mit dem Pushen geht weiß ich nicht, aber hin und wieder wird ja wohl das WLAN wieder aufgeweckt und legt sich dann wieder schlafen.
Gibt tonnenweise Beitrage zu dem Thema.
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

laberlaib

Such mal hier nach "hping3".
Funktioniert bei mir einwandfrei.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Frank_Huber

Wiki zu fritzbox lesen.

Presence in Verbindung mit dem Fritzbox Modul und ein wenig Code in der myutils funktioniert einwandfrei. Selbst mit dem galaxy s9.

Gesendet von meinem Doogee S60 mit Tapatalk


Vaddi

Hallo,
als ich mich vor einiger Zeit damit beschäftigt hatte, stieß ich auf das gleiche "Problem".
Nach einiger Recherche bin ich auf folgendes Ergebnis gestoßen (ich weiß leider nicht mehr, wer das
veröffentlicht hat bzw. wo ich es gefunden hab, sämtlicher Dank geht also nicht an mich)

PRESENCE Device
define Handy_NAME PRESENCE function {checkFritzMACpresent("FritzBox","MAC-VON-EUREM-SMARTPHONE","Repeater")} 60 180


99_myUtils Funktion
#############################################################################
#
#  Fritzbox MAC Anwessenheitserkennung
#
#############################################################################

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, $Repeater) = @_;
  my $Status = 0;
  $MAC =~ tr/:/_/;
  $MAC = "mac_".uc($MAC);
  my $StatusFritz = ReadingsVal($Device, $MAC, "weg");
  my $StatusRepeater = defined @_[2] ? ReadingsVal($Repeater, $MAC, "weg") : "weg";
 
 
  if ($StatusFritz eq "weg" && $StatusRepeater eq "weg") {
    #Log 1, ("checkFritzMACpresent ($Device): $MAC nicht gefunden, abwesend.");
    $Status = 0;
  } elsif ($StatusFritz eq "inactive" || $StatusRepeater eq "inactive") {
    #Log 1, ("checkFritzMACpresent ($Device): $MAC ist >inactive<, also abwesend.");
    $Status = 1;
  } else {
    # Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät per WLAN angemeldet.
    #Log 1, ("checkFritzMACpresent ($Device): $MAC gefunden, Gerät heißt >$StatusFritz<.");
    $Status = 1;
  }
  return $Status
}


Die Originale Funktion habe ich um eine optionale Repeater Angabe erweitert, da ich eine zweite
Fritzbox im Keller stehen habe und ich ja auch zuhause bin, wenn ich mit dem Repeater verbunden bin.
Wer das nicht braucht, kann die Definition des PRESENCE Device einfach wie folgt ändern:
function {checkFritzMACpresent("FritzBox","MAC-VON-EUREM-SMARTPHONE")} 60 180

Funktioniert bei mir schon seit über einem halben Jahr ohne Problemen.

Gruß
Vaddi
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

riker1

super, danke
werde ich dann mal einbauen und checken.

FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Frank_Huber

Ja, das ist der im Wiki beschriebene Weg. Funktioniert tadellos.

Gesendet von meinem Doogee S60 mit Tapatalk


CoolTux

Zitat von: riker1 am 04 September 2018, 08:40:57
Hi Feature oder Fehler?
wo ist der Vorteil?

- WLAN verbindung steht mit der FB
- LAN abgeschaltet?

Merkwürdigerweise kommen ja whatsapp im standby (Datenmodus aus) an

Was genau schaltet Android ab 7 da denn ab?

Habe im Netz auch was von Fehler in der firmware gelesen...

Keine Ahnung
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

Jackson

Das Problem kenne ich auch...

Mein A3 2016 hat sich auch manchmal schlafen gelegt mit Android 7. Bei meiner Frau und ihrem S3 mimi mit Android 4.x war das kein Problem.

Es scheint aber, dass da nachbessert worden ist.. bzw. es an meiner Variante der Anwesenheitserkennung liegen könnte.

Ich frage die Devices einfach über eine notify an der FRITZBOX ab. Dabei reagiere auf "none". Das ist nämlich der Wert, der gesetzt wird bevor das Device gänzlich aus den Readings der FRITZBOX verschwindet. Hier habe ich zwar auch eine Zeitverzögerung von 5 min im System aber für meine Zwecke reicht das.

Ansonsten zum Vergleich: Mein A3 (2016) hat jetzt das Patchlevel Juni 2018 mit Android 7.

FHEM5.9@RPI3

riker1

Zitat von: Vaddi am 04 September 2018, 09:46:47
Hallo,
als ich mich vor einiger Zeit damit beschäftigt hatte, stieß ich auf das gleiche "Problem".
Nach einiger Recherche bin ich auf folgendes Ergebnis gestoßen (ich weiß leider nicht mehr, wer das
veröffentlicht hat bzw. wo ich es gefunden hab, sämtlicher Dank geht also nicht an mich)

PRESENCE Device
define Handy_NAME PRESENCE function {checkFritzMACpresent("FritzBox","MAC-VON-EUREM-SMARTPHONE","Repeater")} 60 180


99_myUtils Funktion
#############################################################################
#
#  Fritzbox MAC Anwessenheitserkennung
#
#############################################################################

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, $Repeater) = @_;
  my $Status = 0;
  $MAC =~ tr/:/_/;
  $MAC = "mac_".uc($MAC);
  my $StatusFritz = ReadingsVal($Device, $MAC, "weg");
  my $StatusRepeater = defined @_[2] ? ReadingsVal($Repeater, $MAC, "weg") : "weg";
 
 
  if ($StatusFritz eq "weg" && $StatusRepeater eq "weg") {
    #Log 1, ("checkFritzMACpresent ($Device): $MAC nicht gefunden, abwesend.");
    $Status = 0;
  } elsif ($StatusFritz eq "inactive" || $StatusRepeater eq "inactive") {
    #Log 1, ("checkFritzMACpresent ($Device): $MAC ist >inactive<, also abwesend.");
    $Status = 1;
  } else {
    # Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät per WLAN angemeldet.
    #Log 1, ("checkFritzMACpresent ($Device): $MAC gefunden, Gerät heißt >$StatusFritz<.");
    $Status = 1;
  }
  return $Status
}


Die Originale Funktion habe ich um eine optionale Repeater Angabe erweitert, da ich eine zweite
Fritzbox im Keller stehen habe und ich ja auch zuhause bin, wenn ich mit dem Repeater verbunden bin.
Wer das nicht braucht, kann die Definition des PRESENCE Device einfach wie folgt ändern:
function {checkFritzMACpresent("FritzBox","MAC-VON-EUREM-SMARTPHONE")} 60 180

Funktioniert bei mir schon seit über einem halben Jahr ohne Problemen.

Gruß
Vaddi


Hallo
habe das probiert, aber erhalte einen fehler:
habe ich das device so richtig definiert?

Mac adresse mit : und Gross?
Fritzbox: name meines FB devices in Fhe
m

defmod GalaxyS6_FB PRESENCE function {checkFritzMACpresent("meineFB","AA:44:D3:EA:35:42")} 60 180
attr GalaxyS6_FB room 01_Stromstatus,0_test_state
attr GalaxyS6_FB verbose 5

setstate GalaxyS6_FB error
setstate GalaxyS6_FB 2018-09-05 00:09:11 model function
setstate GalaxyS6_FB 2018-09-05 12:01:44 state error
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Frank_Huber

Was für einen Fehler?

Hast du das Fritzbox device angelegt?
Hast du den Code in die myUtils_99.pm gespeichert?

Gesendet von meinem Doogee S60 mit Tapatalk


riker1

#25
Zitat von: Frank_Huber am 05 September 2018, 12:14:34
Was für einen Fehler?

Hast du das Fritzbox device angelegt?
Hast du den Code in die myUtils_99.pm gespeichert?

Gesendet von meinem Doogee S60 mit Tapatalk

Hallo,
danke fürs schauen.

Ja, device ist FB da
und habe den code in my_Utils99. reinkopiert.

Fehlermeldung:
03:50.288 5: PRESENCE (GalaxyS6_FB) - stopping timer 2018.09.05 12:03:50.288 5: PRESENCE (GalaxyS6_FB) - starting blocking call for mode function 2018.09.05 12:03:50.536 5: PRESENCE (GalaxyS6_FB) - execute perl function: GalaxyS6_FB|{checkFritzMACpresent("TR7272","EC:9B:F3:3A:35:42")}|0 2018.09.05 12:03:50.537 1: ERROR evaluating {checkFritzMACpresent("TR7272","EC:9B:F3:3A:35:42")}: Undefined subroutine &main::checkFritzMACpresent called at (eval 137820) line 1.


meine utils sind:
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}

# Enter you functions below _this_ line.


#------------fritzbox eingefügt aus
#https://wiki.fhem.de/wiki/FRITZBOX
sub checkAllFritzMACpresent($) {
# Benötigt: nur die zu suchende MAC ($MAC),
# Es werden alle Instanzen vom Type FRITZBOX abgefragt
#
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
my ($MAC) = @_;
# Wird in keiner Instanz die MAC Adresse gefunden bleibt der Status 0
my $Status = 0;
$MAC =~ tr/:/_/;
$MAC = "mac_".uc($MAC);
my @FBS = devspec2array("TYPE=FRITZBOX");
foreach( @FBS ) {
my $StatusFritz = ReadingsVal($_, $MAC, "weg");
if ($StatusFritz eq "weg") {
} elsif ($StatusFritz eq "inactive") {
} else {
# Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät am Netzwerk angemeldet.
$Status = 1;
}
}
return $Status
}


1;



habe das device dann mal ohne fritzbox, nur mit MAC definiert, aber auch dann einen error im state.

Danke fürs schauen
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Frank_Huber

OK, Du hast in der myUtils den "CheckAll" code, fragst aber den anderen ab.

ändere mal dein Presence device so ab:

defmod GalaxyS6_FB PRESENCE function {checkAllFritzMACpresent("AA:44:D3:EA:35:42")} 60 180


riker1

Zitat von: Frank_Huber am 05 September 2018, 12:44:10
OK, Du hast in der myUtils den "CheckAll" code, fragst aber den anderen ab.

ändere mal dein Presence device so ab:

defmod GalaxyS6_FB PRESENCE function {checkAllFritzMACpresent("AA:44:D3:EA:35:42")} 60 180


super, nun geht es.
danke hatte das nicht gesehen.

VG T
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox