abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 
Beantwortet! Gehe zur Lösung.

API - Struktur Änderung in der Antwort?

Heute Mittag ging auf einmal meine Visualisierung (NodeRed) nicht mehr. Nach einigem Suchen habe ich festgestellt, dass ich bisher das erste Element der Antwort auf die Abfrage nach der DeviceID genommen hatte - da steht allerdings jetzt 'gateway' drin.

Hier mal ein Blick auf das JSON Objekt

JrgWende_0-1706738781819.png

Prinzipiell sollte man sich natürlich nicht auf die Reihenfolge verlassen - aber liebe Leute von #viessmann: wie soll ich die richtige ID herausbekommen?

Intelectual guess: ist immer 0 ?

 

Danke!!!!!

LG Jörg
Haus Baujahr 1995, Heizkörper, VC 250-A AWO-E-AC 251.16
Defekt seit Februar 2022 - Reparatur geplant Oktober 2023
1 AKZEPTIERTE LÖSUNG

Akzeptierte Lösungen

Hallo Jörg,

du hast recht! Warum auch immer hat Viessmann etwas an der Position der DeviceID geändert. Die Abfrage nach der Device ID im bisherigem Flow bzw. die Abfrage https://api.viessmann.com/iot/v1/equipment/installations/{{iid}}/gateways/{{gws}}/devices/ generiert eine Payload bestehend aus einem Array mit vier Elementen — msg.payload.data[0] bis data[3]. Bisher stand die Device ID in msg.payload.data[0].id, seit ca. Anfang 2024 steckt die DeviceID in msg.payload.data[1].id aber auch nicht bei allen Installationen. Das JSON Objekt von dir oben zeigt, dass bei dir die DeviceID an dritter Position steht also ...data[2].id

Bedeutet, man muss das JSON Objekt nach dem Wert deviceType: heating durchforsten. Das geht analog zum Suchen eines spezifischen Features in der Feature Abfrage mit Javascript findIndex und ist hier beschrieben.

Das fällt natürlich nur denjenigen auf, die sich die drei statischen Parameter regelmäßig aus der API ziehen. Hardcoded gibt es das Problem nicht, da die deviceID ja in der Regel "0" ist. Die einfachste Lösung wäre also, hier generell eine 0 für die deviceID anzunehmen.

Mir ist das auch erst aufgefallen, nachdem mich ein Leser meines Blogs darauf hingewiesen hat. Da ich die statischen Parameter nur alle ca. 180 Tage abfrage, war es bei mir noch nicht so weit, dass mein System in den Fehler gelaufen ist. Erst nachdem ich testweise einen Refresh des Refreshtokens und damit auch die statischen Parameter neu geladen hatte, ging nichts mehr.

Ich habe einen entsprechenden Hinweis in mein Blog aufgenommen.

@MichaelHanna: Eigentlich ein NoGo, strukturelle Änderungen an der API "einfach so" durchzuführen. Könnt ihr mal euren Programmieren sagen, dass solche Änderungen, wenn sie denn schon sein müssen, unbedingt im Change Log nachgezogen und vorher angekündigt werden müssen. Sonst tappen eure Fans im Dunkeln.

VG

Chris

 

Lösung in ursprünglichem Beitrag anzeigen

2 ANTWORTEN 2

Hallo Jörg,

du hast recht! Warum auch immer hat Viessmann etwas an der Position der DeviceID geändert. Die Abfrage nach der Device ID im bisherigem Flow bzw. die Abfrage https://api.viessmann.com/iot/v1/equipment/installations/{{iid}}/gateways/{{gws}}/devices/ generiert eine Payload bestehend aus einem Array mit vier Elementen — msg.payload.data[0] bis data[3]. Bisher stand die Device ID in msg.payload.data[0].id, seit ca. Anfang 2024 steckt die DeviceID in msg.payload.data[1].id aber auch nicht bei allen Installationen. Das JSON Objekt von dir oben zeigt, dass bei dir die DeviceID an dritter Position steht also ...data[2].id

Bedeutet, man muss das JSON Objekt nach dem Wert deviceType: heating durchforsten. Das geht analog zum Suchen eines spezifischen Features in der Feature Abfrage mit Javascript findIndex und ist hier beschrieben.

Das fällt natürlich nur denjenigen auf, die sich die drei statischen Parameter regelmäßig aus der API ziehen. Hardcoded gibt es das Problem nicht, da die deviceID ja in der Regel "0" ist. Die einfachste Lösung wäre also, hier generell eine 0 für die deviceID anzunehmen.

Mir ist das auch erst aufgefallen, nachdem mich ein Leser meines Blogs darauf hingewiesen hat. Da ich die statischen Parameter nur alle ca. 180 Tage abfrage, war es bei mir noch nicht so weit, dass mein System in den Fehler gelaufen ist. Erst nachdem ich testweise einen Refresh des Refreshtokens und damit auch die statischen Parameter neu geladen hatte, ging nichts mehr.

Ich habe einen entsprechenden Hinweis in mein Blog aufgenommen.

@MichaelHanna: Eigentlich ein NoGo, strukturelle Änderungen an der API "einfach so" durchzuführen. Könnt ihr mal euren Programmieren sagen, dass solche Änderungen, wenn sie denn schon sein müssen, unbedingt im Change Log nachgezogen und vorher angekündigt werden müssen. Sonst tappen eure Fans im Dunkeln.

VG

Chris

 

Vielen Dank für die Analyse des Node-RED API Interface Problems. Ich bin da auch seit 5 Tagen an der Abfrage der API Parameter zur Node-RED Visualisierung gescheitert. Mein Heizungssystem besteht aus einem Vitodens 200-W BSHG-19, 2.5 – 25 kW Gas-Heizgerät, einem Vitocell 100-W Typ CVUD-A 300l Warmwasserspeicher und zwei Vitosol 200-FM SV2F Solar Flachkollektoren. Die Node-RED Visualisierung benutze ich hauptsächlich zur graphischen Darstellung des Heizverhaltens und des Zusammenspiels zwischen Heizgerät und Solarthermie. Jetzt funktioniert wieder alles. Es wäre schon angebracht hier von Viessmann im Vorfeld informiert zu werden!

MfG

Franz

Top-Lösungsautoren