FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Dirk070 am 23 November 2014, 00:30:11

Titel: (gelöst per DHCP) Presence per SNMP auf dem RPI
Beitrag von: Dirk070 am 23 November 2014, 00:30:11
Hallo zusammen,

nach dem WIKI habe ich folgendes auf dem RPI (Wheezy) konfiguriert:
cpan install use Net::SNMP (auf Abfrage dann den Modus SUDO)
Dann in FHEM die folgende 99_myUtils.pm angelegt:
package main;
use strict;
use warnings;
use POSIX;
use Net::SNMP;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
sub
snmpCheck($$)
{
  my ($airport,$client)= @_;

  my $community = "public";
  my $host = $airport;
#  my $host = "192.168.1.2";
  my $oid = ".1.3.6.1.2.1.3.1.1.2";
#  my $oid = ".1.3.6.1.2.1.3.1.1.2.25.192.168.1.2";

  my ( $session, $error ) = Net::SNMP->session(
    -hostname => $host,
    -community => $community,
    -port => 161,
    -version => 1
  );

  if( !defined($session) ) {
    return 0;
    return "Can't connect to host $host.";
  }

  my @snmpoids = ();

  my $response = $session->get_next_request($oid);
  my @nextid = keys %$response;
  while ( $nextid[0] =~ m/^$oid/ ) {
    push( @snmpoids, $nextid[0] );

    $response = $session->get_next_request( $nextid[0] );
    @nextid = keys %$response;
  }

  if( !defined($response = $session->get_request( @snmpoids ) ) ) {
    return 0;
  }

  foreach my $value (values %$response) {
    return 1 if( $value eq $client )
  }

  return 0;
}
1;


Folgende Fehlermeldung (aus dem Log) bekomme ich nicht in den Griff:
PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/99_myUtils.pm line 38.

Könnte mir jemand helfen?

Vorab schonmal vielen Dank.

Schöne Grüße,
Dirk
Titel: Antw:Presence per SNMP auf dem RPI
Beitrag von: Dirk070 am 23 November 2014, 13:37:34
Ich habe noch weiter versucht, den Fehler zu beseitigen, leider ohne Erfolg.
Die Meldung ist nach wie vor im Log und mein iPhone grundsätzlich absent.
Ich habe schon versucht, die 99_myUtils.pm aus diesem Beitrag hier zu nutzen: http://forum.fhem.de/index.php/topic,15849.msg103555.html#msg103555 (http://forum.fhem.de/index.php/topic,15849.msg103555.html#msg103555)
Leider bekomme ich damit den selben Fehler im Log. In FHEM noch ein Update gemacht, leider auch ohne Wirkung.
So langsam gehen mir die Ideen aus.....

Schöne Grüße,
Dirk
Titel: Antw:Presence per SNMP auf dem RPI
Beitrag von: Dirk070 am 23 November 2014, 15:05:02
Es sind weitere Fehlermeldungen im Log aufgetaucht, sobald ich den Aufruf in der fhem.cfg aktiviert habe:

2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/99_myUtils.pm line 41.
2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value $name in concatenation (.) or string at ./FHEM/73_PRESENCE.pm line 901.
2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/73_PRESENCE.pm line 917.
2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/73_PRESENCE.pm line 921.
2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/73_PRESENCE.pm line 942.
2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value $dev in hash element at fhem.pl line 3258.
2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value $dev in hash element at fhem.pl line 2811.
2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value $name in concatenation (.) or string at ./FHEM/73_PRESENCE.pm line 964.
2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value $seconds in concatenation (.) or string at ./FHEM/73_PRESENCE.pm line 964.
2014.11.23 13:32:09 1: PERL WARNING: Use of uninitialized value $seconds in addition (+) at ./FHEM/73_PRESENCE.pm line 967.

Der Aufruf in der cfg sieht übrigens so aus (statt .... ist im Original die Mac-Adresse des iPhones hinterlegt):

define iPhone PRESENCE function {snmpCheck("192.168.1.2","0x........")} 30 30
Titel: Antw:Presence per SNMP auf dem RPI
Beitrag von: Dirk070 am 23 November 2014, 15:45:35
Mit verbose=5 konnte ich noch diese Meldungen im Log produzieren:

2014.11.23 15:37:25 5: PRESENCE (iPhone) - stopping timer
2014.11.23 15:37:25 5: PRESENCE (iPhone) - starting blocking call for mode function
2014.11.23 15:37:25 4: BlockingCall created child (2163), uses telnetForBlockingFn to connect back
2014.11.23 15:37:25 5: PRESENCE (iPhone) - execute perl function: iPhone|{snmpCheck("192.168.1.2","0xxxxxxxxxxxxx")}|0
2014.11.23 15:37:25 5: Cmd: >{snmpCheck("192.168.1.2","0xxxxxxxxxxxxx")}<

2014.11.23 15:37:35 1: PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/99_myUtils.pm line 41.
2014.11.23 15:37:35 5: PRESENCE (iPhone) - function returned with: 0
2014.11.23 15:37:35 4: Connection accepted from telnet:127.0.0.1:38470
2014.11.23 15:37:35 5: Cmd: >{PRESENCE_ProcessLocalScan('iPhone|0|absent')}<
2014.11.23 15:37:35 5: PRESENCE (iPhone) - blocking scan result: iPhone|0|absent
2014.11.23 15:37:35 5: Triggering iPhone (1 changes)
2014.11.23 15:37:35 5: Notify loop for iPhone absent
2014.11.23 15:37:35 4: eventTypes: PRESENCE iPhone absent -> absent
2014.11.23 15:37:35 4: eventTypes: PRESENCE iPhone state: absent -> state: absent
2014.11.23 15:37:35 4: PRESENCE (iPhone) - rescheduling next check in 30 seconds
Titel: Antw:Presence per SNMP auf dem RPI
Beitrag von: Dirk070 am 23 November 2014, 16:23:30
Mit snmpwalk habe ich das Problem weiter einkreisen können.
Offenbar unterstützt die neue (AC) Airport Extreme kein SNMP mehr  :-\
Die Presence-Option per SNMP war eines der Argumente, für die Airport.
Schöner Mist... >:( :( >:(
Titel: Antw:Presence per SNMP auf dem RPI
Beitrag von: Dirk070 am 28 November 2014, 12:54:33
Die Lösung zum Problem gibt es hier: http://forum.fhem.de/index.php/topic,29562.0.html (http://forum.fhem.de/index.php/topic,29562.0.html)