Fix für PRESENCE lan-ping unter Windows

Begonnen von gemx, 25 November 2013, 17:09:23

Vorheriges Thema - Nächstes Thema

gemx

Hallo zusammen,

bin noch sehr neu dabei und habe gerade mal ein paar Max Thermostate, Fensterkontakte und ein paar alte Intertechno Steckdosen eingebunden.
Nach einer etwas größeren Anfangshürde läuft nun alles und ich beginne mit den Komfortfunktionen wie dem PRESENCE Modul.
Da der Server derzeit noch unter Windows läuft bin ich auf diverse Problemchen gestossen.

So auch dass LAN-PING unter Windows mit Strawberry Perl den FHEM zum Absturz bringt.

Da ich aber Programmierer bin, habe ich mal sowas wie den presenced selbst geschrieben und als Windows Service in C# umgesetzt.
Damit funktioniert das wunderbar.
Wenn also jemand interesse daran hat, einfach melden, dann poste ich das hier mal :-)

Spiff

Hi gemx,

ich ich ich!  :D

Viele Grüße
Spiff

gemx

Hallo,
hab jetzt mal den Windows Service angehängt.
In der .config bitte einfach den TCP Port eintragen.

Wenn man die exe einfach doppel klickt wird sie im debug modus in der Konsole gestartet und man sieht, was so passiert.

Um es als Windows Dienst zu installieren einfach "FHEMShellService /INSTALL" eingeben und zum Entfernen "FHEMShellService /UNINSTALL"

Es wird das .NET Framework 4.0 benötigt.

Das Ding heisst deswegen "ShellService" und nicht "PingService" weil es evtl. noch weitere Aufgaben übernehmen wird.
Mal sehen. :-)

Ein Erweiterung des Precense Moduls wäre noch toll in der man zusätzlich die Ping Zeit übergeben kann. Da könnte man dann ein prima Diagramm draus machen ;-)

Spiff

Hi gemx,

ist dieser Service nur für Bluetooth gedacht?
Ich dachte eigentlich, dass er den Ping auf eine oder mehrere spezifizierbare IP-Adressen übernimmt und das Ergebnis an fhem zurückmeldet.

Kannst du ein Anwendungsbeispiel bringen?

Danke & viele Grüße
Spiff.

El-Docho

Ein Beispiel wäre allerdings nicht schlecht gewesen. Habs so dann zum laufen gebracht:

define <name> PRESENCE lan-bluetooth <Ziel-IP> <127.0.0.1:5222>

Zusätzlich muss man im Presence Modul die Abfrage löschen welche überprüft ob die Bluetooth Adresse richtig formatiert ist. Da diese Variable nun eine IP Adresse ist und es sonst Mecker gibt und nicht funktioniert.

In der 73_PRESENCE.pm nach elsif($a[2] eq "lan-bluetooth") suchen und folgendes löschen/auskommentieren:
unless($a[3] =~ /^\s*([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}\s*$/)
{
    my $msg = "given address is not a bluetooth hardware address";
    Log 2, "PRESENCE: ".$msg;
    return $msg
    }


Viele Grüße
Michael

hugo.crank

Hallo, ich hoffe das Thema ist noch aktuell.
ich habe den Fhemshellservice unter Windows laufen. Die Situation wird aber nicht besser. Ping ist so eingestellt das er alle 10 sekunden bei Anwesenheit und 800 Sekunden bei Abwesenheit pingen soll. Ergebnis ist nachfolgend aus der Log:
2017-03-02_05:39:09 Holger presence: absent
2017-03-02_05:41:19 Holger present
2017-03-02_05:41:19 Holger presence: present
2017-03-02_05:44:35 Holger absent
2017-03-02_05:44:35 Holger presence: absent
2017-03-02_05:44:45 Holger present
2017-03-02_05:44:45 Holger presence: present
2017-03-02_05:49:25 Holger absent
2017-03-02_05:49:25 Holger presence: absent
2017-03-02_05:53:20 Holger present
2017-03-02_05:53:20 Holger presence: present
2017-03-02_05:55:39 Holger absent
2017-03-02_05:55:39 Holger presence: absent
2017-03-02_05:55:50 Holger present
2017-03-02_05:55:50 Holger presence: present
2017-03-02_06:06:11 Holger absent
2017-03-02_06:06:11 Holger presence: absent
2017-03-02_06:06:21 Holger present
2017-03-02_06:06:21 Holger presence: present
2017-03-02_06:06:56 Holger absent
2017-03-02_06:06:56 Holger presence: absent
2017-03-02_10:45:37 Holger absent


Handy ist ein S7 Edge sowie ein S5 mit gleichem Effekt. gibt es eine funktionale "Ping"-Lösung für Windows? ich lese in anderen Themen das die Probleme unter Linux ähnlich sind mit PRESENCE.

Grüße

Spiff

Hi,

ich habe ähnliche Probleme. Mir ist das schon beim S4 meiner Freundin aufgefallen und dann auch bei meinem S7. Mein Nexus 4 und die Tablets gehen problemlos. Von daher gehe ich davon aus, dass es eine Art Samsung spezifischer Energiesparmodus ist. Bei im S4 hatte ich dazu was gefunden und es deaktiviert, das ging über die Telefonfunktion mit #irgendwas - hat aber kaum geholfen.
Mehr zu empfehlen ist die threshold Funktion von presence.

Gruß
Spiff