Hilfe bei API und Json

Hallo zusammen,

für meinen Flüssiggastank bekomme ich per Restful (curl) Abfrage Daten geliefert. Den Inhalt, im speziellen nur 2 Werte benötige ich um den Inhalt des Gastanks auszuwerten. Wer kann mir dabei helfen. Ich habe einen Abfragecode und bekomme ein Ergebnis als Json. Was mache ich mit dem Abfrage (GET) code und wie werte ich das Ergebnis aus. Ich bin in dem Thema absoluter Laie.

Abfragecode:
curl --request GET \
  --url 'https://webapp.r-c-t.biz/api/v1/tankObjects?page=1&include=device' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <token>'

Ergebnis:

HTTP/2 200
server: nginx
date: Tue, 01 Oct 2024 13:20:15 GMT
content-type: application/json
x-powered-by: PHP/8.2.24
cache-control: private, must-revalidate
pragma: no-cache
expires: -1
access-control-allow-origin: *
vary: Authorization
x-powered-by: PleskLin
{"data":[{"id":4699,"active":true,"name":"Gastank","volume":2700,"type":"Propane","unit":"L","code":"1","info":null,"critPercentage":20,"minPercentage":30,"maxPercentage":85,"privateInfo":null,"device":{"id":5499,"sid":"WIFI-901867-01","type":"WIFI","sensor":"Filling","configuration":null,"receivedLastTelemetry":"2024-10-01 09:16:25","battery":"50.00","signal":61,"temperature":"14.00","*value":891*,"rawValue":33,"lastRefill":"2000-01-01 00:00:00","sendFrequency":21600,"batteryStatus":"ok","signalStatus":"ok","sendingStatus":"ok","*percentage":"33.00*"}}],"links":{"first":"https:\/\/webapp.r-c-t.biz\/api\/v1\/tankObjects?page=1","last":"https:\/\/webapp.r-c-t.biz\/api\/v1\/tankObjects?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"https:\/\/webapp.r-c-t.biz\/api\/v1\/tankObjects?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"https:\/\/webapp.r-c-t.biz\/api\/v1\/tankObjects","per_page":20,"to":1,"total":1}}

Wäre super wenn mir jemand helfen könnte.

Viele Grüße Marco

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Das ist eher möglich, wenn Deine Log- und Codezeilen richtig formatiert sind (hab’s mal für Dich gerichtet). :wink:

1 „Gefällt mir“

Die Abfrage stammt aus einer externen Anwendung um diese zu testen :slight_smile:

Für mich stellt sich die Frage wo ich diese GET Abfrage platziere und ausführe. Von der Sensor Firma habe ich auch ein Beispiel erhalten, wie es einer ihrer Kunden in HA ausgeführt hat. Die Einstellungen in der configuration.yaml habe ich bereits eingefügt, und die Datenpunkte werden als Entität erstellt. Diese sind natürlich leer, da ich nicht weiß wohin mit der Abfrage :slight_smile:

Nach langen versuchen habe ich es hinbekommen. Danke

Hilfreich ist es zumeist, wenn man die eigene Lösung kurz vorstellt.

Erfahrungsgemäß ist es relativ unbefriedigend, wenn man ein ähnliches Problem hat und nur die Aussage findet, dass es jemand gelöst hat, aber nicht wie. :wink:

Na klar kein Problem, hier der code für die configuration.yaml. Das Token ist in der secrets.yaml

rest:
  - authentication: basic 
    headers:
      content-type: application/json
      authorization: !secret rest_password
    scan_interval: 3600
    resource: https://webapp.r-c-t.biz/api/v1/tankDevices
    sensor:
      - name: "gastank"
        unique_id: "my_gastank"
        value_template: "OK"
        json_attributes_path: "$.data[0]"
        json_attributes:
          - "percentage"
          - "value"
          - "temperature"
          - "receivedLastTelemetry"
          - "lastRefill"
          - "battery"
template:
  - sensor:
      - name: "Gastank Temperatur"
        unit_of_measurement: "°C"
        device_class: "temperature"
        state_class: "measurement"
        state: "{{ state_attr('sensor.gastank', 'temperature') }}"
  - sensor:
      - name: "Gastank Inhalt"
        unit_of_measurement: "L"
        device_class: "volume"
        state_class: "total"
        state: "{{ state_attr('sensor.gastank', 'value') }}"
  - sensor:
      - name: "Gastank Fuellstand"
        unit_of_measurement: "%"
        device_class: "battery"
        state: "{{ state_attr('sensor.gastank', 'percentage') }}"
  - sensor:
      - name: "Gastank letzte_Messung"
        state: "{{as_timestamp(state_attr('sensor.gastank', 'receivedLastTelemetry')) | timestamp_custom('Datum %Y.%m.%d - Zeit %H:%M:%S') }}"
  - sensor:
      - name: "letzte Füllung"
        state: "{{as_timestamp(state_attr('sensor.gastank', 'lastRefill')) | timestamp_custom('Datum %Y.%m.%d - Zeit %H:%M:%S') }}"
  - sensor:
      - name: "Batterie Gassensor"
        state: "{{ state_attr('sensor.gastank', 'battery') }}"
1 „Gefällt mir“