Wert aus einer JSON abfragen über REST

Hallo Zusammen,
ich versuche aktuell den folgenden Wert abzufragen.
image

Mein Code in .yaml sieht dabei wie folgt aus.

rest:
    scan_interval: 10  # Abfrageintervall auf jede Sekunde gesetzt
    resource: http://wechselrichter/dyn/getDashValues.json
    method: GET
    sensor:
      - name: PV Erzeugung Gesamt - JSON
        unique_id: pv_erzeugung_gesamt_json
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        value_template: "{{ value_json.result['01B8-xxxxx549']['6400_0046C300']['9'][0]['val'] }}" 

Also Template versuche ich dann der Wert so auszulesen

 - name: WR PV Erzeugung Gesamt JSO
         unique_id: wr_pv_erzeugung_gesamt_json
         unit_of_measurement: kWh
         state_class: total_increasing
         device_class: energy
         state: >-
             {{ (float(states('sensor.pv_erzeugung_gesamt_json') | default(0))) }}

Als Entität finde ich nur das und dort steht immer unavaliable.

Kann mir hier evtl. jemand weiterhelfen und einen Tipp geben was ich hier falsch mache?

Vielen Dank für eure Hilfe!!!

Grüße
Chris

Magst du den JSON Code bitte auch einmal Text Posten.

Natürlich Formatiert wie dein YAML Code

Danke :slight_smile:

Auf den ersten blick sieht es richtig aus

Edit:
Ich glaube du musst nur .result aus deinem value_template raus löschen:

"{{ value_json['01B8-xxxxx549']['6400_0046C300']['9'][0]['val'] }}"

LG
Tobi

Ich glaube, das funktioniert so auch nicht.

Eher so: {{ float(states('sensor.pv_erzeugung_gesamt_json'), default=0) }}
Oder kürzer: {{ float(states('sensor.pv_erzeugung_gesamt_json'), 0) }}

@totow
Vielen Dank!
Habe es so getestet geht aber leide rnoch nicht

rest:
    scan_interval: 10  # Abfrageintervall auf jede Sekunde gesetzt
    resource: http://wechselrichter/dyn/getDashValues.json
    method: GET
    sensor:
      - name: PV Erzeugung Gesamt - JSON
        unique_id: pv_erzeugung_gesamt_json
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        value_template: "{{ value_json['01B8-xxxxx549']['6400_0046C300']['9'][0]['val'] }}"  

@BOP
Danke für deine Nachricht aber das sollte so gehen nutze es auch auf die Weise bei anderen Sensoren und da geht es auch genauso.

HIer ist noch der gesamte .json-Inhalt. Hatte dies aufgrund der Länge vorhin als Bild abgekürzt. :wink:

{
    "result": {
        "01B8-xxxxx549": {
            "6800_08822000": {
                "9": [
                    {
                        "validVals": [
                            19048,
                            19049,
                            19050,
                            19051
                        ],
                        "val": [
                            {
                                "tag": 19049
                            }
                        ]
                    }
                ]
            },
            "6800_10821E00": {
                "9": [
                    {
                        "val": "SN: xxxxxxx625"
                    }
                ]
            },
            "6800_08811F00": {
                "9": [
                    {
                        "validVals": [
                            1129,
                            1130
                        ],
                        "val": [
                            {
                                "tag": 1129
                            }
                        ]
                    }
                ]
            },
            "6180_08214800": {
                "9": [
                    {
                        "val": [
                            {
                                "tag": 307
                            }
                        ]
                    }
                ]
            },
            "6180_08414900": {
                "9": [
                    {
                        "val": [
                            {
                                "tag": 886
                            }
                        ]
                    }
                ]
            },
            "6800_088A2900": {
                "9": [
                    {
                        "validVals": [
                            302,
                            9327,
                            9375,
                            9376,
                            9437,
                            19043
                        ],
                        "val": [
                            {
                                "tag": 9327
                            }
                        ]
                    }
                ]
            },
            "6100_40463600": {
                "9": [
                    {
                        "val": 0
                    }
                ]
            },
            "6100_40463700": {
                "9": [
                    {
                        "val": 2
                    }
                ]
            },
            "6100_40263F00": {
                "9": [
                    {
                        "val": 387
                    }
                ]
            },
            "6400_00260100": {
                "9": [
                    {
                        "val": 6094075
                    }
                ]
            },
            "6800_00832A00": {
                "9": [
                    {
                        "low": 6000,
                        "high": 6000,
                        "val": 6000
                    }
                ]
            },
            "6800_008AA200": {
                "9": [
                    {
                        "low": 0,
                        "high": null,
                        "val": 3015974048
                    }
                ]
            },
            "6400_00462500": {
                "9": [
                    {
                        "val": 2708299
                    }
                ]
            },
            "6100_00418000": {
                "9": [
                    {
                        "val": 0
                    }
                ]
            },
            "6180_08495E00": {
                "9": [
                    {
                        "val": [
                            {
                                "tag": 2293
                            }
                        ]
                    }
                ]
            },
            "6100_00295A00": {
                "9": [
                    {
                        "val": 11
                    }
                ]
            },
            "6100_00496900": {
                "9": [
                    {
                        "val": 0
                    }
                ]
            },
            "6100_00496A00": {
                "9": [
                    {
                        "val": 387
                    }
                ]
            },
            "6400_00496700": {
                "9": [
                    {
                        "val": 1018359
                    }
                ]
            },
            "6400_00496800": {
                "9": [
                    {
                        "val": 700403
                    }
                ]
            },
            "6800_08822B00": {
                "9": [
                    {
                        "validVals": [
                            461
                        ],
                        "val": [
                            {
                                "tag": 461
                            }
                        ]
                    }
                ]
            },
            "6100_0046C200": {
                "9": [
                    {
                        "val": 0
                    }
                ]
            },
            "6400_0046C300": {
                "9": [
                    {
                        "val": 6407403
                    }
                ]
            },
            "6800_08A33A00": {
                "9": [
                    {
                        "validVals": [
                            1129,
                            5472,
                            5473
                        ],
                        "val": [
                            {
                                "tag": 1129
                            }
                        ]
                    }
                ]
            },
            "6182_08412B00": {
                "9": [
                    {
                        "val": [
                            {
                                "tag": 235
                            }
                        ]
                    }
                ]
            },
            "6800_00893700": {
                "9": [
                    {
                        "low": 0,
                        "high": null,
                        "val": 10200
                    }
                ]
            },
            "6100_00696E00": {
                "9": [
                    {
                        "val": 100
                    }
                ]
            },
            "6802_08834500": {
                "9": [
                    {
                        "validVals": [
                            303,
                            1438
                        ],
                        "val": [
                            {
                                "tag": 1438
                            }
                        ]
                    }
                ]
            },
            "6180_08412800": {
                "9": [
                    {
                        "val": [
                            {
                                "tag": 569
                            }
                        ]
                    }
                ]
            },
            "6180_08412B00": {
                "9": [
                    {
                        "val": [
                            {
                                "tag": 235
                            }
                        ]
                    }
                ]
            },
            "6400_00462400": {
                "9": [
                    {
                        "val": 3616543
                    }
                ]
            }
        }
    }
}

Wieso muss ich eigtl. nochmal ein extra Template anlegen und kann den Sensor nicht direkt irgendwo sehen?

Vielen Dank für eure Hilfe! :slight_smile:

hmm eigentlich müsste das so funktionieren.

{{ value_json['01B8-xxxxx549']['6400_0046C300']['9'][0]['val'] }}

Mach mal die " vor und nach den {{}} weg.

aufm BIld ist das immer blöd nochmal zu überprüfen.

Das “Template” wählt ja aus was du dann im Sensor siehst, wenn du nicht auswählst was du sehen willst siehst du nichts :rofl:

LG

@totow Danke für die Antwort.
Sry bin erst seit wenifen Wochen bei HA daher noch die Anfängerfrage :wink:

Hab es nun so getestet

value_template: >
{{ value_json['01B8-xxxxx549']['6400_0046C300']['9'][0]['val'] }}

Aber leider kommt immer noch unavailable.

Kann man evtl irgendwelche Zwischenschritte testen?

So könntest du das Vielleicht nochmal testen

{{ value_json['01B8-xxxxx549']['6400_0046C300']['9'][0].val }}

jetzt habe ich aber auch keine Idee mehr jetzt muss ich erstmal ins Bett. :sweat_smile:

Gute Nacht :sleeping_bed:

Guten Morgen :slight_smile:

Habs auch erst jetzt getestet aber leider wieder ohne Erfolg.

Versuche es mal so:

{{ value_json.result["01B8-xxxxx549"]["6400_0046C300"]["9"][0].val}}

Danke für den Hiweis
Funktioniert auf diese Weise aber leider auch cniht

rest:
    scan_interval: 10  # Abfrageintervall auf jede Sekunde gesetzt
    resource: http://wechselrichter/dyn/getDashValues.json
    method: GET
    sensor:
      - name: PV Erzeugung Gesamt - JSON
        unique_id: pv_erzeugung_gesamt_json
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        value_template: >
         {{ value_json.result["01B8-xxxxx549"]["6400_0046C300"]["9"][0].val}}

Ist bei resource die richtige URL drin?
Probiere mal anstelle von wechselrichter die IP.

Ja Adresse ist die richtige auchs chon 100x kontrolliert :smiley:

Habe nun nochmal alles getestet aber leider noch kein Ergebnis

rest:
    scan_interval: 10  # Abfrageintervall auf jede Sekunde gesetzt
    resource: http://192.168.0.72/dyn/getDashValues.json
    method: GET
    sensor:
      - name: PV Erzeugung Gesamt - JSON
        unique_id: pv_erzeugung_gesamt_json
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        value_template: >
          {{ value_json.result["01B8-xxxxx549"]["6400_0046C300"]["9"][0].val}}
      - name: PV Erzeugung Gesamt - JSON - 2
        unique_id: pv_erzeugung_gesamt_json_2
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        value_template: >
          {{ value_json['01B8-xxxxx549']['6400_0046C300']['9'][0].val }}
      - name: PV Erzeugung Gesamt - JSON - 3
        unique_id: pv_erzeugung_gesamt_json_3
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        value_template: >
          {{ value_json['01B8-xxxxx549']['6400_0046C300']['9'][0]['val'] }}
      - name: PV Erzeugung Gesamt - JSON - 4
        unique_id: pv_erzeugung_gesamt_json_4
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        value_template: >
          {{ value_json['01B8-xxxxx549']['6400_0046C300']['9'][0]['val'] }}

Habe nun mal den Testcode hergenommen

rest:
  - resource: "http://date.jsontest.com/"
    sensor:
      - name: "Time"
        value_template: "{{ value_json.time }}"

      - name: "Date"
        value_template: "{{ value_json.date }}"

      - name: "Milliseconds"
        value_template: "{{ value_json.milliseconds_since_epoch }}"

Dabei konnte ich sofort Daten auslesen…
Dann ist mir aufgefallen das ich in der Ressource keine " und kein / hinten gesetzt hatte
Habe da snun angepasst

resource: "http://192.168.0.72/dyn/getDashValues.json/"

Seitdem sehe ich nun immerhin diese 4 Sensoren, welche ich zuvor nie gesehen habe jedoch sind diese nun leider immer noch auf unavailable.

Da ich aber aus der anderen .json Daten ausgelsen bekomme vermute ich es liegt an der Zeile value_template oder?

Oder es liegt evtl doch am Zugriff auf die Ressource
Weil wenn ich auf den test zugreife steht überall “unknown”

Wenn ich auf meine Adresse zugreife steht überall “unavailable”

Aber versteh nicht was ich hier anders machen kann?
image
image

Evtl. weil es unsicher ist?

Hatte jetzt mal mit deinen JSON-Daten und NodeRed einen Testaufbau gemacht und konnte mit dem folgenden Code den Wert als Sensor darstellen. (die 3 Zeilen hinter rest: benötigte ich, da der Zugang zu meinem NodeRed-Server eine Anmeldung erfordert)

rest:
  - authentication: basic
    username: MEIN_USERNAME
    password: MEIN_PASSWORT
    scan_interval: 10  # Abfrageintervall auf 10 Sekunden gesetzt
    resource: https://MEIN_TESTSERVER/
    sensor:
      - name: PV Erzeugung Gesamt - JSON
        value_template:  '{{  value_json.result["01B8-xxxxx549"]["6400_0046C300"]["9"][0].val }}'
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        unique_id: f13e8fad-923d-45de-912c-95a46b870b78

@crypton
Danke dir!
Meinst du also ich sollte das besser mal über Node-Red versuchen?

Nein, ich wollte damit nur sagen, dass das value_template so funktioniert. Der Fehler liegt dann vermutlich woanders. Der Zugriff auf die JSON-Daten deines Wechselrichters ist wirklich ohne Benutzername und Passwort möglich? (Prüfe das nochmal in einem privaten Fenster im Browser, ob dir der JSON Code ohne Passwortabfrage zurückgegeben wird: )
Teste mal genau diesen Code:

rest:
  - resource: http://wechselrichter/dyn/getDashValues.json
    scan_interval: 10  # Abfrageintervall auf 10 Sekunden gesetzt
    sensor:
      - name: PV Erzeugung Gesamt - JSON
        value_template:  '{{  value_json.result["01B8-xxxxx549"]["6400_0046C300"]["9"][0].val }}'
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        unique_id: f13e8fad-923d-45de-912c-95a46b870b78

Um noch mal auf den ersten Post zurückzukommen, das Template ist doch völlig überflüssig.

@z-master
Darum hatte ich ja diese Frage gestellt

Wieso muss ich eigtl. nochmal ein extra Template anlegen und kann den Sensor nicht direkt irgendwo sehen?

Und diese Antwort erhalten.

Das “Template” wählt ja aus was du dann im Sensor siehst, wenn du nicht auswählst was du sehen willst siehst du nichts :rofl:

Hab es nun aber endlich hinbekommen :smiley:

Ursache war weder ressourse noch value_template sondern verfiy_ssl
Damit hat es nun geklappt

verfiy_ssl: false

Vielen Dank aber für eure tolle Hilfe!

Ich hoffe die Antwort bezog sich auf value_template. Alles andere ist nämlich doppelt gemoppelt.