S0plus Zähler mit Expert Net Control Reader auswerten

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]));
}
?>

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);
}

?>

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

Hallo Udo,

mach es so wie hier.

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

Alles, nur eine Sache des Lesens. :smiley:

Migration (V2.4->V2.5): IP-Symcon :: Automatisierungssoftware

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