hallo,
um festzustellen, ob Geräte die am LAN hängen angeschaltet sind benutze ich folgenden Code:
define DBOX_WZ dummy
attr DBOX_WZ room Wohnzimmer
attr DBOX_WZ setList on off
define FileLog_DBOX_WZ FileLog ./log/DBOX_WZ.log DBOX_WZ
attr FileLog_DBOX_WZ logtype text
attr FileLog_DBOX_WZ room Wohnzimmer
define DBOX_WZ_Ping at +*00:01:00 { \
use Net::Ping;; \
my $ip = "10.209.115.26";; \
my $p = Net::Ping->new("tcp", 2, 64);; \
$p->port_number("80");; \
if ($p->ping($ip)) { \
if ( Value("DBOX_WZ") eq "off" ) { \
fhem("set DBOX_WZ on");; }} \
else { \
if ( Value("DBOX_WZ") eq "on" ) { \
fhem("set DBOX_WZ off");; }}}
das funktioniert auch soweit. Ich wollte jetzt einfach mal PRESENCE probieren
define DBOX_WZ1 PRESENCE 10.209.115.26 60 60
ich erhalte immer ein "present", egal ob an oder aus. Es ist auch egal ob die IP überhaupt vergeben ist.
Mein FHEM läuft mit Activperl unter Windows. Kann es sein das es daran liegt?
Im Code habe ich das gefunden:
if($^O =~ m/(Win|cygwin)/)
{
eval "require Net::Ping;";
my $pingtool = Net::Ping->new("syn");
if($pingtool)
{
$retcode = $pingtool->ping($device, 5);
Log GetLogLevel($name, 5), "PRESENCE ($name) - pingtool returned $retcode";
$return = "$name|$local|".($retcode ? "present" : "absent");
}
sollte es unter Windows funktionieren oder nicht?
mfg