Magst du mir mal den Ident der Variable nennen?
paresy
Magst du mir mal den Ident der Variable nennen?
paresy
heating_circuits_0_operating_programs_reduced_temperature
heating_circuits_0_sensors_temperature_supply_value
heating_dhw_sensors_temperature_hotWaterStorage_value
heating_dhw_temperature_hygiene_value
heating_circuits_0_operating_programs_comfort_temperature
heating_boiler_temperature_value
heating_boiler_sensors_temperature_commonSupply_value
heating_circuits_0_operating_programs_normal_temperature
Ich glaub das sind alle
Hallo zusammen !
Das Viessmann-Modul ist eine tolle Sache. Habe ich auch genutzt bis zur API-Umstellung. Jetzt leider nicht mehr, da ich Symcon-Connect nicht nutze.
Gibt es nicht auch einen Weg ohne Symcon-Connect?
Ich habe schon ausprobiert, statt der Symcon-Connect-URL die lokale WebHook Url einzutragen. Das lässt das Modul aus irgendeinem Grund nicht zu. Die Konfig wird dann nicht gespeichert. Technisch müsste das aber eigentlich gehen, oder?
Ich würde gerne verstehen, warum die Abhängigkeit zu Symcon-Connect besteht.
Besten Dank und viele Grüße
Florian
Hi Flo: Die Antwort ist recht simpel. Die meisten haben Symcon Connect und dadurch ist die Einrichtung extrem simpel. Dein Idee müsste aber bestimmt möglich sein (sofern du z.B. dein IP-Symcon per DynDNS im Internet verfügbar hast). Da ich das aber nicht getestet habe, kann ich dir da leider nicht wirklich behilflich sein.
@hfichtinger Ich kümmere mich da hoffentlich zeitnah drum. Habe es nicht vergessen
paresy
Danke für die schnelle Antwort!
Ich bin leider nicht der Held im Programmieren. Soweit ich es aber sehe, muss der WebHook als return-URL nicht über’s Internet erreichbar sein. Bei oAuth bekommt der Browser bei der Anmeldung einen „redirect“ und so lange der Browser im Heimnetz den Viessmann Authentisierungs-Service und die lokale Symcon-Instanz erreichen kann, ist alles gut. Die Viessmann-API muss die IP-Symcon Instanz nicht erreichen.
Damit wäre aus meiner Sicht eine Prüfung auf ein existierendes Symcon-Connect eigentlich gar nicht nötig und das ganze müsste auch ohne laufen.
Wenn ich das mit meinem Halbwissen richtig deute, dann erfolgt die Abfrage auf Symcon-Connect in dieser Funktion,richtig?
private function GetCallbackURL()
{
$cc_id = IPS_GetInstanceListByModuleID('{9486D575-BE8C-4ED8-B5B5-20930E26DE6F}')[0];
$cc_url = @CC_GetConnectURL($cc_id);
if ($cc_url) {
return $cc_url . '/hook/viessmann/' . $this->InstanceID;
}
return $this->Translate('Symcon Connect must be enabled!');
}
Da könnte ich doch zum Testen einfach mal (bei mir lokal) die Anfrage rausnehmen, oder mache ich dann irgendwas anderes kaputt?
Danke und viele Grüße
Florian
Super danke. Wobei das ja meiner Meinung nach nur Kosmetik ist. Der Anlagendruck wird ja nach wie vor nicht zur Verfügung gestellt. Aber vielleicht könntest du dir meine Idee mit der Kommunikation zwischen der Cloud und der lokalen Anlage kurz ansehen. Wie gesagt, wenn ich die Anlage aus dem Netz nehme und über IPS ein Update mache, bekomme ich ja einen Fehler. Ich gehe davon aus, dass dieser Verbindungsfehler abfangbar ist und man könnte eine Variable setzen. Die Instanz selbst, wird ja nicht auf Fehlerhaft gesetzt, sonst könnte ich ja diesen Zustand abfragen.
Hallo zusammen!
Ich habe mit dem Modul aktuell das Problem, dass seit bereits mehreren Tagen, ab der Mittagszeit bis zum nächsten Tag am Morgen, keine API Abrufe mehr möglich sind. Ist das anderen bereits auch aufgefallen bzw. kann dieses Verhalten sonst noch jemand bestätigen?
Mein Abrufintervall ist auf 3 Minuten gestellt, werden ggf. zu viele Abfragen getätigt das sozusagen ein Limit der Abrufe beim Viessmann Server sich bemerkbar macht. Ist das denkbar?
VG Heiko
Absolut. Es gibt ein Limit. Wie hoch das aktuell ist, weiß ich nicht. Ich hab 15 Minuten und das passt gut. Ich komme so auf 96 Abfragen pro Tag. Du hast da 480.
Ich wollt eben auch was Posten. Für mich ist es wichtig zu wissen, ob die Anlage noch über die API erreichbar ist. Es gab da mal mit einer anderen Lösung die Möglichkeit den Onlinestatus zu bekommen. Mit der aktuellen Version ist das nicht mehr so einfach möglich. Zwar liefert das VVC_Update einige Fehler, wenn die Anlage nicht erreichbar ist, jedoch durch das „die“ im php Code verabschiedet sich, zumindest bei mir, auch jegliches Skript, welches den Output auswerten sollte. Also alles nach VVC_Update wird nicht mehr ausgeführt.
Ich hab für mich eine Lösung durch die Trennung der Skritpte gefunden. Das eigentliche Update wird in einem eigenen Skript gemacht, welches in einem eigenen Kontext läuft. Die Fehlermeldung bekomme ich sehr einfach zurück. Mein aufrufendes Skrtipt läuft dann weiter und kann den Fehler auswerten. Die Aktualisierung in der Instanz habe ich deaktiviert. Mein Sktipt läuft alle 15 Minuten. Macht ein Update auf die Werte und auch einen Check, ob die Anlage noch erreichbar ist oder nicht. Woran die nicht Erreichbarkeit liegt, weiß ich nicht. Sie meldet sich aber sehr brav immer wieder ohne Eingriff an.
Meine Skripte
Das erste mit dem Check wird alle 15 Minuten mittels Timer gestartet.
<?php
$status="";
$vitodens200_update_script=43012;
$vitodensonline=22717;
$status=IPS_RunScriptWait($vitodens200_update_script);
if (strpos($status,"Fetching data failed") > 0)
{
setvalue($vitodensonline,false);
Global_Log_Eintrag_erstellen("Fehler","Vitodens","Vitodens offline!");
}
else
{
setvalue($vitodensonline,true);
}
Das Zweite wird vom ersten in einem eigenen Kontext ausgeführt. Sollte ein Fehler auftreten, steht der komplette Text in $status.
<?php
$vitodens200=51915;
VVC_Update($vitodens200);
Sollte jemand es brauchen.
Wie habe ich es getesten? Eigentlich ganz einfach. Man sperrt die Anlage aus dem WLAN aus. Dann etwas warten. Kontrolle am besten über die Viessmann Geräteverwaltung. Sobald die Anlage dort als offline angezeigt wird, funktionieren auch die API Calls nicht mehr und bringen eine Fehlermeldung.
Laut Website von Viessmann sind 1450 Aufrufe pro Tag frei.
D.h. z.B. 1x pro Minute abfragen und dann noch 10x Aktionen auslösen.
Ich frage alle 5 Minuten ab und das klappt problemlos. (Bis auf ca. 10 nicht erfolgreiche Versuche / Tag)
Gruß Thomas
Hallo Thomas,
das ist seltsam, bei mir ist heute wieder seit 13:33 kein Abruf mehr möglich.
Mein Intervall auf 15min setzen ist auch etwas suboptimal, da ich den Status der Warmwasseraufladung abfrage und dieser mit meinem Gaszähler verknüpft ist. Somit erhalte ich separiert meinen Gasverbrauch für das Warmwasser. Das macht aber beim 15 min Intervall dann wenig Sinn.
Ich habe es aber auf 10min gestellt und trotzdem sind keine Abrufe nun mehr bis morgen früh möglich. Objekt ist auch aktiv. Beim Abruf erhalte ich folgende Fehlermeldung:
file_get_contents(https://api.viessmann.com/iot/v1/equipment/installations/867324/gateways/7571381744309102/devices/0/features/): failed to open stream: HTTP request failed! HTTP/1.1 429 Too Many Requests in C:\ProgramData\Symcon\modules.store\de.paresy.viessmann\VitoConnect\module.php on line 299 Fetching data failed!
VG Heiko
Schau dir mal die Statistiken an: https://developer.viessmann.com/de/clients/history
Bei mir verbraucht ein 15 Minuten Intervall 2200-2400 Requests/Monat.
Ansonsten kannst du ja mal versuchen den Support zu kontaktieren, ob der dir das erklären kann.
paresy
Ich hab bei 5 Minuten ca. 6100 Requests/pro Monat. Passt also. (Müssten aber eigentlich 8640 sein…)
Gruß Thomas
Hallo paresy,
ich habe nun mein Debug einschaltet und im Blick gehabt. Ab ca. 13:45Uhr ist es so, dass im 20 Sekunden Takt ein UpdateAccessToken Trigger kommt. Von was dieser ausgelöst wird ist mir schleierhaft, jedenfalls häufen sich somit die API Anfragen bis Viessmann der Anfragelawine vermutlich ein Ende setzt. Zuvor habe ich alle 3 Minuten sauber eine Abfrage gesehen, und der Zähler in der Abfragestatistik bei Viessmann ist ordentlich alle 3 Minuten um 1 erhöht worden.
Übrigens sind 1450 Anfragen pro Tag zugelassen, also eigentlich steht einer minutlichen Abfrage aus dem Aspekt nichts im Wege.
Kann ich irgendwie prüfen warum der Token alle 20Sekunden ein Update will und woher das kommt?
Ich habe über die ClientID nun die API - Anfrage zum Server erstmal unterbrochen, Trigger siehe Screenshot
Intervall steht im Modul wie gesagt auf 3 Minuten!
Unter Ereignisse welche die Instanz auslösen ist nichts gelistet
VG Heiko
Kannst du IP-Symcon neu starten und den Debug in eine Datei umleiten? Dann sehen wir vielleicht was das Problem auslöst.
paresy
Hallo paresy,
ich habe die Ursache gefunden. Es hing mit meinem Aussentemperaturfühler zusammen welcher im 20 Sekunden- Takt Werte liefert. Es war ein Ereignis aktiv, welches bei einer bestimmten Aussentemperatur die Anlage auf „Nur Warmwasser“ einstellt. Dummerweise auch bei wiederholt erfüllter Bedingung:-)
Danke und VG
@paresy
Kann es sein, dass die Daten für den Brennerstatus nicht mehr kommen? Seit 28.09.2021 bekommt er kein Update mehr. Er war aber sicher aktiv, da ich sonst kein Warmwasser hätte.
Edit: Es ist definitv so, dass der Brennerstatus kein Update mehr erhält. Entweder aus der Api gefallen oder der Name hat sich geändert.
Edit2: Der Name hat sich geändert. Hab die Variable gefunden. Heißt jetzt heating.burners.0.active
Moinsen,
gibt es aktuell Probleme mit dem Server? Bekomme diese Fehlermeldung seit heute Nacht:
file_get_contents(https://api.viessmann.com/iot/v1/equipment/installations/867324/gateways/7571381744309102/devices/0/features/): failed to open stream: HTTP request failed! HTTP/1.1 502 Bad Gateway
in C:\ProgramData\Symcon\modules.store\de.paresy.viessmann\VitoConnect\module.php on line 299
Fetching data failed!
VG Heiko
Wartungsarbeiten seitens Viessmann
Hatte ich auch gegen 3:30. Aktuell keine Probleme
Hallo Zusammen,
ich hab keine Ahnung was ich falsch mache…hab eine ClientID aber bekomme aber beim registrieren die Meldung
{„error“:„Invalid redirection URI.“}
Wo ist der Fehler?