RWN
18. Dezember 2011 um 12:13
1
Hier mal ein Script um S0plus Zähler über den Reader mit SNMP auszuwerten.
Je Reader können max 4 Zähler angeschlossen werden.
<?
// Expert Net Control S0plus Reader 2102
$reader1 = "192.168.1.6";
$reader2 = "192.168.1.7";
$community = "public";
// Zählerstand in Wh
$varIdWh = array(21759,19726,18368,27626); // Variablen Zählerstand, Zähler 1-4
$data = snmpwalk($reader1, $community, "1.3.6.1.4.1.28507.16.1.5.1.2.1.3"); // Zählerstand Eingang R1-R4
for($i=0; $i < count($data); $i++)
{
SetValue($varIdWh[$i], str_replace("Gauge32: ", "", $data[$i])/1000); // Umrechnung nach KiloWattStunde
}
// Wirkleistung in Watt
$varIdW = array(27325,55765,20344,33257); // Variablen Wirkleistung, Zähler 1-4
$data = snmpwalk($reader1, $community, "1.3.6.1.4.1.28507.16.1.5.1.2.1.4"); // Leistung Eingang R1-R4
for($i=0; $i < count($data); $i++)
{
SetValue($varIdW[$i], str_replace("Gauge32: ", "", $data[$i]));
}
// Strom in mA
$varIdA = array(24049,59128,25430,46109); // Variablen Strom, Zähler 1-4
$data = snmpwalk($reader1, $community, "1.3.6.1.4.1.28507.16.1.5.1.2.1.5"); // Strom Eingang R1-R4
for($i=0; $i < count($data); $i++)
{
SetValue($varIdA[$i], str_replace("Gauge32: ", "", $data[$i])/1000); // Umrechnung nach Ampere
}
// Spannung in Volt
$varIdV = array(28099,41047,51134,27046); // Variablen Spannung, Zähler 1-4
$data = snmpwalk($reader1, $community, "1.3.6.1.4.1.28507.16.1.5.1.2.1.6"); // Spannung Eingang R1-R4
for($i=0; $i < count($data); $i++)
{
SetValue($varIdV[$i], str_replace("Gauge32: ", "", $data[$i]));
}
?>
RWN
18. Dezember 2011 um 12:20
2
Hier das ganze über ein separates Programm. Die Auswertung erfolgt hier über die Logdatei.
<?
$file = file(IPS_GetKernelDir()."webfront/user/snmpview/snmpview.log");
$lastentry = $file[count($file)-1]; // letzte Zeile extrahieren
$data = explode(";", $lastentry); // Daten in ein Array schreiben
SetValue(21759 /*[Energieverbrauch\Wohnzimmer\Wohnzimmer\Zählerstand]*/, $data[5]/1000); // ID anpassen
SetValue(24049 /*[Energieverbrauch\Wohnzimmer\Wohnzimmer\Strom]*/, $data[6]/1000);
SetValue(28099 /*[Energieverbrauch\Wohnzimmer\Wohnzimmer\Spannung]*/, $data[7]);
SetValue(27325 /*[Energieverbrauch\Wohnzimmer\Wohnzimmer\Wirkleistung]*/, $data[8]);
SetValue(19726 /*[Energieverbrauch\Büro\Büro\Zählerstand]*/, $data[9]/1000); // ID anpassen
SetValue(59128 /*[Energieverbrauch\Büro\Büro\Strom]*/, $data[10]/1000);
SetValue(41047 /*[Energieverbrauch\Büro\Büro\Spannung]*/, $data[11]);
SetValue(55765 /*[Energieverbrauch\Büro\Büro\Wirkleistung]*/, $data[12]);
SetValue(18368 /*[Energieverbrauch\WA TR TE HE\Waschmaschine\Zählerstand]*/, $data[13]/1000); // ID anpassen
SetValue(25430 /*[Energieverbrauch\WA TR TE HE\Waschmaschine\Strom]*/, $data[14]/1000);
SetValue(51134 /*[Energieverbrauch\WA TR TE HE\Waschmaschine\Spannung]*/, $data[15]);
SetValue(20344 /*[Energieverbrauch\WA TR TE HE\Waschmaschine\Wirkleistung]*/, $data[16]);
SetValue(27626 /*[Energieverbrauch\WA TR TE HE\Trockner\Zählerstand]*/, $data[17]/1000); // ID anpassen
SetValue(46109 /*[Energieverbrauch\WA TR TE HE\Trockner\Strom]*/, $data[18]/1000);
SetValue(27046 /*[Energieverbrauch\WA TR TE HE\Trockner\Spannung]*/, $data[19]);
SetValue(33257 /*[Energieverbrauch\WA TR TE HE\Trockner\Wirkleistung]*/, $data[20]);
// Inhalt Logdatei löschen
$log = IPS_GetKernelDir()."webfront/user/snmpview/snmpview.log";
if(is_writable($log))
{
if(!$handle = fopen($log, "wb"))
{
echo "Kann Datei $log nicht öffnen";
return;
}
if(fwrite($handle, "") === false)
{
echo "Kann in Datei $log nicht schreiben";
return;
}
echo "Inhalt von $log wurde gelöscht.";
fclose($handle);
}
?>
kea
27. Januar 2012 um 23:45
3
Hallo Rainer,
habe das SNMP-Script installiert und bei der Ausführung ist es über die SNMP-Funktion gestolpert. Lesen im Forum brachte die Erkenntnis, das es keine SNMP-Unterstützung in IPS 2.5 gibt :-).
Gibt es eine Möglichkeit SNMP trotzdem nachzurüsten (SSL wird nicht benötigt, Remote-Zugriff nur via VPN o. SSL-GW)?
Die Dateiüberwachung wollte ich vermeiden, auf dem IPS-Server soll nur IPS laufen, die Devices können auch nur via IP erreicht werden.
Viele Grüße
Udo
kea
29. Januar 2012 um 01:19
5
Hallo Rainer,
das war der Schubs in die richtige Richtung.
Habe zwar etwas gesucht, bis ich die richtige php_snmp.dll gefunden habe, aber jetzt klappt es super.
Vielen Dank!!
Hier noch der Link zur richtigen Datei:
http://windows.php.net/downloads/qa/php-5.4.0RC6-Win32-VC9-x86.zip
Im Verzeichnis /ext bin ich fündig geworden.
LG
Udo
RWN
29. Januar 2012 um 01:59
6
Hallo,
habe ich wieder zurückgesetzt. Ich habe allerdings ein Problem mit snmpwalk():
Das
print_r(snmpwalk("192.168.2.53", "public", ""));
geht.
Das
print_r(snmpwalk("192.168.2.54", "public", ""));
geht nicht.
Wenn ich beide IPs mittels MIB-Browser per WALK durchkämme, bekomme ich viele ausgelesene Dinge - bei beiden IPs. Grundsätzlich sprechen die Geräte mit mir. Firewall auch mal ausgeschaltet. Aus IPS heraus geht das nur bei einem Gerät. Was kann das sein?
Hallo Zusammen,
entschuldigt das ich das Thema entstaube.
Gibt es eine Lösung für die neue OpenSSL Version? Wäre interessant, da man immer das Update Anpassen muss und auch der BUG nervt etwas auch wen 0.9.8 wohl nicht betroffen ist.
Gruß
Steffen