+ Antworten
Seite 11 von 42 ErsteErste ... 9 10 11 12 13 21 ... LetzteLetzte
Ergebnis 101 bis 110 von 414
  1. #101
    Registriert seit
    Jan 2011
    Beiträge
    13

    HI Coyote,

    sorry für die Nachfrage, aber bist Du mit der Implementierung des 300er Protokoll weitergekommen, die Abfragen mit den KW Protokoll laufen Dank Deiner Arbeit zwar, allerdings nicht wirklich stabil. Würde jede Art von der 300er Implementierung begrüßen, leider auch mit dem Statement bedingt durch meine Fähigkeiten nicht wirklich beitragen zu können, außer Feedback zu geben und als Tester gerne mitzuarbeiten.

    Grüße
    Spechtl

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

    Ich komme sehr gut mit dieser Beschreibung zurecht.

    Zum testen habe ich das genommen.
    Bis dann

    Martin

  3. #103
    Registriert seit
    Jul 2008
    Ort
    Wiesbaden
    Beiträge
    131

    Zitat Zitat von Schablone Beitrag anzeigen
    Ich komme sehr gut mit dieser Beschreibung zurecht.

    Zum testen habe ich das genommen.
    Habe versucht mal ein Testscript an eine Registervariable zu hängen und das 300er Protokoll auszutesten. Bin nicht weitergekommen. Hat jmd. schon ein php-Testscript zum Laufen gebracht?

    Ich kann via php den Bus in den 300er Modus versetzen und auch wieder zurück. Ich kann dann einen Befehl zum Auslesen (z.B. Geräteart) schicken - es kommt aber nichts zurück.

    Mit dem Tool zum Testen von oben kann ich auch auslesen ... das ist aber nicht php ...

    Gruss, hcp

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

    Hallo hcp,

    ich bin selber noch in der Findungsphase.
    Ich kann dir nur sagen was ich bis jetzt gemacht habe.

    1. Ich habe mir den USB-Optolink aus dem ersten Post bestellt.
    2. Den USB-Optolink habe ich in den PC eingesteckt.
    Danach hat sich das Teil selbstständig installiert mit einem USB - Serial Port Umsetzer.
    Da brauchte ich nichts für zu tun.
    3. Diesen Umsetzer habe ich so eingestellt.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Schritt_1.png 
Hits:	365 
Größe:	54.2 KB 
ID:	20164

    4. Danach habe ich in IPS einen Serial Port angelegt und so eingestellt.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Schritt_2.png 
Hits:	292 
Größe:	32.9 KB 
ID:	20165

    5. An diesem Serial Port habe ich eine Register Variable gehängt.
    6. An der Register-Variable habe ich ein Script gehängt.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Schritt_3.png 
Hits:	321 
Größe:	62.1 KB 
ID:	20166

    7. In IPS eine String Variable anlegen die da heißt Receive o.ä.
    8. In dem Script das die Register Variable aufruft steht das hier.

    PHP-Code:
    // neu empfangene Daten ablegen
    $data $_IPS['VALUE'];
     
    // Daten ausgeben
    SetValueString(39800 /*[Schäferweg\Dachgeschoss\Heizungsraum\Viessmann Heizung\Receive]*/$data); 
    Erster Test:
    In deiner Receive Variablen sollte nun über die Com-Schnittstelle das hier kommen

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Schritt_4.png 
Hits:	308 
Größe:	6.4 KB 
ID:	20167

    Die Uhrzeit sollte sich alle 2-3 Sekunden aktualisieren.

    Dieser Strich den Du in der Variablen siehst ist das Ascii-Zeichen für "0x05 Hex" der sogenannte Viessmann-Ping.

    Wenn Du so weit bist geht es weiter!!!
    Geändert von Schablone (09.02.13 um 08:29 Uhr)
    Bis dann

    Martin

  5. #105
    Registriert seit
    Jul 2008
    Ort
    Wiesbaden
    Beiträge
    131

    Zitat Zitat von Schablone Beitrag anzeigen
    Hallo hcp,

    ich bin selber noch in der Findungsphase.
    Ich kann dir nur sagen was ich bis jetzt gemacht habe.

    1. Ich habe mir den USB-Optolink aus dem ersten Post bestellt.
    2. Den USB-Optolink habe ich in den PC eingesteckt.
    Danach hat sich das Teil selbstständig installiert mit einem USB - Serial Port Umsetzer.
    Da brauchte ich nichts für zu tun.
    3. Diesen Umsetzer habe ich so eingestellt.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Schritt_1.png 
Hits:	365 
Größe:	54.2 KB 
ID:	20164

    4. Danach habe ich in IPS einen Serial Port angelegt und so eingestellt.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Schritt_2.png 
Hits:	292 
Größe:	32.9 KB 
ID:	20165

    5. An diesem Serial Port habe ich eine Register Variable gehängt.
    6. An der Register-Variable habe ich ein Script gehängt.

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Schritt_3.png 
Hits:	321 
Größe:	62.1 KB 
ID:	20166

    7. In IPS eine String Variable anlegen die da heißt Receive o.ä.
    8. In dem Script das die Register Variable aufruft steht das hier.

    PHP-Code:
    // neu empfangene Daten ablegen
    $data $_IPS['VALUE'];
     
    // Daten ausgeben
    SetValueString(39800 /*[Schäferweg\Dachgeschoss\Heizungsraum\Viessmann Heizung\Receive]*/$data); 
    Erster Test:
    In deiner Receive Variablen sollte nun über die Com-Schnittstelle das hier kommen

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Schritt_4.png 
Hits:	308 
Größe:	6.4 KB 
ID:	20167

    Die Uhrzeit sollte sich alle 2-3 Sekunden aktualisieren.

    Dieser Strich den Du in der Variablen siehst ist das Ascii-Zeichen für "0x05 Hex" der sogenannte Viessmann-Ping.

    Wenn Du so weit bist geht es weiter!!!
    Das klappt bei mir auch. Kann dann auch den Bus in den 300er Modus setzen indem ich 0x16 0x00 0x00 gleich nach einem 0x05 Empfang sende. Bekomme dann auch wie erwartet die 0x06 als Antwort. Wenn ich danach aber etwas sende bekomme ich keine vernünftige Antwort ... da hänge ich ...

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

    Zitat Zitat von hcp Beitrag anzeigen
    Das klappt bei mir auch. Kann dann auch den Bus in den 300er Modus setzen indem ich 0x16 0x00 0x00 gleich nach einem 0x05 Empfang sende. Bekomme dann auch wie erwartet die 0x06 als Antwort. Wenn ich danach aber etwas sende bekomme ich keine vernünftige Antwort ... da hänge ich ...
    Das ist klar. Die Antwort kommt in mehreren häppchen.

    Bei mir sieht das Empangsscript so aus:

    PHP-Code:
    <?
    /*=============================================================
    ViessmannOut - Martin Heinzel - 05.02.2013
    Version: 0.1

    Beschreibung:
    Dieses Script wird von der Registervariablen gestartet.
    Hier wird der Empfang der Daten gehändelt und in eine
    Empfangsvariablen abgelegt.


    Änderungen
    ----------

    tt.mm.jjjj von Version x.x -> y.y

    Beschreibung:

    ================================================================*/

    // Variablen Deklaration --------------------------------------

    // ID's
    //--------------
    $ID_Connect_Done                      =  38994 /*[Schäferweg\Dachgeschoss\Heizungsraum\Viessmann Heizung\Connect_Done]*/;
    $SID_ViessmannEmpfangen          =  33859 /*[Schäferweg\Dachgeschoss\Heizungsraum\Viessmann Heizung\ViesmannEmpfangen]*/;

    // Variablen
    //--------------
    $Connect            =  GetValueBoolean(47954 /*[Schäferweg\Dachgeschoss\Heizungsraum\Viessmann Heizung\Connect]*/);
    $Receive_lenght   =  GetValueInteger(21524 /*[Schäferweg\Dachgeschoss\Heizungsraum\Viessmann Heizung\Receive_lenght]*/);

    // Konstanten
    //--------------


    //-------------------------------------------------------------

    require IPS_GetKernelDir()."scripts\\ViessmannVariablen.ips.php";

    //--------------------------- Main ----------------------------

    // wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist
    if ($_IPS['SENDER'] == "RegisterVariable")
    {
        
    // kontrolle der empfangenen Daten auf den Viessmann "PING"
        
    if($_IPS['VALUE'] == VIESS_PING)
        {

            
    // neu empfangene Daten ablegen
            
    $data $_IPS['VALUE'];
            
    // Inhalt des Puffer der RegisterVariable-Instanz löschen
            
    RegVar_SetBuffer($_IPS['INSTANCE'], "");
             
    // Daten ausgeben
           
    SetValueString(39800 /*[Schäferweg\Dachgeschoss\Heizungsraum\Viessmann Heizung\Receive]*/$data);
             
    // Verbindung zu Viessmann ist abgebaut
             
    SetValueBoolean($ID_Connect_Donefalse);
             
    // TimeOut Zeit zurücksetzen
            
    IPS_SetScriptTimer($SID_ViessmannEmpfangen 0);
            
    // Wenn verbunden werden soll dann
            
    if($Connect)
            {
               
    // verbinden
                
    COMPort_SendText(43855 /*[Viessmann]*/IPS_CONNECT );
            }

        }
        else
        {

            if(
    substr($_IPS['VALUE'], 01) == VIESS_CONNECTED)
            {
                
    // Verbindung zu Viessmann ist aufgebaut
                
    SetValueBoolean($ID_Connect_Donetrue);
                
    // Inhalt des Puffer der RegisterVariable-Instanz löschen
               
    RegVar_SetBuffer($_IPS['INSTANCE'], "");
            }

            
    // bereits im Puffer der Instanz vorhandene Daten in $data kopieren
            
    $data  RegVar_GetBuffer($_IPS['INSTANCE']);
            
    // neu empfangene Daten an $data anhängen
            
    $data .= $_IPS['VALUE'];
              
    // Inhalt von $data im Puffer der RegisterVariable-Instanz speichern
            
    RegVar_SetBuffer($_IPS['INSTANCE'], $data);

          if(
    strlen($data) == $Receive_lenght or $Receive_lenght == 0)
            {
                 
    // ausgeben der Daten
               
    SetValueString(39800 /*[Schäferweg\Dachgeschoss\Heizungsraum\Viessmann Heizung\Receive]*/$data);
            }
        }
    }

    //------------------------- Main ENDE --------------------------
    ?>
    Das ist das Script ViessmannVariablen.ips.php
    PHP-Code:
    <?
    /*=============================================================
    Script - ViessmannVariablen - 03.02.2013
    Version: 0.1

    Beschreibung:
    In diesem Script werden die Viessmann - Konstaten definiert.

    Änderungen
    ----------

    tt.mm.jjjj von Version x.x -> y.y

    Beschreibung:

    ================================================================*/

    // Variablen Deklaration --------------------------------------

    // Konstanten
    //--------------
    // Empfangen
    define"VIESS_PING",                                     chr(0x05));
    define"VIESS_COMERR",                                   chr(0x15));
    define"VIESS_CONNECTED",                                chr(0x06));

    // Senden
    define"IPS_CONNECT",                                      chr(0x16).chr(0x00).chr(0x00));
    define"IPS_DISCONNECT",                                   chr(0x04));

    // Senden Telegramme
    define"IPS_Temp_Aussen_ACT",                         chr(0x41).                 // Telegramm Start-Byte
                                                                        
    chr(0x05).                 // Länge der Nutzdaten
                                                                        
    chr(0x00).                 // 00 = Anfrage, 01 = Antwort, 03 = Fehler
                                                                        
    chr(0x01).                 // 01 = ReadData, 02 = WriteData, 07 = Function Call
                                                                        
    chr(0x55).chr(0x25). // 2 byte Adresse der Daten oder Prozedur
                                                                        
    chr(0x02).                 // Anzahl der Bytes, die in der Antwort erwartet werden
                                                                        
    chr(0x82));                // Prüfsumme = Summe der Werte ab dem 2 Byte (ohne 41)

    define"IPS_Temp_Kessel_ACT",                         chr(0x41).                 // Telegramm Start-Byte
                                                                        
    chr(0x05).                 // Länge der Nutzdaten
                                                                        
    chr(0x00).                 // 00 = Anfrage, 01 = Antwort, 03 = Fehler
                                                                        
    chr(0x01).                 // 01 = ReadData, 02 = WriteData, 07 = Function Call
                                                                        
    chr(0x08).chr(0x10). // 2 byte Adresse der Daten oder Prozedur
                                                                        
    chr(0x02).                 // Anzahl der Bytes, die in der Antwort erwartet werden
                                                                        
    chr(0x20));                // Prüfsumme = Summe der Werte ab dem 2 Byte (ohne 41)

    define"IPS_Temp_Kessel_SET",                         chr(0x41).                 // Telegramm Start-Byte
                                                                        
    chr(0x05).                 // Länge der Nutzdaten
                                                                        
    chr(0x00).                 // 00 = Anfrage, 01 = Antwort, 03 = Fehler
                                                                        
    chr(0x01).                 // 01 = ReadData, 02 = WriteData, 07 = Function Call
                                                                        
    chr(0x55).chr(0x5A). // 2 byte Adresse der Daten oder Prozedur
                                                                        
    chr(0x02).                 // Anzahl der Bytes, die in der Antwort erwartet werden
                                                                        
    chr(0xB7));                // Prüfsumme = Summe der Werte ab dem 2 Byte (ohne 41)

    define"IPS_Temp_Speicher_ACT",                        chr(0x41).                 // Telegramm Start-Byte
                                                                        
    chr(0x05).                 // Länge der Nutzdaten
                                                                        
    chr(0x00).                 // 00 = Anfrage, 01 = Antwort, 03 = Fehler
                                                                        
    chr(0x01).                 // 01 = ReadData, 02 = WriteData, 07 = Function Call
                                                                        
    chr(0x08).chr(0x12). // 2 byte Adresse der Daten oder Prozedur
                                                                        
    chr(0x02).                 // Anzahl der Bytes, die in der Antwort erwartet werden
                                                                        
    chr(0x22));                // Prüfsumme = Summe der Werte ab dem 2 Byte (ohne 41)

    define"IPS_Temp_Speicher_SET",                        chr(0x41).                 // Telegramm Start-Byte
                                                                        
    chr(0x05).                 // Länge der Nutzdaten
                                                                        
    chr(0x00).                 // 00 = Anfrage, 01 = Antwort, 03 = Fehler
                                                                        
    chr(0x01).                 // 01 = ReadData, 02 = WriteData, 07 = Function Call
                                                                        
    chr(0x63).chr(0x00). // 2 byte Adresse der Daten oder Prozedur
                                                                        
    chr(0x02).                 // Anzahl der Bytes, die in der Antwort erwartet werden
                                                                        
    chr(0x6B));                // Prüfsumme = Summe der Werte ab dem 2 Byte (ohne 41)

    define"IPS_Temp_Vorlauf_ACT",                          chr(0x41).                 // Telegramm Start-Byte
                                                                        
    chr(0x05).                 // Länge der Nutzdaten
                                                                        
    chr(0x00).                 // 00 = Anfrage, 01 = Antwort, 03 = Fehler
                                                                        
    chr(0x01).                 // 01 = ReadData, 02 = WriteData, 07 = Function Call
                                                                        
    chr(0x29).chr(0x00). // 2 byte Adresse der Daten oder Prozedur
                                                                        
    chr(0x02).                 // Anzahl der Bytes, die in der Antwort erwartet werden
                                                                        
    chr(0x31));                // Prüfsumme = Summe der Werte ab dem 2 Byte (ohne 41)

    define"IPS_Temp_Vorlauf_SET",                          chr(0x41).                 // Telegramm Start-Byte
                                                                        
    chr(0x05).                 // Länge der Nutzdaten
                                                                        
    chr(0x00).                 // 00 = Anfrage, 01 = Antwort, 03 = Fehler
                                                                        
    chr(0x01).                 // 01 = ReadData, 02 = WriteData, 07 = Function Call
                                                                        
    chr(0x25).chr(0x44). // 2 byte Adresse der Daten oder Prozedur
                                                                        
    chr(0x02).                 // Anzahl der Bytes, die in der Antwort erwartet werden
                                                                        
    chr(0x71));                // Prüfsumme = Summe der Werte ab dem 2 Byte (ohne 41)

    define"IPS_Temp_Ruecklauf_ACT",                      chr(0x41).                 // Telegramm Start-Byte
                                                                        
    chr(0x05).                 // Länge der Nutzdaten
                                                                        
    chr(0x00).                 // 00 = Anfrage, 01 = Antwort, 03 = Fehler
                                                                        
    chr(0x01).                 // 01 = ReadData, 02 = WriteData, 07 = Function Call
                                                                        
    chr(0x08).chr(0x08). // 2 byte Adresse der Daten oder Prozedur
                                                                        
    chr(0x02).                 // Anzahl der Bytes, die in der Antwort erwartet werden
                                                                        
    chr(0x18));                // Prüfsumme = Summe der Werte ab dem 2 Byte (ohne 41)

    //-------------------------------------------------------------
    ?>
    Bis dann

    Martin

  7. #107
    Registriert seit
    Jul 2008
    Ort
    Wiesbaden
    Beiträge
    131

    Skript läuft und empfängt die Pings. Was kommt als nächstes?

  8. #108
    Registriert seit
    Jan 2006
    Beiträge
    41

    Standard Adapter/Abfrage läuft

    Hab nun gestern meinen Adapter in Betrieb genommen.
    Habe beide Scriptvarianten ausprobiert und verwende nun die Scripts aus dem ersten Post.
    Damit habe ich problemlos die Abfrage von Werten hinbekommen.
    Meine Anlage ist eine VPlusHO1 (20C8).
    Mache mich dann mal an das Logging von Daten und die ersten Einstellungen.
    Falls es updates gibt oder ich helfen kann, laßt es mich wissen.

    Gruß Thomas
    System: Win10x64+IPSymcon V5.1+HighCharts
    Control: 1xCCU2,3xFHZ1300PC,9xFHT,KS300,7xFS20,DMX4ALL/20m-RGB-Stripes,5xHS485,7xCControl
    Energy: 4xEM1010 + 12xPlugwise +12xDRS110M
    Haustechnik:Photovoltaik:SBU220/2xSB4000TL,Heizung:Viessmann,Landroid M500

  9. #109
    Registriert seit
    Jan 2011
    Beiträge
    13

    Hi Schablone,

    bin Deiner Anregung gefolgt und versuche auf diesen Weg das Protokoll meiner Abfrage umzustellen. Habe mich an Deine Instruktionen gehalten, aber nachdem das alles für mich immer noch ein großes Rätsel darstellt, bin ich wohl auf Deine Hilfe in Form von den weiteren Schritten angewiesen.

    Danke
    Spechtl

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

    Ich bin noch bei einer IBN in Holland (Bergen). Wenn ich es schaffe, werde ich am Wochenende das, was ich bis jetzt habe einstellen. Ich bin aber selber noch nicht ganz fertig!

    Nur zur Info:

    Als nächstes wird das Online-Bit gesetzt. Dann geht das Vissmann Out Script nach dem nächsten Ping auf "Verbinden". Danach Geht die Vissmann auf 06 hex.

    Dann ist die Vissmann bereit Anfragen zu beantwortet.

    Die Anfragen die ich für meine Heizung senden kann, stehen in den Konstanten die ich bereits gepostet habe.

    Gesendet von meinem GT-I9100 mit Tapatalk 2
    Bis dann

    Martin

Ä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