Vitoconnect - Verbesserte Version

Begonnen von stefanru, 14 Dezember 2024, 23:32:17

Vorheriges Thema - Nächstes Thema

stefanru

Hi,

mir sind beim Starten von FHEM ein paar unschöne Meldungen aufgefallen die durch die letzten Änderungen hinein kamen.
Auch habe ich den neuen Setter gedubgged und mir ein paar mehr Logausgaben eingebaut.

Changelog:
Bug fixes, fixed Releasenotes, changed debugging texts and messages in Set_New

Neue Version wie immer in meinem GIT.
https://github.com/StefanRu1/FHEM/raw/refs/heads/main/FHEM/98_vitoconnect.pm

Gruß,
Stefan

Freibeuter

Hallo,
vielen Dank für deine Arbeit !!
Habe noch ein kleines Problem:
 Ich habe  2 Gateways OPTO 1 und OPTO2.
Jtzt wird das 7571381712920100 Gateway nicht angezeigt, das 7637415024100242 wird komplett angezeigt:

{"cursor":{"next":""},"data":[{"serial":"7637415024100242","version":"2.50.3.0","firmwareUpdateFailureCounter":0,"autoUpdate":false,"createdAt":"2024-02-29T13:53:53.296Z","producedAt":"2024-02-29T13:53:53.290Z","lastStatusChangedAt":"2024-12-30T14:03:07.643Z","aggregatedStatus":"Error","targetRealm":"DC","gatewayType":"VitoconnectOPTO2","installationId":2788865,"registeredAt":"2024-11-27T12:07:39.909Z","description":null,"otaOngoing":false},{"serial":"7571381712920100","version":"2.8.0.0","firmwareUpdateFailureCounter":0,"autoUpdate":false,"createdAt":"2016-12-06T20:12:53.333Z","producedAt":"2016-12-06T12:40:49.000Z","lastStatusChangedAt":"2025-01-01T11:43:13.651Z","aggregatedStatus":"WorksProperly","targetRealm":"DC","gatewayType":"VitoconnectOptolink","installationId":175606,"registeredAt":"2019-05-21T15:44:31.378Z","description":null,"otaOngoing":false}]}

Mir ist auch aufgefallen, wenn ich 7571381712920100 bei vitoconnect_serial eingebe, bekomme ich die Meldung:
device {"viErrorId":"req-c7b2b02333b448b3be4201ce22a44774","statusCode":404,"errorType":"GATEWAY_NOT_FOUND","message":"GATEWAY_NOT_FOUND","extendedPayload":{}}

state Device not found: Optolink prüfen!


stefanru

#32
Hi Freibeuter,

das sieht irgendwie so aus als ob er nur eine Gateway sieht.
Hast du in der APP beide Gateways?
Setze bitte mal vitoconnect_gw_readings = 1 und schicke das Reading "gw" und "number_of_gateways".

Und kannst du mir bitte folgende Files aus dem FHEM Log Verzeichnis schicken zur Analyse?
Die Files bitte erstellen wenn keine Serial eingetragen ist und ein LogResponceOnce am Device ausführen.
gw.json => Hier sollten alle Gateways die er sieht und die erreichbar sind aufgelistet werden.
device_[serial].json => hier werden pro Serial die erreichbaren Devices gelistet.

Gruß,
Stefan

Freibeuter

Hallo, vielen Dan k für dein Hilfe!
unter GW sieht er beide Gateways:
gw:
{"cursor":{"next":""},"data":[{"serial":"7637415024100242","version":"2.50.3.0","firmwareUpdateFailureCounter":0,"autoUpdate":false,"createdAt":"2024-02-29T13:53:53.296Z","producedAt":"2024-02-29T13:53:53.290Z","lastStatusChangedAt":"2024-12-30T14:03:07.643Z","aggregatedStatus":"Error","targetRealm":"DC","gatewayType":"VitoconnectOPTO2","installationId":2788865,"registeredAt":"2024-11-27T12:07:39.909Z","description":null,"otaOngoing":false},{"serial":"7571381712920100","version":"2.8.0.0","firmwareUpdateFailureCounter":0,"autoUpdate":false,"createdAt":"2016-12-06T20:12:53.333Z","producedAt":"2016-12-06T12:40:49.000Z","lastStatusChangedAt":"2025-01-01T11:51:00.083Z","aggregatedStatus":"WorksProperly","targetRealm":"DC","gatewayType":"VitoconnectOptolink","installationId":175606,"registeredAt":"2019-05-21T15:44:31.378Z","description":null,"otaOngoing":false}]}


In der App und im iobroker Adapter sind beide Anlagen erreichbar.
Logfiles kommen gleich
Gruß Peter


Freibeuter

#34
die Logfiles

stefanru

#35
Hi Peter,

ok deine gw.json sieht ganz normal aus und er versucht auch beide zu rufen.

Aber bei dem GW mit 7571381712920100 bekommt er nichts mehr zurück:
$VAR1 = {
          'viErrorId' => 'req-c3871e3d2e244574b0b8e9bcc0199683',
          'extendedPayload' => {},
          'statusCode' => 404,
          'message' => 'GATEWAY_NOT_FOUND',
          'errorType' => 'GATEWAY_NOT_FOUND'
        };

Hmmm, das kenne ich so jetzt auch nicht. Du hast die ganze Anlage in einem Account?

Für den Gateway Call benötigt er die Installation ID, vielleicht hast du hier mehrere? Schicke mir mal noch die installation.json.
Mehrere Installations waren so nicht vorgesehen, müsste ich mir in deinen Daten ansehen ob man da leicht was bauen kann.

Mache bitte auch mal ein logResponseOnce mit Verbose 4 und schicke mir die Logausgabe, vielleicht kann ich da noch etwas erkennen.

Danke und Gruß,
Stefan

Freibeuter

#36
Es handelt sich um 2 Anlagen an 2 Standorten.

Logfile:
2025.01.01 21:17:13 4: Vitoconnect - getCodeCallback went ok
2025.01.01 21:17:13 4: Vitoconnect - code: pmifDU76vdgDzNEm1IrS-ZpiUuDQtxJ1skhjuAH3jeU
2025.01.01 21:17:14 4: Vitoconnect - getAccessTokenCallback went ok
2025.01.01 21:17:14 4: Vitoconnect - Access Token: eyJraWQiOiI0ZWNhM2Vk...
2025.01.01 21:17:14 4: Vitoconnect - getGwCallback went ok
2025.01.01 21:17:14 3: Vitoconnect Datei: log/log/gw.json geschrieben
2025.01.01 21:17:14 4: Vitoconnect - getInstallationCallback went ok
2025.01.01 21:17:14 3: Vitoconnect Datei: log/log/installation.json geschrieben
2025.01.01 21:17:14 4: Vitoconnect - getDeviceCallback went ok
2025.01.01 21:17:14 3: Vitoconnect Datei: log/log/device_7571381712920100.json geschrieben
2025.01.01 21:17:14 4: Vitoconnect - getFeatures went ok
2025.01.01 21:17:14 4: Vitoconnect - getDeviceCallback went ok
2025.01.01 21:17:14 3: Vitoconnect Datei: log/log/device_7637415024100242.json geschrieben
2025.01.01 21:17:14 4: Vitoconnect - getFeatures went ok
2025.01.01 21:17:15 1: Vitoconnect,vitoconnect_getFeatures: Fehler während Gateway features:  :: {
  "viErrorId": "|1cb3a25a-478cc16ba42428b3.",
  "statusCode": 404,
  "errorType": "GATEWAY_NOT_FOUND",
  "message": "Gateway not found",
  "extendedPayload": {}
}
2025.01.01 21:17:15 4: Vitoconnect - statusCode: 404 errorType: GATEWAY_NOT_FOUND message: Gateway not found error:
2025.01.01 21:17:15 1: Vitoconnect - Device not found: Optolink prüfen!
2025.01.01 21:17:15 4: Vitoconnect - enter getResourceOnce
2025.01.01 21:17:15 4: Vitoconnect - access_token: eyJraWQiOiI0ZWNhM2Vk...
2025.01.01 21:17:15 4: Vitoconnect - installation: 2788865
2025.01.01 21:17:15 4: Vitoconnect - gw: 7637415024100242

stefanru

Oh wow, ja das ist es.
2 Standorte, also 2 Installations.
Das war im Modul nie vorgesehen.


Man benötigt isntallation ID + Serial für die Calls.

Als installation ID wird zur Zeit im Modul nur die erste aus installation.json genommen.
Man sollte sie aber passend zur serial aus dem GW.json nehmen, den installations Call kann man sich quasi sparen, oder nur zu debug Zwecken.

Vielen Dank erstmal für die Infos!

Das ist aber leider schon etwas Arbeit.
Die Endgültige Lösung wird ein Umbau bei dem InstallationID zusammen mit der Serial aus dem GW.json geholt wird.
Das ganze ist komplizierter weil jetzt kann man ja pro Installation wieder mehrere Geräte haben.
Da muss ich einiges abändern.

Ich schaue mal ob ich kurzfristig dir etwas bauen kann, dass du isntallationID und serial im Device einfach mitgeben kannst und es die eingelesenen überschreibt.
Damit könnte ich kurzfristig dir ein Lösung bieten.
Wäre das erstmal ausreichend?

Bin bald in Urlaub und den großen Umbau werde ich davor nicht schaffen.

Danke und Gruß,
Stefan





Freibeuter

Ich freue mich über jede Zwischenlösung und es drängt nicht ! :-)

PS, ich lösche hier die Dateien wieder, da sie etwas zu viel persönliche Daten enthalten :-)

stefanru

Klar kein Problem,

eine Version habe ich gerade gemacht, teste noch kurz und lade sie gleich hier hoch, dann kannst du sie testen.

Eine Frage, da du auch ioBroker erwähnst, dir ist klar das die API beschränkte Calls hat (1450 pro Tag).
Wenn du mit mehreren Servicen dort anfragst verbrauchst du dementsprechend mehr API Calls.

Gruß,
Stefan



stefanru

Hi Peter,

siehe den Post oben drüber wegen API Calls.

Hier ist nun eine Version, in der du das Attribut vitoconnect_installationID eingeben kannst.
Das bedeutet, du erstellst zwei Geräte in FHEM, eines für jedes Gerät/Installation.

In jedem Gerät spezifizierst du vitoconnect_serial und vitoconnect_installationID.
Diese müssen natürlich zueinander passen.
Bei mir sah das gut aus und hat funktioniert.

Mit zwei Geräten solltest du das Intervall nicht unter 120 Sekunden setzen.
Wenn du auch noch beide Geräte in IOBroker mit einem Intervall abrufst, passe das Intervall entsprechend an.
Ich denke, 240 Sekunden pro Gerät wären das Maximum, wenn du vier mal abrufst (2xIOBroker, 2xFHEM).
Jeder Geräte Call ist immer ein API Call.

Wenn du es erfolgreich testest, kommt es so ins GIT und später auch ins FHEM-Repo.
Ich kann es auch schon in FHEM einchecken, möchte es aber erst nach meinem Urlaub angehen.

Ausblick und Überlegungen:
Einen Fix, der alles automatisch erkennt, werde ich mir überlegen.
Aber da muss man mal nachdenken, da es sehr unübersichtlich wird, wenn jedes Reading dann _[installationsID]_[serial] hat.
Wenn man davon ausgeht, dass Serials immer eindeutig sind, kann man die installationsID auch wieder weglassen.
Man müsste nur die Daten Serial und installationsID zusammen ablegen und intern verarbeiten.
Naja, wie gesagt, ich denke mir etwas aus.

Gruß,
Stefan



Freibeuter

#41
Hallo Stefan,
ein herzliches Dankeschön, klappt alles 1A.
Danke auch für den Hinweis mit den Zeiten, werde jedoch nur mit FHEM arbeiten, iobroker war nur ein Test, woran das Problem lag.
Dir einen schönen Urlaub !
Peter

stefanru

Hi Peter,

danke fürs testen.

Es gibt wieder eine neue Version im Git mit folgenden Änderungen:

Added attribute installationID, in case you use more than one installation, see https://forum.fhem.de/index.php?msg=1329165",
Small fix for Vitoladens 300C, heating.circuits.0.operating.programs.comfort",

Gruß,
Stefan

satprofi

Frage, gibts ein Reading zum Stromverbrauch einer Wärmepumpe z.b. ?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

stefanru

Ja es gibt readings, aber sie kommen sehr verspätet und manchmal muss man das Kommunikations Modul durchstarten damit überhaupt wieder was kommt. Ist im Viessmann Forum so auch bekannt.
Die Readings beginnen alle mit:
heating.power.consumption
Ich erstelle eines zum loggen und Anzeigen das auch Nachträge sobald wieder Daten kommen. Geht bis zu einer Woche nachträglich.
Diese Readings heißen z.b.
heating.power.consumption.heating.day.asSingleValue

Sorry bin in Urlaub, deshalb nur kurz vom Handy.

Gruß,
Stefan

Be