USV Auslese-Script

Hallo,

nach der Umstellung auf die V2.5 funktioniert das nachfolgende Script nicht mehr.

<?
/*
Einlesen des Logfile aus USV ERREPI VRX 700
========================================================

Anleitung:
- LogFile und LogInterval anpassen
- Bei Bedarf auskommentierte Zeilen aktivieren und Positionen anpassen
- Execute drücken, um den automatischen Timer zu erstellen
*/

$LogFile     = "C:\\Programme\\UPS\\UPSMAN\\upsdata.csv";
$LogInterval = 1;    // Minuten (Standard: 20)

if(file_exists($LogFile))
{
    $lines = file($LogFile);
    $data = explode(",", $lines[count($lines) - 1]);
    $ts = strtotime($data[0]);

    if(date("m.d.Y H:i:s", $ts) != GetValueString(CreateVariableByName($IPS_SELF, "Last Time", 3)))
    {
        SetValueString(CreateVariableByName($IPS_SELF, "Last Time", 3), date("d.m.Y H:i:s", $ts));
        SetValueFloat(CreateVariableByName($IPS_SELF, "Eingangsspannung", 2), strToFloat($data[2]));
        SetValueFloat(CreateVariableByName($IPS_SELF, "Eingangs Frequenz", 2), strToFloat($data[3]));
        SetValueFloat(CreateVariableByName($IPS_SELF, "Ausgangs Spannung", 2), strToFloat($data[5]));
        SetValueFloat(CreateVariableByName($IPS_SELF, "Ausgangs Frequenz", 2), strToFloat($data[6]));
        SetValueFloat(CreateVariableByName($IPS_SELF, "Auslastung", 2), strToFloat($data[7]));
        SetValueFloat(CreateVariableByName($IPS_SELF, "Batterie Spannung", 2), strToFloat($data[8]));
        SetValueFloat(CreateVariableByName($IPS_SELF, "Temperatur", 2), strToFloat($data[9]));
        SetValueFloat(CreateVariableByName($IPS_SELF, "Batterie Kapazität", 2), strToFloat($data[10]));
           }

    // Offset berechnen und Timer stellen
   //IPS_SetScriptTimer($IPS_SELF, ($ts + $LogInterval * 60 + 10) - time());
}

function strToFloat($value)
{
    return (float)(str_replace(",", ".", $value));
}

function CreateVariableByName($id, $name, $type)
{
   global $IPS_SELF;
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "This Variable was created by Script #$IPS_SELF");
   }
   return $vid;
}
?>

Einen Fehler kann ich leider nicht finden.

Andreas

Ersetze mal $IPS_SELF durch $_IPS[‚SELF‘], was anderes sehe ich im Moment nicht.

Hallo Thomas,

Parse error:  syntax error, unexpected '[', expecting ',' or ';' in [Service\Obergeschoss\Server-Raum\USV\USV_Auslesen] on line 45

Zeile 45

  global $_IPS['SELF'];

Andreas

Mach mal aus der Zeile mit IPS_SetInfo

IPS_SetInfo($vid, "This Variable was created by Script #".$_IPS['SELF']); 

Hallo Werner,

danke für die Rückantwort.

nochmals das ganze geänderte Script:

<?
/*
Einlesen des Logfile aus USV ERREPI VRX 700
========================================================

Anleitung:
- LogFile und LogInterval anpassen
- Bei Bedarf auskommentierte Zeilen aktivieren und Positionen anpassen
- Execute drücken, um den automatischen Timer zu erstellen
*/

$LogFile     = "C:\\Programme\\UPS\\UPSMAN\\upsdata.csv";
$LogInterval = 1;    // Minuten (Standard: 20)

if(file_exists($LogFile))
{
    $lines = file($LogFile);
    $data = explode(",", $lines[count($lines) - 1]);
    $ts = strtotime($data[0]);

    if(date("m.d.Y H:i:s", $ts) != GetValueString(CreateVariableByName($_IPS['SELF'], "Last Time", 3)))
    {
        SetValueString(CreateVariableByName($_IPS['SELF'], "Last Time", 3), date("d.m.Y H:i:s", $ts));
        SetValueFloat(CreateVariableByName($_IPS['SELF'], "Eingangsspannung", 2), strToFloat($data[2]));
        SetValueFloat(CreateVariableByName($_IPS['SELF'], "Eingangs Frequenz", 2), strToFloat($data[3]));
        SetValueFloat(CreateVariableByName($_IPS['SELF'], "Ausgangs Spannung", 2), strToFloat($data[5]));
        SetValueFloat(CreateVariableByName($_IPS['SELF'], "Ausgangs Frequenz", 2), strToFloat($data[6]));
        SetValueFloat(CreateVariableByName($_IPS['SELF'], "Auslastung", 2), strToFloat($data[7]));
        SetValueFloat(CreateVariableByName($_IPS['SELF'], "Batterie Spannung", 2), strToFloat($data[8]));
        SetValueFloat(CreateVariableByName($_IPS['SELF'], "Temperatur", 2), strToFloat($data[9]));
        SetValueFloat(CreateVariableByName($_IPS['SELF'], "Batterie Kapazität", 2), strToFloat($data[10]));
           }

    // Offset berechnen und Timer stellen
   //IPS_SetScriptTimer($IPS_SELF, ($ts + $LogInterval * 60 + 10) - time());
}

function strToFloat($value)
{
    return (float)(str_replace(",", ".", $value));
}

function CreateVariableByName($id, $name, $type)
{
   global $_IPS['SELF'];
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "This Variable was created by Script #$_IPS['SELF']");
   }
   return $vid;
}
?>

Der Fehler in der Line 45

   global $_IPS['SELF'];

Parse error:  syntax error, unexpected '[', expecting ',' or ';' in [Service\Obergeschoss\Server-Raum\USV\USV_Auslesen] on line 45

bleibt. :confused:

Andreas

Abschreiben ist schwer. :smiley:

IPS_SetInfo($vid, "This Variable was created by Script #".$_IPS['SELF']); 
 
IPS_SetInfo($vid, "This Variable was created by Script #$_IPS['SELF']"); 

Löst aber das Problem nicht :smiley:

Das neue

global $_IPS['SELF'];

ist nicht gleich

global $IPS_SELF;

Habe in einem anderen Skript das gleiche Problem.
Parse error: syntax error, unexpected ‚[‘, expecting ‚,‘ or ‚;‘ in …

Skript: http://www.ip-symcon.de/forum/f53/eieruhr-webfront-14120/

Oder es ist sonst ein Fehler.

Gruß
Bruno

global ${$_IPS['SELF']};

Hatte nicht richtig gelesen. :rolleyes:

Der andere Fehler war/ist schon auch da, allerdings wäre die Fehlermeldung erst nach dem obigen gekommen. :smiley:

Danke Rainer

Gruß
Bruno

Ich hatte aber den 3ten Post nicht gelesen und Zeile 45 unten vermutet aber egal. Wer lesen kann ist klar im Vorteil. :smiley:

Hallo.

Danke Rainer, danke Bruno den PHP Sch… werde ich gaube nie richtig begreifen :stuck_out_tongue: . Jetzt funktioniert es.

Andreas.

PS

von der V2.5 bin ich richtig angetan - Konsole läuft bei mir trotz der vielen Variablen deutlich schneller :loveips: