Anfängerfragen REST Anbindung TFA.me

Hallo,

ich habe seit 2 Wochen Home Assistant im Einsatz und möchte jetzt meine TFA.me Geräte (Temperatur/Lufteuchte Sensoren der Fa. Dostmann) einbinden. TFA.me bietet dazu eine REST-Schnittstelle. Eine Integration dafür habe ich nicht gefunden, nur für die alte TFA Technologie über Funk.

Es ist mein erster Versuch mit REST und yaml. Ich bin jetzt soweit gekommen, dass ich in HA folgende Daten angezeigt bekomme:

Der Sensor scheint also erkannt zu werden, ich bringe es aber nicht fertig dem Sensor die Daten zu übergeben. Ich kann auch nicht erkennen, ob ich an der Autorisierung scheitere (die Login-Daten müssten aber stimmen) oder ob es schlicht an der Wertübergabe liegt (für den Test habe ich die “id” genommen, weil die Temp und Feuchtewerte in einem Array sind - das ist dann die nächste Herausforderung).

Meine yaml (Ausschnitt):

sensor:
  - platform: rest
    resource: https://go.tfa.me/api/p/v1/currentMeasurements
    authentication: basic
    name: "Terrasse Temper"
    scan_interval: 300
    headers:
      accept: "application/json"
      x-api-key: "Mein API Key"
      Content-Type: "application/json"
    params:
      deviceID: "A074C0870"
    json_attributes_path: "$.devices[0].measurement"
    json_attributes:
      - "id"
      - "deviceID"
      - "timestamp"
      - "lowBattery"
      - "transmissionCounter"
      - "sensorValues" # [ "value", "valueType", "noConnection", "overflow" ]
      - "created"

  - platform: template
    sensors:
      terrasse_temp:
        unit_of_measurement: "°C"
        device_class: temperature
        icon_template: "mdi:tree-outline"
        friendly_name: "TempTerrasse"
        value_template: "{{ value_json['id'] }}"
        # value_template: "{{ sensor.id }}"

Dieses curl-Kommondo

curl -X ‘POST’
‘``https://go.tfa.me/api/p/v1/currentMeasurements’
-H ‘accept: application/json’
-H ‘x-api-key: Mein API Key’
-H ‘Content-Type: application/json’
-d '[
“A074C0870”
]

in der HA-Konsole liefert mir folgendes Ergebnis:

{“devices”:[{“deviceID”:“A074C0870”,“measurement”:{“id”:“48918057-b09b-4ed7-ac08-cdf81628ef50”,“deviceID”:“A074C0870”,“timestamp”:“2025-09-20T04:24:52Z”,“lowBattery”:true,“transmissionCounter”:15238,“sensorValues”:[{“value”:18.3,“valueType”:0,“noConnection”:false,“overflow”:false},{“value”:53,“valueType”:1,“noConnection”:false,“overflow”:false}],“created”:“2025-09-20T04:24:57.0039348Z”}}],“generated”:“2025-09-20T04:28:08.2861088Z”}#



Hier noch mal in Lesbarer.

{
  "devices": [
    {
      "deviceID": "A074C0870",
      "measurement": {
        "id": "48918057-b09b-4ed7-ac08-cdf81628ef50",
        "deviceID": "A074C0870",
        "timestamp": "2025-09-20T04:24:52Z",
        "lowBattery": true,
        "transmissionCounter": 15238,
        "sensorValues": [
          {
            "value": 18.3,
            "valueType": 0,
            "noConnection": false,
            "overflow": false
          },
          {
            "value": 53,
            "valueType": 1,
            "noConnection": false,
            "overflow": false
          }
        ],
        "created": "2025-09-20T04:24:57.0039348Z"
      }
    }
  ],
  "generated": "2025-09-20T04:28:08.2861088Z"
}

da ist der json path schon fast richtig be HA muss vorne aber value_json sein und nicht $:

value_json.devices[0].measurement

da das nach einem temperature sensor aussieht gehe ich mal davon aus das du das möchtest:

value_json.devices[0].measurement.sensorValues[0].value

für so was helfen Seiten wie diese:

LG

Guten Morgen,

das hat mir erstmal weitergeholfen. Allerdings funktioniert es immer noch nicht.

In der home-assistant.log finde ich folgende Einträge:

2025-09-22 07:05:06.638 INFO (MainThread) [homeassistant.components.sensor] Setting up rest.sensor
2025-09-22 07:05:06.638 DEBUG (MainThread) [homeassistant.components.rest.data] Updating from https://go.tfa.me/api/p/v1/currentMeasurements
2025-09-22 07:05:06.755 DEBUG (MainThread) [homeassistant.components.rest.data] REST response from https://go.tfa.me/api/p/v1/currentMeasurements: status=200, content-type=text/html; charset=utf-8, length=2690
2025-09-22 07:05:06.755 DEBUG (MainThread) [homeassistant.components.rest.data] Data fetched from resource: <!DOCTYPE html>
2025-09-22 07:05:06.755 WARNING (MainThread) [homeassistant.components.rest.util] REST result could not be parsed as JSON
2025-09-22 07:05:06.756 DEBUG (MainThread) [homeassistant.components.rest.util] Erroneous JSON: <!DOCTYPE html>

Meine Interpretation: der Zugriff funktioniert, Daten werden gelesen (status=200 → OK).

Allerdings ist das Ergebnis offenbar kein JSON Format, sondern HTML (letzte Zeile). In der Zeile darüber wird “content-type=text/html“. Damit kann die REST-Schnittstelle nicht umgehen.

Ist das jetzt etwas an dem ich noch etwas tun kann, oder liefert hier die Firma TFA das falsche Format in der Schnittstelle? Was bedeuten würde, dass ich mich an deren Support wenden müsste.

Hier die aktuelle Version meiner configuration.yaml

# Konfiguration für TFA.me Gateway ID-01
sensor:
  - platform: rest
    resource: https://go.tfa.me/api/p/v1/currentMeasurements
    authentication: basic
    name: "TFA.me Integration"
    scan_interval: 300
    headers:
      accept: "application/json"
      x-api-key: "Mein API Key"
      Content-Type: "application/json"
    params:
      deviceID: "A074C0870"
    json_attributes_path: "value_json.devices[0].measurement"
    json_attributes:
      - "id"
      - "deviceID"
      - "timestamp"
      - "lowBattery"
      - "transmissionCounter"
      - "sensorValues": [ "value", "valueType", "noConnection", "overflow" ]
      - "created"

  - platform: template
    sensors:
      terrasse_temp:
        unit_of_measurement: "°C"
        device_class: temperature
        icon_template: "mdi:tree-outline"
        friendly_name: "TFA Terrasse Temp"
        # value_template: "{{ value_json.sensorValues[0].value }}"
        value_template: >-
          "{{ value_json.devices[0].measurement.sensorValues[0].value }}"

Grüß dich,

wir (TFA) arbeiten gerade an einer offiziellen HA Integration für TFA ME mit lokaler API ohne Cloud. Dürfte im Laufe der nächste paar Monate live gehen.

Kleiner Spoiler: es kommen noch paar nette neue Sensoren im Laufe der nächsten Monate/Jahre dazu (Bodenfeuchte, Wasserkontakt usw)

Grüße aus Wertheim :slight_smile:

1 „Gefällt mir“

Hallo,

das klingt hervorragend.

Ganz super wäre es, wenn das mit der Software noch etwas schneller geht :wink:

Meine eigenen Bemühungen habe ich aufgegeben.

Viele Grüße

Jochen

Wir beeilen uns, versprochen :slight_smile:

Gibt’s hier schon Neuigkeiten, wann ihr soweit seid?

Hi Stephan, wir befinden uns seit einigen Monaten schon im Review Prozess. Wir haben das Review zeitlich unterschätzt. Ich hoffe dass wir es bald abschließen können, eine konkrete Abschätzung können hier wir leider nicht geben.

Grüße Felix

1 „Gefällt mir“

Moin Felix,

ich warte auch schon und freu mich auf eure Umsetzung.

LG

Peter

2 „Gefällt mir“

Moin Felix,

Grüße aus Hamburg! Großes Interesse auch von mir. Gerade habe ich die zigbee Temp-/Feuchte- Sensoren rausgeworfen und meine neue tfa.me Wetterstation als Leitmesssystem installiert. Das Konzept ist überzeugend. Läuft die HA Integration zum nächsten Herbst? Derweil werde ich mich in Jochen’s Arbeit einlesen und versuchen meiner Basis einen Wert zu entlocken…

1 „Gefällt mir“

Hallo,

ich glaube, das Einlesen kannst du dir sparen.

Ich habe an dem Punkt aufgegeben, als die von TFA übermittelte Nachricht zu lang war. Die REST Schnittstelle hat eine begrenzte Nachrichtenlänge.

Viele Grüße
Jochen

Moin Jochen und danke für die schnelle Rückmeldung. Nun, die Temperaturen jeweils von Basis und Außensensor hatte ich gestern Abend bereits als funktionierende Sensoren auf dem HA. Ich hatte den Eindruck, das geht noch was…

Viele Grüße, Torsten

Grüß dich,

wir bleiben dran - bis Herbst sollten wir auf alle Fälle durch sein :smiley:
Aber es ist wirklich zäh, sorry dass ich noch keine besseren Neuigkeiten habe!

Grüße Felix

PS: aktuell in der Pipeline ist ein Bodenfeuchtesensor - mit Solar Panel usw - der wird richtig gut :slight_smile:

1 „Gefällt mir“

Aus meiner Sicht ist das das gewünschte Ergebnis.

rest:
  - resource: "https://go.tfa.me/api/p/v1/currentMeasurements"
    method: POST
    headers:
      accept: "application/json"
      x-api-key: "mein API-key"
      Content-Type: "application/json"
    payload: '["Senosr ID"]'
    scan_interval: 300
    sensor:
      - name: "TFA Rohdaten Basis"
        value_template: "{{ value_json.generated }}"
        json_attributes_path: "$.devices[0].measurement"
        json_attributes:
          - sensorValues
          - lowBattery
          - timestamp
template:
  - sensor:
      - name: "TFA Temperatur Basis"
        unit_of_measurement: "°C"
        state: >
          {{ state_attr('sensor.tfa_rohdaten_basis', 'sensorValues')[0].value | round(1) }}
      - name: "TFA Luftfeuchtigkeit Basis"
        unit_of_measurement: "%"
        state: >
          {{ state_attr('sensor.tfa_rohdaten_basis', 'sensorValues')[1].value }}         
      - name: "TFA Batterie Basis"
        state: >
          {{ not state_attr('sensor.tfa_rohdaten_basis', 'lowBattery') }}

Kann sein, dass das noch bugged. Aber ich glaube, für meine Zwecke reicht das.
Freue mich trotzdem schon auf die Integration. :slight_smile:
Viele Grüße, Torsten

Viel spannender ist jetzt die Frage, wie wir auf die TFA Basissation kommen und einen anderen Web Wetterdienst hinterlegen. Z.B. den, den auch HA on default verwendet… :wink:

Das wird schwierig :smiley: Bist du mit Wetter.com nicht zufrieden?

Danke, ich bin damit gut zufrieden und habe nicht genügend Kapazität bzw. andere Prioritäten.

Schwierig hört sich aber spannend an! Eher so wie nicht öffentlich.
Schön wäre auf dem Display der Station echte Wochentage für die Prognose anzuzeigen! Das wäre ein echtes Highlight! Übrigens habe ich auch den Außensender noch integriert und habe 4 weitere im Zulauf. Leider bisher noch mit einem zweiten RestAPI call. Bzw. POST. Wird noch optimiert. Das war wahrscheinlich der Haken, um den es hier im Thread ging. Erst wenn aus dem GET ein POST wird funktioniert die Schnittstelle mit der korrekten Bandbreite. Den Auftakt macht die Sensor ID. Oder so ähnlich.
Viele Grüße, Torsten