Arduino Forum

International => Deutsch => Topic started by: VerirrtesSchaf on Feb 08, 2015, 12:01 pm

Title: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Feb 08, 2015, 12:01 pm
Hallo liebe Gemeinschaft,

da ich über die Suche leider nicht fündig geworden bin und meine Versuche mit DS18B20 nicht von Erfolg gekrönt war wollte ich mal nachfragen, ob jemand bereits Erfahrungen mit dem Auslesen der Temperaturen der Heizungsanlage über die vorhandenen Schnittstellen (KM-Bus oder Optolink) mit dem Arduino mal ausprobiert hat.
Einige Anregungen habe ich bereits bei http://openv.wikispaces.com/ gefunden, allerdings ohne direkte Anbindung an einen Arduino, da vor allem das Protokoll des KM-Bus wohl recht trickreich ist.

Vielen Dank schon mal für die Anregungen

VerirrtesSchaf
Title: Re: Viessmann Heizungssteerung auslesen
Post by: kurti on Feb 08, 2015, 07:42 pm
und meine Versuche mit DS18B20 nicht von Erfolg gekrönt waren ...
Moin,
was war denn Dein Problem mit den DS18B20 ?
Die laufen bei mir super, auch mehrere, einzeln ansprechbar.

Gruss
Kurti
Title: Re: Viessmann Heizungssteerung auslesen
Post by: rudirabbit on Feb 08, 2015, 08:01 pm
@VerirrtesSchaf: Erfahrung habe ich mit dieser Heizung nicht, aber das Protokoll ist dokumentiert das ist schon mal gut.

Wenn du eine Hardware für den PC hast um auf die Heizung zu greifen, würde ich mit einem Terminalprogramm erstmal Befehle schicken die laut Protokoll Sinn machen könnten.
Und dann schauen was da so kommt.

Wenn du was Plausibles hast, auf den Arduino umsetzen.

Ein bisschen Erfahrung mit sowas wäre schon nicht schlecht....
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Scherheinz on Feb 08, 2015, 11:02 pm
Interessantes Thema, aber es ist schwer Informationen darüber zu finden.

Was willst du denn genau machen?

Sieh dir mal dieses Thema an:

http://forum.arduino.cc/index.php?topic=207766.0 (http://forum.arduino.cc/index.php?topic=207766.0)

Gruß
Title: Re: Viessmann Heizungssteerung auslesen
Post by: michael_x on Feb 09, 2015, 08:30 am
openv optolink ist schon die richtige Adresse. Soo trickreich ist das serielle Protokoll nun auch nicht, dass es nicht mit einem Arduino ginge.

von dieser Schaltung http://openv.wikispaces.com/LAN-Ethernet+%26+USB+Kombiadapter
brauchst du nur den SEND_IR und REC-IR Teil rechts (Das REC-IR Signal an einen INPUT_PULLUP Pin )
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Feb 11, 2015, 09:51 pm
Schon mal danke für die Antworten.

Die Lösung mit den Temperatursensoren hat deshalb nicht funktioniert, weil ich unzufriden damit war :) Problem war, dass ich keine Sensoren in Tauchhülsen verbauen konnte sondern die Sensoren mit Wärmeleitpaste und Kabelbinder am Rohr befestigen wollte. Das hat zum einen nicht richtig gut gehalten und zum anderen, dass die Temperatur nicht wirklich gut gemessen wurde und mit Software-Offsets wolte ich nicht arbeiten.

Ich glaube aber die wohl praktikablere Veriante ist die Optolink-Variante. Mal sehen was die Bastelkiste so hergibt.

VerirrtesSchaf
Title: Re: Viessmann Heizungssteerung auslesen
Post by: michael_x on Feb 12, 2015, 12:29 pm
IR-Phototransistor mit Transistor und IR-Led mit insgesamt 4 Widerständen habe ich schon zusammengebastelt.

Zwei Stückchen einer Ader aus Standard NYM-J 1.5² Kabel kann man leicht so biegen, dass sie in das Viessmann V  zur Befestigung passen.

4800 8E2 kann die Hardware Serial Schnittstelle des Arduino direkt.
Das zyklische 0x05 der optolink-Schnittstelle habe ich gesehen, auf 0x16 0x00 0x00 habe ich auch die erwartete Antwort gekriegt (0x06, danach Ruhe). Der Rest sollte Fleissarbeit sein ;)
Eine Arduino Library für optolink steht (leider weit hinten) auf meiner ToDo Liste. Man könnte sie auch NiceToHave - Liste nennen. ;)

Falls du dich direkt dransetzt, solltest du wissen, dass ich an Ergebnissen und Erfahrungen interessiert bin.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Scherheinz on Feb 12, 2015, 07:35 pm
Dann melde ich auch mal Interesse an jeglichem Fortschritt an!

Gruß
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Mar 28, 2015, 08:49 pm
So....nach langer Zeit hab ich mal endlich zeit gefunden den Versuch zu wagen. Nach einiger Lektüre dieses Wikis: http://openv.wikispaces.com/ habe ich mich dran gemacht die Schaltung http://openv.wikispaces.com/file/view/Optolink_ARM9_v1.pdf/405736108/Optolink_ARM9_v1.pdf aufzubauen. Leider ist die scheinbar für den Arduino weniger geeignet. Er empfängt nicht das 0x05 sondern 0x00. Auch das senden habe ich bisher nicht geschafft. Funktionstüchtig ist die IR-Diode aber (Kameratest).

Wenn ich anstatt der beschrieben Schaltung einen einfachen BPW40 von Reichelt mit einem Kollektorwiderstand nehme, empfange ich die Daten korrekt.

Hat jemand noch eine praktikable Idee für die Sendediode oder wäre es vllt einfach ratsam direkt die Diode vom Arduino aus zu treiben ohne den Umweg über den Transistor. Ein Ausgang des AtMega sollte ja soweit ich weiß maximal 20mA treiben können.

Oder hat jemand eine bessere Idee, bzw andere Erfahrungen? Steuerung ist eine Vitotronic 200 KW1.

Verirrtes Schaf
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Scherheinz on Mar 29, 2015, 11:38 am
Irgendwo auf der Seite (http://openv.wikispaces.com) hatte ich gelesen das der Diodenstrom nicht zu groß sein darf da sonst der Empfänger der Viessmann übersteuert und keine Daten mehr liefert.

Gruß
Title: Re: Viessmann Heizungssteerung auslesen
Post by: michael_x on Mar 29, 2015, 11:42 pm
Ich meine mich zu erinnern, dass die Senderichtung ohne extra Transistor ging:

Tx ----|<--- R --- 5V

In Ruhe ist Tx HIGH und die IR Led sollte aus sein. Der Widerstand war 330 oder 470 Ohm. Müsste ich aber nochmal rauskramen. Auch sollte die Sendediode nicht den Empfangs-Phototransistor stören.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Apr 04, 2015, 10:00 pm
So, senden und empfangen funktioniert soweit. Allerdings nur mit der Software http://openv.wikispaces.com/v-control Da funktioneirt alles bestens. Die Software liest alles sauber aus, alles super. Wenn ich aber mit dem Arduino das ganze versuche "nachzuahmen" schaffe ich es nicht auf die Steuerung zugrifen zu können. Es kommt zwar immer das 0x05 zyklisch, aber auf mein 0x16 0x00 0x00 reagiert die Heizung leider nicht.

Hier mal mein Test-Code:

Code: [Select]
void setup() {
  Serial.begin(4800,SERIAL_8E2);
  Serial2.begin(4800,SERIAL_8E2);
  Serial3.begin(4800,SERIAL_8E2);
}

byte zeichen1, zeichen2;

void loop() {
  while(Serial2.available() > 0) {
    zeichen1 = Serial2.read();
    Serial.write(zeichen1);
    if(zeichen1 == 0x05) {
      Serial2.write(0x16);
      Serial2.write(0x00);
      Serial2.write(0x00);
    }
  }
  while(Serial.available() > 0) {
    zeichen2 = Serial.read();
    Serial2.write(zeichen2);
}


Vielleicht hat ja jemand meinen Fehler entdeckt :)

Verirrtes Schaf
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Serenifly on Apr 04, 2015, 10:08 pm
Du musst wahrscheinlich auf die Antwort warten. Bei 4800 Baud brauchst du ca. 2ms pro Zeichen. Da kannst du nicht sofort Einlesen und erwarten das was ankommt.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Apr 04, 2015, 10:33 pm
Ich warte ja theoretisch bis zum nächsten zyklischen 0x05. Ich sende ja erst das 0x16 0x00 0x00 wenn ich das 0x05 empfangen habe. Und dann lass ich den Arduino ja einfach im loop laufen bis er wieder was empfängt.....
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Apr 11, 2015, 02:23 pm
Hat jemand noch eine Idee oder bereits praktische Erfahrungen damit?
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Scherheinz on Apr 12, 2015, 12:10 pm
Vll musst du hinter deinem 0x16 und deinen 0x00 jeweils ein /NL oder /CR mitsenden.

Gruß
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Jun 01, 2015, 07:57 pm
So.....um hier mal die Neuigkeiten rein zu bekommen.....

man sollte halt mit dem richtigen Protokoll arbeiten. Meine Heizungsregelung spricht nicht das 300er-Protokoll von Viessmann, sondern lediglich das KW-Protokoll. Nach ein paar Versuchen antwortet die Heizung nun auch.

Dann werd ich das mal weiter vertiefen :)


VerirrtesSchaf
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Scherheinz on Jun 02, 2015, 11:42 am
Welche Daten bekommst du bis jetzt heraus?
Title: Re: Viessmann Heizungssteerung auslesen
Post by: michael_x on Jun 02, 2015, 03:00 pm
Bin nicht sicher ob viess-data 2.0 (http://openv.wikispaces.com/Viess-Data+2.0) neben 300 auch noch das KW Protokoll unterstützt.
Ich denke, mehr als da realisiert ist, geht nicht.

Title: Re: Viessmann Heizungssteerung auslesen
Post by: Scherheinz on Jun 02, 2015, 07:15 pm
Bin nicht sicher ob viess-data 2.0 (http://openv.wikispaces.com/Viess-Data+2.0) neben 300 auch noch das KW Protokoll unterstützt.
Ich denke, mehr als da realisiert ist, geht nicht.


Och mir würde das vollkommen reichen :)
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Jun 04, 2015, 09:11 pm
Ja das was da realisiert ist, ist mehr als genug. Ich bekomme natürlich die Temperaturen von Kessel, Außenfühler, Wasserspeicher, etc, aber auch Pumpenstati, Brennerstatus und auch die Solardaten von der Vitosolic 100 (ist über den KM-Bus mit der Heizung verbunden)
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Scherheinz on Jun 05, 2015, 10:53 am
Ja das was da realisiert ist, ist mehr als genug. Ich bekomme natürlich die Temperaturen von Kessel, Außenfühler, Wasserspeicher, etc, aber auch Pumpenstati, Brennerstatus und auch die Solardaten von der Vitosolic 100 (ist über den KM-Bus mit der Heizung verbunden)
Dann merkst du ja auch sofort wenn die Heizung mal ausfallen sollte und zwar bevor die Bude kalt wird.
Musst nur noch die Meldung aufs Handy etc bringen  8)
Title: Re: Viessmann Heizungssteerung auslesen
Post by: probono on Jun 21, 2015, 03:01 pm
Klasse Thread. Gibt es schon einen Sketch und eine Schaltung dazu? Wäre klasse, wenn ihr die auf github posten könntet. Danke! Man könnte dann mal versuchen, das Ganze auf einen ESP8266 zu portieren, somit könnte man die Heizung für unter 5 EUR ins WLAN bringen samt HTML-Interface...

https://github.com/esp8266/Arduino
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Aug 01, 2015, 01:55 pm
Mal wieder ein aktueller Stand:
Da ich nicht viel Zeit habe daran zu basteln, läuft es zwar langsam aber es läuft. Der Veruschsaufbau war vielversprechend. Schaltung etc kommt noch.
Ich hab inzwischen die Frontblende der Vototronic zerlegt und anstatt dem Lichtleiter die IR-Diode und den Fototransistor eingebaut. Jetzt kommt noch eine kleine Platine in die Frontblende und dann hoffe ich, dass die 4800 Baud-Schnittstelle die knapp 5 Meter bis zum Arduino schafft. Denke aber mit einem geschirmten Kabel sollte das klappen.
Schaltplan und Bilder folgen noch. Einen Sketch hab ich noch nicht, bisher hab ich den Arduino nur als Gateway und Pegelwandler benutzt.
Geplant ist noch folgendes: Der Arduino soll zum einen die Heizung auslesen (nur gewisse Werte natürlich), über die Heizung kann ich auch die Solaranlage auslesen. Außerdem will ich meine Tankanzeige (hat auch eine RS232-Schnittstelle) auslesen. Das ganze soll dann auf einem kleinen Webserver auf dem Arduino angezeigt werden. Vermutlich im XML-Format.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: michael_x on Aug 03, 2015, 04:30 pm
Quote from: VerirrtesSchaf
Der Veruschsaufbau war vielversprechend
Glückwunsch!
4800 Baud ist ja nicht so viel. Bei mir gehen 1,5m einfaches Telefonkabel (ungeschirmt, 4 Adern) problemlos. Die IR-Sendediode kriegt etwa 15 mA direkt über die Leitung, in Empfangsrichtung geht der Phototransistor direkt an der Heizung auf einen Transistor, der 5V / 1k = 5mA schaltet. Das sollte auch störsicher genug sein.

Quote from: probono
Man könnte dann mal versuchen, das Ganze auf einen ESP8266 zu portieren
Gute Idee. Melde dich, wenn du das probierst ;)


Ich zeige zum Spass per 300er Protokoll via atmega328 ein paar Daten auf einem 5110-Display an, und bin nicht motiviert genug, einen SD-Datenlogger dranzuhängen. (Turnschuh - Netzwerk ist irgendwie out)

Das openv - Forum (http://openv.wikispaces.com) kennt ihr hoffentlich? Sehr informativ, aber nicht so lebendig wie hier.
 
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Aug 08, 2015, 03:51 pm
So, um das ganze hier mal wieder aufzufrischen. Anbei mal der Schaltplan. Nicht sehr kompliziert, aber effektiv :)

An X1 hängt der Arduino.

X1-1 -> TX-Pin am Arduino
X1-2 -> Arduino 5V
X1-3 -> RX-Pin am Arduino
X1-4 -> Arduino GND

X2 ist die Sendediode:
X2-1 -> Diode Anode
X2-2 -> Diode Kathode

X3 ist der Fototransistor
X3-1 -> Emitter
X3-2 -> Collector
Title: Re: Viessmann Heizungssteerung auslesen
Post by: michael_x on Aug 10, 2015, 09:12 am
Quote
Nicht sehr kompliziert, aber effektiv
Minimalistischer gehts nicht. ( Ein Transistor+Widerstand weniger als bei mir )

Schön zu hören, dass selbst die Richtung Heizung -> Arduino über 5m funktioniert.

Danke für die Info.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: probono on Aug 15, 2015, 10:57 pm
Hier http://rocktagon.de/forum/viewtopic.php?f=24&t=84 gibt es eine Schaltung und einen Sketch (habe ich noch nicht versucht)

Code: [Select]
#define sim 0 //Siumliert einen direkten COM Port zum durchschleifen für Dekstop Programme
byte answer[8]="0000000";
byte answerCount=0;
byte answerPos=0;
byte aktMsgNr=255;
byte aktMsgWait=255;
byte allmsg=0;
long lastRead=0;

byte msgs[22][5]={ //msgbyte1,msgbyte2,answerlänge,answer(2 Byte)
  //Ist Werte
  {
    0x55,0x25,2,0,0  }
  ,//Aussentemperatur
  {
    0x08,0x00,2,0,0  }
  ,//Aussentemp Sensor 1
  {
    0x08,0x02,2,0,0  }
  ,//Kesseltemp Sensor 3
  {
    0x08,0x04,2,0,0  }
  ,//Speichertemp Sensor 5
  {
    0x08,0x06,2,0,0  }
  ,//Speichertemp 2 Sensor5B
  {
    0x08,0x08,2,0,0  }
  ,//Abgastemp Ses 15
  {
    0x08,0x0A,2,0,0  }
  ,//Rücklauftemp
  {
    0x08,0x0C,2,0,0  }
  ,//Vorlauftemp
  {
    0x39,0x00,2,0,0  }
  ,//Vorluaftemp M2
  {
    0x39,0x02,2,0,0  }
  ,//Vorlauftemp M3
  {
    0xA3,0x09,2,0,0  }
  ,//Kesseltemp
  {
    0x08,0x10,2,0,0  }
  ,//Kesseltemp Tiefpass
  {
    0x08,0x12,2,0,0  }
  ,//Speichertemp Tiefp
  {
    0x08,0x14,2,0,0  }
  ,//Speichertemp2 Teifp
  {
    0x00,0xF8,2,0,0  }
  ,//Kennung
  {
    0x63,0x00,2,0,0  }
  ,//Warmwasser soll
  //Sollwerte
  {
    0x25,0x44,2,0,0  }
  ,//Vorlaufsolltemp A1M1
  {
    0x55,0x5A,2,0,0  }
  ,//Kesselsolltemp
  //Steuerung
  {
    0x23,0x01,1,0,0  }
  ,// Betriebsart A1M1
  {
    0x33,0x01,1,0,0  }
  ,// Betriebsarte M2
  {
    0x23,0x02,1,0,0  }
  ,// Sparbetrieb A1M1
  {
    0x23,0x03,2,0,0  }// Partybetrieb

};

void setStat(byte msgNr,byte wert1,byte wert2=0){
  Serial1.write(0x01); //Start
  Serial1.write(0xF4); //Schreiben
  for (byte i=0;i<3;i++)
    Serial1.write(msgs[msgNr][i]); //Msg schreiben
  Serial1.write(wert1);
  if (msgs[msgNr][2]>1)
    Serial1.write(wert2);
}

void sendMsg(byte msgnr,bool ack=true){
  Serial.print(msgnr);
  Serial.print(": ");
  if (ack)        Serial1.write(0x01); //Start
  Serial1.write(0xF7); //Lesen
  aktMsgNr=msgnr;
  for (byte i=0;i<3;i++)
  {
    Serial.print(msgs[msgnr][i],HEX);
    Serial.write(" ");
    Serial1.write(msgs[msgnr][i]); //Msg schreiben
  }
  Serial.print(" -> ");
}

byte getStat(byte readto=0){
  if ((aktMsgWait!=255) &&  (Serial1.available()))
  {
    byte val = Serial1.read();
    if (aktMsgWait==245) //Datenempfang
    {
      Serial.print(val,HEX);
      Serial.print(" ");
      /*        Serial.print(answerPos);
       Serial.print(" ");
       Serial.println(answerCount);*/
      answer[answerPos]=val; 
      answerPos++;
      if (answerCount==answerPos) { //alles empfangen - Antwort ist nun in answer. Länge=answerCount
        msgs[aktMsgNr][3]=answer[0]; //Antwort in die Msg eintragen
        msgs[aktMsgNr][4]=answer[1];
        aktMsgWait=255;
        answerPos=0;
        Serial.println("");
        if (readto>0 && aktMsgNr==readto)
          return aktMsgNr;

        if (readto>0 && aktMsgNr<readto){
          //Direk nächste anfrage senden
          sendMsg(aktMsgNr+1,false);
          answerCount=msgs[aktMsgNr+1][2];
          aktMsgWait=245;
          answerPos=0;
          return aktMsgNr-1;
        }
        else
          return 245;

      }
    }
    if ( (val==5) && (aktMsgWait<200)) //Heizung senden im intervall 05, danach kann Übertragung starten
    {
      /*
        aktMsgWait:
       0.. 243-> msgnummer die auf sendung wartet
       245 -> innerhalb einer sendung
       255 -> nix zu tun
       */
      sendMsg(aktMsgWait);
      answerCount=msgs[aktMsgWait][2];
      aktMsgWait=245;
      answerPos=0;
    }
    lastRead = millis(); //Zeit des letzten bytes

      if ((answerPos==7)||((answerPos>0) && (millis()-lastRead>2000)))//Wenn am lesen und zu lange kein byte empfangen = reset
    {
      aktMsgWait=255;
      answerPos=0;
      return false;
    }
  }
  return false;
}
/*
  {0x55,0x25,2,0,0},//Aussentemperatur
 {0x08,0x00,2,0,0},//Aussentemp Sensor 1
 {0x08,0x02,2,0,0},//Kesseltemp Sensor 3
 {0x08,0x04,2,0,0},//Speichertemp Sensor 5
 {0x08,0x06,2,0,0},//Speichertemp 2 Sensor5B
 {0x08,0x08,2,0,0},//Abgastemp Ses 15
 {0x08,0x0A,2,0,0},//Rücklauftemp
 {0x08,0x0C,2,0,0},//Vorlauftemp
 {0x39,0x00,2,0,0},//Vorluaftemp M2
 {0x39,0x02,2,0,0},//Vorlauftemp M3
 {0xA3,0x09,2,0,0},//Kesseltemp
 {0x08,0x10,2,0,0},//Kesseltemp Tiefpass
 {0x08,0x12,2,0,0},//Speichertemp Tiefp
 {0x08,0x14,2,0,0},//Speichertemp2 Teifp
 //Sollwerte
 {0x25,0x44,2,0,0},//Vorlaufsolltemp A1M1
 {0x55,0x5A,2,0,0},//Kesselsolltemp
 //Steuerung
 {0x23,0x01,1},// Betriebsart A1M1
 {0x33,0x01,1},// Betriebsarte M2
 {0x23,0x02,1},// Sparbetrieb A1M1
 {0x23,0x03,2}// Partybetrieb
 */
void p(char *fmt, ... ){
  char tmp[128];
  va_list args;
  va_start (args, fmt );
  vsnprintf(tmp, 128, fmt, args);
  va_end (args);
  //        return tmp;
  Serial.println(tmp);
}

void printStats(){
  p("Aussentemp %d %d",msgs[0][3],msgs[0][4]);
  p("Aussentemp lowpass %d %d",msgs[1][3],msgs[1][4]);
  p("Kesseltemp %d %d",msgs[2][3],msgs[2][4]);
  p("Speichertemp %d %d",msgs[3][3],msgs[3][4]);
  p("Vorlauftemp %d %d",msgs[7][3],msgs[7][4]);
  p("Kesseltemp %d %d",msgs[10][3],msgs[10][4]);
  p("Warmwasser soll %d %d",msgs[15][3],msgs[15][4]);
}

void setup()
{
#if sim
  Serial.begin(4800,SERIAL_8E2);
#else
  Serial.begin(9600);
#endif
  //Hardware port    UCSR0C=0x0E; // 8n2
  //  SERIAL_8E2 0x2E
  Serial.println("start");
  Serial1.begin(4800,SERIAL_8E2);
  aktMsgWait=0; //Msg 0 abrufen
}


void loop() {
  /* getStat im loop lassen
   Zum senden einer nachricht aktMsgWait auf die Msg nummer setzen
   Wenn danach getStat==Msg Nummer wurde die Msg komplett empfangen */
#if sim
  if (Serial1.available()) Serial.write(Serial1.read());
  if (Serial.available()) Serial1.write(Serial.read());
#else

  //Zum neu einlesen einfach : aktMsgWait=0; - oder die msg die gelesenw erden soll
  if (getStat(19)==19)
    printStats();
#endif
}
Title: Re: Viessmann Heizungssteerung auslesen
Post by: probono on Jan 01, 2016, 11:38 am
Mein Setup mit Verlegung eines langen Telefonkabels läuft, aber we es per WLAN versuchen möchte, ich könnte mir vorstellen dass

https://github.com/beckdac/ESP8266-transparent-bridge

funktioniert. Auf dem Host Computer würde dann die ganz normale vcontrold Software laufen, man muss aber den Host nicht im Keller stehen haben. WLAN sollte dann aber gut abgesichert sein :)
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Guzzi-Charlie on Jan 22, 2016, 06:32 pm
Hallo zusammen,

ich bin zufällig auf diese Beiträge gestossen. Ich betreibe auch eine Viessmann Heizung die ich gerne auslesen würde. Die Heizung ist schon etwas älter und hat noch keine Optilink-Schnittstelle, sondern nur die 2-Draht-Bus (KM-Bus) Schnittstelle. Ich suche schon eine ganze Weile, konnte aber leider noch nirgends das vollständige Protokoll finden.

Hat Jemand hier vielleicht einen Tip wo ich die Doku zum Protokoll des KM-Busses findeen kann?

Ich bin noch ziemlich am Anfang meines ganzen "Smart Home" Projekts. Im Endeffekt möchte ich aber natürlich soviel wie möglich darin einbinden.

Gruß und Danke
Title: Re: Viessmann Heizungssteerung auslesen
Post by: michael_x on Jan 23, 2016, 01:10 pm
Quote
Tip wo ich die Doku zum Protokoll des KM-Busses findeen kann?
Im openv wiki ( http://openv.wikispaces.com ) ist auch ein Abschnitt zum KM Bus:

http://openv.wikispaces.com/KM-Bus+Interface (http://openv.wikispaces.com/KM-Bus+Interface)


[Nachtrag:] http://openv.wikispaces.com/KM-Bus (http://openv.wikispaces.com/KM-Bus) ist wohl der bessere Einstieg ;)
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on May 08, 2016, 04:48 pm
So um hier mal wieder eine Aktualisierung beizutragen mal der aktuelle Stand.

Erst mal vorweg: Es funktioniert!

Das ganze basiert jetzt auf der Optolink-Schnittstelle und wird über einen Arduino Mega 2560 ausgelesen.
Ausgelesen wird neben Temperaturen auch die Pumpenzustände und die Solaranlage (da über KM-Bus mit der Heizungssteuerung verbunden). Die Schnittstelle ist formschön in der Frontklappe der Steuerung verbaut.

Bilder und ausführliche Erläuterungen folgen, wenn alles komplett ist :) Allerdings hat mir der Linearregler des Arduino unschön mitgespielt. Sobald nämlich das Ethernet-Shield aufgesteckt ist ist die Stromaufnahme so groß, dass der Linearregler heiß wird und somit abschaltet. Als Lösung werd ich diesen nun noch "auslagern" und mit einem Kühlkörper bestücken.


Soweit der aktuelle Stand

VerirrtesSchaf
Title: Re: Viessmann Heizungssteerung auslesen
Post by: HotSystems on May 08, 2016, 05:07 pm
Wenn du statt des Längsreglers einen getakteten StepDown-Regler einsetzt, kannst du den Kühlkörper sparen.
Du kannst damit beide Module mit 5 Volt betreiben und der Spannungsverlust wird nicht in Wärme umgesetzt.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Scherheinz on May 08, 2016, 05:42 pm
Oder du klemmst ihn anstatt an einen Kühlkörper direkt ans Vorlaufrohr  :)
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on May 20, 2016, 06:28 pm
Also die Version mit dem Schaltregler war die bessere. Aufgebaut, ausprobiert, spart sogar 2W Primärleistung :D
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Scherheinz on May 20, 2016, 07:20 pm
Dann bin ich ja beruhigt  :smiley-lol:
Title: Re: Viessmann Heizungssteerung auslesen
Post by: bello12 on Nov 22, 2016, 06:04 pm
Hallo VerirrtesSchaf wie weit bist du mit der Erläuterung und den Bildern mit Sketch

Gruß bello12
Title: Re: Viessmann Heizungssteerung auslesen
Post by: Xanatos49 on Jan 04, 2017, 11:01 am
Hallo,


ich würde auch gerne mal den code sehen. Möchte das gleiche für meine Anlage nachbauen!

Grüße,
Marco
Title: Re: Viessmann Heizungssteerung auslesen
Post by: BigS on Feb 03, 2017, 11:03 am
Als Halter für die Sende und EmpfangsIRLed kann man übrigens auch ein Legotechnic Zahnrad benutzen. Die großen Löcher haben genau den richtigen Abstand und sind 4,9mm im Durchmesser (halten also super ne Standard LED) das Kreuz in der Mitte des Zahnrades wird mit einer Achse bestückt , diese passt genau in das V von Viessmann und hält alles am richtigen Platz.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: sth77 on Feb 03, 2017, 11:10 am
Schöne Qick&Dirty-Lösung, das hätte ich gern mal als Bild!
Title: Re: Viessmann Heizungssteerung auslesen
Post by: michael_x on Feb 03, 2017, 01:25 pm
http://openv.wikispaces.com/Bauanleitung+LEGO (http://openv.wikispaces.com/Bauanleitung+LEGO)
Title: Re: Viessmann Heizungssteerung auslesen
Post by: BigS on Feb 03, 2017, 02:16 pm
Ja genau so.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Feb 05, 2017, 06:34 pm
So, nach langer Zeit mal wieder ein Update zum Projekt, da ich leider etwas Zeitmangel habe.

Die Elektronik und der Arduino funktionieren soweit ganz gut. Die Werte die ausgelesen werden sollen werden auch ausgelesen. Langzeiterfahrungen hab ich noch keine. Der Sketch ist so aufgebaut, dass jedes mal nach dem 0x05 eine Abfrage durchgeführt wird.
Aufgrund der Änderungsraten der Werte frage ich manche Werte oft ab, andere eher selten, da die Wahrscheinlichkeit, dass sich diese ändern eher gering sind.
Dazusagen muss ich noch, dass ich zusätzlich auch noch einen Füllstandssensor der Firma ProJet besitze, der mit RS232 mit einem Microcontroller kommunizieren kann. Das mache ich nebenbei auch noch, also einfach ignorieren (funktioniert eh noch nicht).
Die Elektronik ist in der Frontschürze versteckt, wo auch die LEDs mit eingebaut sind. Der Arduino befindet sich mit ca. 6m Anschlusskabel in einem Spelsberg-Gehäuse.
Um die Störmeldung weiterhin visuell anzeigen zu können schaltet ein Ausgang eine LED an.

Jetzt muss ich nur noch das Netzwerkkabel in die Heizung bringen und dann kanns losgehen.

Anbei noch ein Paar Bilder, die mal zeigen wie das alles montiert ist.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: FlyingEagle on Feb 06, 2017, 12:02 am
Anbei noch ein Paar Bilder, die mal zeigen wie das alles montiert ist.
Fehlen dir nur bei mir?

Ich hoffe nicht es überlesen zu haben, aber um welches Heizungsmodell genau geht es hier?
Title: Re: Viessmann Heizungssteerung auslesen
Post by: bello12 on Apr 10, 2017, 08:28 am
bei mir fehlen die Bilder auch. Ein Sketch dazu und man könnte weiter machen

gruß bello12
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Apr 17, 2017, 10:51 am
So, da Ostern ist hier was fürs Nest (ich weiß, dass die Bilder gefehlt haben; waren zu groß und ich hatte keine Zeit mich mal drum zu kümmern)

Anbei nun erst mal die Bilder.

Soviel vorweg: Seit vorgestern Läuft der Arduino und liest (bisher) zuverlässig aus.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Apr 17, 2017, 11:03 am
Leider kann ich aus irgend welchen gründen die anderen Bilder nicht hochladen. Schade eigentlich.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: VerirrtesSchaf on Apr 17, 2017, 11:28 am
Anbei der Code. Nicht wunder, ist nicht die sauberste Programmierung und vllt ein wenig umständlich.
Title: Re: Viessmann Heizungssteerung auslesen
Post by: FlyingEagle on Apr 18, 2017, 07:25 am
Dann lad sie - auch wenn nicht gern gesehen - doch einfach mal bei einem freehoster hoch, dann kann man ja evtl. sehen warum es hier nicht geht.
Danke fürs Teilen!

PS: evtl. habe ich es hier überlesen - Welche Schaltung hast du denn nun am Ende genommen? Schaltplan?
Title: Re: Viessmann Heizungssteerung auslesen
Post by: JensBernd on Feb 16, 2019, 06:18 pm
Hallo zusammen,

ich bin langsam etwas verzweifelt, bei mir läuft das einfach nicht. hab mir IR/Foto-Diode aus einem Receiver ausgelötet. das scheintt irgendwie nicht zuklappen. Muss ich mir da andre besorgen?

Welche Bauteile hast du denn verwendet. Danke schon mal vorab...

Hast Du schon eine Langzeiterfahrung?   

DAnke!!!!
Title: Re: Viessmann Heizungssteerung auslesen
Post by: postmaster-ino on Feb 16, 2019, 08:55 pm
Hi

Zumindest hast Du Gottvertrauen - ein 2 Jahre alten Thread aufwärmen - Das muß nicht klappen.

Du hast also eine IR-Diode/einen IR-Transistor aus einem Receiver ausgelötet - sind nähere Daten bekannt oder könnten aufgrund des Modell herausgefunden werden?

Hast Du auch die zugehörige Fernbedienung?
Die würde zumindest schon Mal in der Frequenz senden, Die der Empfänger erwartet.

Funktioniert diese original Fernbedienung?
Das kannst Du prüfen, in dem Du mit der Handy-Kamers die Sende-Diode beim Knöbschedrügge beobachtest - Die muß weiß/gräulich aufblitzen.

MfG
Title: Re: Viessmann Heizungssteerung auslesen
Post by: michael_x on Feb 17, 2019, 04:17 pm
Der Empfänger einer IR-Fernbedienung ist üblicherweise kein Phototransistor, sondern ein IC der auf eine  Modulationsfrequenz (zb 38 kHz) fest eingestellt ist. Sowas kannst du hier nicht brauchen.