[Modul] Viessmann VitoConnect

Du kannst nur warten bis @paresy das im Modul ändert. Den Fehler hab ich auch, siehe weiter oben.

Magst du mir auch debug Logs per PM senden? Dann habe ich alles da sobald ich Zeit habe und kann alles zusammen fixen :sunglasses:

paresy

So. Ich hatte ein wenig Zeit reinzuschauen und habe zumindest den Fehler korrigiert. Ich habe ebenfalls die Zeitstempel der Verbrauchswerte konvertiert, sodass Sie in unserem Format sind.

Worauf ich mir leider keinen Reim bilden kann sind die Verbrauchswerte die im Array sind:

'heating_gas_consumption_dhw_day' => '[0.1,0.8,0,1.1,0.7,0.7,0.7,0.7]',
'heating_gas_consumption_dhw_week' => '[2,4.8,4.7,4.5,4.8,6.699999999999999]',
'heating_gas_consumption_dhw_month' => '[9.5,22.8,34.9,37,34.4,43.5,36.5,31.8,23.9,19.6,23.2,22.6,23]',
'heating_gas_consumption_dhw_year' => '[219,144.4]',

Kann mir jemand erklären wie die App das darstellt? Welche dieser Werte wäre für eure Einsatzzwecke sinnvoll? Soll ich die alle in einzelne Variable zerlegen? (Das werden wie man bei @Melbar sieht unter Umständen sehr sehr viele)

paresy

PS: Eine neue Beta-Version ist online :slight_smile:

Bei mir schaut das so aus








Werte
Gas
Raumbeheizung diese Woche: [0,0,0,0,0,0]
Raumbeheizung diesen Monat: [0,0,0,8.3,40.3,60.2,44.6,52.1,42.6,74.5,49.5,5.9,0] (Ich habe aber nicht geheizt)
Raumbeheizung dieses Jahr: [205.6,173.1]
Raumbeheizhung heute: [0,0,0,0,0,0,0,0]
Warmwasser diese Woche: [1.5,4.5,4.5,4.4,4.5,4.8]
Warmwasser diesen Monat: [6.8,20.1,22.8,34.9,37,34.4,43.5,36.5,31.8,23.9,19.6,23.2,22.6]
Warmwasser dieses Jahr: [236.4,144.4]
Warmwasser heute: [0,1.5,0.4,0.7,0.7,0.4,0.7,0.3]

Strom
diese Woche: [0.30000000000000004,1.4,1.4,1.4,1.4,1.4]
diesen Monat: [2.5,8.6,8.5,10.3,15,19.400000000000002,15.4,28.2,30.7,30.5,25.9,9.700000000000001,8.7]
dieses Jahr: [108.7,114.2]
heute: [0.1,0.2,0.2,0.2,0.2,0.2,0.2,0.2]

Und die Zeitstempel

Hoffe das hilft etwas.
Noch meine persönliche Meinung: Mir sind die Verbrauchswerte relativ egal. Was solls. Ich wil es im Winter warm und ich möchte auch nicht mit kaltem Wasser duschen. Die Aufzeichnung ist nett, aber letztendich wertlos.

Wenn ich das richtig sehe, ist somit nur der erste Zeitstempel im Array relevant. Alle andere sind quasi für die alten Zeiträume oder? Da wir die Werte eh im Archiv speichern, würde es meiner aktuellen Auffassung nach reichen, wenn ich den ersten Wert in der Variable abbilde.

Wie sehen die anderen das?

paresy

Sehe ich auch so. Letztendlich braucht man ja streng genommen nur den Tagesverbrauch (Gas und Strom). Hab ich auch mit dem alten Modul so gemacht. Also ins Archiv sind nur die Tagesverbräuche gekommen. Der Rest kann daraus hochgerechnet werden, wenn man will.

Ich schau mir grad die App für Strom/Woche und vergleiche mit den Werten. Der LETZTE Wert im Array zeigt mir die aktuelle Woche an. Die Anzeige in der App ist von links (früher) nach rechts (aktuell). Die Werte im Array sind genau umgedreht. Der erste Wert entspricht der aktuellen Woche. Wird bei den anderen Werten auch nicht anders sein.
Die „ValueReadAt“ kann man eigentlich überhaupt löschen. Die Zeitstempel gibts ja eh in IPS. Da würden viele unnötige Variablen wegfallen.

Dem ist nicht mehr viel hinzu zu fügen. Die Angaben im Array scheinen tatsächlich dem Schema zu folgen (von links nach rechts = von aktuell zu alten Werten) wobei die Werte in dem Array und die in der App angezeigten bei mir anscheinend voneinander abweichen. der Erste Wert passt jeweils halbwegs auf den aktuellen zugehörigen in der App, die anderen finden sich hingegen nur annähernd oder gar nicht.
Mir selbst reicht der aktuelle Tagesverbrauch völlig wobei dieser auch nur eine Zugabe dar stellt. Für mich ist es wichtiger die Heizung in Abhängigkeit der Raumtemperatur zu- oder ab-schalten zu können indem ich die Wunschtemperatur des Heizkreises hoch oder runter setze. Alles andere sind nette Zugaben und interessant für die Statistik aber eben nicht Kriegsentscheidend.

Stefan

Großes Update ab sofort im Store als Beta!
Benötigt ab sofort IP-Symcon 6.0+

Was ich hinzufügen könnte ist das Setzen von einigen Werten:

  • Betriebsmodus für Warmwasser, Heizung&Warmwasser ect. (Dank der 6.0!)
  • Warmwassertemperatur
  • Hysterese bei einigen Heizkreisen
  • Min/Max bei einigen Heizkreisen
  • Ein paar fehlende Profile für Temperaturen

@hfichtinger: Der Status deiner Pumpe sollte nach dem Update ebenfalls auftauchen. (Dadurch werden leider noch ein paar mehr Status Variablen erstellt, welche ich bisher gefiltert hatte)

Was theoretisch Möglich wäre, aber noch nicht implementiert ist:

  • Ferienprogramm starten, ändern, beenden
  • Heizkurve (Slope, Shift)
  • Wochentage für irgendeine Reinigung können verändert werden

Ich habe ebenfalls die Arrays rausgeworfen und zeige nur den ersten Wert in der Variable passend an.

paresy

Sehe ich das richtig, dass ich erst wieder ab der Version 6 das Modul udpaten kann?

Korrekt. Das Setzen des Betriebsmodus erfordert die neuen String Assoziationen, welche erst mit IP-Symcon 6.0 verfügbar sind. (Das war einer der Gründe warum ich dies bisher nicht anbieten konnte)

paresy

Alles klar. Dann warte ich noch ein paar Wochen bis die V6 stabil läuft. Danke schon mal.

@paresy was ich eben noch bemerkt habe, dass der aktuelle Anlagendruck offenbar nicht rüber kommt. Ich glaube mich daran zu erinnern, dass es dafür keinen entsprechenden Datenpunkt gibt. Das haben sie schon im Viessmann Forum bemängelt.

@paresy
Hab eben das Update inkl. IPS Update gemacht. Bis jetzt schauts sehr gut aus. Zwei Punkte sind mir aufgefallen. Beim Modus hat sich das englische Wörtchen „heating“ in den Anzeigetext eingeschlichen und die Stromverbrauchswerte haben noch die „alte“ Array-Anzeige.
Eine andere Frage hätte ich noch. Mit der vorigen API hatte ich die Möglichkeit den Onlinestatus der Anlage zu bekommen. Wobei hier nicht der Netzwerkstatus gemeint ist, sonder der Status der Verbindung der Therme zum Viessmann Server. Der kann hin und wieder gestört sein, obwohl die Anlage selbst eine Internetverbindung hat. Warum auch immer. Das heißt aber natürlich auch, dass sämtliche Änderungen (z.b. der Heizmodus) nicht an die Anlage übertragen werden. Diesen Fehler hab ich in abgefangen, indem ich die bei der Honeywell Regelung das Kesselrelais aktiviert habe, und somit hat mir diese Regelung die Therme ein- und ausgeschaltet. Da gibt es halt dann nur eine fixe Vorlauftemperatur, aber wenigstens wirds nicht kalt. Sobald die Verbindung wieder da ist, wird das Relais deaktiviert und IPS übernimmt die Berechnung der Vorlauftemperatur und auch die Steuerung des Modus (nur Warmwasser oder Heizen und Warmwasser).
So, diesen Status gibt es jetzt nicht mehr. Daher würde mich interessieren, ob es irgendwie aus dem Modul möglich ist zu erkennen, ob die Therme mit dem Server noch eine Verbindung hat. Eventuell einen Zeitstempel der letzten Übertragung oder ähnliches. Wenn man 15 Minuten Intervall eingestellt hat und der Zeitstempel viel weiter als 15 Minuten in der Vergangenheit liegt, dann könnte ich davon ausgehen, dass es zwischen Anlage und Server ein Problem gibt. Die Aktualisierungszeit in IPS funktioniert eher nicht, da diese immer gesetzt wird, weil ja vom Server was zurückkommt. Ob das noch aktuell ist oder nicht, weiß keiner so genau.
Das wären meine Gedanken.

Eines möchte ich aber auch noch sagen. @paresy vielen Dank für deine Mühen. Sie sind kostenlos aber nicht umsonst :wink: . Mit diesem Modul sehe ich der Heizsaison fröhlich entgegen, da ich damit genau das machen kann, was ich auch bisher gemacht habe.

Edit
Zum Thema Onlinestatus und Verbindung zum Viessmann Server.
Ich hab der Anlage kurzfristig die Berechtigung genommen, sich mit dem Netzwerk zu verbinden. Sobald ich in der Viessmann App gesehen hab, dass sie offline ist, hab ich in IPS auf aktualisieren geklickt und das bekommen:
image
Das schaut schon mal sehr gut aus. Das sagt mir, dass der Server versucht die Anlage zu erreichen, kann es aber nicht.
@paresy Könnte man aus diesem Fehler was machen? Zum einen abfangen und zum Anderen das ganze eventuell in einer boolschen Variable ablegen? Also wenn dieser Fehler kommt dann soll in die Variable, nennen wir sie Onlinestatus, ein false rein. Leider (oder Gott sei Dank) wird die Instanz nicht als fehlerhaft markiert. Sonst könnte ich das selber auch.

Edit 17.8.2021
Die Werte für den Stromverbrauch passen jetzt auch, nachdem ich die alten Variablen gelöscht habe. Die neuen dürften dann neu angelegt worden sein. Vondaher ist jetzt eigentlich alles drinnen - und noch viel mehr - als im alten Modul. Von den Informationen die von der API geliefert werden. Leider fehlt nach wie vor der Anlagendruck. Aber dafür kann @paresy nichts. Es kommt einfach nicht, oder noch nicht.
Vielleicht könnte man noch den Onlinestatus irgendwie in eine Variable packen.

Ich hab ein interessantes Phänomen. Die Variable für die Warmwassertemperatur wird im Archiv gespeichert. Natürlich auch mit Anzeige im WF. Die Archivdaten passen, jedoch nicht das Diagram


Normale Anzeige in HD. Da klebt der Strich oben bei 25° was aber nicht der Warheit entspricht. Etwas wärmer sollte das Warmwasser schon sein

Wenn ich DYN aktivierte stimmt die Anzeige auf einmal und das entspricht den Daten im Archiv

Ich habe bevor ich diesen Beitrag erstellt hab auch noch ma aggregiert. Das macht keinen Unterschied.
IP-Symcon 6.0, Windows, 09.08.2021, d27835cd2468

Ich sehe eben wo das Problem liegt


Bei der Variable wurde das falsche Profil hinterlegt. ~Temperature.Room geht nur bis 25°. Richtig sollte das Profil ~Temperature sein, das geht bis 70°. Mit diesem Profil passt dann auch die Anzeige des Diagrams.
@paresy : Es ist die Boilertemperatur im Viessmann Modul. Es betrifft übrigens einige Temperaturvariablen wo ~Temperature.Room verwendet wird. Eventuell magst du das ja ändern.

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 :slight_smile:

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.