Hallo,
ich nutze um die Anwesenheit zu prüfen diese Funktion:
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
}
Das klappt auch alles wunderbar es treten keine Fehler auf. Es ist nur sau ungenau da wenn niemand hier ist die FritzBox 7360 einfach die Geräte nicht (oder nur wann sie mal Lust dazu hat) auf nicht Verbunden stellt. Ergo in der Fritzbox sind wir da obwohl wir nicht da sind.
Ich habe es einmal mit lan-ping versucht hat aber nichts gebracht da das iPhone ja nach 30sec ca. nicht mehr pingbar ist.
Gut dann habe ich in die Abfrage Anwesenheit eine Funktion mit Prowl eingebaut und die Abfrage auf 5sec gestellt.
Zum Verständnis einmal den Code von "Anwesenheit":
+*00:00:05 {
if (Value("Jan") eq "absent" && Value("Lisa") eq "absent") {
fhem("set Anwesenheit 0") if (Value("Anwesenheit") ne "0");;
{prowl("Test","Anwesenheit","1")}
}
else {
fhem ("set Anwesenheit 1") if (Value("Anwesenheit") eq "0");;
}
}
Das funktioniert auch er ballert so das iPhone zu und dann lässt es sich auch ab und an anpingen. Ich habe meine Heizung dann so eingestellt das sie alle 10 Minuten umgestellt wird.
+*00:10:00 {if(Value("HeizungSchalter") eq "1" && Value("HeizungHelp") eq "0") { fhem("set WohnzimmerHeizung desiredTemperature 21") } else { fhem("set WohnzimmerHeizung desiredTemperature 5")}}
Reicht jetzt an Code xD.
So die Frage ist jetzt geht das ganze auch einfach anders denn ich würde Prowl gerne anderweitig nutzen und so gehen die Pushs einfach unter denn wenn niemand da ist ballert er ja einfach weiter bis wieder wer da ist.
Bluetooth möchte ich ungern nutzen da wir dies nie an habe ich nutze es quasi nirgendwo weder Musik noch im Auto noch sonst wo.
Wäre super wenn mir da jemand helfen könnte=)
LG
EDIT: Achso ich nutze kein HomeMatic oder sonst was ich Steuere meine Heizung über ein BT Teil von Eq-3 mit EQ3BT und meine Lampen mit dem IKEA Tradfri Gateway=) Das Ganze System läuft auf eine Raspberry Pi 3.
Zitat von: NeticsDE am 27 März 2018, 08:26:58
Das klappt auch alles wunderbar es treten keine Fehler auf. Es ist nur sau ungenau da wenn niemand hier ist die FritzBox 7360 einfach die Geräte nicht (oder nur wann sie mal Lust dazu hat) auf nicht Verbunden stellt. Ergo in der Fritzbox sind wir da obwohl wir nicht da sind.
Ich habe es einmal mit lan-ping versucht hat aber nichts gebracht da das iPhone ja nach 30sec ca. nicht mehr pingbar ist.
zur FritzBox Problematik kann ich nix sagen, evtl. ist sie zu alt???
Zitat von: NeticsDE am 27 März 2018, 08:26:58
Gut dann habe ich in die Abfrage Anwesenheit eine Funktion mit Prowl eingebaut und die Abfrage auf 5sec gestellt.
Zum Verständnis einmal den Code von "Anwesenheit":
+*00:00:05 {
if (Value("Jan") eq "absent" && Value("Lisa") eq "absent") {
fhem("set Anwesenheit 0") if (Value("Anwesenheit") ne "0");;
{prowl("Test","Anwesenheit","1")}
}
else {
fhem ("set Anwesenheit 1") if (Value("Anwesenheit") eq "0");;
}
}
Das funktioniert auch er ballert so das iPhone zu und dann lässt es sich auch ab und an anpingen. Ich habe meine Heizung dann so eingestellt das sie alle 10 Minuten umgestellt wird.
naja, "zuballern" hast du ja auch programmiert.
alle 5 sekunden, und wenn ihr beide 'abstent' seid, dann schickt er ne prowl-message.
works as designed !!
setz die klammern richtig, dann sollte der teil zumindest nicht passieren...
Zitatnaja, "zuballern" hast du ja auch programmiert.
alle 5 Sekunden, und wenn ihr beide 'abstent' seid, dann schickt er ne prowl-message.
works as designed !!
Ja das habe ich ja zum testen so gemacht =).
Es funktioniert ja eig super nur wenn ich die rage wie es senden soll weiter hoch stelle kommen andere Dummys und at´s durcheinander bzw denken das wir nicht da sind obwohl wir da sind so werden dann Lichter abgeschaltet und die Heizung runtergestellt. Merkt des System dann weil das iPhone mal angepingt wurde das wir da sind stellt sich alles wieder um und das soll es ja nicht nur wenn wir nicht da sind und nicht bei Anwesenheit "rumflackern"
Hoffe du kannst mir folgen=)
Aber er soll ja nur suchen wenn niemand da ist das passt schon so mit den pushs aber das ist eine richtig dumme Lösung. Das blöde ist ja einfach das die iPhones nicht anpingbar sind und meine FritzBox es nicht rafft das wir nicht verbunden sind.
EDIT: Also was ich damit sagen will mit meine aktuellen Setup ist es so einfach super ungenau oder relative random (was die Presence angeht). Andere Lösungen mit einem iPhone gibt es nicht?
Zitat von: NeticsDE am 27 März 2018, 09:38:14
Hoffe du kannst mir folgen=)
ehrliche antwort?? Nein.
Satzzeichen und Absätze haben noch niemandem geschadet.
Du schreibst einfach alles hintereinander weg...
Erstmal einatmen und ausatmen, dann nochmal lesen, dann nochmal atmen, dann nochmal lesen und überlegen ob das jemand versteht der _keinen_ Plan hat was du bei dir zusammengezimmert hast. ;)
gerne werden auch lists der verschiedenen beteiligten devices gesehen. noch gerner dann gepostet in code-tags. (das ist das # über der Smiley Leiste!)
kurzum:
beschreib nochmal deinen aufbau, die beteiligten geräte (iphones!), die module, die momentan verwendet werden und dann sehen wir weiter.
evtl. setzt du deine abwesenheit ja wo anders (dummy, at, notify, DOIF, myUtils, ....) nochmal, oder wieder zurück, oder oder oder.....
Hab jetzt hier nicht alles gelesen...
...aber vielleicht ist das ja interessant/hilfreich:
https://forum.fhem.de/index.php/topic,76342.0.html
Kurz da nur Handy...
Gruß, Joachim
So erst einmal Entschuldigung für mein Durcheinander. Hier ein Überblick meiner für die PRESENCE relevante Abfrage
Also meine Module:
ZitatFRITZBOX, PRESENCE
Dazu habe ich Folgende at´s und Dummys:
Zitatat AnwesenheitsCheck
+*00:01:00 {
if (Value("Jan") eq "absent" && Value("Lisa") eq "absent") {
fhem("set Anwesenheit 0") if (Value("Anwesenheit") ne "0");;
}
else {
fhem ("set Anwesenheit 1") if (Value("Anwesenheit") eq "0");;
}
}
Und mein Dummy
ZitatAnwesenheit
Und hier der Auszug meine 99_myUtils:
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
}
SOOO dazu muss ich sagen das Funktioniert alles seitens FHEM wunderbar! Nur meine FritzBox checkt es einfach nicht wenn wir nicht mehr verbunden sind.
Leider schaltet das iPhone ja nach geringer Zeit ab und ist so nicht mehr Pingbar.
Somit ist lan-ping Unbrauchbar.
So dann habe ich es versucht mit Prowl immer mal wieder Nachrichten zu Pushen wenn niemand da ist mit Folgenden Einstellungen.
Zitat99_myUtils:
sub prowl
{
my $subject = $_[0];
my $event = $_[1];
my $priority = $_[2];
my $ret = "";
$ret .= system("wget -q -O /dev/null 'http://api.prowlapp.com/publicapi/add?apikey=xxxxxxxxxxx&application=WLAN&event=$event&priority=$priority&description=$subject'");
$ret =~ s,[r
]*,,g;
Log 1, "prowl returned: $ret";
}
Was ich dann zum Test einmal mit einem Abstand von 5sec geschickt habe wenn keiner da ist (oder wenn das iPhone schläft). Das hat dann auch alles wunderbar funktioniert. Er hat dadurch das iPhone aufgeweckt und so war es wieder Pingbar.
Der Nachteil dessen war einfach das mein Prowl so zugemüllt wurde und nicht mehr nutzbar bzw einfach überladen war. Dazu muss ich Sagen das auch wenn ich nicht da bin ich keine Lust habe dass mir das System immer eine Check abschickt ich möchte das Prowl nutzen um später Erinnert zu werden wenn ich mal was Essenzielles vergessen habe. Somit fällt das mit Prowl auch raus.
Ich habe mir einmal das von MadMax-FHEM angeschaut und getestet. Allerdings spuckt mir das presence.sh immer den wert 1 egal ob das iPhone da ist der nicht.
Ich würde gerne wissen ob es noch andere Möglichkeiten gibt, abzufragen ob wir da sind oder nicht. Aber erst einmal Danke für die Antworten =).
Was ich bis jetzt ohne Erfolg getestet habe:
Zitatlan-ping (kein Erfolg da das iPhone nicht erreichbar im Sperrzustand ist), meine Funktion mit der MAC Adresse (Durch meine FritzBox leider super Unzuverlässig), https://forum.fhem.de/index.php/topic,76342.0.html
Zitat@nils_:
Ich habe mir jetzt einmal die Module, Dummys, at´s für Heizung und Licht gespart, da das für die PRESENCE nicht relevant ist. Das läuft ja alles geschmeidig.
Die Frage ist, ob es zwingend mit dem Handy sein muss oder ob z.B auch Bluetooth Schlüsselanhänger wie Gigaset Keeper in Frage kämen?
Um die Grundlast beim Abfragen der presence zu minimieren habe ich das bei mir an einen Türsensor an der Haustür gekoppelt. Presence Devices sind für 15 Minuten enabled beim Öffnen der Tür, danach werden sie disabled (löst für das Residents Modul keine Statusänderung hervor). Setzt natürlich einen Türkontakt voraus.
Die Fritzbox 7360 ist noch ein aktuelles Model. Welche Fritz!OS-Version läuft denn darauf?
Eine andere Möglichkeit zur Anwesenheitserkennung wäre die Abfrage über NetDevDa. Otto123 hatte das in seinem Blog mal beschrieben. (https://heinz-otto.blogspot.de/2015/07/die-zeiten-andern-sich.html). Bei mir läuft das seit 2015 mit iPhone 4 (iOS 7.irgendwas) und iPhone 7 gut. Allerdings habe ich seit 2012 (damals mit WhoIsAtHome) mit unterschiedlichen iPhones und Androids sowie Fritzbox 7390 und aktuell 7580 als einer der wenigen wohl noch nie Probleme mit der Anwesenheitserkennung gehabt.
Hier läuft die Anwesenheitserkennung sowohl über NetDevDA, als auch über Bluetooth (ist permanent aktiv). Dazu eine structure über alles Devices.
Zitat von: Brice am 28 März 2018, 17:19:01
Die Fritzbox 7360 ist noch ein aktuelles Modell. Welche Fritz!OS-Version läuft denn darauf?
Eine andere Möglichkeit zur Anwesenheitserkennung wäre die Abfrage über NetDevDa. Otto123 hatte das in seinem Blog mal beschrieben. (https://heinz-otto.blogspot.de/2015/07/die-zeiten-andern-sich.html). Bei mir läuft das seit 2015 mit iPhone 4 (iOS 7.irgendwas) und iPhone 7 gut. Allerdings habe ich seit 2012 (damals mit WhoIsAtHome) mit unterschiedlichen iPhones und Androids sowie Fritzbox 7390 und aktuell 7580 als einer der wenigen wohl noch nie Probleme mit der Anwesenheitserkennung gehabt.
Hier läuft die Anwesenheitserkennung sowohl über NetDevDA, als auch über Bluetooth (ist permanent aktiv). Dazu eine structure über alles Devices.
Ich habe die Version FRITZ!OS: 06.83 installiert.
Ich werde mir deine Idee einmal genauer anschauen.
Zitat von: arallon am 28 März 2018, 17:11:36
Die Frage ist, ob es zwingend mit dem Handy sein muss oder ob z.B auch Bluetooth Schlüsselanhänger wie Gigaset Keeper in Frage kämen?
Um die Grundlast beim Abfragen der presence zu minimieren habe ich das bei mir an einen Türsensor an der Haustür gekoppelt. Presence Devices sind für 15 Minuten enabled beim Öffnen der Tür, danach werden sie disabled (löst für das Residentes Modul keine Statusänderung hervor). Setzt natürlich einen Türkontakt voraus.
Daran habe ich auch schon gedacht und mir auf die schnelle mal einen Schlüssenanhänger mit einem ESP gebaut der sich ins WLAN einloggt.
Nachteil er ist halt was größer da ein Akku dran hing hab ihn in der Tasche der Frau versteckt xD.
War aber schnell wieder aus dem Kopf da es wirklich eine dumme Idee war. AAAber diesen Gigaset Keeper könnte man sich wirklich mal genauer ansehen.
Momentan teste ich jetzt mal local-bluetooth mit den iPhone´s. Da wir eine Kellerwohnung haben sind die Wände schon was dicker. Aber ich gebe Bescheid wenn diese Lösung klappt und verlässlich ist ansonsten bleibt mir ja noch des mit den Keepern oder vill die Lösung von Brice.
Wir wollen ja auch eigentlich ungern Bluetooth aktive am iPhone lassen. Wir schauen mal was die nächsten 2 Tage hier passiert, was die Akkulaufzeit der Dinger angeht und wie verlässlich das ganze ist.
Also nocheinmal für den Überblick:
Zitat
Mit meiner Hardware ist es nicht möglich eine verlässliche Presence zu Generieren mit lan-ping, MAC Adressen Suche in der FritzBox (WLAN). Aktuell teste ich direkt das local-bluetooth im Modul PRESENCE
Also ich melde mich doch früher als gedacht ::)
Das mit dem local-bluetooth hat auch nicht so wie gewollt geklappt leider haben wir im Schlafzimmer keinen oder nur mangelnden Empfang.
Vielleicht hilft hier ein PI-Zero W im Schlafzimmer...
...vors. Presence kann auch per ssh testen...
Habe einen PI-Zero W für die Flower Sense in Balkonnähe und dann per ssh "eingebunden"...
Wird allerdings vom Modul für Flower Sense unterstützt...
Oder halt (noch) mal checken warum das hping3-Skript nicht tut...
Gruß, Joachim