Ankündigung

Einklappen
Keine Ankündigung bisher.

Auswerten einer Seite die einen Session Cookie erfordert

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

    [Codebeispiel] Auswerten einer Seite die einen Session Cookie erfordert

    Hallo,

    hab mal wieder eine Frage zum HTML-Binding bzw. suche eine Lösung um Daten von einer Seite abzurufen, die allerdings ein Session-ID (Session-Cookie) benötigt.

    Der Ablauf ist wie folgt:
    Wenn ich die Seite die mir die Daten übergeben soll (diese gibt ein JSON Protokoll aus) mit USER und Passwort aufrufe, erhalte ich einen Login-Fehler. Dies lässt sich auch auf meinem PC reproduzieren

    Wenn ich allerdings zuvor die eigentliche HTML-Startseite aufrufe (incl. USER und Passwort) und geöffnet lasse, erhalte ich beim ersten Link kein Login-Fehler (geöffnet in einem zweiten Tab).
    Dies liegt daran dass die HTML-Seite dem PC eine Session-ID (Cookie) vergilt.

    Welche Möglichkeiten habe ich in diesem Fall mit openHAB?
    Besteht die Möglichkeit in Rules beide Seiten nacheinander aufzurufen ohne dass die Session-ID gelöscht wird?


    Gruß
    mepi0011

    #2
    Hallo,

    leider hat noch niemand auf meine Fragen geantwortet.

    Da ich aktuell Probleme mit dem Designer habe, nochmals die Frage wie ich Webseiten in Rules aufrufen kann?

    Im Internet (https://code.google.com/p/openhab-sa...a_HTTP_binding) habe ich folgendes gefunden:
    Code:
    sendHttpGetRequest("http://192.168.1.16/devices.htm?rom=BD0000009D93DC12&variable=FlipFlop_B&value=0")
    Ich vermute es gibt noch mehr um auch HTTP Seiten aufzurufen!

    Bitte um Hilfe!

    Gruß
    mepi0011

    Kommentar


      #3
      Hallo zusammen,

      kann mir jemand die Funktionsweise der folgende Befehle erklären?

      sendHttpDeleteRequest
      sendHttpGetRequest
      sendHttpPostRequest
      sendHttpPutRequest

      Danke im Voraus!

      Gruß
      mepi0011

      Kommentar


        #4
        Hallo mepi0011,
        ich hol das mal wieder hoch ...
        bist du mit dem problem weiter gekommen ?
        Hab das selbe problem - auth funktioniert und gibt eine sid zurück.
        openhab.log
        Code:
        {"data":{"sid":"tw6MsBeeSToHoC5KON06993"},"success":true}
        der zweite aufruf wird aber nicht ausgeführt und mit
        Code:
        {"error":{"code":101},"success":false}
        quitiert.
        Ich möchte damit die Audiostation von einer Synology Nas steuern.
        Wer kann mir helfen?
        Mit dem REST-Plugin und über die console mit wget (wget -qO - --load-cookies bzw. --save-cookies cookies.txt) funkionieren die aufrufe !

        LG Malte

        Kommentar


          #5
          Hallo Malte,

          direkt mit openHAB habe ich es nicht gelöst bekommen. Habe ein script geschrieben, das ich anschließend über das exec Binding aufrufe.

          Das Skrip sieht wie folgt aus:

          Code:
          #!/bin/bash
          # Script um die JSON Schnittstelle des Gerätes auszulesen
          
          # Pfad in dem die JSON Datei abgelegt wird
          JSONPfad=$HOME
          
          # Datei in der die JSON Ausgabe gespeichert wird
          JSONDatei="json.out"
          
          # Datei in dem curl die Cookies ablegt
          cookieDatei="cookie.txt"
          
          # IP Addresse des auszulesenden Gerätes
          lIP="192.168.1.109"
          
          # Aufbau der benötigten Pfade und Links
          Ausgabe="${JSONPfad}/${JSONDatei}"
          CookiePfad="${JSONPfad}/${cookieDatei}"
          JSONLink="http://${lIP}/webservice/data.php"
          LoginLink="${lIP}/startservice.php"
          
          # Daten (JSON) vom Gerät abfragen
          curl -s -b $CookiePfad -X GET $JSONLink > $Ausgabe
          
          # Es wird geprüft ob der Login funktioniert hat
          authFehler=$(jq 'has("authentication")' $Ausgabe)
          # echo "Ausgabe $authFehler"
          
          if [ $authFehler  = "true" ]
          then
            echo "Login Fehler: Login wird durchgeführt!"
            curl -s --cookie-jar $CookiePfad $LoginLink > /dev/null
            curl -s -b $CookiePfad --cookie-jar $CookiePfad -d "login=user&password=1234&save_login=1" $LoginLink > /dev/null
            curl -s -b $CookiePfad -X GET $JSONLink > $Ausgabe
          fi
          
          # Rückgabe des gewünschten Wertes
          case "$1" in
          	aktBezug)		echo $(jq '.["1-0:1.4.0*255"]' $Ausgabe);;
          	aktEinspeisung)		echo $(jq '.["1-0:2.4.0*255"]' $Ausgabe);;
          	ZaehlerBezug)		echo $(jq '.["1-0:1.8.0*255"]' $Ausgabe);;
          	ZaehlerEinspeisung)	echo $(jq '.["1-0:2.8.0*255"]' $Ausgabe);;
          	*)			echo "kein bekannter Parameter!"
          				exit 1;;
          esac
          
          exit 0
          Damit das Scrip funktionier muss jq und curl installiert sein.

          Gruß
          mepi0011

          Kommentar

          Lädt...
          X