Neues Modul: vitoconnect

Begonnen von andreas13, 24 November 2018, 17:42:33

Vorheriges Thema - Nächstes Thema

masl

https://github.com/openv/vcontrold
Habe mal versucht das hier zu verstehen. Aber so wie ich das jetzt gelesen habe ist das mit den Temperatursetzen nicht so einfach wie das Vitoconnect Modul


mcp

Zitat von: mcp am 03 November 2022, 21:54:54
Ja, fing bei mir gestern an, heute permanent Login Fehler und seit 16:30 Uhr geht nichts mehr :-(

Die ViCare App funktioniert hingegen normal, scheint wohl ein 3rd Party API Access Problem zu sein.

attr Viessmann_Vitoconnect vitoconnect_gw_readings 1


dann sieht man im gw Reading was das Problem war: API Limit erreicht - aaaaaha :)

Dann das DOIF dafür erweitert so dass der Intervall auf 1 Tag hochgesetzt wird (wenn das Limit erreicht ist geht bis 0 Uhr nichts mehr), um kurz nach 0 Uhr schauen ob das gw Reading den Text RATE_LIMIT_EXCEEDED enthält, wenn ja den Intervall wieder auf 65 Sekunden runtersetzen und set update und alles gut.

Das Limit bzw. das Überschreiten dessen wird beim Tageswechsel wieder resettet.
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp

Zitat von: masl am 04 November 2022, 06:23:12
https://github.com/openv/vcontrold
Habe mal versucht das hier zu verstehen. Aber so wie ich das jetzt gelesen habe ist das mit den Temperatursetzen nicht so einfach wie das Vitoconnect Modul
Ja, so bequem wie mit dem Modul hier wird's wohl nicht werden ;-/

Ich hab da vor Corona mit nem Freund zusammen was gebaut, allerdings ohne vcontrold sondern mit FHEM Board-Mitteln. Hatten bisher leider nur keine Zeit es fertig zu machen, war etwas komplizierter :) ... und ob ich das überhaupt noch weitermachen werde steht in den Sternen, da die Gas-Heizung eh bald raus soll (Gas kann ja keiner mehr bezahlen)
Ich kann das ja mal raussuchen und Dir zur Verfügung stellen, evtl. kommst du damit klar bzw. wäre es ein Anfang.
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

andies

Zitat von: masl am 04 November 2022, 06:23:12
https://github.com/openv/vcontrold
Habe mal versucht das hier zu verstehen. Aber so wie ich das jetzt gelesen habe ist das mit den Temperatursetzen nicht so einfach wie das Vitoconnect Modul
Ich nutze vcontrold und schalte damit gerade sowohl Warmwasser- und Heizungstemperatur.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

plin

Hallo Andreas,

ich sehe im Stundentakt

Received response: {"viErrorId":"req-ba319e1a3ad44735aca196b42dad1851","statusCode":401,"errorType":"UNAUTHORIZED","mes...
statusCode: 401 errorType: UNAUTHORIZED message: Token provided in request is expired or invalid. error: EXPIRED TOKEN


gefolgt von einem

getRefreshCallback went ok
Received response: {"access_token":<snip><snip><snip><snip>,"token_type":"Bearer","expires_in":3600}


Das neue Token hält wohl nur 1 Stunde ("expires_in":3600). Technisch funktioniert's, führt aber zu vielen Fehlermeldungen.

Gibt es eine Möglichkeit den Token-Refresh forciert vor Ablauf der 3600 Sekunden durchzuführen statt auf die Fehlermeldung zu warten?

VG Peter

FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

Uwe S.

ZitatstatusCode: 401 errorType: UNAUTHORIZED message: Token provided in request is expired or invalid. error: EXPIRED TOKEN

Hallo zusammen,

auch ich habe dieses leidige Problem.
Ich habe es vorerst mal mit einem UserReading, einem notify und einem at gelöst.

Folgender Ansatz:
In einem UserReading sichere ich mir die ersten 12 Stellen des state, also im Normalfall "last update:".
Auf das UserReading habe ich ein notify gesetzt, das bei einer Änderung dann prüft, welchen Inhalte state hat. Ist es "statusCode: 401" setzte ich ein update auf mein vitoconnect.
Zusätzlich prüfe ich alle 10 Minuten über ein at, ob das UserReading abweichend von "last update:" ist und setzt ggf. auch dann ein update.
Den Umweg über das UserReading (anstatt direkt ein notify auf den state zu setzen) gehe ich, da der state sich mit jeder API-Anfrage ändert (Datum und Uhrzeit, wenn's denn läuft) und ich dadurch dann sehr häufig das notify auslösen würde.

Das funktioniert bei mir soweit. Ich versende, quasi zu debug-Zwecken, eine Telegramm-Nachricht. Darin sehe ich, dass das Update nach statusCode: 401 bisher immer erfolgreich war.

Nun noch ein bisschen von meinen Code dazu:

- mein vitoconnect-device heisst vitoconnect (originell, oder?!)
- mein TelegramBot heisst SmartMessenger

Das UserReading:

Usr_Aktiv_Status:.* {(sprintf("%.12s", ReadingsVal("vitoconnect","state","")))}

dazu muss state und Usr_Aktiv_Status im event-on-change-reading aufgenommen sein.

Das zugehörige Notify:

defmod notify_vitoconnect_stoerung notify vitoconnect:Usr_Aktiv_Status.* {AktionBeiVitoconnectStatusChanged()}


damit wird eine Routine aus meiner 99_myUtils aufgerufen:

#- Aktionen bei Status-Änderung vitoconnect
sub AktionBeiVitoconnectStatusChanged()
{
fhem('set SmartMessenger message vitoconnect Status: [vitoconnect:state]');

if( ReadingsVal('vitoconnect','Usr_Aktiv_Status','') ne "last updated:" )
{
if( ReadingsVal('vitoconnect','state','') eq "statusCode: 401.*" )
{
#--           Vebindung zu viessmann neu aufbauen
                fhem ("set vitoconnect update");
}
}
}


und noch die Überwachung über das at:

defmod ZUhrTGL_CheckVitoconnect at +*00:10 { fhem ("set vitoconnect update") if( ReadingsVal('vitoconnect','Usr_Aktiv_Status','') ne "last update:" )}


So, ich hoffe, alles nötige zusammengeschrieben zu haben.


Vielleicht hilft es dem einen oder anderen...

Gruß
Uwe


andreas13

Hallo Uwe,
warum ist das ein ,,leidiges Problem"? Es funktioniert genau so wie es soll. Wenn der Token expired, wird es automatisch refreshed.  Dein ,,update" ist überflüssig. Wenn Dich die ,,Fehlermeldungen" stören, setz den Loglevel runter.
Viele Grüße
Andreas

Zitat von: Uwe S. am 06 November 2022, 14:32:22
Hallo zusammen,

auch ich habe dieses leidige Problem.
Ich habe es vorerst mal mit einem UserReading, einem notify und einem at gelöst.

Folgender Ansatz:
In einem UserReading sichere ich mir die ersten 12 Stellen des state, also im Normalfall "last update:".
Auf das UserReading habe ich ein notify gesetzt, das bei einer Änderung dann prüft, welchen Inhalte state hat. Ist es "statusCode: 401" setzte ich ein update auf mein vitoconnect.
Zusätzlich prüfe ich alle 10 Minuten über ein at, ob das UserReading abweichend von "last update:" ist und setzt ggf. auch dann ein update.
Den Umweg über das UserReading (anstatt direkt ein notify auf den state zu setzen) gehe ich, da der state sich mit jeder API-Anfrage ändert (Datum und Uhrzeit, wenn's denn läuft) und ich dadurch dann sehr häufig das notify auslösen würde.

Das funktioniert bei mir soweit. Ich versende, quasi zu debug-Zwecken, eine Telegramm-Nachricht. Darin sehe ich, dass das Update nach statusCode: 401 bisher immer erfolgreich war.

Nun noch ein bisschen von meinen Code dazu:

- mein vitoconnect-device heisst vitoconnect (originell, oder?!)
- mein TelegramBot heisst SmartMessenger

Das UserReading:

Usr_Aktiv_Status:.* {(sprintf("%.12s", ReadingsVal("vitoconnect","state","")))}

dazu muss state und Usr_Aktiv_Status im event-on-change-reading aufgenommen sein.

Das zugehörige Notify:

defmod notify_vitoconnect_stoerung notify vitoconnect:Usr_Aktiv_Status.* {AktionBeiVitoconnectStatusChanged()}


damit wird eine Routine aus meiner 99_myUtils aufgerufen:

#- Aktionen bei Status-Änderung vitoconnect
sub AktionBeiVitoconnectStatusChanged()
{
fhem('set SmartMessenger message vitoconnect Status: [vitoconnect:state]');

if( ReadingsVal('vitoconnect','Usr_Aktiv_Status','') ne "last updated:" )
{
if( ReadingsVal('vitoconnect','state','') eq "statusCode: 401.*" )
{
#--           Vebindung zu viessmann neu aufbauen
                fhem ("set vitoconnect update");
}
}
}


und noch die Überwachung über das at:

defmod ZUhrTGL_CheckVitoconnect at +*00:10 { fhem ("set vitoconnect update") if( ReadingsVal('vitoconnect','Usr_Aktiv_Status','') ne "last update:" )}


So, ich hoffe, alles nötige zusammengeschrieben zu haben.


Vielleicht hilft es dem einen oder anderen...

Gruß
Uwe
Maintainer des Vitoconnect Moduls
In Betrieb: FritzBox 7590, Homematic
piko Wechelrichter (HTTPMOD). Sonos ....
noch: IT

andreas13

Hallo Plin,
Works as designed. Wenn dich die vielen ,,Fehlermeldungen" stören, setz den Loglevel herunter.
Viele Grüße
Andreas

Zitat von: plin am 05 November 2022, 16:30:14
Hallo Andreas,

ich sehe im Stundentakt

Received response: {"viErrorId":"req-ba319e1a3ad44735aca196b42dad1851","statusCode":401,"errorType":"UNAUTHORIZED","mes...
statusCode: 401 errorType: UNAUTHORIZED message: Token provided in request is expired or invalid. error: EXPIRED TOKEN


gefolgt von einem

getRefreshCallback went ok
Received response: {"access_token":<snip><snip><snip><snip>,"token_type":"Bearer","expires_in":3600}


Das neue Token hält wohl nur 1 Stunde ("expires_in":3600). Technisch funktioniert's, führt aber zu vielen Fehlermeldungen.

Gibt es eine Möglichkeit den Token-Refresh forciert vor Ablauf der 3600 Sekunden durchzuführen statt auf die Fehlermeldung zu warten?

VG Peter
Maintainer des Vitoconnect Moduls
In Betrieb: FritzBox 7590, Homematic
piko Wechelrichter (HTTPMOD). Sonos ....
noch: IT

neworder

Hallo Andreas,

leider funktioniert der auto refresh seit Anfang November nicht oder nicht zuverlässig. Davor (bei mir seit Mai) keine Probleme. Ich tippe aber eher auf ein Problem bei den Viessmännern, manueller refresh scheitert auch ab und an.

Grüße und Danke fürs Modul!

mcp

Moin neworder,

Zitat von: neworder am 07 November 2022, 08:52:50
leider funktioniert der auto refresh seit Anfang November nicht oder nicht zuverlässig. Davor (bei mir seit Mai) keine Probleme. Ich tippe aber eher auf ein Problem bei den Viessmännern, manueller refresh scheitert auch ab und an.
War bei mir auch so, aber das lag eher an Viessmann, die haben an ihrer Landschaft geschraubt. Seit gestern ist, zumindest bei mir, wieder Ruhe im Karton und alles wie vor November :D
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

plin

Zitat von: andreas13 am 07 November 2022, 07:38:01
Hallo Plin,
Works as designed. Wenn dich die vielen ,,Fehlermeldungen" stören, setz den Loglevel herunter.
Viele Grüße
Andreas

Alles ok wenn's so sein soll. Ich bin nur drüber gestolpert weil ich keine Aktualisierungen der Readings mehr gesehen habe.

VG Peter
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

andreas13

Wenn es keine Aktualisierungen gibt, liegt es meistens an Viessmann. Das Modul ist so geschrieben, dass es tolerant auf API Fehler reagiert und es regelmäßig neu versucht. Sollte das mal nicht funktionieren, bitte mal eine Log 4 machen. Dann kann ich ehen, ob es ein Fehler im Modul ist und den reparieren. Das ist besser als mit was handgestrickten den Fehler zu umschiffen.

Zitat von: plin am 07 November 2022, 16:00:38
Alles ok wenn's so sein soll. Ich bin nur drüber gestolpert weil ich keine Aktualisierungen der Readings mehr gesehen habe.

VG Peter
Maintainer des Vitoconnect Moduls
In Betrieb: FritzBox 7590, Homematic
piko Wechelrichter (HTTPMOD). Sonos ....
noch: IT

andreas13

 Hier gilt das gleiche wie im vorherigen Post: Das Modul versucht es bei API Fehlern automatisch nochmal. Ein händisches "update" sollte nicht nötig sein.

Zitat von: neworder am 07 November 2022, 08:52:50
Hallo Andreas,

leider funktioniert der auto refresh seit Anfang November nicht oder nicht zuverlässig. Davor (bei mir seit Mai) keine Probleme. Ich tippe aber eher auf ein Problem bei den Viessmännern, manueller refresh scheitert auch ab und an.

Grüße und Danke fürs Modul!
Maintainer des Vitoconnect Moduls
In Betrieb: FritzBox 7590, Homematic
piko Wechelrichter (HTTPMOD). Sonos ....
noch: IT

MAX_V

Hallo,
ich bekomme aktuell folgende Fehlermeldung:

"statusCode":404,"errorType":"ENDPOINT_NOT_FOUND","message":"Endpoint /iot/v1/equipment/gateways does not match any existing route"}

Wisst ihr, was das bedeuten kann?

PeterLustig

Bei mir ist gerade mal wieder der Login gescheitert, selbst mit "Update" geht es nicht mehr. Aber man kann derzeit auch keine Viessmann-Seiten im Netz aufrufen..... echte Profis ;D