FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: TechnoTron am 06 Juli 2016, 19:39:55

Titel: Fhem + dd-wrt + snmp
Beitrag von: TechnoTron am 06 Juli 2016, 19:39:55
Hallo,

ich bin verzweifelt. Ich habe die letzten Tage mühselig probiert die im Wiki beschriebene Anwesenheitserkennung zum laufen zu bringen. Und es will einfach nicht klappen. Ab und zu (ohne Rhythmus) wird das gerät kurz als "present" erkannt, dann verschwindet es wieder.

Über das Terminal vom rpi ist es aber ohne Probleme möglich den ddwrt Router über snmp an zu sprechen.

Kurz zum Set Up:

DDWRT Router mit funktionsfähigen SNMP
RPI mit funktionsfähigen snmp

Falls meine Fragestellung nicht verständlich ist, bitte einfach fragen.

Ich hoffe mir kann jemand helfen.

lg
TechnoTron


Titel: Antw:Fhem + dd-wrt + snmp
Beitrag von: Wernieman am 07 Juli 2016, 12:13:16
Hast Du mal ein List von Deinem Device?
Titel: Antw:Fhem + dd-wrt + snmp
Beitrag von: TechnoTron am 07 Juli 2016, 16:55:16
pi@raspberrypi ~ $ snmpwalk -c public -v1 192.168.2.1 .1.3.6.1.2.1.3.1.1.2
iso.3.6.1.2.1.3.1.1.2.2147443544.1.192.168.2.47 = Hex-STRING: 40 B3 95 36 16 68


Meinst du das hier?
Titel: Antw:Fhem + dd-wrt + snmp
Beitrag von: Wernieman am 07 Juli 2016, 19:24:24
Neee ... wie Du es in FHEM definiert hast!

Und was willst Du genau damit erreichen?
Titel: Antw:Fhem + dd-wrt + snmp
Beitrag von: TechnoTron am 07 Juli 2016, 19:54:07
Also ich möchte per snmp die anwesenheit überprüfen. Genau wie im Wiki (http://www.fhemwiki.de/wiki/Anwesenheitserkennung (http://www.fhemwiki.de/wiki/Anwesenheitserkennung)) beschrieben.

Meine myUtils:
use Net::SNMP;
sub
snmpCheck($$)
{
  my ($airport,$client)= @_;

  my $community = "public";
  my $host = $airport;
  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.1.10.0.1";

  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 && $nextid[0] && $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;
}


und meine config:
define iPhone2 PRESENCE function {snmpCheck("192.168.2.1","0x40b395361668")} 10 10
Titel: Antw:Fhem + dd-wrt + snmp
Beitrag von: Wernieman am 08 Juli 2016, 09:02:17
Hast Du das Perl Modul Net::SNMP installiert?

P.S. Bitte nicht per cpan sondern per Distri-Tool (Updatefester)
Titel: Antw:Fhem + dd-wrt + snmp
Beitrag von: TechnoTron am 08 Juli 2016, 13:09:34
Ja habe ich.
(Wurde mit "sudo apt-get install snmpd snmp snmp-mibs-downloader" installiert.)
Titel: Antw:Fhem + dd-wrt + snmp
Beitrag von: Wernieman am 08 Juli 2016, 13:44:16
neee, hast Du damit nicht
apt-get -s install libsnmp-perl
(Ich hoffe jedenfalls, das dieses das richtige Modul ...)
Titel: Antw:Fhem + dd-wrt + snmp
Beitrag von: TechnoTron am 08 Juli 2016, 21:31:54
Also das Modul habe ich installiert, ja.
Titel: Antw:Fhem + dd-wrt + snmp
Beitrag von: TechnoTron am 11 Juli 2016, 16:46:48
Ok habe das Problem selbst gelöst. ::)

Aber DANKE!


EDIT:

Es lag am Router. Ich habe exakt den gleichen RPI genommen und mit einem anderen Router (neure Version aber gleiche Einstellungen) verbunden und es hat auf Anhieb funktioniert.
Auch nach 3 weiteren versuchen (wechsel zwischen den Routern) kam ich immer auf das gleich Ergebnis.

Bei fragen schreibt mir einfach.