Ankündigung

Einklappen
Keine Ankündigung bisher.

Http Binding und switch

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

    Http Binding und switch

    Hallo Forum,
    ich lese per Http Binding einen Zustand aus. Mein item hierzu:
    Code:
    Switch statusgesch "Status [MAP(Geschirrsp.map):%s]" (Geschirrspueler) { http="<[http://192.168.11.230/homebus/device?langua
    ge=de&type=DW_G1000&id=DW_G1000.-1609533158:60000:XSLT(geschirrstatus.xsl)]" }
    Im Log bekomme ich nun zwei Ausgaben "In Betrieb" und "Ende" Nun möchte ich gern in der .sitemap einen Schalter erstellen hierzu habe ich in der geschirrstatus.xsl folgendes eingetragen:

    Code:
    -=undefiniert
    In Betrieb=opened
    Ende=closed
    Weiterhin sieht meine .sitemap wie folgt aus:

    Code:
    Switch item=statusgesch label=[MAP(Geschirrsp.map):%d]
    Was mache ich falsch denn der Schalter zeit keine Reaktion.

    Gruß
    Frank



    #2
    Zum einen ist der Code, den Du in geschirrstatus.xsl eingetragen hast eigentlich das, was in die Geschirrsp.map gehört (wobei die Zuordnung der Werte nicht stimmt, links steht, was vom Item kommt, also bei einem Switch ON, OFF, Uninitialized, rechts die Werte, die als Wert in der Sitemap angezeigt werden sollen. Wenn im linken Text (bei String Items) ein Leerzeichen vorkommt, muss dieses mit einem \ escaped werden.

    In der Sitemap schreibst Du (unnötigerweise, ist ja schon im Items-File gefiniert) das Label um, allerdings ohne Anführungszeichen, das wird dann ebenfalls schief gehen.

    Erster Tipp, um das ganze zum Laufen zu bringen: Fang mit einem String Item an und lass Dir den Inhalt z.B. mittels Rule ins log schreiben:
    Code:
     String statusgesch "Status [%s]" (Geschirrspueler) { http="<[http://192.168.11.230/homebus/device?language=de&type=DW_G1000&id=DW_G1000.-1609533158:60000:REGEX((.*))]" }
    als Item und
    Code:
    rule "Status Geschirrspüler loggen"
    when
        Item statusgesch changed
    then
        logInfo ("Dishwasher.Status","Status: {}",statusgesch.state.toString)
    end
    als Rule. Nun kannst Du genau sehen, was openHAB empfängt und Dich entsprechend rantasten.

    Wie die passende xsl-Datei nachher aussehen muss, weiß ich nicht, ich habe das Funktionsprinzip bisher noch nicht verstanden weil ich es nicht benötige.
    Wie diese Dateien aufgebaut sind, kannst Du Dir aber anhand des Demos anschauen, da gibt's xsl-Dateien z.B. für yahoo-weather.
    Ach ja... Da Du den Geschirrspüler ja nur abfragst, ist ein Schalter vermutlich nicht die beste Darstellungsweise, besser wird ein Text Widget sein, welches mit dynamischem Icon den Zustand anzeigt (neben der Ausgabe des Status als Text).

    Kommentar


      #3
      Ich beschäftige mich erst seit kurzen mit openhab von daher ist es noch etwas durcheinander, sorry. Du hast natürlich recht was ich als "geschirrstatus.xsl" beschrieben habe ist die "Geschirrsp.map". Zum Ablauf :
      Ich frage per http die Daten meiner Spülmaschine ab und bekomme eine Antwort als .XML. Mit meiner geschirrrstatus.xsl hole ich mir nun den Wert den ich benötige. Diese Werte sind nun "In Betrieb" und "Ende". Soweit läuft es auch.

      Da ich nun mein Openhab auch über die Homebridge Abfrage benötige wohl einen Switch. ( Bitte korrigiere mich wenn ich falsch liege). Was ich bisher nicht verstanden habe ist was bringt den Switch dazu, durch die Änderung der Werte "In Betrieb" und "Ende" durch die Position "On" und "Off" anzuzeigen. Ich habe vermutet das läuft über die "Geschirrsp.map", aber das ist wohl flasch. Ich habe solch eine Funktion bisher nur über ein Binding gesehen wie zB Rwe-Smarthome oder Fritzbox, da habe ich allerdings nicht verstanden wie das funktioniert. .

      Kommentar


        #4
        Ey was für nen Geschirrspüler hast Du, dass du den per HTTP abfragen kannst?

        Thomas

        Kommentar


          #5
          Zitat von firstfacility Beitrag anzeigen
          Ich frage per http die Daten meiner Spülmaschine ab und bekomme eine Antwort als .XML. Mit meiner geschirrrstatus.xsl hole ich mir nun den Wert den ich benötige. Diese Werte sind nun "In Betrieb" und "Ende". Soweit läuft es auch.
          Ah, das ist schonmal gut. Trotzdem nutzt Dir weder das Mapping etwas, noch bekommst Du es so auf den Switch, denn der Inhalt, der über das http Binding rein kommt, ist ja weder ON noch OFF.
          Du müsstest die xsl-Datei so umbauen, dass ON oder OFF als Status in das Item geschrieben werden. Die wiederum kannst Du dann mit der map-Datei in was auch immer übersetzen, das ist dann aber nur die Anzeige, das Item hat weiterhin ON oder OFF als Status

          Kommentar


            #6
            Ich habe mich inzwischen etwas eingelesen, wenn ich es richtig verstanden habe macht das Mapping keinen Sinn für einen Switch. Vor allem zeigt sich die Homebridge davon völlig unbeeindruckt. Also ich in der Praxis hole ich mir meinen Wert und gebe ihn in der UI aus oder Mappe ihn eben. In meinem Fall gebe ich dann für "In Betrieb" "ON" aus. Soweit habe ich das Verstanden.

            Nur wie schon gesagt zeit sich die Homebridge davon völlig unbeeindruckt: Hier einige Ausgaben des Homebridge Log:
            Code:
            t handled.
            [2016-04-24 10:18:07] [Rwe Smarthome] Platform - The widget 'Status [-]' of type StringItem is an item not handled.
            [2016-04-24 10:18:07] [Rwe Smarthome] Platform - The widget 'Phase [-]' of type StringItem is an item not handled.
            [2016-04-24 10:18:07] [Rwe Smarthome] Platform - The widget 'Programm [-]' of type StringItem is an item not handled.
            [2016-04-24 10:18:07] [Rwe Smarthome] Platform - The widget 'Ende [-]' of type StringItem is an item not handled.
            [2016-04-24 10:18:07] [Rwe Smarthome] Platform - The widget 'Restzeit [-]' of type StringItem is an item not handled.
            [2016-04-24 10:18:07] [Rwe Smarthome] Platform - The widget 'Status [-]' of type StringItem is an item not handled.
            [2016-04-24 10:18:07] [Rwe Smarthome] Platform - The widget 'Funktion [-]' of type StringItem is an item not handled.
            [2016-04-24 10:18:07] [Rwe Smarthome] Platform - The widget 'Automatik [-]' of type StringItem is an item not handled.
            Ich vermute hier ist ein weiteres Mapping fällig nur wie läuft das ?

            Kommentar


              #7
              Irgendwie ist ein Log ohne das Drumherum eher ... nutzlos Konkret: Was für Werte überträgst Du zum rwe-Binding? Wie hast Du die Items definiert? Ein Mapping benötigst Du ausschließlich für die Anzeige in der UI, das Mapping hat keinerlei Einfluss auf den Wert, der im Item gespeichert ist.
              Wenn also der Wert des Items ON oder OFF ist, Du aber An oder Aus anzeigen möchtest, brauchst Du das Mapping. Das Item behält aber den Wert ON bzw. OFF.

              Kommentar


                #8
                Ok ich habe es inzwischen geschafft den Status der Geräte darzustellen. Auch ein Mapping für die homebridge läuft nun. Leider schaffe ich es nicht einen einen Schalter per Http Binding auszulösen. Hierzu habe ich folgendes Item erstellt:
                Code:
                String weinrelais Label="Licht Weinkuehlschrank" { http=">[ON:POST://192.168.11.230:80/homebus/device?type=MieleRE&id=KFN_8767.-1038632
                635&action=startLightFunction] >[OFF:POST:http://192.168.11.230:80/homebus/device?type=MieleRE&id=KFN_8767.-1038632635&action=stopLight
                Function]" }
                Im log bekomme ich folgende Ausgabe:
                Code:
                => /opt/openhab/logs/2016_05_02.request.log <==
                192.168.11.5 -  -  [02/May/2016:17:41:32 +0000] "GET //classicui/openhab.app?sitemap=rwe&poll=true&__async=true&__source=waHome HTTP/1.1" 404 1443
                Wenn ich die entsprechende URL in einem Browser eingebe geht es natürlich, was mache ich falsch ?

                Kommentar


                  #9
                  Beim Einschaltbefehl hast Du das http: nach POST: vergessen.

                  Kommentar

                  Lädt...
                  X