Ankündigung

Einklappen
Keine Ankündigung bisher.

edomi in der reboot-schleife

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

    edomi in der reboot-schleife

    Hallo!

    Hab bei entwicklen wohl einen LBS ausgeführt, den edomi nicht mag... Jetzt hängt es in einer Rebootschleife und ich komm da nicht mehr raus.
    Ich kann weder den LBS entfernen und das Projekt aktivieren noch ein Backup einspielen, weil mir edomi nach kürzester Zeit den ganzen Server neu startet.

    Wie geht man da vor?
    OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

    #2
    Lösche den LBS einfach im Dateisystem....

    Kommentar


      #3
      bringt nix.
      zumindest in /usr/local/edomi ... admin/lbs hatte ich das schon ausprobiert.
      aber das wird ja die aktuelle version im Arbeitsprojekt sein, nicht die im aktivierten Projekt.
      OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

      Kommentar


        #4
        Dann nimm
        edomi-files/www/data/liveproject/lbs/LBS.....

        Kommentar


          #5
          Danke, werde ich probieren.
          OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

          Kommentar


            #6
            das hat funktioniert, Danke. Aber warum der LBS die Logik in die Knie zwingt, verstehe ich nicht.

            Ich willte mir nur mal ansehen wie eine GA vom Typ KNX Rohdaten im PHP aussehen (um ein DPT 19.001 zu dekodieren).

            Dafür gebe ich die entsprechende GA in der Logik auf den Eingang...


            Code:
            ###[DEF]###
            [name                = DPT19DateTime                            ]
            
            [e#1    important    = DPT19 DateTime                        ]
            
            
            [e#10                = Loglevel             #init=3                ]
            
            
            
            [a#1                = A1                            ]
            [a#2                = A2                            ]
            [a#3                = A3                                ]
            
            
            [v#100                = 0.10 ]
            [v#101                 = 19001653 ]
            [v#102                 = DPT19DateTime ]
            [v#103                 = 8 ]
            
            ###[/DEF]###
            
            ###[HELP]###
            
            ###[/HELP]###
            
            
            ###[LBS]###
            <?
            function LB_LBSID($id)
            {
                logging($id, "LBS called", null, 8);
                if($E=getLogicEingangDataAll($id))
                {
                    
                    
                    $str = var_export($E[1]['value'], true);
                    
                    logic_setOutput($id,1,$str);
            
                }
            }
            
            
            
            function myErrorHandler($errno, $errstr, $errfile, $errline)
            {
                global $id;
                logging($id, "File: $errfile | Error: $errno | Line: $errline | $errstr ");
            }
            
            function error_off()
            {
                $error_handler = set_error_handler("myErrorHandler");
                error_reporting(0);
            }
            
            function error_on()
            {
                restore_error_handler();
                error_reporting(E_ALL);
            }
            
            
            function logging($id,$msg, $var=NULL, $priority=8)
            {
                $E=getLogicEingangDataAll($id);
                $logLevel = getLogicElementVar($id,103);
                if (is_int($priority) && $priority<=$logLevel && $priority>0)
                {
                    $logLevelNames = array('none','emerg','alert','crit','err','warning','notice','info','debug');
                    $version = getLogicElementVar($id,100);
                    $lbsNo = getLogicElementVar($id,101);
                    $logName = getLogicElementVar($id,102) . ' --- LBS'.$lbsNo;
                    strpos($_SERVER['SCRIPT_NAME'],$lbsNo) ? $scriptname='EXE'.$lbsNo : $scriptname = 'LBS'.$lbsNo;
                    writeToCustomLog($logName,str_pad($logLevelNames[$logLevel],7), $scriptname." [v$version]:\t".$msg);
                    
                    if (is_object($var)) $var = get_object_vars($var); // transfer object into array
                    if (is_array($var)) // print out array
                    {
                        writeToCustomLog($logName,str_pad($logLevelNames[$logLevel],7), $scriptname." [v$version]:\t================ ARRAY/OBJECT START ================");
                        foreach ($var as $index => $line)
                            writeToCustomLog($logName,str_pad($logLevelNames[$logLevel],7), $scriptname." [v$version]:\t".$index." => ".$line);
                        writeToCustomLog($logName,str_pad($logLevelNames[$logLevel],7), $scriptname." [v$version]:\t================ ARRAY/OBJECT END ================");
                    }
                }
            }
            
            ?>
            ###[/LBS]###
            
            
            ###[EXEC]###
            <?
            
            
            
            
            ?>
            ###[/EXEC]###

            OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

            Kommentar


              #7
              Sieht so aus, als hättest du die Errorhandler und Logging Funktionen aus dem EXEC Teil eines anderen LBS in den LBS-Teil deines LBS kopiert.

              Im LBS Teil müssen alle Funktionen mit LB_LBSID_ beginnen, ansonsten machst du bei zwei LBS Instanzen eine Redeclaration von globalen Funktionen.

              Im LBS Teil würde ich den Errorhandler nicht umbiegen, da sich dies auf die gesamte EDOMI Logik Engine auswirkt. Sowas sollte nur im EXEC Bereich passieren, welcher ja unabhängig läuft.
              Daher würde ich die Funktionen myErrorHandler, error_off, error_on löschen und die Logging Funktionen umbenennen in LB_LBSID_logging. Danach natürlich auch den Aufruf der logging Funktion entsprechend anpassen. Dann sollte es eigentlich funktionieren.

              Kommentar


                #8
                das kann es eigentlich nicht sein, weil ich den LBS von einem funktionierenden LBS (ohne EXEC, 19001652) kopiert habe. Da ist das auch so. Wirkt sich wohl nicht aus, weil die Funktionen nicht gerufen werden.
                Ich probiers jetzt mal mit einer "normalen" GA aus.

                Trotzdem Danke für den Hinweis, das werde ich noch berücksichtigen.


                achja logisch, es ist der zweite LBS, und daher machts probleme!

                OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                Kommentar


                  #9
                  Dann ist das im 1652 auch falsch.

                  Kommentar


                    #10
                    japp, ist klar, aer da hat es erstmal nicht zu eiem Fehler geführt (nur 1 Instanz). Erst als ich den zweiten LBS mit diesem Fehler instanziert habe, ist der Fehler aufgetreten.

                    Ich korrigiere das im 1652 natürlich auch noch.
                    OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                    Kommentar


                      #11
                      Hallo miteinander

                      Zitat von SirSydom Beitrag anzeigen
                      hat es erstmal nicht zu eiem Fehler geführt (nur 1 Instanz). Erst als ich den zweiten LBS mit diesem Fehler instanziert habe, ist der Fehler aufgetreten.
                      Oh ja, das ist eine ganz spannende Situation. Da bin ich auch schon hinein gerannt und habe recht lange gesucht, um das Problem zu finden...
                      Kind regards,
                      Yves

                      Kommentar

                      Lädt...
                      X