FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ChrisW am 14 Januar 2013, 19:45:01

Titel: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 14 Januar 2013, 19:45:01
Hallo,

bisher hat das Script recht gut funktioniert.
Jedoch hab ich nun mal gemerkt als ich alleine zuhause war, das sobald wohl 1 Ping nicht Erfolgreich ist diese 5 Minuten Verlängerung nicht klappt.
Er hat also 5 Minuten lang einen Fehler und erkennt nicht das ich Online bin.

Hier mein Code vielleicht erkennt ja jemand etwas??


# Anwesenheit von Christian, Handy

define Anwesenheit_Chris dummy
attr Anwesenheit_Chris loglevel 6
attr Anwesenheit_Chris room Anwesenheit
attr Anwesenheit_Chris setList on off

define Anwesenheit_Chris_FileLog FileLog ./log/Anwesenheit_Chris.log Anwesenheit_Chris
attr Anwesenheit_Chris_FileLog logtype text
attr Anwesenheit_Chris_FileLog room Logfiles

define Job_AnwesendChris at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.50";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip)) { \
fhem("delete abwesend_Chris ;; set Anwesenheit_Chris on") if (Value("Anwesenheit_Chris") eq "off");; \
} \
else { \
fhem("define abwesend_Chris at +00:05:00 set Anwesenheit_Chris off") if (Value("Anwesenheit_Chris") eq "on");; \
} \
}

# Anwesenheit von Tanja, Handy

define Anwesenheit_Tanja dummy
attr Anwesenheit_Tanja loglevel 6
attr Anwesenheit_Tanja room Anwesenheit
attr Anwesenheit_Tanja setList on off

define Anwesenheit_Tanja_FileLog FileLog ./log/Anwesenheit_Tanja.log Anwesenheit_Tanja
attr Anwesenheit_Tanja_FileLog logtype text
attr Anwesenheit_Tanja_FileLog room Logfiles

define Job_AnwesendTanja at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.23";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip)) { \
fhem("delete abwesend_Tanja ;; set Anwesenheit_Tanja on") if (Value("Anwesenheit_Tanja") eq "off");; \
} \
else { \
fhem("define abwesend_Tanja at +00:05:00 set Anwesenheit_Tanja off") if (Value("Anwesenheit_Tanja") eq "on");; \
} \
}


Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: justme1968 am 14 Januar 2013, 21:36:14
hallo,

die erkennung mit einem ping so einfach ohne eine wartezeit oder hysterese wird niemals richtig funktionieren weil die telefone normalerweise sofort oder nach einer weile das netz stilllegen wenn das display aus ist. d.h. auch wenn das handy im haus ist ist es so lange es in der tasche ist per ping meistens bis garnicht erreichbar.

der ansatz der funktioniert ist im wlan router nachzuschauen ob das geraet angemeldet ist weil es dort erst nach sehr viel längerer inaktivität rausfliegt und durch die periodischen verbindungsversuche für mail abholen oder ähnliches immer wieder aktualisiert wird.

ich hab das bei mir spaßeshalber mal plotten lassen. oben ist der angemeldet status auf dem router und unten der status per ping. ich hab nur alle 5 minuten geschaut sonst wären die anwesend bereiche beim ping zum teil noch schmaler. zumal ich bei den breiten meistens auch noch wirklich noch was mit dem handy gemacht habe. wie schnell das wlan abgeschaltet wird kommt natürlich auf das telefon an.


(siehe Anhang / see attachement)


gruss
andre
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 14 Januar 2013, 21:40:23
Hallo, da gebe ich dir recht aber meine Telefone gehen per Ping relativ gut hab Dauerping aus Windows herraus.
Klar würde ich gerne per Fritz.Box das ganze abfragen aber ich habe Fhem auf einem Windows Notebook. Eine Fritz.box hab ich natürlich auch im netzwerk ..
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 14 Januar 2013, 21:41:14
Kannst du mir sagen wie ich aus meinem auch so einen Plot erstelle um das mal Grafisch zu erkennen ?
Bisher hab ich das Thema Plots bewusst noch nicht behandelt :P
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: justme1968 am 14 Januar 2013, 22:37:11
ich habe auch keine fritzbox. mein wlan router lässt sich per snmp abfragen.
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: justme1968 am 15 Januar 2013, 10:59:07
ich zeig es dir heute abend oder morgen.

gruss
  andre
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 15 Januar 2013, 15:05:37
Danke.
Hm scheinbar passiert der Fehler nur wenn Fhem neu Gestartet wird.
Aber komisch das sollte ja nichts ausmachen da er ja die Zeit nur verlängert wenn Ping nicht erfolgreich ist ..
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 15 Januar 2013, 15:50:06
hm selbst beim Hochdrehen auf 10 Minuten kommt es zu Fehlern. Wieso auch immer der PING über windows CMD ist immer erfolgreich. Der Ping über Fhem irgendwie nicht..
AM Code kann normal auch nichts falsch sein.

Werde wohl doch das ganze umbauen zu mit einer Fritz.box abfrage. Welche Codes funktionieren den wenn FHEM wie bei mir unter WIndows läuft?
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 15 Januar 2013, 19:24:25
Ich hoffe die EDIT Funktion kommt bald wieder :)

Alsoo nun Zuhause und ich erlebe es mit wie Ping mit Windows PC immer Erfolgreich ist...
Trotzdem geht nahc fhem Neustart nach 10 Minuten das Licht aus o_O

Aber sofort ( 1 Minute bis nächster Ping ) ist das Licht wieder Online da es erfolgreich ist.

Im Log sind komischerweise KEINE Meldungen mit Abwesenheit Chris exestiert schon oder erst Löschen NICHTS ...

Irgendwas stimmt am Code oben nicht vielleicht hat ja mal jemand Zeit drüber zu schauen.
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 15 Januar 2013, 19:42:47

EVENT LOG:
19:34 HANDY AUS
2013-01-15 19:35:15 Global global DEFINED abwesend_Chris
2013-01-15 19:35:15 Global global DELETED Job_AnwesendChris
2013-01-15 19:35:15 Global global DEFINED Job_AnwesendChris
2013-01-15 19:35:24 Global global DELETED Job_AnwesendTanja
2013-01-15 19:35:24 Global global DEFINED Job_AnwesendTanja

2013-01-15 19:35:53 Global global DELETED Job_AnwesendChris
2013-01-15 19:35:53 Global global DEFINED Job_AnwesendChris
2013-01-15 19:36:02 Global global DELETED Job_AnwesendTanja
2013-01-15 19:36:02 Global global DEFINED Job_AnwesendTanja


19:37 HANDY WIEDER AN
2013-01-15 19:37:44 Global global DELETED Job_AnwesendChris
2013-01-15 19:37:44 Global global DEFINED Job_AnwesendChris
2013-01-15 19:37:55 Global global DELETED Job_AnwesendTanja

2013-01-15 19:38:44 Global global DELETED Job_AnwesendChris
2013-01-15 19:38:44 Global global DEFINED Job_AnwesendChris
2013-01-15 19:38:55 Global global DELETED Job_AnwesendTanja
2013-01-15 19:38:55 Global global DEFINED Job_AnwesendTanja


Logfile steht nur folgendesseit ausmachen Handy bis Lampe wieder an :

2013.01.15 19:34:37 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:34:37 3: ml device opened
2013.01.15 19:34:38 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:34:39 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:35:53 3: define abwesend_Chris at +00:05:00 set Anwesenheit_Chris off : abwesend_Chris already defined, delete it first
2013.01.15 19:35:53 3: abwesend_Chris already defined, delete it first
2013.01.15 19:37:59 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:37:59 3: ml device opened
2013.01.15 19:38:00 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:38:00 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:16 1: CustomGetFileFromURL http://192.168.2.1:82/API/shutdown toggle: Can't connect to http://192.168.2.1:82

2013.01.15 19:40:17 3: HTPC Ausgeschaltet weil keiner da
2013.01.15 19:40:17 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:17 3: ml device opened
2013.01.15 19:40:18 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:18 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:19 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:19 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:19 3: ml device opened
2013.01.15 19:40:21 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:21 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:22 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:22 2: MAXLAN_Parse: Command was discarded
2013.01.15 19:40:22 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:22 3: ml device opened
2013.01.15 19:40:23 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:24 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:24 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:24 3: Setze Heizung Eco
2013.01.15 19:40:24 2: IT IODev device didn't answer is command correctly:   raw => tA0076686601CtAE075805881B
2013.01.15 19:40:28 1: CustomGetFileFromURL http://192.168.2.1:82/API/shutdown toggle: Can't connect to http://192.168.2.1:82

2013.01.15 19:40:28 3: HTPC Ausgeschaltet weil keiner da
2013.01.15 19:40:28 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:28 3: ml device opened
2013.01.15 19:40:29 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:29 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:29 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:29 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:30 3: ml device opened
2013.01.15 19:40:31 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:31 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:32 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:32 2: MAXLAN_Parse: Command was discarded
2013.01.15 19:40:32 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:32 3: ml device opened
2013.01.15 19:40:33 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:34 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:34 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:34 3: Setze Heizung Eco
2013.01.15 19:40:44 2: CUL: unknown message is000000000FF0
2013.01.15 19:40:44 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:44 3: ml device opened
2013.01.15 19:40:45 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:45 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:45 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:45 3: ml device opened
2013.01.15 19:40:47 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:47 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:47 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:47 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:48 3: ml device opened
2013.01.15 19:40:49 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:49 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:49 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:49 2: MAXLAN_Parse: Command was discarded
2013.01.15 19:40:49 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:50 3: ml device opened
2013.01.15 19:40:51 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:51 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:52 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:52 3: Setze Heizung Auto
2013.01.15 19:40:52 2: IT IODev device didn't answer is command correctly:   raw => tA0296926941CtAE2850050C1D
2013.01.15 19:40:54 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:54 3: ml device opened
2013.01.15 19:40:55 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:55 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:55 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:55 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:56 3: ml device opened
2013.01.15 19:40:57 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:40:57 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:40:58 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:40:58 2: MAXLAN_Parse: Command was discarded
2013.01.15 19:40:58 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:40:58 3: ml device opened
2013.01.15 19:40:59 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:41:00 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
2013.01.15 19:41:00 3: MAXLAN_Parse: 1% rule: we sent too much, cmd is now in queue
2013.01.15 19:41:00 3: Setze Heizung Auto
2013.01.15 19:41:06 3: delete abwesend_Chris ; set Anwesenheit_Chris on : Please define abwesend_Chris first
2013.01.15 19:41:06 3: Please define abwesend_Chris first
2013.01.15 19:41:17 2: CUL: unknown message is000000000FFF
2013.01.15 19:41:17 3: Opening ml device 192.168.2.22:62910
2013.01.15 19:41:18 3: ml device opened
2013.01.15 19:41:19 2: MAXLAN_Parse: Got configdata for unimplemented devicetype 5
2013.01.15 19:41:19 2: MAXLAN_Parse: Got status for unimplemented device type PushButton
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: Zrrronggg! am 18 Januar 2013, 00:37:39
So richtig kann ich dir nicht helfen, weil ich das Konstrukt

define Job_AnwesendChris at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.50";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip))

nicht verstehe.  Oder genauer: ich weiss nicht welche Werte das annehmen kann und verstehe auch
if ($p->ping($ip))  nicht und wann das wahr und wann nicht wahr ist.


Letzlich hast du ja eine Konstruktion der Art:

define at  {ping ;;  if irgendwas  {fhem("machwas") if irgendwas } else  {fhem("machwas") if irgendwas }}


Sicher liegt's daran, dass ich langsam müde werde, aber mir fällt es echt recht schwer, die möglichen Zustände diese if if else if Geschichte zu durchdringen.

Das die diversen defines sehr ähnliche Namen haben:
Job_AnwesendChris
Anwesenheit_Chris
abwesend_Chris

macht's nicht leichter lesbar (jaja, ich habe den letzten Namen selbst vorgeschlagen, ich weiss)

Mit anderen Worten, ich kapiers auch nicht.

Ich würde erstmal sicher sein wollen, dass wenn
if ($p->ping($ip))
unwahr
auch tatsächlich das
else
ausgeführt wird.

Vom Logfile her sieht es für mich nicht so aus.
Ich rate: der ganze Code nach if ($p->ping($ip)) wird nie ausgeführt.


Da müsstest du dir einen vereinfachten Testcode bauen um das zu testen.


Und bitte: kommentier doch bei der Fehlersuche Tanja oder Chris aus, damit's ein bischen übersichtlicher für uns wird.














Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: Zrrronggg! am 19 Januar 2013, 23:58:33
Ich darf mich mal selbst zitieren:

ZitatIch rate: der ganze Code nach if ($p->ping($ip)) wird nie ausgeführt.

Ich habe da nochmal ein bischen drüber nachgedacht und ich glaube jetzt, so ist es auch.


Zitatdefine Job_AnwesendChris at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.50";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip)) { \
fhem("delete abwesend_Chris ;; set Anwesenheit_Chris on") if (Value("Anwesenheit_Chris") eq "off");; \
} \
else { \
fhem("define abwesend_Chris at +00:05:00 set Anwesenheit_Chris off") if (Value("Anwesenheit_Chris") eq "on");; \
} \
}

Ich habe den Eindruck, dass nach einem FHEM-Neustart diese Sache nicht mehr funktioniert.

Folgendes:

Sowohl das IF als auch ELSE kommando haben ja in sich nochmal eine IF Bedingung.

Die testen , ob  Anwesenheit_Chris vorher OFF oder ON war und machen erst dann was.
Nur ist "Anwesenheit_Chris" ein Dummy, das nach einem FHEM-Neustart womöglich nicht befüllt ist.
D.H. Anwesenheit_Chris ist **weder** ON **noch** OFF!

Und daher wird - egal was dein Pingen ergibt - nichts vom Nachfolgenden ausgeführt.

Um diese Vermutung von mir zu testen setze doch mal Anwesenheit_Chris auf einen Wert mit

set Anwesenheit_Chris on  (ohne FHEM neuzustarten)

Wenn der Klapperatismus dann geht, hast unter enderem folgende zwei Möglichkeiten das Problem zu umgehen:



1. du setzt Anwesenheit_Chris mit jedem FHEM-Neustart auf einen definierten Wert, z.b mit

define StartsequenzAnwesenheit notify global:INITIALIZED.* set Anwesenheit_Chris on ; set Anwesenheit Tanja on



2. du testest bei einem der beiden nicht auf "eq"  Wert, sondern nur auf "ne"  = not equal  konträrer Wert, z.b. so:


define Job_AnwesendChris at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.50";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip)) { \
fhem("delete abwesend_Chris ;; set Anwesenheit_Chris on") if (Value("Anwesenheit_Chris") eq "off");; \
} \
else { \
fhem("define abwesend_Chris at +00:05:00 set Anwesenheit_Chris off") if (Value("Anwesenheit_Chris") ne "off");; \
} \
}



 if (Value("Anwesenheit_Chris") ne "off") triggert nämlich auch, wenn in  Anwesenheit_Chris irgendwas anderes steht ausser OFF. Also z.b. ON, aber auch nichts oder "Vlunztäterö99"


Ich selber setze not equal Tests gerne ein, weil sie viel robuster sind, aber oft den selben Zweck erfüllen.
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: Markus am 20 Januar 2013, 03:46:34
Ich weiß jetzt nicht ob dir das was hilft da ich deinen Code nicht durchschaue, aber ich hab es bei mir so gelöst und es funktioniert eigentlich ganz gut.

Markus ist ein Dummy den ich später immer Abfrage
Markus_Handy ist für abfragen nicht geeignet weil es immer wieder für 1 bis 2 Minuten Abwesend ist.

define SucheLan at +*00:01:00 trigger WerDa

define handyweg notify Markus_Handy.* {if (Value("Markus_Handy") eq "Anwesend") \
{fhem ("set Markus on ;; delete wieder_aus ;; define wieder_aus at +00:05:00 set Markus off") }\
}
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 20 Januar 2013, 11:42:24
Zitat von: Markus schrieb am So, 20 Januar 2013 03:46Ich weiß jetzt nicht ob dir das was hilft da ich deinen Code nicht durchschaue, aber ich hab es bei mir so gelöst und es funktioniert eigentlich ganz gut.

Markus ist ein Dummy den ich später immer Abfrage
Markus_Handy ist für abfragen nicht geeignet weil es immer wieder für 1 bis 2 Minuten Abwesend ist.

define SucheLan at +*00:01:00 trigger WerDa

define handyweg notify Markus_Handy.* {if (Value("Markus_Handy") eq "Anwesend") \
{fhem ("set Markus on ;; delete wieder_aus ;; define wieder_aus at +00:05:00 set Markus off") }\
}

Hi,
kannst dein WerDa Code auch mal veröffentlichen wie du das gelöst hast?
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 20 Januar 2013, 12:47:16
@ Zrrronggg!

Vielen Dank das du dir das nochmal genauer angeschaut hast. Ich glaube das war die Lösung :)
Jetzt nach 2-3 Stunden noch keine unnötiges On / Off schalten.
Wenn es morgen noch so läuft werde ich alles mal hier in der Code Sammlung Posten.
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 21 Januar 2013, 11:39:34
Also LEIDER geht es immer noch nicht...
War zwar schon viel besser aber es sind immernoch Fehler :(
Laut Fritzbox WLAN ab / Anmelde Log hat sich das Gerät auch nicht per WLAN abgemeldet.
Zeit auf 6 Minuten erhöht es gab also 6x Ping Versuche und alle sollen keinen erfolg gehabt haben ? Kann nicht sein.

Ich denke ich muss eine fritzbox lösung suchen aber das klappt wohl nur wenn fhem auf der fritzbox direkt läuft :(
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 21 Januar 2013, 19:00:53
Oha ENDLOSE Geschichte ....
Also wenn ich WLAN / Router Neu Starte Dauert 3 Minuten. WLAN ist wieder verbunden .. schaltet er trotzdem auf OFF. Kann man die Ping ausgabe nicht mal Loggen was er da als Antwort immer bekommt ??

Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: Zrrronggg! am 21 Januar 2013, 21:00:08
Zur Fritzbox kann ich nix sagen, ich hab keine.

Und zur Problematik "ist Pingen von Smartphones zuverlässig, wenn die im Sleepmode das Netzwerk abschalten" ist ja weiter oben schon was gesagt.

Und
http://www.fhemwiki.de/wiki/Zuhause-Status_per_WLAN_Anmeldung_ (//www.fhemwiki.de/wiki/Zuhause-Status_per_WLAN_Anmeldung_)(Fritzbox)
basiert daher auch nicht auf Ping soweit ich das verstehe.
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: Markus am 21 Januar 2013, 21:48:46
Also hier der ganze Code
fhem läuft aber auf der Fritzbox
Das ist alles zu 99% von anderen geklaut!

# das kommt in die fhem.cfg

define Markus_Handy dummy
attr Markus_Handy icon icoHouse.png
attr Markus_Handy room System
attr Markus_Handy setList Anwesend Abwesend

define Doris_Handy dummy
attr Doris_Handy setList Anwesend Abwesend

define Nas dummy
attr Nas icon icoHouse.png
attr Nas room System
attr Nas setList Anwesend Abwesend

define Markus dummy
attr Markus fp_Grundriss 30,213,0,
attr Markus icon icoHouse.png
attr Markus room System

#stat der ip funktioniert auch der name des handys
define WerDa notify WerDa {FhemLanStat("192.168.176.5", "Markus_Handy", "192.168.176.7",\
 "Doris_Handy", "192.168.176.3", "Nas")}
define SucheLan at +*00:01:00 trigger WerDa

#diese teil brauche ich bei Daris_Handy nicht da es immer schön brav im netz bleibt!
define handyweg notify Markus_Handy.* {if (Value("Markus_Handy") eq "Anwesend") \
{fhem ("set Markus on ;; delete wieder_aus ;; define wieder_aus at +00:05:00 set Markus off") }\
}

##############################################
# $Id: 99_myUtils.pm $
package main;

use strict;
use warnings;
use POSIX;

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

sub right{
    my ($string,$nr) = @_;
    return substr $string, -$nr, $nr;
}

sub left{
    my ($string,$nr) = @_;
    return substr $string, 0, $nr;
}

# [url=www.somacon.com/p114.php]http://www.somacon.com/p114.php[/url]
# Perl trim function to remove whitespace from the start and end of the string
sub trim($)
{
   my $string = shift;
   $string =~ s/^\s+//;
   $string =~ s/\s+$//;
   return $string;
}

# Left trim function to remove leading whitespace
sub ltrim($)
{
   my $string = shift;
   $string =~ s/^\s+//;
   return $string;
}

# Right trim function to remove trailing whitespace
sub rtrim($)
{
   my $string = shift;
   $string =~ s/\s+$//;
   return $string;
}

######## FhemLanStat  ############
# Aufrufbeschreibung: FhemLanStat('ip-Adresse oder Netzwerkname','Name Dummy',['ip-Adresse oder Netzwerkname','Name Dummy'],[...])

sub
FhemLanStat($@)
{
  my $laenge = 0;
  my $i = 0;
  my $net_device="";
  my $dm_device ="";
  my $attendance="Abwesend";
  my $ret = "";  

  $laenge = @_;
  if (($laenge % 2) ne 0){
    $ret = "Anzahl Parameter nicht korrekt.";
return $ret;
  }

  for ($i=0;$i < $laenge;$i+=2){

    $net_device = $_[$i];
    $dm_device  = $_[($i+1)];

    # Vollstaendigen Pfad zum Script angeben
    $net_device=qx(sh /var/InternerSpeicher/fhem/FHEM/FhemUtils/lanping.sh $net_device);
    if(right(trim($net_device), 2) eq "Ok"){
$attendance="Anwesend";
    } else {
    $attendance="Abwesend";
    }

    fhem "set $dm_device $attendance";
  }
}

1;
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 21 Januar 2013, 21:55:09
Hallo,
Danke aber ich glaub kaum das es auf dem ersten Blick unter Windows laufen wird ;/
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: Markus am 21 Januar 2013, 22:09:35
Das weis ich nicht.
Aber du wolltest doch den ganzen Code...

vielleicht findet ja den Post mal jemand und freut sich drüber.
Gruß Markus
Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 21 Januar 2013, 22:10:49
Ich Freu mich auch das jemand Hilft ;)
Werde es trotzdem morgen mal versuchen vielleicht klappt es ja ;)

Titel: Aw: Fehler im Abwesenheit Code (Ping)
Beitrag von: ChrisW am 24 Januar 2013, 14:25:12
Hier habe ich meine funktionierende Lösung gefunden :
Link (http://forum.fhem.de/index.php?topic=10516.0)