Ankündigung

Einklappen
Keine Ankündigung bisher.

Openhab und der neue Volkszähler

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

    [Codebeispiel] Openhab und der neue Volkszähler

    Hallo Forum,
    ich nutze seit einiger Zeit ein Code-Beispiel aus diesem Forum um daten aus dem Volkszähler in Obenhab per Http Binding zu bringen. Hierzu habe ich folgendes Item:
    Code:
    Number Stromverbrauch "Strom aktuelle Leistung [%.1f W]" (Current) { http="<[http://192.168.11.13/middleware.php/data/c3ade9b0-03f3-11e6-a739-d54da8XXXXXX.xml?from=-1Minute&to=+1Mi
    nute:60000:XSLT(volkszaehler_avg.xsl)]" }
    Und hierzu ein volkszaehler_avg.xsl:
    Code:
    <?xml version="1.0"?>
    <xsl:stylesheet
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
            <xsl:output indent="yes" method="xml" encoding="UTF-8" omit-xml-declaration="yes" />
            <xsl:template match="/">
                    <xsl:value-of select="//volkszaehler/data/average/text()" />
            </xsl:template>
    </xsl:stylesheet>
    Das ganze lief bisher über xml, doch leider unterstützt nach einem Update des Volkszählers dieser kein xml mehr, denn die Daten kommen nun in .json. Kann mir jemand mit einem Codeschnipsel helfen mit den ich das .json bearbeiten kann um den aktuellen Verbrauch oder Zählerstand zu bekommen? Vielen Dank für eure Hilfe.

    schöne Grüsse

    Frank

    #2
    Schau mal >>hier<< sinngemäß funktioniert das ebenso. Den konkreten Knoten kannst Du relativ einfach mit einem JSON viewer raussuchen, z.B. gibt es ein entsprechendes Plugin für np++. Ich muss mir das auch mal für mich anschauen, dann könnte ich in den nächsten Tagen hier noch ergänzen, wie die Items genau aussehen müssen, das will ich aber lieber zuhause austesten.

    Kommentar


      #3
      Vielen Dank bisher, wäre super wenn du noch etwas weiter ins Detail gehen könntest. Ich warte mal bis du getestet hast.

      Kommentar


        #4
        Ich habe mich inzwischen selbst versucht jedoch ohne Erfolg. Ich habe folgendes versucht:

        openhab.cfg
        Code:
        http:volkszaehler.url=http://192.168.11.13/middleware.php/data/c3ade9b0-03f3-11e6-a739-xxxxxxxxxxx.json?average
        http:volkszaehler.updateInterval=30000
        Die Ausgabe des Volkszählers lautet:
        Code:
        {"version":"0.3","data":{"tuples":[[1461482412372,311.769,1],[1461482453109,353.487,1],[1461482475180,326.22,1]],"uuid":"c3ade9b0-03f3-11e6-a739-d54da8ec9c73","from":1461482389278,"to":1461482475180,"min":[1461482412372,311.76929072486],"max":[1461482453109,353.48700198836],"average":335.266,"consumption":8,"rows":4}}
        Ich hätte gern den Wert hinter "average" und vor dem Punkt also in diesem Fall "335". Nur leider laufe ich in einen Fehler:
        Code:
        016-04-24 09:21:24.560 [ERROR] [.o.b.http.internal.HttpBinding] - transformation throws exception [transformation=XSLT(volkszaehler.js), response={"version":"0.3","data":{"tuples":[[1461482412372,311.769,1],[1461482453109,353.487,1],[1461482475180,326.22,1]],"uuid":"c3ade9b0-03f3-11e6-a739-d54da8ec9c73","from":1461482389278,"to":1461482475180,"min":[1461482412372,311.76929072486],"max":[1461482453109,353.48700198836],"average":335.266,"consumption":8,"rows":4}}]
        org.openhab.core.transform.TransformationException: transformation throws exception
                at org.openhab.core.transform.internal.service.XsltTransformationService.transform(XsltTransformationService.java:86) ~[na:na]
                at org.openhab.binding.http.internal.HttpBinding.execute(HttpBinding.java:182) ~[na:na]
                at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:156) [org.openhab.core_1.8.2.jar:na]
                at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:173) [org.openhab.core_1.8.2.jar:na]
        Caused by: javax.xml.transform.TransformerConfigurationException: Content ist nicht zulssig in Prolog.
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:1018) ~[na:1.8.0_77]
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:791) ~[na:1.8.0_77]
                at org.openhab.core.transform.internal.service.XsltTransformationService.transform(XsltTransformationService.java:82) ~[na:na]
                ... 3 common frames omitted
        Caused by: org.xml.sax.SAXParseException: Content ist nicht zulssig in Prolog.
                at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1239) ~[na:1.8.0_77]
                at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643) ~[na:1.8.0_77]
                at com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.parse(Parser.java:431) ~[na:1.8.0_77]
                at com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.parse(Parser.java:506) ~[na:1.8.0_77]
                at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:466) ~[na:1.8.0_77]
                at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:568) ~[na:1.8.0_77]
                at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:977) ~[na:1.8.0_77]
                ... 5 common frames omitted
        Vielleicht hättest du einen Tipp für mich ?

        Kommentar


          #5
          Du musst nur noch das Item entsprechend definieren...
          Code:
          Number Volkszaehler "Volkszähler [%.3f]" <inverter> {http="<[volkszaehler:30000:JSONPATH($.data.average)]" }
          (Hab's grad selbst ausprobiert )

          Kommentar

          Lädt...
          X