Ankündigung

Einklappen
Keine Ankündigung bisher.

Rest api

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

    Rest api

    Hallo zusammen,

    ich spiele im Moment etwas mit dem REST API herum. Ziel ist es, von einem externen Programm berechnete Werte auf den openHAB Bus zu bekommen.

    Die ersten Ansätze funktionieren grundsätzlich auch, allerdings sind mir zwei Punkte aufgefallen, bei denen ich vermute, dass sie an meiner externen Software liegen. Vielleicht kann mir ja hier jemand auf die Sprünge helfen?!

    1. Manchmal kommt es beim PUT zu folgender Fehlermeldung im log:
    01:02:29.253 WARN o.e.j.servlet.ServletHandler[:553] - /rest/items/Moon_Height_MT/state java.lang.IllegalStateException: Broadcaster already existing /*. Use BroadcasterFactory.lookup instead at org.atmosphere.cpr.DefaultBroadcasterFactory.get DefaultBroadcasterFactory.java:153)

    Auf der Client-Seite sieht es ähnlich aus: "server replied: Broadcaster already existing /*. Use BroadcasterFactory.lookup instead", Error code 299

    Das Item Moon_Height_MT ist wie folgt definiert:
    Number Moon_Height_MT "Mond Höhe [%.2f °]" <none> (Sun)

    Der Fehler tritt aber auch bei anderen Items auf.


    2. Beim setzen eines DateTime Wertes bekomme ich manchmal den Fehler:
    Received HTTP PUT request at 'items/ Moon_MoonRise_MT/state' with an invalid status value '2012-12-01T07:17:22'

    Das Datum auf der Weboberfläche war danach auf den 13.12.2012 13:50:04 gesetzt!

    Definition des Items:
    DateTime Moon_MoonRise_MT "Mondaufgang: [%1$tA, %1$td.%1$tm.%1$tY %1$tT]" (Sun)


    Etwas merkwürdig ist, dass beide Fehler nicht immer auftreten. Die gleiche Anwendung läuft durchaus auch x-mal hintereinander ohne Fehlermeldungen.

    Vielleicht habt Ihr ja einen Tipp, an welche Stelle ich suchen kann?!

    Schon mal vielen Dank für Eure Hilfe!

    Jockel

    #2
    Hi Jockel,

    zu 1: Sieht mir so aus, als ist das ein Bug in der REST API. Der Code dort ist durch Issue 62 - openhab - Support streaming mode in the REST API for item/widget status changes - empowering the smart home - Google Project Hosting recht komplex geworden und da dies eine Contribution war, habe ich auch nicht den vollen Duchblick darin - soll heißen, wenn ich was ändere, geht wahrscheinlich weniger als vorher ;-). Ich habe aber zumindest gerade mal das Atmosphere Framework (von welchem die von Dir genannten Meldungen stammen) von einer Beta-Version auf die finale Version gehoben. Ich glaube nicht, dass das Dein Problem behebt, aber eine minimale Chance ist da.

    zu 2: Klingt sehr sonderbar, da habe ich leider auch keine Idee dazu.

    Wie oft treten diese Probleme in etwa auf (Verhältnis geht/geht_nicht)?

    Grüße,
    Kai

    Kommentar


      #3
      OK, danke schon mal für das Feedback! Sobald das Update im nightly Build ist werde ich ein Update machen und dann noch mal testen. Die Fehlerbeschreibung in Deinem Link muss ich aber auch erst noch durchdringen...

      Für die REST-Zugriffe verwende ich Klassen aus dem Qt-Framework, die Anfragen parallel absetzt. Ich hab den Eindruck, das dies die Probleme verursacht oder zumindest verstärkt. Mit Curl von der Kommandozeile hab ich sie jedenfalls noch nicht beobachtet. Ich werde meine Anwendung in den nächsten Tagen mal so umändern, dass die Request sequentiell kommen und zum Testen vielleicht auch noch ein kleines Skript um Curl herum schreiben.

      Die genaue Zahl der fehlgeschlagenen Versuche müßte ich noch mal ermitteln, schätzungsweise dürften das so in der Gegend von 30% gelegen haben.

      Das zweite Problem hab ich bei allen Tests vielleicht 2-3 mal gesehen, dass ist also sehr selten!

      Kommentar


        #4
        Ich denke, dass Du mit der Vermutung richtig liegst, dass es das Problem insbesondere bei gleichzeitigen Requests auftritt - entsprechend schwierig wird sich die Analyse gestalten...

        Grüße,
        Kai

        Kommentar


          #5
          Die Vermutung scheint sich wohl zu bestätigen. Ich hab jetzt noch mal etwas getestet, sowohl mit meiner alten Version als auch mit dem nightly Build vom 07.12..

          Mit beiden Versionen kommt es zu allen möglichen Fehlern wenn die Requests parallel abgesetzt werden. Übrigens auch zu dem oben geschilderten Problem, dass korrekte Datums-Strings nicht erkannt oder falsch erkannt werden.

          Mit seriellen Zugriffen (100ms zwischen den Requests) hab ich noch keinen Fehler gesehen, dass beobachte ich zur Zeit noch.

          Kommentar

          Lädt...
          X