ok, das habe ich jetzt mal geändert in:
$string = explode("
", trim(RegVar_GetBuffer(51475)));
beim manuellen starten bekomme ich:
Notice: Undefined offset: 0 in /var/lib/symcon/scripts/34799.ips.php on line 37
Notice: Undefined offset: 0 in /var/lib/symcon/scripts/34799.ips.php on line 50
Warning: Variable #0 does not exist in /var/lib/symcon/scripts/34799.ips.php on line 50
was jeweils auf die Netzperiodendauer verweist, dich ich derzeit in meinen Daten aber nicht habe, d.h. der Zähler gibt sie mir nicht.
Von daher habe ich einfach mal „0“ drin stehen lassen, was ich so verstanden habe (in der Anleitung: Var ID der Netzperiodendauer eintragen wenn denn vorhanden)
Aktuelles Script:
<?
$eHZdata = array("1-0:96.1.0*255" => 53432,
"1-0:1.8.0*255" => 22469,
"1-0:2.8.0*255" => 15138,
"1-0:0.2.0*255" => 55537,
"1-0:96.90.2*255" => 35134,
"1-0:97.97.0*255" => 18052
);
$Netzperiodendauer = 0; // VariablenID der Obis Kennzahl der Netzperiodendauer
$var1 = 53432; // VariablenID der Obis Kennzahl der Daten welche nicht umgerechnet werden
$var2 = 55537; // VariablenID der Obis Kennzahl der Daten welche nicht umgerechnet werden
$var3 = 35134; // VariablenID der Obis Kennzahl der Daten welche nicht umgerechnet werden
$var4 = 18052; // VariablenID der Obis Kennzahl der Daten welche nicht umgerechnet werden
//Dateneingang von Registervariable
$string = explode("
", trim(RegVar_GetBuffer(51475)));
for($i = 0; $i < count($string); $i++)
{
$id = strstr($string[$i], "(", true); // split nach Obis Kennzahl
$value = strstr($string[$i], "("); // split nach Daten
$check = strpos($value, "*"); // suche nach Daten mit Angaben V-A-W
if($check !== false) // Daten mit V-A-W ausgeben und formatieren auf 2 Stellen nach dem Komma
{
$value = strstr($value, "*", true); // split nach *V-A-W
$data = substr($value, 1);
SetValue($eHZdata[$id], number_format((float)$data, 2, ',', ''));
}
else // alle anderen Daten ausgeben
{
$data = substr(trim($value), 1, -1);
if(strlen($data) <= 4) // Daten mit bis zu 2 Byte
{
if($eHZdata[$id] == $Netzperiodendauer)
{
$data = hexdec($data)/100; // Daten umrechnen 1/100 in ms
}
elseif(($eHZdata[$id] == $var1) || ($eHZdata[$id] == $var2) || ($eHZdata[$id] == $var3))
{
$data = $data; // Daten ohne Umrechnung
}
else
{
$data = hexdec($data); // Daten von Hex nach Dec umrechnen
}
}
SetValue($eHZdata[$id], (float)$data);
}
}
?>
„Doku“, also den Thread habe ich jetzt komplett gelesen bis zu dem Punkt als es nur noch um die PIB Belegung von irgendwelchen COM Ports ging. Und das ist auch immer wieder das Problem mit „Dokus“ zu schippten / Modulen. Solange die nicht in GIT abgelegt werden ist es selten möglich sich dort über 50 Seiten Threads etwas zusammen zu reimen.
Doku IPS: Prima, aber als (erneuter) Neuling ist es nicht immer einfach, vor allem, wenn PHP nicht gerade das Steckenpferd ist, Da ist es manchmal sehr hilfreich über Try and Fail oder funktionierende Beispiele auf Ideen zu kommen, die man dann abändert …
Dennoch, danke für Deine Hilfe bisher. Kannst Du „adhoc“ sehen, wo ich noch ein Problem habe?