Heizung (Festbrennstoff ETA)

  • Hallo,


    ich habe eine ETA Heizung und möchte gern die Pufferladung in Homekit anzeigen lassen z.B. als Lux oder Temp. Ist im Prinzip egal, da ich diesen Wert dann später einfach weiter automatisieren möchte.


    Problem, ich bekomme die Daten nicht in die Bridge bzw. in Homekit. Ich habe schon etliche Plugins (vornehmlich http Sensoren Plugins) ausprobiert aber leider ohne erfolg. Wenn ich die http Seite der Heizung im Browser aufrufe, bekomme ich folgenden Quelltext:


    <?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/12090" strValue="Ein Tag" unit="" decPlaces="0" scaleFactor="1" advTextOffset="2200">2201</value>

    </eta>



    Ich bräuchte daraus nur den Wert „2201“ und ich wäre glücklich. Hat jemand ne Idee wie und wo ich ansetzten könnte.


    Danke und Gruß

    Patrick

  • Ohne es getestet zu haben, aber mit diesem Plugin sollte es funktionieren. Das bietet nämlich einen schicken "XPath mapper" mit dem sich Werte aus XML-Dateien auslesen lassen. Also genau das, was du suchst.


    Viel Erfolg!


    Gruß,

    Gerrit

  • Super! Danke für den Tipp Gerrit!


    Leider reichen meine Programmierkenntnisse nicht ganz dafür aus. Ich habe das Plugin jetzt soweit konfiguriert (siehe Unten) was müsste ich denn jetzt bei XPath und Index hinschreiben, damit ich genau meine 2201 (siehe Oben im Post) herausbekomme?!


    Danke und Gruß

    Patrick


    {
        "accessory": "HttpAdvancedAccessory",
        "service": "LightSensor",
        "name": "Pufferspeicher",
        "forceRefreshDelay": 5,
        "debug": false,
        "urls": {
            "getTargetLight": {
                "url": "http: //192.168.178.116:8080/user/var/48/10391/0/0/12528",
                "mappers": [
    {
                        "type": "xpath",
    "parameters": {
    "xpath": "//value/text()",
    "index":
    1

    }
    }
    ]
    }
    }
    }

  • Probier mal

    Code
    "xpath": "number(//value)",
    "index": 0


    P.S.: In deiner Konfiguration ist ein Leerzeichen bei URL zwischen http: // das da nicht hingehört ;)

    Einmal editiert, zuletzt von Patrick_ ()

  • Schmeiß mal die Index Zeile komplett raus.


    Code
     "mappers" : [
                         {
                             "type": "xpath",
                             "parameters": {
                                 "xpath": "number(//value)"
                             }
                         },
  • Woher hast du unter urls das "getTargetLight" ? Dazu finde ich nichts in den Homekit Types. Dort steht aber zum Service "LightSensor" drin, dass das Characteristic "CurrentAmbientLightLevel" benötigt wird.

    siehe:

    https://github.com/homebridge/…racteristicDefinitions.ts

    https://github.com/homebridge/…ons/ServiceDefinitions.ts


    mMn müsste es also getCurrentAmbientLightLevel statt getTargetLight heißen


    Das Characteristic Current Ambient Light Level ist wie folgt definiert:


    Darin ist der min. Wert 0,0001, der max.Wert 100.000 und die Einheit LUX definiert.


    und der von dir verwendete Service LightSensor benötigt dieses Characteristic:

    Einmal editiert, zuletzt von Patrick_ ()

  • Hi,


    also ich habe deine Tipps umgesetzt.Danke erstmal dafür! Leider habe ich immer noch kein Erfolg. Wenn ich"number" eintrage wie du schreibst, crashed das Plugin. Folgende config führt zwar zu keinem Absturz aber es Zeigt immer noch 0,0001 Lux an:


    {
                "accessory": "HttpAdvancedAccessory",
                "service": "LightSensor",
                "name": "Pufferspeicher",
                "forceRefreshDelay": 5,
                "debug": false,
                "urls": {
                    "getCurrentAmbientLightLevel": {
                        "url": "http://192.168.178.116:8080/user/var/48/10391/0/0/12528",
                        "mappers": [
    {
                                "type": "xpath",
                                "parameters": {
                                    "xpath": "//value/text()"
    }
    }
    ]
    }
    }
    }
    ],

  • Hm, komisch dass er bei number abstürzt.


    Letzter Versuch: nachdem im Characteristic "Current Ambient Light Level" steht, dass es sich beim LUX Wert um ein FLOAT (Zahl mit Nachkommastellen) Datentyp bzw. Format handelt, könntest du im xpath höchstens noch versuchen zu sagen, dass der Wert 2201 den er in der xml Datei findet ein Float ist.


    Probiere mal:xs:float(number(//value)), bzw. wenn er wieder streikt könnte vllt auch xs:float(//value/text()) gehen.


    dein //value/text() geht zwar auch, aber dann ist der Wert 2201 als Text formatiert. Deswegen kann er vermutlich damit nicht "rechnen" und stellt dir 0 dar.


    Du kannst gerne selbst mal bisschen testen: https://www.freeformatter.com/xpath-tester.html#ad-output

    einfach bei XML Input den Inhalt eintragen und bei XPath Expression z.B. xs:float(number(//value)). Dann sollte unten bei Result der Wert 2201 auftauchen.

  • Hallo Patrick, erst wieder vielen Dank für deinen Support. Das hat mir super weitergeholfen. Es geht zwar immer noch nicht aber ich weiß jetzt woran es liegt: das Plugin kann bei XPath nur Text wiedergeben. Wählt man was anderes, als text stürzt das Plugin ab.


    Schade, so kurz davor... oder gibt es einen Service der im HomeKit Text wiedergeben kann?

  • Ja, hab es auch gerade in der Plugin-Beschreibung gelesen. Mich wundert es, da ja eig. fast alle Schalter/Sensoren etc. mit irgendeinem Wert arbeiten und nicht mit Text.


    Vllt. versteh ich aber auch einfach das Plugin und XPath nicht, von beidem habe ich gestern zum ersten mal gehört und evtl. erzähle ich hier einfach riesen Mist ;) Kann auch sein, dass es sehr wohl mit //value/text() geht aber wird beide den Fehler nicht sehen. Vllt. steckt der irgendwo anders? In deiner URL?


    Kannst du es noch mit anderen Werten testen? Also was anderes als die Pufferladung? z.B. eine Temperatur mit der wir einen Temperatur Sensor ausprobieren könnten?


    Ansonsten kann ich dir glaube ich an dem Punkt nicht mehr weiterhelfen.

    Einmal editiert, zuletzt von Patrick_ ()