Autor Thema: (gelöst) DHCP Server auf dem RPI & Presence per SNMP  (Gelesen 7227 mal)

Offline Dirk070

  • Full Member
  • ***
  • Beiträge: 174
(gelöst) DHCP Server auf dem RPI & Presence per SNMP
« am: 24 November 2014, 20:15:03 »
Hallo zusammen,

hat schon jemand probiert, den DHCP-Server auf dem RPI zu installieren und dann mit dem Presence-Modul per SNMP zu arbeiten? Für Erfahrungswerte wäre ich sehr dankbar.

Schöne Grüße, Dirk


Schöne Grüße, Dirk
« Letzte Änderung: 27 November 2014, 16:34:40 von Dirk070 »

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15987
  • s/fhem\.cfg/configDB/g
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #1 am: 24 November 2014, 20:26:12 »
DHCP Server auf dem Raspi ist Schnullerpulle... das läuft völlig problemlos. Aber was man mit SNMP auf dem Raspi will, ist mir unklar.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.

Offline Dirk070

  • Full Member
  • ***
  • Beiträge: 174
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #2 am: 24 November 2014, 20:30:20 »
Nun: iPhone bekommt vom RPI-DHCP eine IP und mit FHEM-Presence-Modul fragt man per SNMP ab. Im Wiki wird das von einer AirPort abgefragt, aber die neue Extreme unterstützt kein SNMP mehr. Daher die Idee, den RPI als DHCP zu nutzen.


Schöne Grüße, Dirk

Offline Dirk070

  • Full Member
  • ***
  • Beiträge: 174
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #3 am: 24 November 2014, 22:48:16 »
So, der DHCP-Server läuft.
Nun muss ich noch den SNMP-Server ans Laufen bekommen und dann die Abfrage der Leases hinbekommen.
Sollte da jemand Input liefern können, immer her damit

flocko

  • Gast
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #4 am: 25 November 2014, 02:00:08 »
Hallo,

ich hänge da auch gerade dran. Selbes Problem wie bei dir. Die neue TimeCapsule unterstützt kein SNMP.
Ich habe DHCPD und SNMPD auf dem Cubietruck installiert. Ausserdem habe ich meine TimeCapsule in den "NAT Only" Modus versetzt. So wie hier beschrieben: https://www.autoitconsulting.com/site/networking/configuring-an-airport-extreme-for-nat-only-mode/

Ein
$ snmpwalk -c public -v 1 10.0.0.16 .1.3.6.1.2.1.3.1.1.2
gibt mir
iso.3.6.1.2.1.3.1.1.2.3.1.10.0.0.1 = Hex-STRING: 90 72 40 01 XX XX
iso.3.6.1.2.1.3.1.1.2.3.1.10.0.0.3 = Hex-STRING: E8 94 F6 DF XX XX
iso.3.6.1.2.1.3.1.1.2.3.1.10.0.0.5 = Hex-STRING: 84 38 35 46 XX XX
iso.3.6.1.2.1.3.1.1.2.3.1.10.0.0.6 = Hex-STRING: E8 94 F6 DF XX XX
iso.3.6.1.2.1.3.1.1.2.3.1.10.0.0.12 = Hex-STRING: E8 94 F6 DF XX XX
iso.3.6.1.2.1.3.1.1.2.3.1.10.0.0.30 = Hex-STRING: 02 43 09 C0 XX XX
iso.3.6.1.2.1.3.1.1.2.3.1.10.0.0.109 = Hex-STRING: E8 94 F6 DF XX XX
iso.3.6.1.2.1.3.1.1.2.3.1.10.0.0.187 = Hex-STRING: 00 17 88 15 XX XX

Das funktioniert aber leider nur so halb.
In der DHCP.leases stehen z.B. folgende Einträge:

lease 10.0.0.188 {
  starts 2 2014/11/25 00:51:57;
  ends 2 2014/12/02 00:51:57;
  cltt 2 2014/11/25 00:51:57;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet b8:78:2e:3f:XX:XX;
  uid "\001\270x.?\027\340";
  client-hostname "TEST";

Dieser Client taucht zum Beispiel nie beim SNMPWALK auf und somit auch nicht in FHEM auf. Weiß jemand warum?

FHEM zeigt mir die Geräte manchmal als Present. Wenn ich dann aber zum Testen Offline gehe, dauert es ca. 5 Minuten und sie sind Absent. Allerdings komme ich von da an nicht mehr in "Present". Ich geh Online mit dem iPhone oder dem Android Tablet und selbst nach einiger Zeit zeigt der oben genannte SNMPWALK nicht das Device an. Und somit natürlich leider auch nicht FHEM.

Ich hoffe ich konnte dir ein wenig helfen? Bist du weiter gekommen?
Weiß jemand was da bei mir schief läuft?

Viele Grüße
Volker


EDIT:
Ah, eventuell liegt es an meiner TimeCapsule. Ich habe die Vermutung, dass die Clients die dort gelistet sind für den DHCPD Server inaktiv sind und deswegen nicht angezeigt werden. Merkwürdig. Ich werde morgen mal testen die TimeCapsule komplett als Bridge laufen zu lassen und das NAT über IPTABLES zu machen. Ich werde mich da mal reinfuchsen.
« Letzte Änderung: 25 November 2014, 02:21:52 von flocko »

Offline Dirk070

  • Full Member
  • ***
  • Beiträge: 174
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #5 am: 25 November 2014, 19:21:21 »
Mein aktueller Stand:

Aus dem Web:
SNMP-Server installieren

sudo apt-get install snmpd snmp
sudo nano /etc/snmp/snmpd.conf
Change the agentAddress
agentAddress 161
Below the line:
#rocommunity public localhost
add:
rocommunity public        (without the initial #)

Restart the SNMP deamon:
sudo /etc/init.d/snmpd restart

Nach dieser Installation bekomme ich schonmal eine Antwort auf den snmpwalk.

snmpwalk -c public -v 1 192.168.1.11 .1.3.6.1.2.1.3.1.1.2

In FHEM bleibt es aber dauerhaft beim Status "absent", die WLAN-Adresse aus dem iPhone habe ich geprüft (alle Buchstaben klein, Doppelpunkte raus, ein 0x davor).....

Also leider noch keine endgültige Lösung  :'(

Offline Dirk070

  • Full Member
  • ***
  • Beiträge: 174
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #6 am: 25 November 2014, 19:44:14 »
Offenbar prüft FHEM auch beim Restart erst nach dem Zeitintervall.
Nun habe ich ein "Present".

HURRA! :) :)

flocko

  • Gast
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #7 am: 25 November 2014, 19:53:20 »
Glückwunsch. :)

Wenn du jetzt das iPhone WLAN abschaltest und wartest bist es in Absent geht und du es danach wieder aktivierst, geht er dann wieder in "Present"?

Das klappt nämlich bei mir nicht.
Ich gebe auf und nehme die einfache Lösung. Habe noch n alten TP-LINK Router hier rumfliegen mit Gigabit Switch. Der wird jetzt das Routing übernehmen und die TimeCapsule häng ich als Bridge dran fürs WLAN.

flocko

  • Gast
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #8 am: 25 November 2014, 20:34:44 »
Status bei mir:
Funktioniert so wie es soll. Da schlage ich mir zwei Nächte um die Ohren um das hinzubekommen, und dann regelt es mein DDWRT Router ganz von alleine. Mit 2 Mausklicks DHCP und SNMP konfiguriert, eben in FHEM die IP geändert und es funktioniert alles wie ich will. Jetzt erstmal ausführlich testen. :)

Offline Dirk070

  • Full Member
  • ***
  • Beiträge: 174
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #9 am: 25 November 2014, 22:36:52 »
Glückwunsch. :)

Wenn du jetzt das iPhone WLAN abschaltest und wartest bist es in Absent geht und du es danach wieder aktivierst, geht er dann wieder in "Present"?

Das klappt nämlich bei mir nicht.

Schlimmer, es bleibt nun dauerhaft beim Present....
Vielleicht kann ja mal jemand helfen und das Coding aus der MyUtils erklären oder wie man das debuggen kann.
Offenbar wird der Status nicht sauber gelesen sondern nur, ob die MAC-Adresse in der DHCP-Liste auftaucht.
Shit, wäre ja auch zu schön gewesen. Für heute ist Schluss mit Hobby, morgen klingelt wieder der Wecker.

flocko

  • Gast
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #10 am: 25 November 2014, 23:34:27 »
Ich glaube nicht dass es an dem Myutils Code liegt.
Was zeigt die Abfrage von snmpwalk -c public -v 1 192.168.1.11 .1.3.6.1.2.1.3.1.1.2

Der Wert muss da raus, dann wird es auch in FHEM absent angezeigt.

Allerdings hat es bei mir bis zu 10 Minuten gedauert bis der Lease beim snmpwalk nicht angezeigt wurde.

Aber genau das hat nicht funktioniert bei mir. Jetzt mit dem Billo Linux Router und der TimeCapsule nur als WLAN AccessPoint funktioniert es genau wie ich es mir gewünscht habe.

Offline Dirk070

  • Full Member
  • ***
  • Beiträge: 174
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #11 am: 26 November 2014, 13:21:09 »
Schaut man sich die Leases des DHCP an (sudo nano /var/lib/dhcp/dhcpd.leases), kann man am Binding-State erkennen, ob das Gerät "active" oder "free" ist.
Diese Info müsste man per SNMP lesen können, dann könnte man die Utils entsprechend umbauen....

flocko

  • Gast
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #12 am: 26 November 2014, 16:24:44 »
Kann man das nicht mit einem Cat grep per Script automatisch in eine Datei schreiben lassen und die info in FHEM einlesen? Ich mache sowas ähnliches bei meinen arduino scripts.

Offline Dirk070

  • Full Member
  • ***
  • Beiträge: 174
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #13 am: 26 November 2014, 16:29:37 »
Ich überlege auch, die Datei mit einem Perl-Script (bin zwar auch Entwickler, aber kein Perl) zu lesen.
Hier hat jemand so was ähnliches schon gebaut: http://www.omar.org/opensource/reportdhcp/source.html

Da werden auch schon die Binding Stats gelesen. Wenn sich das mal jemand anschaut, der sich damit auskennt... ;) ;)

Offline Dirk070

  • Full Member
  • ***
  • Beiträge: 174
Antw:DHCP Server auf dem RPI & Presence per SNMP
« Antwort #14 am: 26 November 2014, 16:50:59 »
So was hier müsste man doch schon nutzen können, um die Infos zu splitten, oder?

# Reads and munges the leases file generated by dhcpd
sub ParseLeaseFile {

our %lease;
unless(open (IN, $dhcpfile)) {
print "\nError: unable to open file $dhcpfile: $! \n";
exit -1;
}
my @leases = <IN>;
my $data = "";
foreach $line (@leases) {
unless ($line =~ m/^#/) { # ignore commented lines
$data .= $line;
}
}
my @data = split (/lease /, $data); #split each lease into an array entry
foreach (@data) {                 #create hash of hashes keyed on ip from the array
my @temp = split(/{/, $_);
chop($temp[0]); # 0 is IP
chop($temp[1]); # 1 is the rest...
chop($temp[1]);
$temp[1] =~ tr/\t//d;
@t = split(/;\n/, $temp[1]); #split each lease on newline
my $i=0;
while ($t[$i]) {
my $string = $t[$i];
$string =~ tr/\n//d;
$string =~ s/^\s*//; # remove any leading spaces
@words = split(/\s+/, $string); #hashes keyed on first word

if ($words[0]) {
$key = shift(@words);
$lease{$temp[0]}{$key}="@words";
$lease{$temp[0]}{"hardware"}=~ s/ethernet//;
$lease{$temp[0]}{"binding"}=~ s/state //;
}
$i++;
}
}
my @temp = sort(keys(%lease));
my $prev = ""; # checks for duplicates
@ips=grep($_ ne $prev && (($prev) = $_), @temp);
$entries = @ips;
}

 

decade-submarginal