Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme Fehlerlog und exec Teil von LBSen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Probleme Fehlerlog und exec Teil von LBSen

    Hallo, benötige mal wieder etwas Hilfe.

    In meinem LBS verwende ich die "explode()" Funktion um den String in Teile in ein Array zu schreiben.
    Funktioniert auch Prima, am Ende habe ich was ich will. Doch der Fehlerlog wird mit "Undefined offset:" Fehlern zugemüllt.

    In der Konsole mit meinem Testscript sieht das wie Folgt aus.

    Script:
    PHP-Code:
    // Url auslesen
    $ch curl_init();                                                            // create curl resource
    curl_setopt($chCURLOPT_URL"http://IP/cgi/ems_data.xml");    // set url
    curl_setopt($chCURLOPT_RETURNTRANSFER1);                                //return the transfer as a string
    $output curl_exec($ch);                                                    // $output contains the output string
    curl_close($ch);                                                             // close curl resource to free up system resources

    // XML String Phrasen
    $search= array("<",">","/","=","'","root ","Timestamp","id","ChargerCount","Description","inverter ","var ","nameP"," value","nameSOC","nameCapacity","nameState");
    $replace=array("","","","","","","","","","","","","","","","","");
    $output_phrase=str_replace($search,$replace,$output);

    $daten=explode("\n",$output_phrase);

    var_dump($daten); 
    Ergebnis Konsole:
    Code:
    array(9) {
      [0]=>
      string(40) "9498972746 923091319 0 Gernot_Klobucaric"
      [1]=>
      string(7) "M371916"
      [2]=>
      string(1) "0"
      [3]=>
      string(1) "0"
      [4]=>
      string(4) "5589"
      [5]=>
      string(1) "0"
      [6]=>
      string(8) "inverter"
      [7]=>
      string(4) "root"
      [8]=>
      string(0) ""
    }
    Soweit funktioniert das im LBS auch.
    doch wenn ich z.B. auf das Arryelement[1] zugreife bekomme ich den String am LBS Ausgang Ausgegeben und im Fehlerlog bekomme ich folgenden Eintrag:
    Code:
     [TABLE="class: log, border: 0, cellpadding: 0, cellspacing: 0, width: 0, height: 12"]
    [TR="class: sErr"]
    [TD]2017-06-25 08:25:21[/TD]
     			[TD]952478[/TD]
     			[TD]?[/TD]
     			[TD]3894[/TD]
     			[TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000922.php | Fehlercode: 8 | Zeile: 91 | Undefined offset: 1[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
    [/TABLE]
     wird durch folgende Zeile ausgelöst:
    setLogicLinkAusgang($id,1,$daten[1]);

    Diesen Fehle bekomme ich bei jedem Array Element auf das ich zugreife.

    Schöne Grüße
    Gernot



    #2
    Du solltest mal den LBS hier posten, bei dem der Fehler auftritt und nicht das Skript, welches funktioniert.
    Wenn es den Index 1 wirklich gibt, dann wird die o.g. Zeile nicht zum Fehler führen. Ggf. ist der Fehler noch woanders zu suchen.
    Ich vermute, dass der LBS auch noch anders getriggert wird, bei dem das explode dann nur ein Element zurückliefert, also nur $daten[0]. Wenn du dann auf $daten[1] zugreifst, erzeugt das genau diesen Fehler. Wie gesagt, das kann man nur wirklich beurteilen, wenn man den Code des LBS mal sieht.

    Kommentar


      #3
      Danke für die rasche Antwort!

      Hab mich verzweifelt an der Funktion explode aufgehängt. Danke fürs Augen öffnen.
      Prüfe jetzt vorher ob das Array beschrieben wurde.

      Überarbeite gerade den LBS dann poste ich ihn im Forum.

      Noch eine kleine Frage.

      Alles was bei EDOMI in der Konsole (php Script) funktioniert, funktioniert auch im Exec Teil der LBSen?

      Kommentar


        #4
        Zitat von murelli146 Beitrag anzeigen

        Alles was bei EDOMI in der Konsole (php Script) funktioniert, funktioniert auch im Exec Teil der LBSen?
        Grundsätzlich JA.

        Kommentar


          #5
          explode() hat so einige Tücken, z.B. wenn ein leerer String übergeben wird etc. - siehe PHP-Doku...
          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

          Kommentar


            #6
            Hab jetzt vor explode noch mittels "if(empty($output)==0)" geprüft ob das array befüllt ist.

            Seitdem habe ich keine Fehler mehr.

            Danke und Schöne Grüße
            Gernot

            Kommentar

            Lädt...
            X