Ankündigung

Einklappen
Keine Ankündigung bisher.

SolarLog Werte über exec-Binding mit curl auslesen

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

    SolarLog Werte über exec-Binding mit curl auslesen

    Hallo,
    ich versuche verzweifelt die Daten meines SolarLog200 auszulesen und lesbar in ein item zu übertragen. Das Abfragen mit Shell-Befehl
    Code:
     curl -X POST -H "Content-Type: application/json" -d '{\"801\":{\"170\":{\"109\":null}}' 192.168.178.15/getjp
    funktioniert einwandfrei und liefert
    Code:
    {"801":{"170":{"109":7526907}}
    .
    Der gleiche Befehl in den items mit
    Code:
    String yieldTotal "Gesamtertrag alle Wechselrichter [%s W]" { exec="<[curl -l -X POST -H \"Content-Type: application/json\" -d '{\"801\":{\"170\":{\"109\":null}}' 192.168.178.15/getjp:60000:REGEX((.*))]" }
    liefert dann allerdings
    Code:
    [COLOR=#000000][FONT=monospace][SIZE=13px]% Total % Received % Xferd Average ......[/SIZE][/FONT][/COLOR]
    .

    Irgendwie stehe ich hier auf dem Schlauch. Kann mir da einer helfen? Mir würde schon reichen, wenn ich wenigstens die gleiche Ausgabe bekomme bei der ich dann mit REGEX den relevanten Wert herausfiltere.

    Gruß,
    Christian
    Zuletzt geändert von nortecc; 24.01.2016, 11:05.

    #2
    Wenn Du direkt http://192.168.178.15/getjp abfragst, kommt doch vermutlich eine json-Antwort zurück. Die kannst Du dann doch einfach mit JSonPath abfragen, das ist vermutlich eleganter als Dein Ansatz.

    Für das Problem selbst tippe ich darauf, dass Du die Anführungszeichen im hinteren Teil doppelt escapen musst, weil openHAB ja den ersten \ schon entfernt. Alternativ könntest Du curl über ein Script aufrufen, das erspart dann zumindest das Kopfzerbrechen über das mehrfache Escapen...

    Kommentar


      #3
      Das ist leider das Problem. Der Solarlog benötigt zunächst ein JSON-POST mit dem Inhalt {"801":{"170":{"109":null}}} um dann als JSON wieder das Ergebnis zu liefern. Mit den escape-Zeichen teste ich heute abend noch.

      Kommentar


        #4
        Ich habe jetzt eine alternative Lösung. Die direkte Abfrage der Solar-Log-Seite innerhalb des exec-Bindings funktioniert nicht - wahrscheinlich wegen der Kombination "POST senden und Daten über GET empfangen". Habe deshalb die curl-Zeile in ein Shell-Script gepackt, welches ich wiederum über das exec-Binding aufrufe. Jetzt kommen ja im Binding nur noch Daten an, die ich dann wie udo1toni beschreibt über JSonPath auswerte. Das klappt prima.

        Kommentar


          #5
          nortecc
          Ich habe auch einen Solarlog 300 und würde die Daten gerne in edomi rein bekommen. Leider habe ich nicht soviel Ahnung. Könntest du das ganze vielleicht etwas genauer erklären.
          Bekomme oben auch {"801":{"170":{"109":204489}} ausgegeben. Kann aber nicht viel mit den Daten anfangen. Was soll den davon nun mein Verbauch, Erzeugung ... sein.

          Ich möchte vorallem die Momentanwerte Verbauch, Erzeugung und Einspeisung.

          Kommentar


            #6
            Die Bedeutung der Zahlen habe ich aus dem Solar-Log Handbuch.

            Code:
             
             * 100 - LastUpdateTime
             * 101 - W Pac (Gesamtleistung) aller Zähler & WR
             * 102 - W Pdc (Gestamtleistung aller WR)
             * 103 - V Uac Durchschnittliche Spannung UAC der Wechselrichter
             * 104 - V Durchschnittliche Spannung UDC der Wechselrichter
             * 105 - Wh Durchschnittliche Spannung UDC der Wechselrichter
             * 106 - Wh Summierter gestriger Tagesertrag aller Wechselrichter
             * 107 - Wh Summiertes Monatsertrag aller WR
             * 108 - Wh Summiertes Jahresertrag aller WR
             * 109 - Wh Gesamtertrag aller Wechselrichter
             * 110 - W momentaner Gesamtverbrauch PAC aller Verbauchszähler
             * 111 - Wh Summierter Verbrauch aller Verbauchs-zähler
             * 112 - Wh Summierter Verbrauch des gestrigen Tages; alle Verbauchszähler
             * 113 - Wh Summierter Verbrauch des Monats; alle Verbauchszähler
             * 114 - Wh Summierter Verbrauch des Jahres, alle Verbauchszähler
             * 115 - Wh Summierter Gesamtverbrauch, alle Ver-bauchszähler
             * 116 - Wp Installierte Generatorleistung
            In deinem Fall bedeutet 109 der Gesamtertrag aller am Solar-Log angeschlossenen Wechselrichter, also 204489 Wh. In Openhab kann ich zum Beispiel mit einem Script

            Code:
            (JSON.parse(input).data[0].tuples[0][1]);
            jeden Wert entsprechend auslesen, wobei in Deinem Fall die Zuordnung dann

            data[0] = 801
            .tuples[0] = 170
            [0] = 109

            wäre. Wie das in edomi funktioniert kann ich Dir allerdings nicht genau sagen. Du benötigst so etwas wie einen Json-Parser.

            Kommentar


              #7
              ok Danke dir

              Kommentar

              Lädt...
              X