Hallo Zusammen,
wie doch die Zeit so vergeht. Meine Vitodens 200 Wb2 als GasBrennwerttherme
hat wenn ich es richtig verstehe die Regelung für witterungsgeführten Betrieb mit Comforttrol.
Ich würde gern die Anlage auslese oder überwachen. Daher habe ich mir nun die Vito Connect OPTO2 bestellt. Diese scheint aber nicht mit der Heizung zu kommunizieren oder Daten anzuzeigen. Liegt es am Alter der Heizung/Regelung ist bei der Regelung etwas defekt oder wie könnte man das Problem lösen?
7170311401359107 müsste die Nummer der Gasbrennwerttherme sein.
Kann man hier eine modernere Regelung einbauen?
Gelöst! Gehe zu Lösung.
Dankeschön
hatte ich eher vergessen richtig im Fhem zu speichern oder so.
Habe jetzt eine Datei angelegt.
So Punkte wie Mischerstatus ,... suche ich mir dann noch zusammen
Schade ich kann die Anlage oder den Rechner immer nur gelegendlich direkt also Vorort abfragen.
Nachdem das Log einen Sprung von 99 Betriebsstunden innerhalb von 3 Minuten angezeigt hat, habe ich mal direkt am Gerät geschaut was der Berenner gelaufen ist. Hier steht ein völlig anderer Wert.
Habe jetzt grob in den Dateien nach Zahlendrehern oder so gesucht aber erstmal nichts gefunden.
Auch scheint der Brennerstatus öfters einen falschen Wert zu liefern.
Jemand schon so ein Problem gehabt?
Hattest du mal meine cfg aus der Cloud gefischt?
Das ist alles nicht perfekt, aber bei mir funktioniert gut und zuverlässig:
Aussentemp, Betriebsart, Drehz. Pumpe (nur 0/1), Kessel_ist, Speicher_Soll, Speicher_Ist, Fehlermeldung.
Die Temps kann man dann auch gut loggen und plotten. Der Rest ist mir als noch nicht schlüssig aufgefallen,
aber da versuche ich nach und nach noch das Eine oder Andere besser hinzubekommen, falls möglich.
Die Fehlermeldung kannst du dir ggf. per Nachrichtendienst aufs Handy oder per Mail schicken lassen.
Servus,
ja Frage den Status über den Raspberry Pi und Nachrichtendienst ab. Dies funktioniert auch super.
Außer folgendes:
- die Kesseltemperatur egal ob soll oder ist hat im Bereich um 60°C (denke so ab 55°C)ein negatives Vorzeichen
- der Brennerbetriebsstundencounter liefert über "getBrennerStunden1" den falschen Wert
- der Brennerstatus scheint hin und wieder einen falschen Wert über den Befehl" getBrennerStatus" zu liefern
Diese "Ausreißer" habe ich noch nicht bemerkt, da ich mein Device noch nicht logge und plotte.
Ich hab das auch noch nicht lange am Laufen und die Jahre zuvor hatte ich einen 1- Wire- Bus mit vielen Sensoren an die Therme gebastelt, der bis heute zuverlässig die Temperaturkurven liefert.
Aber gegen die Ausreißer kann man etwas tun. Zum beheben der Ursache reicht mein Wissen nicht,
aber ich kann dir zeigen wie du die falschen Werte rausfiltern kannst.
Du legst in der "99_myUtils.pm" eine kleine Routine an, die z.B. bewirkt dass die negativen Werte
verworfen werden (das sprintf "%.1f" kürzt bei Bedarf noch auf eine Kommastelle):
sub v200_filter_kesseltemp($) {
my ($v200_name) = @_; # übergebene Daten einlesen
my $temp = ReadingsNum("$v200_name","Kessel_Ist",0); # Variable mit akt. Temp.- Wert befüllen
if ($temp > 0 ) { # nur positive Werte durchlassen
return sprintf "%.1f",$temp; # Rückgabe der pos. Werte und kürzen auf eine Kommastelle
}
}
Diese Routine rufst du dann in deinem Vito.- Device als "userReadings" (ist ein Attribut) auf und bekommst
dadurch immer eine sauber plotbare Wertereihe geliefert (es muss dann dieses userReading geloggt werden):
kesseltemp_filter {v200_filter_kesseltemp($name)}
So kann man sich viele Arten von "Ausreißern" gut hinbiegen. Falls du dazu den alten Wert zum
Vergleich alt/aktuell brauchst, musst du für das entspr. Reading das Attribut "oldreadings" aktivieren.
Der Zugriff geht dann so (Beispiel mit Vergleich alt/aktuell):
sub v200_filter_kesseltemp($) {
my ($v200_name) = @_; # übergebene Daten einlesen
my $temp = ReadingsNum("$v200_name","Kessel_Ist",0); # Variable mit akt. Temp.- Wert befüllen
my $old_temp = OldReadingsNum("$v200_name","Kessel_Ist","$temp"); # Variable mit altem Temp.- Wert befüllen
my $diff = ($temp - $old_temp); # Subtraktion der beiden Werte (aktuell - alt)
if ($diff >= 100) { # Ergebnis der Subtraktion auswerten -> wenn größer/gleich 100 -> liefere alten Wert
Log 1, "if... temp:$temp old-temp:$old_temp diff:$diff" ; # Testausgabe der Werte im Logfile (später auskommentieren!)
return sprintf "%.1f",$old_temp;
}
else { # sonst liefere aktuellen Wert
Log 1, "else... temp:$temp old-temp:$old_temp diff:$diff" ; # Testausgabe der Werte im Logfile (später auskommentieren!)
return sprintf "%.1f",$temp;
}
}
Servus,
wenn man falsch liest oder klickt. Und daher gesagt es wäre die Lösung.
Wollte eigentich nur antworten 🙄
Ansich funktioniert ja das Auslesen nun mit folgenden Einschrängungen:
Hier wandelt die Funktion direkt immer in pos. um.
sub v200_filter_kesseltemp($) {
my ($v200_name) = @_; # übergebene Daten einlesen
my $temp = ReadingsNum("$v200_name","Kessel_Ist",0); # Variable mit akt. Temp.- Wert befüllen
return sprintf "%.1f",abs$temp; # Rückgabe der pos. Werte und kürzen auf eine Kommastelle
}
}
Zu den anderen Sachen muss ich mal in der Heizperiode gucken. Momentan läuft nur die Solaranlage.
Die Fehlermeldungen im Klartext sind in meiner CFG hinterlegt. Den Cloud- Link hast du ja.
Dankeschön
ja in deiner Config sind Werte für Fehlermeldungen hinterlegt.
Aber scheinbar wenn nicht genau der Fehlercode beschreiben ist kommt UNKOWN oder?
Hatte gedacht, dass der Angezeigte Fehlercode von der Vitodens war glaube ich A5 eingebaut wird dieser auch angezeigt wird. Vielleicht hier noch einen Programmierfehler gemacht oder so aber hat beim ersten Test nicht funktioniert. Kann man denn Werte der Vitoden oder vom GWG direkt im Raspi auslesen, um so z.B. weitere Parameter entdecken zu können?
Frage zur Routine
my ($v200_name) = @_; baute ich so um
my ($v200_name) = Vitodens200;
my $temp = ReadingsNum("$v200_name","Kesseltemperatur",0);
?
Das musst du schon alles genau so lassen, nur der Readings- Name muss zu deiner Def. passen -
einen Fehler hatte ich trotzdem drin 😉 :
sub v200_filter_kesseltemp($) { # so lassen, hier wird nur der Name der Funktion festgelegt, die du in deinem userReadings aufrufst
my ($v200_name) = @_; # so lassen, hier wird aus der Übergabe "@_" der Name deiner Def. geholt und in die Variable "$v200_name" gesteckt
my $temp = ReadingsNum("$v200_name","Kessel_Ist",0); # so lassen bis ggf. auf "Kessel_Ist": Hierfür nimmst du den Namen deines original- Readings für die Kesseltemp. (die manchmal neg. Werte bringt) ; hier wird der manchmal negative Temp.- Wert in die Variable "$temp" gesteckt
return sprintf "%.1f",abs($temp); # so lassen ; Rückgabe der pos. (Absolut-)Werte zum aufrufenden userReadings und kürzen auf eine Kommastelle (hier war ein Fehler drin - Klammern haben gefehlt)
} # hier war eine Klammer zu viel
Aber scheinbar wenn nicht genau der Fehlercode beschreiben ist kommt UNKOWN oder?
Genau, jeder Fehler muss in der cfg eine Textentsprechung haben. Das kannst du einfach so erweitern.
Kann man denn Werte der Vitoden oder vom GWG direkt im Raspi auslesen, um so z.B. weitere Parameter entdecken zu können?
Das geht leider nicht so einfach: Die Befehle sind in der vclient- Konfiguration hinterlegt und stammen aus Versuchen, die jemand mal gemacht hat (nicht ich). Man müsste dazu eine Software haben (z.B. die originale von Viessmann) und dann die serielle Komm. mitloggen. Das will ich ja mal mit der Testversion versuchen, aber erst im Herbst/Winter wenn die Therme wieder läuft.
Benutzer | Anzahl |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |