Ankündigung

Einklappen
Keine Ankündigung bisher.

Heizung ETA PC25

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

    #16
    Erste Erfolge!
    Dein Hinweis auf den Schritt zurück, hat mich veranlasst das Thing zu kontrollieren: und richtig, statt /usr/var/ muss es user/var heißen.
    Ich habe alle Transformationen rausgenommen und im ITEM erscheint die komplette XML-Ausgabe. :-) *Jubel*
    Dann habe ich wieder mit den Transformationen herumgespielt. konnte aber nur eine leere Ausgabe, ein "NaN" und ein "Undef" herauslocken.
    Wie du siehst, habe ich das Prinzip immer noch nicht verstanden. Aber ich bin mir sicher, dass du mich auf den richtigen Weg führst :-)

    Kommentar


      #17
      Die nächste Stufe wäre, mit der stateTransformation XPATH:/eta gezielt nur einen Teil des XML anzeigen zu lassen, falls das klappt, mit XPATH:/eta/value nochmals einzugrenzen. Schließlich könntest Du versuchen, ob XPATH:/eta/value/text() die Zahl zurück liefert.

      Die XPATH Definition von openHAB unterscheidet sich evtl. etwas von anderen Implementationen.
      Zuletzt geändert von udo1toni; 19.12.2021, 01:58.

      Kommentar


        #18
        Hallo udo1toni,
        die Ausgabe ohne Transformation lautet:
        • <?xml version="1.0" encoding="utf-8"?> <eta version="1.0" xmlns="http://www.eta.co.at/rest/v1"> <value uri="/user/var/120/10101/0/0/12197" strValue="7,9" unit="°C" decPlaces="1" scaleFactor="10" advTextOffset="0">79</value> </eta>
        Wenn ich im Channel die State Transformation "XPATH:/eta" eingebe (ohne Anführungsstriche), dann ist das Item leer.

        Kommentar


          #19
          Und Du bist sicher, dass Du xpath installiert hast?

          PS: Ich habe das Ganze gerade mal mit http://www.w3schools.com/xml/simple.xml durchgespielt. Der Knoten heißt dann /breakfast_menu und es werden korrekt die Daten ausgegeben.Eine Erweiterung auf /breakfast_menu/food bringt erwartungsgemäß den ersten kompletten Datensatz, /breakfast_menu/food/name bringt den Namen des ersten Gerichts auf der Karte.

          PS: Ich habe mal etwas getestet, offenbar hat XPATH mit dem xml in dieser Form Probleme. Mein Vorgehen: ich habe die xml-Daten in ein Dokument auf einen Webserver gepackt, um sie von dort per http herunter zu laden, was prima funktioniert hat (String ohne stateTransformation). Mit XPATH kommt aber tatsächlich nichts, wenn ich das Ganze in einem Online evaluator nachvollziehe, führen die Pfade durchaus zum korrekten Ergebnis.

          PPS: Das Problem entsteht wohl durch das Tagging... Der korrekt XPATH lautet XPATH:/*[name()='eta'] also: hole die Daten, welche zu dem Datensatz gehören, dessen name "eta" lautet...

          Ja, da muss man erst mal drauf kommen, zumal die Online Evaluatoren sich da nicht drum scheren...
          Zuletzt geändert von udo1toni; 19.12.2021, 14:41.

          Kommentar


            #20
            Hallo udo1toni,
            nach unzähligen Versuchen habe ich mit der State Transformation:
            Code:
            XPATH:/*[name()='eta']
            ein String-Item mit "71" erhalten. Ich vermute, dass ich damit noch keine Grafiken erstellen kann.

            PS: Dieser Wert lässt sich auch von einem Number-Channel holen und damit habe ich ein Number-Item. Das bisschen rechnen, kann ich dann mit einer Rule machen und habe dann auch eine Grafik. Ich glaube mein Ziel ist erreicht.

            Und vielen, vielen Dank für deine Unterstützung.
            Zuletzt geändert von EberhadK; 19.12.2021, 14:51.

            Kommentar


              #21
              Ah, Super, Du hast es schon vor mir selbst raus gefunden.

              Nun denn, weiter geht's. Du musst jetzt den Channel auf Number umstellen (und natürlich das Item ebenfalls). Anschließend sollte es reichen, dem Item die Eigenschaft measurement mitzugeben. Leider wirst Du den Scalefactor nicht so ohne weiteres los werden. Allerdings könnte man das mit einer JS Transformation hinbekommen (die kannst Du im Link zwischen Channel und Item einbauen). Also bei Profile JS auswählen und eine JS-Script Datei angeben, z.B. durch10.js. Die Datei muss dann im transform-Ordner liegen:
              Code:
              (function(timesten){
                  return timesten / 10;
              })(input)
              Ich bin nicht sonderlich gut in JavaScript, kann also gut sein, dass die Funktion anders aussehen muss...

              Kommentar


                #22
                Hallo udo1toni,

                nochmals vielen Dank für die Unterstützung.
                Den Vorschlag die Umrechnung mit JS zu machen finde ich gut. Da lerne ich auf meine alten Tage (Ü60) eine weitere Sprache. Ansonsten kann ich ja immernoch auf die Rules zurückgreifen.
                Die Außentemperatur war sowieso nur ein Testobjekt. Mich interessieren eher die Verbräuche und Laufzeiten. Mal sehen, was ich dort für Werte angeboten bekomme.

                Kommentar


                  #23
                  Hier mal eine Zusammenfassung für alle, die es interessiert:
                  Pelletsheizkessel PU15 von ETA, mit der Softwareversion 3.53.0 und openHAB3.
                  Mit folgenden Einstellungen bekommt man eine Zahl zurück:
                  Code:
                  UID: http:url:e080336b24
                  label: Heizung
                  thingTypeUID: http:url
                  configuration:
                  authMode: BASIC
                  ignoreSSLErrors: false
                  baseURL: http://192.168.178.86:8080/user/var
                  delay: 0
                  stateMethod: GET
                  refresh: 30
                  commandMethod: GET
                  timeout: 3000
                  bufferSize: 2048
                  location: Heizung
                  channels:
                  - id: aussenN
                  channelTypeUID: http:number
                  label: aussenN
                  description: ""
                  configuration:
                  mode: READONLY
                  stateExtension: /120/10101/0/0/12197
                  stateTransformation: XPATH:/*[name()='eta']
                  Damit kann man dann ein Number-Item erstellen und hier den scaleFactor verrechnen.

                  Kommentar

                  Lädt...
                  X