Ankündigung

Einklappen
Keine Ankündigung bisher.

Mit php die Werte einer Lupus Alarmanlage auslesen und für OpenHab weiterverwenden

Einklappen

Neue Werbung 2019

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

  • #16
    Das ist genau der Punkt, den ich nicht verstehe. Ich nutze die Zeilennummern von Notepad++ und ksort () steht ja in der ersten Fehlermeldung für diese Zeile explizit drin (es gibt auch sonst kein ksort() im Skript)
    PHP-Code:
    PHP Warning:  ksort() expects parameter 1 to be array, null given in C:\OpenHAB2\conf\scripts\Lupus3.php on line 48 
    Das Seltsame ist vor allem, dass ich im Browser ausgeführt keine Fehlermeldung bekomme, aber wenn ich das Skript durch openhab aufrufen lasse, sehe ich die Fehlermeldungen im debug modus und es kommt eben auch nicht der Wert heraus.
    Nachdem das php Skript OK zu sein scheint, würde ich vermuten, dass es an der Übergabe zwischen php und openhab klemmt, oder?

    Kommentar


    • #17
      Das Seltsame ist vor allem, dass ich im Browser ausgeführt keine Fehlermeldung bekomme
      Webserver unterdrücken in der Standardeinstellung Fehlermeldungen ...

      Kommentar


      • #18
        Zitat von AlcedoAttis Beitrag anzeigen
        Das Seltsame ist vor allem, dass ich im Browser ausgeführt keine Fehlermeldung bekomme
        Im Error-Log ist keine Fehlermeldung?

        Kommentar


        • #19
          Das Errorlog von oben ist aus dem Debug-Modus von Openhab.
          Wenn ich Eure Hilfen richtig verstehe muss aber da irgendwo "der Hund begraben sein". An der Schnittstelle zwischen der PHP Ausführung und Openhab scheint sich eine Error einzuschleichen, ... oder?

          Kommentar


          • #20
            Fehlermeldung lesen wäre mal ein erster Schritt. Da steht du übergibst NULL und kein Array. Bei deinem Code kann ich übrigens nirgendwo die Stelle sehen, wo du das Array erstellst. Also eindeutige Sache. Erstelle das Array, bevor du es verwendest.

            Kommentar


            • #21
              Und danach dann rausfinden, warum in dem JSON keine Sensoren sind.
              [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

              Kommentar


              • #22
                Hallo zusammen. Problem ist gelöst. Ich habe den unteren Teil des Skripts etwas abgewandelt. die letzte foreach() Schleife hat letztlich die Fehlermeldungen ausgelöst. Ein Freund hat mich drauf gebracht und die bei der Lösung unterstützt:

                PHP-Code:
                // Login 
                $ch curl_init(); 
                curl_setopt($chCURLOPT_URL,$url); 
                curl_setopt($chCURLOPT_TIMEOUT30); //timeout after 30 seconds 
                curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
                curl_setopt($chCURLOPT_HTTPAUTHCURLAUTH_ANY); 
                curl_setopt($chCURLOPT_USERPWD"$username:$password"); 
                $status_code curl_getinfo($chCURLINFO_HTTP_CODE); 
                $result=curl_exec ($ch); 


                $sensorliste "http://".$ip."/action/deviceListGet"
                curl_setopt($chCURLOPT_URL,$sensorliste); 
                $result=curl_exec ($ch); 
                // echo $result; 
                curl_close ($ch); 


                // Umwandeln von JSON in ein Array 
                $result str_replace("\t"""$result); 
                $json json_decode($resulttrue); 
                // print_r($json); 

                // jeweilge Zone als Index des neuen Arrays $sensoren verwenden und dieses nach Index (=Zone) sortieren 
                foreach ($json['senrows'] as $sensor
                    { 
                   
                $zone $sensor['zone']; 
                  
                $sensoren[$zone] = $sensor
                    } 
                // var_dump($sensoren);
                ksort($sensoren);


                $mapping_status = array(
                '{WEB_MSG_DC_CLOSE}' => 'ZU',
                '{WEB_MSG_DC_OPEN}' => 'OFFEN'
                );


                foreach(
                $sensoren as $sensor_data) {
                    if(
                $sensor_data['sid'] == 'RF:0149e510') {
                    print(
                $mapping_status[$sensor_data['status']]);
                    }


                Kommentar


                • #23
                  Du verwendest immer noch eine Variable ($sensoren), die vorher nicht erstellt wurde. Das ist ganz schlechter Stil, mach den Code schwer nachvollziehbar und verleitet zu Fehlern.

                  PHP lässt sowas stillheimlich durchgehen. Andere Programmiersprachen würden dir Fehlermeldungen um die Ohren hauen.

                  Kommentar


                  • #24
                    Crossposting ins Reallife... ?
                    [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

                    Kommentar


                    • #25
                      hellbringer: Na ja, liegt wahrscheinlich daran, dass ich leider keinen Programmierhintergrund habe und das Skript hier gelesen habe https://www.symcon.de/forum/threads/...ighlight=Lupus
                      und versuche das Skript durch Lernen, Einlesen von Dokumentationen und Forenbeiträgen so abzuändern, wie ich es brauche. Freue mich immer über Tipps, wie es besser geht !!
                      Wie sollte es denn aussehen?

                      Kommentar


                      • #26
                        Hallo!
                        Wie genau hast Du die Einbindung in openHAB dann gemacht?
                        Danke!

                        Kommentar

                        Lädt...
                        X