Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Du meinst ein Widget in SmartVISU, das die Heizung dort visualisiert? Oder meinst Du ein Plugin, das die Daten nach SmartHomeNG holt?
Der größte Wunsch, wäre natürlich eine Visualisierung in der smartVISU. Ein Plugin in die smartNG würde mir schon mal reichen, dann könnte ich die Werte selber visuell darstellen.
Ich hab da was als inoffizielles Plugin für SmarthomeNG gestrickt.
Nutzt die API von dem Viessmann-Server. Funktioniert seit einem Jahr tadellos; bis auf die Tatsache, das Viessmann wegen der Häufung an Anfragen auf dem Server die Zugriffe auf 15-Minuten-Intervalle begrenzt hat.
Ist halt von deren Seite zwar akzeptiert, aber nicht erwünscht.
Mir persönlich reichen allerdings die Datenaktualisierungen in dem Intervall.
Ich nutze das Hauptsächlich, um die Außentemperatur auf den Bus zu bekommen. Und die schwankt innerhalb dieser Zeit nicht extrem.
Sonst lassen sich aber trotzdem alle Daten abgreifen, inklusive dem letzten Wartungsstand den Fehlermeldungen. Umgekehrt kannst du damit natürlich auch steuern.
Die Daten laufen dann in die Smartvisu.
Es besteht in großen Teilen aus dem Pyvicare-Code. Dieser legt die den Token für die Authentifizierung lokal als Datei ab.
Mir ist das egal, aber als offizielles Plugin ist das nicht gewünscht.
Und für das rauszuprogrammieren bin ich einfach zu doof...
Daher hab ich das bisher nur für mich genutzt. Vielleicht kann hier ja mal einer helfend eingreifen?
Nutzt die API von dem Viessmann-Server. Funktioniert seit einem Jahr tadellos; bis auf die Tatsache, das Viessmann wegen der Häufung an Anfragen auf dem Server die Zugriffe auf 15-Minuten-Intervalle begrenzt hat.
Ich habe beim PyViCare das Caching eingebaut. Damit ist nun ohne Probleme möglich, jede Minute abzufragen. Du musst beim Erstellen nur als letzten Parameter "60" mitgeben.
In order to keep operation through our API safe and still give you the chance to interact with your system, we limit the use for all applications by setting a threshold for the requests. The limit is set for both a larger (e.g. daily) and a smaller (<15 mins) time scale. Reaching the limit will prevent you to execute any further requests with your account in the specific time frame.
Wie soll das dann umgangen werden?
Der letzte Parameter ist cycle in Sekunden und gibt den Abrufintervall mit.
Der stand bei mir bis März auf 120. Somit erhielt ich alles 2 Minuten die Werte.
Ab März war Ende! Da wurden diese Restriktionen eingeführt und Viessmann hat mir eine liebe Email geschrieben, mit der Bitte, diesen dauerhaften Anfragen an den Server zu unterlassen. Ich habe den Parameter auf 1200 gesetzt und bekomme alle 20 Minuten daher nur die Daten. Das funktioniert. Setze ich den wieder auf 120, werde ich wieder gesperrt...
Und es waren ja nur die Datenabfragen mit den statischen Zugangsdaten. Selbst der Token wird ja nur alle 60 Minuten ausgetauscht, weil er abgelaufen ist.
Folglich verstehe ich nicht, wie du die Einschränkung von Viessmann umgehen kannst (die gibts ja immer noch, oder habe ich was verpasst?)...
Msinn
Der serialisiert den Token und speichert den unter „Token.save“
Es wird dann abgeprüft, ob der gespeicherte Token noch Gültigkeit hat. Wenn ja, erfolgt die Anmeldung mit dem gültigen Token, wenn nein, wird dieser neu generiert. Das Ganze läuft über oauth2.
Du hattest seinerzeit den Vorschlag in einem alten Thread von mir gemacht, den Token einfach als Variable über die Laufzeit ohne zu speichern festzuhalten, aber ich habe das Dutzend mal versucht umzubauen, bin aber kläglich gescheitert.
crazyfx
Aber was nützt das Caching?
Viessmann kappt aber doch die Verbindung?!
Man übergeht hier gar nichts.
Die offiziellen Limits von Viessmann sind wie in deinem Link geschrieben: Currently, we have the following limits active: 120 calls for a time window of 10 minutes
1450 calls for a time window of 24 hours
Das heißt rein von den Limits ist es schon mal möglich, jede Minute einen Request an Viessmann zu schicken.
Das Problem in der alten Version war, dass jeder Wert einzeln abgefragt wurde. Dh für zB getOutsideTemperature und getReturnTemperature wurden in der alten Version zwei Requests an Viessmann geschickt.
Der Cache hingegen speichert einmal pro angegebenen Intervall alle Werte ab und liefert für alle Methodenaufrufe die Werte aus dem Cache. Somit wird jede Minute nur eine Abfrage an die API gemacht.
Der Code läuft im Home-Assistant schon mehrere Monate ohne Probleme mit dem Cache.
crazyfx
Warum zitierst du nicht alles?
Du reisst das damit aus dem Zusammenhang und deutest das daher falsch:
We have a rate limit with sliding window. Whenever the first request arrives, we open a time window and count all request in that window. If the number of requests reach the limitation, we block all incoming user requests until the time window ends. Then, with the next user request, a new time window opens.
Currently, we have the following limits active:
120 calls for a time window of 10 minutes
1450 calls for a time window of 24 hours
Please take note that we are taking the right to adjust the limits if seen necessary. Information about adjustment of the threshold will be given with a reasonable amount of time in advance for all affected user.
Das bezieht sich nicht auf den einen User, der 120 Abrufe in 10 Minuten machen kann, sondern über die ganze API aller User.
Sonst hätte Viessmann wohl kaum reagieren brauchen. Denen läuft ihr Server mit Anfragen über, weil die Anzahl der Datenabfragen logischerweise mit der Anzahl an registrierten Nutzern steigt. Wenn die jedem Nutzer dieses Zeitfenster alleine einräumen, könnte ja jeder problemlos minütlich die Werte abfragen und nichts hätte sich verändert. Dann wäre die Anfrage bei 1440 Stück innerhalb 24 Stunden möglich.
Denn wenn ich alle zwei Minuten die Abfrage starte, generiere ich in 10 Minuten 5 Requests, in 24 Stunden 720. Warum sperren die mich wohl sonst und schreiben mir eine Mail?
Mit dem Cache hingegen ist mir neu und habe ich auch auf der github-Seite eben gefunden. Ich habe das jetzt über ein Jahr schon in Betrieb (ist mir eben aufgefallen) und da war noch nichts mit Caching. Das nach der Limitierung erst aufgetreten. Damit werde ich mich mal beschäftigen...
Das bezieht sich nicht auf den einen User, der 120 Abrufe in 10 Minuten machen kann, sondern über die ganze API aller User.
Das ist schlichtweg falsch, das Limit ist pro User.
Klar steigt die Last pro User, dafür bezahlt der User aber auch mit dem Kauf der Heizung bzw. dem Vitoconnect.
Das Sliding Window hat bei einer minütlichen Abfrage keine Relevanz, da man hier ständig unter dem Limit operiert.
Das Problem ist, wie oben beschrieben, dass die PyViCare Library ohne Caching für jeden Wert extra eine Abfrage gemacht hat. Somit wurden von den Usern im Falle vom Home-Assistant 15 Abfragen (weil 15 Werte abgefragt wurden) pro Minute gemacht. Jetzt mit Caching sind es tatsächlich 1 Abfrage pro Minute.
Ich habe das Caching übrigens selbst in der Library eingebaut, kenne somit die Limits ganz gut und es funktioniert genau so, wie ich es beschrieben habe.
Ich nutze das Hauptsächlich, um die Außentemperatur auf den Bus zu bekommen. Und die schwankt innerhalb dieser Zeit nicht extrem.
Ich habe auch ein Vitoconnect 100 in Betrieb und würde gerne einzelne Werte (insbesondere, die Aussentemperatur) auf den KNX Bus bringen. Mit PyViCare konnte ich den Wert schon abfragen.
Ich hab da was als inoffizielles Plugin für SmarthomeNG gestrickt.
tsb2001 Kannst Du mir mal das Plugin schicken? Ich würde mich gerne beteiligen und die Entwicklung als "offizielles" Plugin an den Start bringen. Bisher habe ich zwar noch nie ein Plugin geschrieben, aber mit einer Vorlage, würde ich mich schon ran trauen.
Wie man Tokens/Passwörter in der plugin.yaml bzw. etc/plugin.yaml platziert und im Plugin nutzt, habe ich schon gesehen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar