Auslesen des DAFI Smartfox Reg Extended

Dank dieses Forums habe ich viel über Home Assistant gelernt und möchte jetzt auch etwas zurückgeben.
Ich habe seit Jahren den DAFI Smartfox Reg Extended (Energiemanager) im Einsatz.
Dieses Modell hat noch keinen MODBUS und kann über eine API ausgelesen bzw. beschrieben werden.

Folgende Code verwende ich in der configuration.yaml:


rest:
  - scan_interval: 10
    resource: http://XXX.XXX.XXX.XXX/outputs
    sensor:
      - name: "smartfox_analog_status"
        value_template: "{{value_json.analog.mode}}"
        json_attributes:
          - "analog"

  - scan_interval: 60
    resource: http://XXX.XXX.XXX.XXX/energy
    sensor:
      - name: "smartfox_energy"
        json_attributes:
          - "datetime"
          - "energy_in"
          - "energy_out"
          - "energy_sf"
          - "day_energy_in"
          - "day_energy_out"
          - "day_energy_sf"

  - scan_interval: 5
    resource: http://XXX.XXX.XXX.XXX/power
    sensor:
      - name: "smartfox_power"
        json_attributes:
          - "datetime"
          - "power_io"
          - "power_sf"

template:
  - sensor:
      - name: "power_io"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >
          {{ state_attr('sensor.smartfox_power', 'power_io') }}

      - name: "power_sf"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >
          {{ state_attr('sensor.smartfox_power' , 'power_sf') }}

      - name: "energy_in"
        unit_of_measurement: "Wh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
          {{ state_attr('sensor.smartfox_energy', 'energy_in') }}

      - name: "energy_out"
        unit_of_measurement: "Wh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
          {{ state_attr('sensor.smartfox_energy', 'energy_out') }}

      - name: "energy_sf"
        unit_of_measurement: "Wh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
          {{ state_attr('sensor.smartfox_energy', 'energy_sf') }}

      - name: "day_energy_in"
        unit_of_measurement: "Wh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
          {{ state_attr('sensor.smartfox_energy', 'day_energy_in') }}

      - name: "day_energy_out"
        unit_of_measurement: "Wh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
          {{ state_attr('sensor.smartfox_energy', 'day_energy_out') }}

      - name: "day_energy_sf"
        unit_of_measurement: "Wh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
          {{ state_attr('sensor.smartfox_energy', 'energy_sf') }}

Vielleicht kann ja jemand etwas damit anfangen. :wink:

1 „Gefällt mir“

hallo ffreddll,
ich habe schon gedacht ich kann meinen smartfox S0 meter ( https://smartfox.at/wp-content/uploads/2022/11/Datenblatt-SMARTFOX-S0-Monitoring.pdf ) jetzt in HA einbinden, bin jedoch gescheitert.

hast du ev. einen tip wie ich das schaffe ?
dein code hier ist ja ein anderes smartfox gerät.
PS: bin noch ein rookie aber lernwillig

würde mich sehr freuen

Hallo,
um dieses Gerät einzubinden, müsste die API bekannt sein (wie in meinem Fall z.B. die resource: http://XXX.XXX.XXX.XXX/power). Die Rückgabe ist im oben beschriebenen Fall ein JSON-String, dessen Werte im Abschnitt template: den Sensoren zugewiesen wird.
Im Netz habe ich derzeit zu deinem Gerät allerdings nichts konkretes gefunden. Einen Webserver hat es allerdings integriert und es werden dort auch die Zählerstände angezeigt (siehe https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://smartfox.at/wp-content/uploads/2022/12/Anleitung-Installations-Bedienungsanleitung-SMARTFOX-S0-Monitoring.pdf&ved=2ahUKEwi9o7KL9ZWLAxUp_rsIHexLFGgQFnoECBEQAQ&usg=AOvVaw0PKcWgnEvbGU2JSMf3wAuB Seite 2).

Ich würde den Kundendienst der Firma anschreiben und um die entsprechende Dokumentation bitten. Für meinen SF reg extended habe ich das so vor acht Jahren bekommen.
Eine andere Variante wäre, den Datenverkehr im Netzwerk auszulesen. Da könntest du den Syntax der Anfragen ebenfalls sehen. Ist allerdings etwas kompliziert :wink:
Wenn du die API bekommst und noch Fragen hast - gerne!

:heart: mache ich , vielen dank erstmal

hello ffreddll,
nein der support sagt “gibts nicht”, ich denke die fürchten die konkurenz von home assistant.
trotzdem danke für deine antwort

Das ist schade! Du könntest dir allerdings noch die scrape-Integration anschauen.

Ein Video gibt es hier: https://www.youtube.com/watch?v=9Xz8qxyFr24
So könntest du die Zähler direkt auf der Webseite auslesen und weiterverarbeiten.
Ich habe kurz herumgespielt und festgestellt, dass die direkte Konfiguration in der YAML nicht funktioniert, allerdings über die UI der Integration.

servus ffreddll,
vielen dank für deine antwort, ich habe scrape jetzt konfiguriert,
mit der confiugration.yaml bin ich auch nicht weiter gekommen.
und bei der konfiguration stehe ich jetzt an
das ist das ergebnis dass mir der selector rauswirft.
“body > table > tbody > tr:nth-child(5) > td”
ich bin leider kein webentwickler, tappe daher ziemlich im dunkeln
wie hast du das über die UI hingekriegt ?
danke

Hallo, ich komme da leider auch nicht weiter :thinking:
Vielleicht noch einmal zurück zum Start:
Versuche mal die lokale Adresse mit dem Parameter /all aufzurufen (192.168.1.17/all). Wenn dann sowas zurück kommt, ist die Einbindung zu schaffen.

{"datetime":"2025-03-23T08:49:40","energy_in":26359543,"energy_out":9960193,"energy_sf":16866830,"day_energy_in":92,"day_energy_out":81,"day_energy_sf":0,"power_io":-13,"power_sf":0,"powers":[319,-161,-171],"voltages":[231,232,231],"currents":[1.97,1.07,0.77],"analog":{"percent":0,"mode":0,"output":98,"power":0.000000,"monitoring":"inaktive"},"digital":[{"state":"0","FACremain":0,"runtime":0},{"state":"0","FACremain":0,"runtime":0},{"state":"0","FACremain":0,"runtime":0},{"state":"0","FACremain":0,"runtime":0}]}

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

danke für den tip, aber da kommt. nur ein 404 zurück (file not found)