FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: erwin am 17 Februar 2013, 18:31:41

Titel: Presence - Perfomance
Beitrag von: erwin am 17 Februar 2013, 18:31:41
Hi Markus,

ich hab jetzt meine mods überarbeitet.
Der erste Mod macht folgendes im Modul PRESENCE fritzbox:

Es wird beim ersten durchlauf (nach fhem start) alles wie bisher abgearbeitet.
danach wird die gefundene lan-devicenummer gecached und bei den folgenden
abfragen ist nur mehr EIN ctrlmgr call nötig. (satt bisher vielen.)
Der cache wird bei jedem ready event gelöscht, damit Änderungen in den FB definitionen wirksam werden können.

Ich schick's mal als diff...

l.g. erwin

PS: Am zweiten Teil - die fritzbox von remote abfragen, ohne daß fhem auf der FB läuft , da arbeite ich noch dran.
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 17 Februar 2013, 21:48:32
Hi erwin,

ich fürchte du hast das falsche Patch-File erwischt. Der angehangene Patch ist für FHEMWEB und nicht PRESENCE ;-)

Viele Grüße

Markus
Titel: Aw: Presence - Perfomance
Beitrag von: erwin am 18 Februar 2013, 09:05:18
Hi Markus,

... was ich immer sage,
der Mensch ist NICHT multi-tasking fähig......

Hoffentlich jetzt richtig.


l.g. erwin
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 18 Februar 2013, 10:06:53
Hallo Erwin,

sieht auf den ersten Blick gut aus. Werd ich heute Abend einchecken.

Viele Grüße

Markus
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 18 Februar 2013, 18:56:16
Hallo Erwin,

hab ich soeben eingecheckt. Ich prüfe aber noch zusätzlich, ob der Name des Devices mit dem gewünschten Device noch übereinstimmt um sicher zu sein, dass auch das korrekte Device noch an dieser Stelle ist, nicht das es hier Fehler gibt und das falsche Device alarmiert wird.

Das delete-Kommando um den Wert beim Start zu löschen habe ich in die Define sub gepackt, da Ready bei fritzbox nicht aufgerufen wird.

Ist ab morgen verfügbar.

Viele Grüße

Markus
Titel: Aw: Presence - Perfomance
Beitrag von: erwin am 18 Februar 2013, 19:37:52
Hi Markus,

herzlichen Dank, das war ja prompt!!!
Ich gebe dir recht, ich hab heute auch schon darüber nachgedacht, ob man nicht den Namen oder die Anzahl jedesmal vergleichen sollte.

eins hab ich noch:
in Zeile 499:
   return ($status == 0 ? "$name|$local|absent|$number" : "$name|$local|present|$number");
ist ein ) an der falsche stelle
    return ($status == 0) ? "$name|$local|absent|$number" : "$name|$local|present|$number";


l.g. erwin


Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 18 Februar 2013, 19:42:29
Zitat von: erwin schrieb am Mo, 18 Februar 2013 19:37eins hab ich noch:
in Zeile 499:
   return ($status == 0 ? "$name|$local|absent|$number" : "$name|$local|present|$number");
fehlt ein )
    return ($status == 0) ? "$name|$local|absent|$number" : "$name|$local|present|$number");


return ($status == 0 ? "$name|$local|absent|$number" : "$name|$local|present|$number");

Die Klammern stimmen schon. So verwende ich das immer und funktioniert ohne Probleme. finde ich besser um solche IF-THEN-ELSE-Einzeiler besser zu sehen.

Viele Grüße

Markus
Titel: Aw: Presence - Perfomance
Beitrag von: erwin am 18 Februar 2013, 20:10:32
Markus,

danke, ... man lernt nie aus mit perl....

so jetzt hab ich's auf der FB am laufen, ein kleiner Fehler war noch drin:
line 134
   delete $hash->{helper}{cachednr} if(defined($hash->{helper}{cachednr};
    delete $hash->{helper}{cachednr} if(defined($hash->{helper}{cachednr}));



Danke für deine Mühe!

erwin
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 18 Februar 2013, 20:56:22
Zitat von: erwin schrieb am Mo, 18 Februar 2013 20:10so jetzt hab ich's auf der FB am laufen, ein kleiner Fehler war noch drin:
line 134
   delete $hash->{helper}{cachednr} if(defined($hash->{helper}{cachednr};
    delete $hash->{helper}{cachednr} if(defined($hash->{helper}{cachednr}));


Und dabei verwende ich schon einen Editor mit Syntax-Highlighting und Klammer-Highlighting .... Asche auf mein Haupt.
Titel: Aw: Presence - Perfomance
Beitrag von: det. am 20 Februar 2013, 10:14:22
Hallo,

kann noch jemand bestätigen, dass PRESENCE auf der FB7390 seit dem letzten Update vom 19.2. (oder ggf. dem Update der iPhones auf IOS 6.1.2) im Fritzbox Modus trotz verbundenem WLAN (auch in der FB Oberfläche als connected zu sehen)ständig die iPhones auf absent setzt?
Titel: Aw: Presence - Perfomance
Beitrag von: erwin am 20 Februar 2013, 18:13:51
Hi det,

das kann ich erst am Sonntag überprüfen, wenn mein Sohn vom Schifahren zurück kommt...
Dnn weiß ich auch welches iOS er hat.

l.g.erwin
(der mit Android unterwegs ist)
Titel: Aw: Presence - Perfomance
Beitrag von: det. am 20 Februar 2013, 18:37:38
Hallo erwin,

es liegt definitiv nicht an der iOS Version. Bin eben von Arbeit zurück - iPhone absent  - habe aus dem NAS eine ältere Version:
# $Id: 73_PRESENCE.pm 2675 2013-02-09 12:51:24Z markusbloch $
drüber gespielt - nach reload 73_PRESENCE.pm -
iPhone present ! - hat sich also bei Nutzung des FB Modus offenbar ein Fehler eingeschlichen.
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 20 Februar 2013, 23:13:39
Hi det,

kannst mal bitte folgendes ausprobieren? In dem Modul 73_PRESENCE.pm in den Zeilen 459 und 489 das Wort "speed" gegen "active" austauschen:

Zitat settings/landevice$number/active


Anschließend FHEM einmal neustarten und schauhen obs wieder stabil läuft.

Vielen Dank

Gruß
Markus
Titel: Aw: Presence - Perfomance
Beitrag von: det. am 21 Februar 2013, 16:36:42
Hallo Markus,

genau so, geht wieder! Danke!!!
Titel: Aw: Presence - Perfomance
Beitrag von: det. am 22 Februar 2013, 07:43:20
Offenbar hat der Verbesserungsversuch durch den Performance Patch den Effekt, dass auf der FB Handys, welche sich neu im WLAN eingebucht haben als present erkannt werden - aber welche, die über Nacht eingebucht sind ohne irgendwelche weitere Aktivitäten auszuführen irgendwann auf absent gesetzt werden. Ich hatte heute früh jedenfalls beide Handys in der FB Oberfläche WLAN als verbunden, im FHEM allerdings als absent - und dementsprechend das Postfach voll mit Mails über geöffnete Türen und Tore.
Bitte gebt uns das Modul zurück vor diesen Verschlimmbesserungen, da ging es schon mal zur vollsten Zufriedenheit!
Titel: Aw: Presence - Perfomance
Beitrag von: erwin am 22 Februar 2013, 08:51:53
Hallo det.

Als Initiator dieses patches muß ich ein paar Worte finden zu deinem Posting:

Tatsache ist, daß der Patch ein wesentlich schnelleres Erkennen von nicht mehr angemeleten WLAN Geräten ermöglicht, und zwar schneller als die FB-Web-Oberfläche das anzeigt. Die Suchmaschine deiner Wahl wird dir dazu die nötigen Informationen liefern.

Wenn jetzt diverse I-xx und auch Android's sich aus Strom-Spar Gründen vom WLAN abmelden und alle 5 Minuten wieder an/abmelden, dann wurde das bisher nicht erkannt, weil die Zeit bis auf der FB Web Oberfläche ein Gerät weg ist, zwischen 5 und 15 Minuten nach Ausschalten ist! (meine eigenen Versuche)

Die Frage ist, ob man die Wahrheit sehen will oder was anderes.
Das Modul macht "mein Gerät ist im WLAN angemeldet" und keinesfalls "ich bin zuhause" - das sind zwei ganz verschiedene Dinge für mich!
Seinen persönlich Anwesenheitsstatus nur auf WLAN aufzubauen, find ich sowieso nicht besonders klug, was machst du z.b. wenn der Akku leer wird (oder tausend andere Gründe warum WLAN grad nicht funkt)? Ausserdem könnte man ja mittels Watchdog durchau eine Verzögenung einbauen, bis "Ich bin nicht zuhause" passiert.  
Darum find ich es etwas überzogen, von Verschlimmbesserungen zu sprechen, das sollte nicht der Stil dieses Forums sein.

Frage an Markus:
führen wir ein Attribut fast=0 / fast=1 ein, um alle glücklich zu machen?

l.g. erwin
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 22 Februar 2013, 10:42:23
Zitat von: det. schrieb am Fr, 22 Februar 2013 07:43Offenbar hat der Verbesserungsversuch durch den Performance Patch den Effekt, dass auf der FB Handys, welche sich neu im WLAN eingebucht haben als present erkannt werden - aber welche, die über Nacht eingebucht sind ohne irgendwelche weitere Aktivitäten auszuführen irgendwann auf absent gesetzt werden. Ich hatte heute früh jedenfalls beide Handys in der FB Oberfläche WLAN als verbunden, im FHEM allerdings als absent - und dementsprechend das Postfach voll mit Mails über geöffnete Türen und Tore.
Bitte gebt uns das Modul zurück vor diesen Verschlimmbesserungen, da ging es schon mal zur vollsten Zufriedenheit!

ich habe gestern abend noch eine Änderung am PRESENCE Modul durchgeführt, hast du heute schonmal ein Update durchgeführt? Generell solltest du aber wissen, dass ein iPhone im Standby sein WLAN abschaltet um Strom zu sparen und dadurch auch in der FritzBox gerne mal mit Abwesenheit glänzt. Genau aus diesem Grund prüfe ich mein iPhone mit Bluetooth. Das ist stabil und auch im Standby Betrieb aktiviert (sofern man ein Pairing vorgenommen hat).

Allerdings ist es bereits so wie erwin bereits erläutert hat, dass die FritzBox erstnach 5-15 Minuten die Abwesenheit eines Gerätes erkennt.

Wenn du erst nach 15 Minuten kontinuierlicher Abwesenheit informiert werden willst, solltest du ein Watchdog verwenden. z.B.:


# Nach 15 Minuten Abwesenheit (Handy im Status "absent") soll die gesamte Wohnung ausgeschaltet werden.
define watchdog_Anwesenheit watchdog Handy:absent 00:15 Handy:present { fhem "set Gesamte_Wohnung off";; fhem "setstate watchdog_Anwesenheit defined";;}
attr watchdog_Anwesenheit regexp1WontReactivate 1



ZitatFrage an Markus:
führen wir ein Attribut fast=0 / fast=1 ein, um alle glücklich zu machen?

Ich persönlich bin kein Freund davon, das Rad 2 mal zu erfinden. Im Wiki habe ich daher diesen Watchdog eingetragen, den ich auch selber einsetze (da bluetooth fast gar keine Verzögerungen hat).

Viele Grüße

Markus Bloch
Titel: Aw: Presence - Perfomance
Beitrag von: det. am 22 Februar 2013, 11:13:09
Hallo Erwin,

tut mir leid, dass Du dich angegriffen fühlst. Fakt ist, dass seit Veröffentlichung des Moduls durch Markus bis zum Einspielen Deines Patch das Modul für meine 2 iPhone genau den Status so gesetzt hatte, wie ich das wollte - und jetzt eben leider nicht mehr. Mir war das genau genug bisher und ich sehe mich jetzt gezwungen, das Modul aus dem Archiv zu restaurieren und in Zukunft vom Update Prozess auszuschließen. Das finde ich nicht lustig und das verdient in meinen Augen das Prädikat "Verschlimmbesserung"  vollauf.
Manchmal ist das eben im Leben so, man versucht was zu verbessern und schadet damit Anderen, ohne es zu beabsichtigen.
Titel: Aw: Presence - Perfomance
Beitrag von: det. am 22 Februar 2013, 11:26:01
Hallo Markus,

Generell solltest du aber wissen, dass ein iPhone im Standby sein WLAN abschaltet um Strom zu sparen und dadurch auch in der FritzBox gerne mal mit Abwesenheit glänzt. Genau aus diesem Grund prüfe ich mein iPhone mit Bluetooth. Das ist stabil und auch im Standby Betrieb aktiviert (sofern man ein Pairing vorgenommen hat).

Allerdings ist es bereits so wie erwin bereits erläutert hat, dass die FritzBox erstnach 5-15 Minuten die Abwesenheit eines Gerätes erkennt.


Meine iPhone melden sich nicht von der FB ab, wegen WLAN Sync. Da ich nichts über die "ich bin zuhause" Funktion schalte, sondern nur Fenster und Türen überwache, ging das vor Deinem Modul auch mit dem Konstrukt aus dem WIKI. Dein Modul war da aber einfach Ressourcen schonender und eleganter gelöst. Daher habe ich die WIKI Lösung damit abgelöst. Wenn ich noch überall im Haus Bluetooth installieren soll ... der WAF der Anwesenheitskontrolle ist eh schon grottenschlecht.
Titel: Aw: Presence - Perfomance
Beitrag von: Lorenz am 22 Februar 2013, 18:05:24
Hallo zusammen,

nachdem ich heute das Update auf die aktuelle Version von Presence gemacht habe, waren sofort Handys, welche definitiv nicht anwesend waren present, obwohl auch die Fritzbox sie als nicht im LAN verbunden anzeigte. Das blieb auch so, bis ich wieder die letzte Version des Moduls einsetzte.

Die defines dazu sehen so aus:

define samsungace2 PRESENCE fritzbox SamsungAce2 300
attr samsungace2 room Presence
define FileLog_samsungace2 FileLog ./log/samsungace2-%Y.log samsungace2
attr FileLog_samsungace2 logtype Anwesend:Window,text
attr FileLog_samsungace2 room Presence

Muss ich in der Konfiguration aufgrund der neuen Version noch etwas tun oder ist das eher ein Bug?

Ansonsten war ich bislang mit der Funktion zufrieden. Auch das Iphone mit WLAN Sync funktionierte einwandfrei und blieb, wenn es da war, ständig present. Die Zeitverzögerungen fand ich dabei nicht weiter störend. Mir geht es auch mehr darum, Abwesenheit zu erkennen und daraufhin einige Dinge (zeitunkritisch) zu beeinflussen, z.B. Zirkulation abschalten etc.. Allerdings würde ich auch relevantere Dinge nur mit zuverlässigeren Kenngrößen, wie zum Beispiel der Scharfschaltung der Alarmanlage beeinflussen.
Titel: Aw: Presence - Perfomance
Beitrag von: det. am 22 Februar 2013, 18:45:42
Hallo @all

ich bin wieder auf
$Id: 73_PRESENCE.pm 2675 2013-02-09 12:51:24Z markusbloch $zurück gegangen. Die Version funktioniert für meine Belange auf der FB 7390 (nicht zeitkritisches Benachrichtigen, wenn jemand in Abwesenheit mein Haus betritt - um z.B. die Katze zu füttern) prima.
Bitte meldet doch hier, wenn ich das wieder aus meiner Config entfernen kann:attr global exclude_from_update 73_PRESENCE.pmDanke!
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 22 Februar 2013, 18:57:17
Hi det,

heist das, dass es auch mit SVN Revision 2721 nicht mehr funktionierte?

Viele Grüße

Markus
Titel: Aw: Presence - Perfomance
Beitrag von: det. am 22 Februar 2013, 19:35:26
Hallo Markus,
keine Ahnung, ich hatte nur die Version 2675 im Archiv auf meinem NAS (da ich die Sicherungsfunktion bei Update aus Zeitgründen auf der FB ausgeschaltet habe). Da es damit perfekt läuft, kam mir bisher nicht in den Sinn, es mit den Versionen danach zu probieren. Ich fahre jetzt paar Tage in Urlaub und teste dann gern noch mal, ob Ihr es bis dahin gefixt bekommen habt.
Titel: Aw: Presence - Perfomance
Beitrag von: Guido am 22 Februar 2013, 21:34:30
Hallo,

Ich persönlich finde die speed Abfrage besser,   aber vielleicht währe es das beste wenn man das auswählbar macht beim define damit jeder die Wahl hat ob speed oder activ

Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 22 Februar 2013, 23:09:15
Ich werde das ganze generell nochmal detailliert testen da ja bereits mehr als ein User die selben Beobachtungen haben
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 25 Februar 2013, 22:32:00
Nachstellen konnte ich es schonmal erfolgreich. Es ist so, dass wenn man abwesend ist für längere Zeit, die jeweilige LAN-Device Nummer gelöscht wird und quasi unbenutzt ist. Genau für diesen Fall prüfen wir, dass der Name des Devices aber immer noch derselbe ist, das scheint aber nicht zu funktionieren. Warum das so ist muss ich weiter testen. Geht halt nur leider nicht so schnell, da es immer ne ganze weile dauert, bis die FritzBox das Device löscht.

Viele Grüße

Markus
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 25 Februar 2013, 23:10:07
Hallo zusammen,

Problem gefunden. Im Zusammenhang mit erwins Patch wurde die Variable $number vorher auf $hash->{helper}{cachednr} gesetzt. Wenn nun aber das Device nicht unter dieser Nummer zu finden ist, dann beginnt die while-Schleife einen kompletten durchlauf. Der Startwert ist dann aber immer noch die alte Cachednr. Das heist, es werden nicht alle Devices abgeklappert.

Durch Zufall kann eine solche Nummern-Änderung auch ohne Probleme funktionieren, wenn die neue Nummer größer ist als die alte.

Ich habe den Fix im SVN bereits eingecheckt und steht ab morgen zur Verfügung.

Viele Grüße

Markus
Titel: Aw: Presence - Perfomance
Beitrag von: Markus Bloch am 01 März 2013, 23:25:36
Zitat von: Guido schrieb am Fr, 22 Februar 2013 21:34Hallo,

Ich persönlich finde die speed Abfrage besser,   aber vielleicht währe es das beste wenn man das auswählbar macht beim define damit jeder die Wahl hat ob speed oder activ


Hallo Guido,

ab morgen steht mit einem update eine neue PRESENCE Version zur Verfügung. In dieser kann man mit dem Attribut "fritzbox_repeater" auf die Abfrage via "active" umsteigen. Da Devices welche über einen Repeater verbunden sind keine Speed angabe besitzen gibt es daher bei Repeater Netzwerken keine andere Möglichkeit.

Im Standard wird die Abfrage via speed durchgeführt. Wenn jedoch das neue Attribut aktiviert ist, wird via active geprüft.

Viele Grüße

Markus