Hauptmenü

Fhem + dd-wrt + snmp

Begonnen von TechnoTron, 06 Juli 2016, 19:39:55

Vorheriges Thema - Nächstes Thema

TechnoTron

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


Das Käseparadoxon.

Käse hat Löcher.
Je mehr Käse desto mehr Löcher.
Je mehr Löcher desto weniger Käse.

Wernieman

Hast Du mal ein List von Deinem Device?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TechnoTron

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?
Das Käseparadoxon.

Käse hat Löcher.
Je mehr Käse desto mehr Löcher.
Je mehr Löcher desto weniger Käse.

Wernieman

Neee ... wie Du es in FHEM definiert hast!

Und was willst Du genau damit erreichen?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TechnoTron

Also ich möchte per snmp die anwesenheit überprüfen. Genau wie im Wiki (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
Das Käseparadoxon.

Käse hat Löcher.
Je mehr Käse desto mehr Löcher.
Je mehr Löcher desto weniger Käse.

Wernieman

Hast Du das Perl Modul Net::SNMP installiert?

P.S. Bitte nicht per cpan sondern per Distri-Tool (Updatefester)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TechnoTron

Ja habe ich.
(Wurde mit "sudo apt-get install snmpd snmp snmp-mibs-downloader" installiert.)
Das Käseparadoxon.

Käse hat Löcher.
Je mehr Käse desto mehr Löcher.
Je mehr Löcher desto weniger Käse.

Wernieman

neee, hast Du damit nicht
apt-get -s install libsnmp-perl
(Ich hoffe jedenfalls, das dieses das richtige Modul ...)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TechnoTron

Also das Modul habe ich installiert, ja.
Das Käseparadoxon.

Käse hat Löcher.
Je mehr Käse desto mehr Löcher.
Je mehr Löcher desto weniger Käse.

TechnoTron

#9
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.


Das Käseparadoxon.

Käse hat Löcher.
Je mehr Käse desto mehr Löcher.
Je mehr Löcher desto weniger Käse.