+ Antworten
Seite 1 von 31 1 2 3 11 ... LetzteLetzte
Ergebnis 1 bis 10 von 306
  1. #1
    Registriert seit
    Aug 2007
    Ort
    Baden-Württemberg
    Beiträge
    379

    Hallo,

    nach einer ersten Testphase möchte ich hier meine derzeitige Integration einer Viessman Heizung (in meinem Fall einer Vitodens 200 mit Vitotronic 200 Steuerung) vorstellen.
    Die Anbindung erfolgt einfach über die Serielle Schnittstelle (bei mir über einen USB Konverter) mittels des Optolink-Kabels von Viessmann. Sie verwendet die auf OpenV beschriebenen Details und basiert auf dem dort ebenfalls beschriebenen KW-Protokoll, welches die meisten Viessmann Steuerungen unterstützen und für mich am einfachsten in der Umsetzung war.
    Leider stimmen nicht alle Adressen, die auf OpenV kommuniziert werden, so das ggf. nicht alle Werte abgefragt werden können. Bei mir funktioniert leider ausgerechnet die Sammelstörung nicht . Dafür aber alle Temperaturwerte und Betriebsmodi. Hier ist also noch etwas tüftelei angesagt. Da dies so ist habe ich die gesamte Lösung so angelegt, das man nur in einem XML File Änderungen vornehmen muss, um eine neue Adresse hinzuzufügen oder ausprobieren zu können.

    Aber kommen wir zur Lösung selbst:
    1. Benötigte Hardware
      Für die Anbindung ist das Optolink-Kabel von Viessmann erforderlich. Lieferanten werden auf OpenV benannt oder können leicht durch Google gefunden werden. Der Preis liegt bei ca. 100,-- €. Alternativ findet sich auf OpenV eine Bauanleitung. Ich habe das Originalkabel.
      Zusätzlich benötigt man noch ggf. einen RS232/USB Konverter für den Anschluss an den PC, so dass man die Kopplung über einen COM-Port vornehmen kann.

    2. Instanzen und Variablen
      Für die Anbindung benötigt man nun zwei Instanzen (Serial Port, Register Variable) sowie vier Variablen.
      Zunächst legt man in IPS lden passenden Serial-Port mit den Werten [b]4800 8 E 2, ohne Handshake Protokoll[b], an. Den Port kurz zum testen öffnen, dann aber wieder schliessen!
      An diese Instanz hängt man nun eine Register Variable an. Ein Cutter wird nicht benötigt, da das Viessman-KW-Protokoll keine konstanten Längen oder Trennzeichen kennt!
      Jetzt noch 3 Variablen: "Kommando", "Rückgabewert" und "Steuerungstyp". Alle vom Typ STRING. Dazu noch eine Variable "Verbindung ok" vom Typ BOOLEAN.
      In meiner Installation sieht das ganze so aus (die Variable "Verbindung ok" ist nicht auf dem Bild):


    3. Anlegen der benötigte Skripte
      Man legt jetzt die im Anhang befindlichen Skripte wie folgt an. Dabei müssen als Skriptnamen keine IPS generierten Namen sondern die hier genannten Namen verwendet werden:


      • ViessmannDeviceTools.inc.php
        Muss nur im Skript-Verzeichnis vorhanden sein, da es für die Verwendung der Anbindung inkludiert werden muss.
      • ViessmannVariables.inc.php
        Das Skript muss prinzipiell auch nur im Skript-Verzeichnis vorhanden sein. Da es aber editiert werden muss, bietet es sich an, dieses Skript auch in IPS anzulegen.
      • ViessmannDeviceOutputHandlingKW.php
        Dieses Skript muss in IPS angelegt werden. Es handhabt die gesammte Kommunikation mit der Heizung über den COMPort und sollte nicht verändert werden (bei Fehlern mich bitte informieren )


      Das war's schon fast.

    4. Verknüpfungen anlegen
      Es müssen nun im Skript ViessmannVariables.inc.php die zuvor in Schritt 2 angelegten Instanzen und Variablen bekannt gemacht werden. Dies dürfte selbsterklärend sein
      Anschliessend weisst man der in Schritt 2 angelegten RegisterVariable das Skript ViessmannDeviceOutputHandlingKW.php zu.

    5. Erster Test
      Nachdem man all dies gemacht hat, kommt nun ein erster wichtiger Test. Das Problem bei der Viessmann-Anbindung ist, das es viele verschiedene Steuerungstypen gibt, die zudem unterschiedliche Adressen für die Ablage der Informationen verwenden. Aus diesem Grund muss man zunächst wissen, welche Steuerung man eigentlich hat. Glücklicherweise ist diese Funktion in Skript ViessmannDeviceOutputHandlingKW.php enthalten.
      Man öffnet jetzt einfach den COMPort zur Viessmann Heizung. Da die Variable "Steuerungstyp" nicht gefüllt ist, wird automatisch versucht, den Typ der Steuerung auszulesen und in dieser Variable abzulegen. Sobald man diese in IPS sieht (sollte nicht länger als 5-10 sek. dauern), schliesst man den COMPort wieder.
      Sollte kein Steuerungstyp ermittelt worden sein, so stimmt etwas mit der Verbindung nicht. Als erster Schritt kann man sich im Debugger den Datenfluss auf der COM-Verbindung anschauen. Bei geöffneter Verbindung sollte dort ein hex 0x05 zu sehen sein....

    6. Steuerungsdaten
      Ich habe leider nur die Steuerung 20CB - VScotHO1 zur Verfügung (Vitodens 200). Aus diesem Grund habe ich ein XML File für diese Steuerung erstellt und beigefügt: ViessmannDevice20DB.xml
      Diese Datei muss ebenfalls in das Skriptverzeichnis kopiert werden.
      Sollte man eine andere als die Steuerung 20CB haben, so muss man nun für seine eigene Steuerung eine passende XML Datei (Namenskonvention "ViessmanDevice<4stelliger Steuerungscode>.xml" erstellen. Das Format der XML ist - denke ich - selbsterklärend. Im wesentlichen geht es um die 4-stelligen Adressen sowie die Antwortlänge und das Format. Näheres findet man ggf. auf OpenV. Das XML muss übrigens mit UTF-8 abgespeichert werden, da sonst der PHP Parser probleme machen könnte... (ich nute PSPAD als Editor).

      Man sollte jetzt also alle Skripte angelegt, den Steuerungstyp ermittelt sowie das passende XML in Skript-Verzeichnis abgelegt haben.

    7. Abfragen von Werten
      Im XML werden diverse COMMANDs definiert. Mittels dieser kann man nun Werte der Heizung abfragen. Dazu legt man eine Zielvariable mit passendem Typ zum Kommando an (z.B. Float für Temperaturen, Integer für Count, Boolean für Boolean oder einfach String für sonstige). Ab jetzt ist's dann ganz einfach:
      PHP-Code:
        // Variablen Includieren
        
      include( "ViessmannDeviceTools.inc.php" );
        
        
      // Verbindung zur Heizung öffnen
        
      ViessmannOpen();

        
      // Wert Abfragen
        
      ViessmannSetVariableByCommand"AussentemperaturGedaempft", <IPS-ZielVariablenID> );

        
      // Verbindung schliessen
        
      ViessmannClose(); 
      Das war's. Die Funktion ViessmannSetVariableByCommand nutzt das im XML definierte Kommando "AussentemperaturGedaempft" um anhand der hinterlegten Adresse den Wert auszulesen. Er wird anschliessend konvertiert und an die Variable "<IPS-ZielVariableID>" übergeben.
    8. Setzen von Werten
      Das Setzen von Werte erfolgt analog zum Abfragen.
      PHP-Code:
        // Variablen Includieren
        
      include( "ViessmannDeviceTools.inc.php" );
        
        
      // Verbindung zur Heizung öffnen
        
      ViessmannOpen();

        
      // Partymodus für Kreis A1M1 aktivieren
        
      ViessmannSetData"PartybetriebA1M1"chr(0x01) );

        
      // Verbindung schliessen
        
      ViessmannClose(); 
      Das Kommando ViessmannSetData übergibt einen Wert (hier hex 0x01 (=true)) an die Adresse des Kommandos "PartybetriebA1M1". Fertig.

    9. Sonstiges
      • Ein Blick in die ViessmannDeviceTools.inc.php lohnt sich ggf., da dort noch die eine oder andere praktische Function vorhanden ist.
        Zudem ist dort auch die Konvertierungsfunktion ViessmannConvertData zu finden, welche die Daten konvertiert. Da dies noch nicht für alle Formate der Fall ist (oder man ggf. anders konverieren möchte) wäre hier der Ansatzpunkt.
      • Das Öffnen und Schliessen des COMPorts ist notwendig, da sich ansonsten (zumindest bei mir) die Verbindung nach ca. 24h verabschiedet hat.
      • Das Ändern eines Modus (z.B. auf Partybetrieb) wird an der Heizung verzögert visualisiert (ca. 1 min später).
      • Wenn man an der Heizung direkt z.B. den Partybetrieb aktiviert, und dann den Sparbetrieb, so wird automatisch der Partybetrieb deaktiviert. Dies geschieht leider NICHT über die Anbindung. Man sollte also beim setzen eines Modi, einen ggf. anderen aktivieren Modus deaktivieren!



    Mit dieser Anleitung sollte es möglich sein, seine Viessmann Heizung anzusprechen. Was jetzt noch fehlt sind die XML-Files für die unterschiedlichen Steuerungen. Diese kann man mir gerne zukommen lassen oder hier anhängen.

    Fragen? Immer her damit.

    Viel Spass
    Coyote

    Hi,

    leider scheint im ZIP File eine Datei leer zu sein. Ich komme erst heute abend zu einem erneuten Upload....

    Die Schritte 1 - 6 (also bis zum ermitteln der Steuerungs-Kennung sowie das dann notwendige erstellen der benötigten XML Datei) sollten allerdings ohne die fehlende ViessmannDeviceTools.inc.php funktionieren. Nur die Schritte 7,8 und 9 gehen leider erst nach meinem Upload heute abend. Man kann also schon "vorarbeiten".

    Gruss
    Coyote

    Hier die (hoffentlich) kompletten Dateien.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Instanzen und Variablen.jpg 
Hits:	19929 
Größe:	12.6 KB 
ID:	6538  
    Angehängte Dateien Angehängte Dateien
    Geändert von Ferengi-Master (24.01.10 um 23:34 Uhr)
    LCN, HomeMatic, IPS V4.1, iFront App, Apple Watch, 21.5" Touch, Webfront

  2. #2
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,126

    Standard Hört sich gut an!

    Hallo Coyote,

    hört sich gut an. Hattest du bereits ein Kabel von deiner Heizung zum PC liegen oder hast Du den PC direkt an der Heizung über ein Heimnetzwerk angebunden?

    Ich habe auch eine Viessmann. Ich weis nur noch nicht wie ich die mit kleinem Aufwand anbinden soll.

    Bis dann

    Martin

  3. #3
    Registriert seit
    Aug 2007
    Ort
    Baden-Württemberg
    Beiträge
    379

    Hi,

    ich habe einen PC in der Küche in der Wand eingebaut inkl. Netzwerk-Anbindung. Über einen Silex SX-2000WG+ (das Plus ist wichtig!) kann man USB 2.0 über das Netzwerk verlängern (ich habe z.B. eine Audio-Karte sowie einen RS232/USB direkt an einem Verstärker im Keller, die so an diesen PC angebunden ist).
    Die Heizung habe ich über ein weiteres direktes Kabel mittels eines Lindy-Passiv-RS232/USB(1.0) Extenders über RJ45 angebunden. Es gibt also diverse Möglichkeiten, solange du in die Nähe der Heizung mit einem Netzwerkkabel kommst

    Gruss
    Coyote
    LCN, HomeMatic, IPS V4.1, iFront App, Apple Watch, 21.5" Touch, Webfront

  4. #4
    Registriert seit
    Feb 2009
    Beiträge
    27

    Hallo Coyote, Danke für deine Arbeit.

    Ich habe auch eine VITODENS 200-W Typ WB2B ( steht auf der Serviceanleitung)

    Da ich noch ein Anfänger mit IPS bin möchte ich ganz klein anfangen.
    Ich habe schon alles nach deiner Beschreibung angelegt. Das Kabel ist bestellt.
    Ich möchte aber vorerst nur Werte auslesen.
    In der ViessmannDevice20CB.xml sind action='ReadOnly Angaben, damit kann ich doch anfangen ohne etwas zu zerstören, oder.
    Oder kann ich als Anfänger noch einen großen Fehler machen.

    Gruß

    mkass
    ____________
    M.f.G. Manfred

  5. #5
    Registriert seit
    Aug 2007
    Ort
    Baden-Württemberg
    Beiträge
    379

    Hi,

    lass zunächst einmal das Script deinen Steuerungstyp ermitteln. Dann kannst du ggf. schon mal Adressen mit OpenV abgleichen.

    Generell: Der Befehl "ViessmannGetData" oder "ViessmannSetVariableByCommand" nutzt nur die auf OpenV angegebenen LESE Kommandos. Nur ViessmannSetData verwendet das Schreib-Kommando.

    Die Angabe im XML (ReadOnly) wird nur sicherheitshalber verwendet. Wenn man nur die Lese-Kommandos verwendet, dann sollte(!) nichts passieren. Nur bekommt man bei falschen Adressen halt ggf. was falsches/ungültiges zurück.

    Gruss
    Coyote
    LCN, HomeMatic, IPS V4.1, iFront App, Apple Watch, 21.5" Touch, Webfront

  6. #6
    Registriert seit
    Dec 2009
    Ort
    Hamburg
    Beiträge
    78

    Hallo Zusammen,

    ich versuche gemäß Anleitung das Script zum Laufen zu bekommen, nur leider kommt immer folgende Fehlermeldung.


    Notice: Undefined variable: IPS_VALUE in [ViessmannDeviceOutputHandlingKW.php] on line 37
    R-0

    Was ist falsch? Ein Original Optolink Kabel ist angeschlossen und V_Control liefert auch Daten. Im Debugger sehe ich immer Hex05 zurück kommen.

    MfG Frank

  7. #7
    Registriert seit
    Feb 2009
    Beiträge
    85

    Halo Coyote,

    ich habe alles nach Deiner Anleitung gemacht - und mit openv funktioniert der Zugriff auch (via Moxa NPOrt 5100 TCP/IP<->RS232).

    Leider bekomme ich beim AUsführen von ViessmannDeviceOutputHandlingKW folgende Fehler - IPS will wohl den Steuerungstyp nicht feststellen:


    Notice: Use of undefined constant VIESSMANN_DEVICE_COMMAND - assumed 'VIESSMANN_DEVICE_COMMAND' in C:\IP-Symcon\scripts\ViessmannDeviceOutputHandlingKW.php on line 20

    Warning: Variable mit Namen "VIESSMANN_DEVICE_COMMAND" existiert nicht in C:\IP-Symcon\scripts\ViessmannDeviceOutputHandlingKW.php on line 20

    Notice: Undefined variable: IPS_VALUE in C:\IP-Symcon\scripts\ViessmannDeviceOutputHandlingKW.php on line 37
    R-0

    Ich wäre für einen Tipp sehr dankbar!
    Gruß
    Gunnar

  8. #8
    Registriert seit
    Dec 2009
    Ort
    Hamburg
    Beiträge
    78

    Hallo,

    Du hast wahrscheinlich Punkt 4 vergessen!
    Verknüpfungen anlegen
    Es müssen nun im Skript ViessmannVariables.inc.php die zuvor in Schritt 2 angelegten Instanzen und Variablen bekannt gemacht werden. Dies dürfte selbsterklärend sein
    Anschliessend weisst man der in Schritt 2 angelegten RegisterVariable das Skript ViessmannDeviceOutputHandlingKW.php zu.

    MfG Frank

  9. #9
    Registriert seit
    Feb 2009
    Beiträge
    85

    Hallo Frank,

    habe ich gemacht, alle IDs habe ich eingetragen. Funktioniert es bei Dir jetzt?

    Danke + Grüße
    Gunnar

  10. #10
    Registriert seit
    Dec 2009
    Ort
    Hamburg
    Beiträge
    78

    Hallo Gunnar,

    leider funktioniert es bei mir auch noch nicht, es bin mir derzeit auch nicht sicher ob die Schnittstelle immer geöffnet sein muss. Derzeit liefert der Debugger imme Hex05 von der Schnittstelle zurück.

    MfG Frank

Ähnliche Themen

  1. Rolladen und Heizungsventil Steuerung
    Von s.jungen im Forum Haustechnik
    Antworten: 5
    Letzter Beitrag: 01.10.09, 22:07
  2. Synco Living | Viessmann Vitohome 300 - kompatibilität
    Von King-Nova im Forum KNX/EIB, LCN
    Antworten: 0
    Letzter Beitrag: 09.08.09, 08:54
  3. Entfernte Steuerung einbinden
    Von Jersey im Forum Haustechnik
    Antworten: 4
    Letzter Beitrag: 05.07.06, 17:21