Daten aus HTTP Abfrage auswerten

Hallo,

ich kann über HTTP meinen Batteriespeicher (Hycube) auslesen.
Ich möchte einige Daten hierfür für eine Automation verwenden.
Habe leider keine Ahnung wie ich das machen könnte.
Hat jemand eine Idee?
Aufruf: http://192.168.0.105/data_row/
Rückgabe aus Aufruf:

{
    "BatteryCapacity": 78,
    "BatteryPower": 176,
    "EPS_current": 0.1,
    "EPS_enable_r": 1,
    "EPS_overloadState": 0,
    "EPS_power": 0,
    "EPS_voltage": 238.3,
    "ExternalPower": -353.6,
    "GridPower": -35,
    "HomePower": 466.6,
    "bat_schedule_Active": 0,
    "enableAutoUpdate": 1,
    "heatManualActivation": 0,
    "heatManualLevel": 1000,
    "heatPumpManualActivation": 0,
    "hyc_relay1_rw": 0,
    "hyc_relay2_rw": 0,
    "hyc_relay3_rw": 0,
    "hyc_relay4_rw": 0,
    "hyc_relay5_rw": 0,
    "manualChargingActivation": 0,
    "manualChargingSoc": 100,
    "solar1_I": 0.7467177242888402,
    "solar1_p": 309,
    "solar1_v": 365.6,
    "solar2_I": 0.5915875169606513,
    "solar2_p": 218,
    "solar2_v": 368.5,
    "solar3_I": 0,
    "solar3_p": 0,
    "solar3_v": 0,
    "solar4_I": 0,
    "solar4_p": 0,
    "solar4_v": 0,
    "solarPower": 527,
    "solar_summe2_I": 0,
    "solar_summe_I": 1.3383052412494916,
    "temp_bat": 0,
    "updateControlValue": 0,
    "updateStatus": 0,
    "wallbox1_actualEnergy": 0,
    "wallbox1_blockCharging": 0,
    "wallbox1_boosterState": 0,
    "wallbox1_chargingMode": 2,
    "wallbox1_connection": 0,
    "wallbox1_controlCurrent": 0,
    "wallbox1_month_kWh": 0,
    "wallbox1_power": 0,
    "wallbox1_startTime": 0,
    "wallbox1_state": 0,
    "wallbox1_surplus": 0,
    "wallbox1_today_kWh": 0,
    "wallbox1_total_kWh": 0,
    "wallbox2_actualEnergy": 0,
    "wallbox2_blockCharging": 0,
    "wallbox2_boosterState": 0,
    "wallbox2_chargingMode": 2,
    "wallbox2_connection": 0,
    "wallbox2_controlCurrent": 0,
    "wallbox2_month_kWh": 0,
    "wallbox2_power": 0,
    "wallbox2_startTime": 0,
    "wallbox2_state": 0,
    "wallbox2_surplus": 0,
    "wallbox2_today_kWh": 0,
    "wallbox2_total_kWh": 0,
    "wallbox3_actualEnergy": 0,
    "wallbox3_blockCharging": 0,
    "wallbox3_boosterState": 0,
    "wallbox3_chargingMode": 0,
    "wallbox3_connection": 0,
    "wallbox3_controlCurrent": 0,
    "wallbox3_month_kWh": 0,
    "wallbox3_power": 0,
    "wallbox3_startTime": 0,
    "wallbox3_state": 0,
    "wallbox3_surplus": 0,
    "wallbox3_today_kWh": 0,
    "wallbox3_total_kWh": 0
}

Gruß Georg

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

Ich würde in Richtung

gehen. Am Besten wenn Du es mit dem Resful Sensor hinbekommst, denn dann hast Du die Werte als Attribute und diese kannst Du in Automationen verwenden.

Ersteres benutze ich um das Logfile einer Kamera auszulesen, zweiteres ging irgendwie nicht aber ich habe mich über die Attribute eines MQTT Sensors geholfen. Hier mein Beispiel, Per RESTful Command Logfile einer INSTAR Kamera auslesen und darstellen

Bitte veröffentliche am Ende Deine Lösung zum Dazulernen.

1 „Gefällt mir“

Ich würde das auch über einen Rest Sensor erstellen. Als Beispiel:

sensor:
  - platform: rest
    name: Battery Capacity
    resource: http://192.168.0.105/data_row/
    value_template: "{{ value_json.BatteryCapacity }}"
    scan_interval: 60

Danke für die schnelle Antwort. Ich habe deinen Code in die Configuration.yaml eingetragen. Er sagt ‘value_json’ is undefined’. Was muss ich machen ?
Gruß Georg

Antwortet die API auch ohne Authentifizierung? Oder muss da Nutzer+Passwort angeben werden?

geht ohne Authentifizierung

Hat funktioniert. Nochmals vielen Dank

  - platform: rest
    name: Battery Capacity
    resource: http://192.168.0.105/data_row/
    value_template: "{{ value_json.BatteryCapacity }}"
    scan_interval: 60

Läuft

wie kann ich mehrere Werte gleichzeitig auslesen.
Muss ich da immer einen neuen rest Eintrag machen ?
Gruß Georg

:crayon:by HarryP:
. Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
. Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Habe ich bei mir gleich mal eingebaut… :ok_hand:

Du meinst open-meteo? Ich muss sagen, die Seite gefällt mir ausnehmend gut. Du kannst alles Mögliche konfigurieren. API Konfigurator

Hallo! Ich habe mich extra registriert, um mich zu bedanken.

Ich besitze auch eine Komplettanlage von Hycube und habe schon oft in Mannheim wegen der API nachgefragt, aber sie halten alles so gut wie möglich geschlossen.

Ich habe lange nach Optionen gesucht, und das funktioniert hervorragend! Ich habe mir gleich ein paar mehr Sensoren gezogen aus den Daten und eingerichtet.

Schreib mir deine Telefonnummer an Hirschmann-altdorf@kabelmail.de

Dann können wir mal das Thema besprechen. Habe jetzt noch weitere Ergebnisse

Gruß Georg

Im Sinne des Forumsgedanken sollten Ihr Euer Ergebnis für andere veröffentlichen, nicht das ich es gerade benötige aber aus Prinzip für andere.

1 „Gefällt mir“

Klar ich habe zb. die daten abgegriffen und mir dann in die configuration.yaml ein paar helfer usw angelegt direkt eine abfrage im 10 sekunden takt da Data_row Lokal ist muss man auch nicht aufpassen das man gesperrt wird wegen Spam.

so sieht das bei mir aus und funktioniert auch super in Verbindung mit dem Energie Dashboard oder einer Live anzeige.

Edit: gerade gesehen ich habe noch ein paar andere Sensoren mit Kopiert sry aber der Grundsatz sollte klar sein.

# Block 1: RESTful Sensor - Holt die Rohdaten vom Hycube-Wechselrichter
# -------------------------------------------------------------------
rest:
  - resource: http://192.168.10.29/data_row/
    scan_interval: 10
    sensor:
      - name: "Hycube PV Erzeugung"
        unique_id: hycube_pv_erzeugung
        value_template: "{{ value_json.solarPower }}"
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement

      - name: "Hycube Netzleistung"
        unique_id: hycube_netzleistung
        value_template: "{{ value_json.GridPower }}"
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement

      - name: "Hycube Batterie Ladezustand"
        unique_id: hycube_batterie_ladezustand
        value_template: "{{ value_json.BatteryCapacity }}"
        device_class: battery
        unit_of_measurement: "%"
        state_class: measurement

      - name: "Hycube Batterie Leistung"
        unique_id: hycube_batterie_leistung
        value_template: "{{ value_json.BatteryPower }}"
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement

# -------------------------------------------------------------------
# Block 2: Template Sensoren - Bereiten die Rohdaten auf
# -------------------------------------------------------------------
template:
  - sensor:
      # --- Ihre bestehenden Template-Sensoren ---
      - name: "pflanzen_alarm"
        unique_id: pflanzen_alarm
        state: >
          {% if states('plant.nic_baum') == 'problem' or states('plant.neo_baum') == 'problem' %}
            problem
          {% else %}
            ok
          {% endif %}

      - name: "Speedtest Download Letzter Wert"
        unique_id: speedtest_download_last_value
        state: >
          {% if states('sensor.speedtest_download') | is_number %}
            {{ states('sensor.speedtest_download') }}
          {% else %}
            {{ states('sensor.speedtest_download_last_value') }}
          {% endif %}
        unit_of_measurement: "Mbit/s"
        state_class: measurement
        device_class: data_rate

      - name: "Speedtest Upload Letzter Wert"
        unique_id: speedtest_upload_last_value
        state: >
          {% if states('sensor.speedtest_upload') | is_number %}
            {{ states('sensor.speedtest_upload') }}
          {% else %}
            {{ states('sensor.speedtest_upload_last_value') }}
          {% endif %}
        unit_of_measurement: "Mbit/s"
        state_class: measurement
        device_class: data_rate

      - name: "Speedtest Ping Letzter Wert"
        unique_id: speedtest_ping_last_value
        state: >
          {% if states('sensor.speedtest_ping') | is_number %}
            {{ states('sensor.speedtest_ping') }}
          {% else %}
            {{ states('sensor.speedtest_ping_last_value') }}
          {% endif %}
        unit_of_measurement: "ms"
        state_class: measurement
        device_class: duration

      # --- Der korrekte, berechnete Hausverbrauch ---
      - name: "Hycube Hausverbrauch Berechnet"
        unique_id: hycube_hausverbrauch_berechnet
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement
        state: >
          {% set pv_power = states('sensor.hycube_pv_erzeugung') | float(0) %}
          {% set battery_power = states('sensor.hycube_batterie_leistung') | float(0) %}
          {% set grid_power = states('sensor.hycube_netzleistung') | float(0) %}
          {{ (pv_power + battery_power + grid_power) | round(2) }}

      # --- Sensoren zum Aufteilen von Netzleistung (mit Toleranzbereich) ---
      - name: "Hycube Netzbezug Leistung"
        unique_id: hycube_netzbezug_leistung
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement
        state: >
          {% set grid_power = states('sensor.hycube_netzleistung') | float(0) %}
          {% if grid_power > 20 %}
            {{ grid_power }}
          {% else %}
            0
          {% endif %}

      - name: "Hycube Netzeinspeisung Leistung"
        unique_id: hycube_netzeinspeisung_leistung
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement
        state: >
          {% set grid_power = states('sensor.hycube_netzleistung') | float(0) %}
          {% if grid_power < -20 %}
            {{ grid_power * -1 }}
          {% else %}
            0
          {% endif %}

      # --- Sensoren zum Aufteilen von Batterieleistung (mit Toleranzbereich) ---
      - name: "Hycube Batterie Entladung Leistung"
        unique_id: hycube_batterie_entladung_leistung
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement
        state: >
          {% set battery_power = states('sensor.hycube_batterie_leistung') | float(0) %}
          {% if battery_power > 20 %}
            {{ battery_power }}
          {% else %}
            0
          {% endif %}

      - name: "Hycube Batterie Ladung Leistung"
        unique_id: hycube_batterie_ladung_leistung
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement
        state: >
          {% set battery_power = states('sensor.hycube_batterie_leistung') | float(0) %}
          {% if battery_power < -20 %}
            {{ battery_power * -1 }}
          {% else %}
            0
          {% endif %}

# -------------------------------------------------------------------
# Block 3: Energie-Helfer für das Energie-Dashboard (NEU!)
# -------------------------------------------------------------------
sensor:
  # ===== ENERGIE-INTEGRATION SENSOREN (für Energie-Dashboard) =====
  - platform: integration
    source: sensor.hycube_pv_erzeugung
    name: "Hycube PV Erzeugung Energie"
    unique_id: hycube_pv_erzeugung_energie
    unit_prefix: k
    round: 2
    method: trapezoidal

  - platform: integration
    source: sensor.hycube_batterie_entladung_leistung
    name: "Hycube Batterie Entladung Energie"
    unique_id: hycube_batterie_entladung_energie
    unit_prefix: k
    round: 2
    method: trapezoidal

  - platform: integration
    source: sensor.hycube_batterie_ladung_leistung
    name: "Hycube Batterie Ladung Energie"
    unique_id: hycube_batterie_ladung_energie
    unit_prefix: k
    round: 2
    method: trapezoidal

  - platform: integration
    source: sensor.hycube_hausverbrauch_berechnet
    name: "Hycube Hausverbrauch Energie"
    unique_id: hycube_hausverbrauch_energie
    unit_prefix: k
    round: 2
    method: trapezoidal

1 „Gefällt mir“

So ist es perfekt.

Da bekommt man mit einem Aufruf alle Daten

# REST Sensor 
  - platform: rest
    resource_template: http://192.168.0.105/db_today/?day={{ now().date() }}
    name: Hycube Data Tag
    value_template: "{{ value_json.total }}"
    json_attributes: 
      - total
      - mtr2
      - solar1
      - solar2
      - Batterieaufladung
      - Direktverbrauch
      - Einspeisung
      - Netzbezug
      - batterieentladung
      - hausverbrauch
    scan_interval: 60
    
  - platform: rest
    name: Hycube Data
    resource: http://192.168.0.105/data_row/
    value_template: "{{ value_json.BatteryCapacity }}"
    json_attributes:
      - BatteryCapacity
      - BatteryPower
      - ExternalPower
      - GridPower
      - HomePower
      - solar1_p
      - solar2_p
      - solarPower
    scan_interval: 10
    
  - platform: rest
    resource: http://192.168.0.105/db_year
    name: Hycube Data Year
    value_template: "{{ value_json.Batterieaufladung }}" 
    json_attributes:
      - Batterieaufladung
      - Direktverbrauch
      - Einspeisung
      - Jahr
      - Netzbezug
      - batterieentladung
      - eigenerzeugung
      - eigenverbrauch
      - verbrauch    
    scan_interval: 120

#   - platform: rest
#     resource: http://192.168.0.105/db_year/?year=2025
#     name: Hycube Jahreswerte
#     value_template: "{{ value_json.Direktverbrauch }}" 
#     json_attributes:
#       - Batterieaufladung
#       - Direktverbrauch
#       - Einspeisung
#       - Netzbezug
#       - batterieentladung
#       - eigenerzeugung
#       - eigenverbrauch
#       - verbrauch    
#     scan_interval: 60
    

1 „Gefällt mir“