Lüftungsanlage Vitovent 300 mit Opentherm und ESP8266 abfragen/steuern

Ich bin gerade dabei, unsere Vitovent 300 Lüftungsanlage (baugleich mit Renovent / Wolf…) smarter zu machen.:smiley:
Die Vitovent nutzt für die Steuerung per original Fernbedienung das Protokoll „Opentherm“.
Dazu habe ich mir von „nodo-shop.nl“ das „Opentherm Gateway“ besorgt, dass direkt für die Kombination mit einem ESP866 WLAN Modul gedacht ist.
Dabei wird das passende ESP8266 Modul einfach nur auf eine vorbeitete Steckerleiste gesteckt.

Die ESP Software habe ich von hier aufgespielt:

GitHub - apdlv72/VitoWifi
https://knx-user-forum.de/forum/öffentlicher-bereich/knx-eib-forum/35624-viessmann-vitovent-goes-knx?p=934983#post934983

Der User hat mir super geholfen, die ESP Software zum laufen zu bekommen.

Das Gateway bekommt man als Bausatz zum selberlöten, oder gegen Aufpreis fertig zusammengebaut.

Das Gateway kann ich in meinem Heizungskeller zwischen Fernbedienungsanschluss und Lüftungsanlage montieren, und per WLAN Schnittstelle darauf zugreifen.

Nun stellt sich die Frage, wie ich diese Daten einlesen kann und parsen kann?

Wie kann ich bei der „Abfrage des generellen Status“, z.B. rauspicken:

  • Status
  • Filtercheck

Abfrage Lüfterstellung:
curl „http://vitowifi/api/level
{„ok“:1,„now“:2035922513,„level“:0}

Setzen Lüfterstellung Level 1
curl „http://vitowifi/api/set?level=1
{„ok“:1,„now“:2035938325,„level“:1,„value“:„1“}

Abfragen genereller Status:
curl „http://vitowifi/api/status
{
„ok“:1,
„build“:„Mar 12 2016 14:30:26“,
„reboots“:„26“,
„now“:2036005775,
„uptime“:„23d,13h,33m,25s“,
„lastMsg“:{„serial“:2036002314,„wifi“:{„fed“:0 ,„de bug“:0}},
„dbg“:{„level“:1},
„vent“:{„set“:1,„override“:1,„ackn“:1,„reporte d“:1 ,„relative“:38},
„temp“:{„supply“:980,„exhaust“:2129},
„status“:[1,2],
„faultFlagsCode“:[-1,-1],
„configMemberId“:[5,0],
„masterConfig“:[0,18],
„remoteParamFlags“:[0,0],
„filterCheck“:1,
„freeheap“:31656,
„debug“:1,
„sensorsFound“:5,
„lastMeasure“:16383,
„sensors“:[1725,1075,2037,2187,1412,0],
„tsps“:[
70,0,120,0,180,0,20,44,
-1,-1,-1,100,-1,-1,-1,-1,
-1,1,0,2,0,-1,-1,1,
0,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,
180,0,-1,-1,0,0,0,110,
121,-1,-1,-1,0,0,120,0]
}

Danke schon mal für eure Infos.

Bei deiner Konkrten Frage kann ich leider aktuell noch nicht weiterhelfen.
Ich hätte aber eine generelle bei der du mir vielleicht helfen kannst.

Ich habe eine VItovent 300W. Dazu habe ich mir aus dem nodo shop das otgw gekauft und ein node mcu.
Die Software VitoWifi habe ich auf dem NodeMCU aufgespielt. Musstest du den PIC auf dem OTGW auch noch einmal anders flashen? Ich habe auf dem Gateway die SPannungsversorgung und die Pins für die Verbindung zum Vitovent „-> Boiler“ und die das NodeMCU verlötet. Hab keine Infos gefunden ob hier noch Stiftleisten oder PinHeader notwendig sind?

In der Anleitung meiner Vitovent steht nicht expliziert OpenTherm sondern nur „Anschluss Handbedienteil“ Ist das bei dir genauso? Ich habe auch bisher kein Handbedienteil da ich das Gerät komplett über Smarthome steuern möchte.

Wenn ich auf dem NodeMCU IP/index aufrufe sieht es so aus als gibt es keine Verbindung zur Vitovent, hast du noch eine IDee bzw. weißt du ob ein Handbedienteil zwingend notwendig ist?

Danke und Gruß

Ich gehe davon aus dass eine Fernbedienung/Handgerät benötigt wird.
Da das OTGW ja „mitsnifft“ auf dem Bus.

Hier das Anschlussschema:
Vitovent Hauptgerät ---------------[2Adern]------ (Boiler) OT-Gateway (Thermostat) —[2Adern]------------
Vitovent Bedienteil

Ich hab mir das fertig gelötete Gateway bestellt. Der PIC war somit schon programmiert.
Ob bei dem Kit das Teil bereits geflasht ist? GUte Frage, die würde ich den Shop fragen…

Zum testen, würde ich erstmal schauen, ob der ESP sauber funktioniert. Ich musste mehrmals ran.
D.h. kommst du in das eigene Inital WLAN rein und kannst deinen WLAN Daten einpflegen.
Wählt sich der ESP dann sauber in ddeinem WLAN ein?
Ist die Status Webseite erreichbar? Wenn ja, würde ich erst dann das Teil auf das Gateway stecken.

Ist die Fernbedienung denn so teuer? Meine Lüftungsanlage ist eigentlich von „Brink“. Das Zubehör von Brink gibt es teilweise günstiger. Daher würde ich an deiner Stelle schauen, wer dein System tatsächlich herstellt und das Zubehör prüfen.
Die Fernbedienungen bei fast allen Heizungshersteller sind übrigens meist von den Bekannten Herstellern wie Kromschröder, Siemens, …

Schau doch mal bei Brink nach, ob deine Lüftungsanlage nicht auch von diesem großen OEM Hersteller kommt.
Dann kannst du deren Zubehör durchschauen…

Übrigens gibt es solche Fernbedienungen oft günstig bei Ebay Kleinanzeigen.

Vielen Dank für die schnelle Rückmeldung.
Mein NodeMCU läuft und ich kann auch die Status Seite anschauen. Allerdings kann er hier scheinbar nichts von dem Lüftungsgerät auslesen…

Hast du das folgende BedienteiL? viessmann LB1 bzw. ein gleich aussehendes?

Wie gesagt, habe ich die Vitovent 300 -OHNE „W“ - aus 2009. Mein ist eine umgelabelte Brink Renovent HR Large.
Deine Vitovent 300W ist ein anderes Gerät. Evtl. das neueste Brink Modell Excellent 300 / 400.

Prüfe doch einfach, ob die Eckdaten zu deiner passen:

https://www.brinkclimatesystems.de/getattachment/982b2bc2-50eb-4029-bb75-a164d32554fb/Renovent-Excellent---Renovent-Excellent-Plus.aspx

Dann kannst du schauen, ob du deren Fernbedienung kaufen kannst - (sofern günstiger)…

Hallo!

Ich bin der Author des GitHub - apdlv72/VitoWifi Projektes.

Die Information yum Filterwechsel versteckt sich im allgemeinen Status.
Normalerweise sendet meine Vitovent dort die Werte „status“:[1,2]

Wenn der Filter gewechselt werden muss, aendert sich dieser Wert.
Bisher war das in der Regel immer so, dass das 2. Byte sich auf den Wert 32 aendert.
Manchmal sind aber auch gleichzeitig weitere Bits gesetzt, deren Funktion ich noch nicht herausgefunden habe.

z.B. habe ich schon den Werte 98 (binaer 1100010) gesehen.
Das 6. Bit von rechts ist das mit mit der Wertigkeit 32.

Die Information „filterCheck“:1 in der Ausgabe von VitoWifi ist leider falsch.
Ich habe in irgendeinem Forum die Info erhalten, dass der Filterwechsel in den „tsps“ (transient parameters) an der 23. Stelle steht. Leider scheint das falsch zu sein.

Richtig waere daher im Code:

      // Arduino C++
  // falsch: String filterCheck = String(state.tsps[23], 16);
  String filterCheck = (state.status.lo & 32) ? "1" : "0"

Ich habe das leider nisher aus Zeitgruenden noch nicht anpassen koennen.
In meiner Android App, mit der ich die Luefterstufe abhaengig von der Luftqualitaet steuere, nehme ich der Einfachheit halber an, dass der Status immer [1,2] ist und falls nicht, ein Filterwechsel ansteht (oder ein anderes Problem besteht).
Bisher hat das immer gepasst:

// Java
public boolean isFilterOkay() throws JSONException {
    Integer[] hiLo = getStatus();
    return 1==hiLo[0] && 2==hiLo[1];
}

Hoffe Dir geholfen zu haben,

VG,
Artur

Hallo!

Der Controller (Handteil) ist meines Wissens zwingend notwendig, auch wenn Du die Lueftung eigentlich nicht damit, sondern mit dem OTGW/VitoWifi steuern moechtest.

Der Grund ist, dass die beiden Geraete (Master=Vitovent, Slave=Controller) staendig Infos hin- und herschicken.
Das OTGW snifft dabei i.d.R. nur mit, einzige Ausnahme ist der Befehl zum Einstellen der Lueferstufe den der Controller zur Vito schickt. Unabhaengig davon, was der Controller gerne haette … die Stufe wird mit dem Wert ueberschrieben, den Du auf dem VitiWifi einstellst. Der Wert des Controllers wird lediglich mitprotokolliert und findes sich u.a. in der Ausgabe der API Abfrage:

„vent“:{„set“:1,„override“:2,„ackn“:2,„reported“:1 ,„relative“:38},

set=Wert, den der Controller setzen moechte
override=Wert, mit dem VitoWifi den obigen ueberschreibt
ack=Wert, der von der Vitovent als gesetzt bestaetigt
reported=Wert, den VitoWifi an den Controller zurueckmeldet

In dem Beispiel wollte der Controller Stufe 1, VitoWifi ueberschrieb ihn mit Stufe 2, was die Vitovent auch uebernommen und bestaetigt hat. VitoWifi merkt sich den Wert, den der Controller wollte und sendet eine passende Rueckantwort, damit der Controller „happy“ ist.

Hoffe, Dir geholfen zu haben.
VG aus Koeln

Ich setze das ganze derzeit quick & dirty ein per Webfront:

Setzen von Lüftungsstufen

3 Partymodus
2 Normal
1 Reduziert
0 Standby

<?
// Webseite: "http://vitowifi/api/status";
if($IPS_SENDER == "WebFront")
 {
 switch($IPS_VALUE)
 {
 case 3:
 Sys_GetURLContent("http://192.168.2.44/api/set?level=3");
 SetValue(23177 /*[Haus\Keller\Lueftungsanlage\VITOWIFI\Status KWL]*/,3);
 break;
 case 2:
 Sys_GetURLContent("http://192.168.2.44/api/set?level=2");
 SetValue(23177 /*[Haus\Keller\Lueftungsanlage\VITOWIFI\Status KWL]*/,2);
 break;
 case 1:
 Sys_GetURLContent("http://192.168.2.44/api/set?level=1");
 SetValue(23177 /*[Haus\Keller\Lueftungsanlage\VITOWIFI\Status KWL]*/,1);
 break;
 case 0:
 Sys_GetURLContent("http://192.168.2.44/api/set?level=0");
 SetValue(23177 /*[Haus\Keller\Lueftungsanlage\VITOWIFI\Status KWL]*/,0);
 break;
 }
 }

Schalter 3,2,1 einfach per HTML Variable setzen und das Skript verlinken, fertig.

Die anderen Sachen muss ich mir noch anschauen, mit Luftfilterwechsel.
Bisher lasse ich mir den Luftfilterwechsel anhand des zunehmenden Stromverbrauchs der KWL anzeigen.
Ich habe Richtwerte und wenn dies überstiegen wird, dann sind die Filter zu wechseln.

Da ich inzwischen einen Velux Luftgütesensor in der Luftansaugung der Vitovent habe, kann ich zukünftig die Lüftung herunterfahren, wenn der Landwirt seine Gülle ausfährt :slight_smile:

Die Abfrage der Status seite „IP/api/Status“ gibt folgende Ausgabe:

{
  "ok":1,
  "build":"Feb  2 2018 23:11:10",
  "reboots":"361",
  "now":925766061,
  "uptime":"10d,17h,9m,26s",
  "lastMsg":{"serial":925765262},
  "dbg":{"level":0},
  "vent":{"set":2,"override":2,"ackn":2,"reported":2,"relative":50},
  "temp":{"supply":2160,"exhaust":2050},
  "status":[3,70],
  "faultFlagsCode":[0,6],
  "configMemberId":[7,0],
  "masterConfig":[0,18],
  "remoteParamFlags":[0,0],
  "filterCheck":1,
  "messages":{
    "total":1891664,
    "serial":1891664,
    "invalid":{"len":12405,"format":0,"src":2},
    "expected":{"T":1661372,"B":913931,"R":25532,"A":25480},
    "unexpected":{"T":0,"B":1,"R":1,"A":1,"zero":0}
  },
  "freeheap":37424,
  "debug":0,
  "sensorsFound":0,
  "lastMeasure":21161,
  "sensors":[0,0,0,0,0,0],
  "tsps":[
    65,0,150,0,94,1,20,44,
    -1,-1,-1,100,-1,-1,-1,-1,
    -1,1,1,2,0,-1,-1,1,
    0,-1,-1,-1,-1,-1,-1,-1,
    -1,-1,-1,-1,-1,-1,-1,-1,
    -1,-1,-1,-1,-1,-1,-1,-1,
    44,1,-1,-1,150,0,0,122,
    121,-1,-1,-1,150,0,110,0]
}

Wie kann ich in IPS nun die Werte:

„vent“:{„set“:2,„override“:2,„ackn“:2,„reported“:2,„relative“:50},
„filterCheck“:1,

bei „vent“ interessiert mich „override“

mit was kann ich das auslesen?

Danke für die Denkanstösse

Hallo Mastermind,

ich habe meinen ESP8266 mit dem Projekt aus deinem Link geflasht. Sehe allerdings nicht den Accespoint im WLAN. Du hattest auch Probleme. Welche?

Was mache ich falsch?

Vielen dank.

Hallo zusammen,

ich bin bei der Suche nach Hilfe über diesen Thread gestolpert. Ich möchte meine Viessmann Vitovent 300-W auslesen und steuern. Hat das bei Euch geklappt? Hier im Thread habe ich herausgelesen, dass es da wohl Probleme gab…