Ankündigung

Einklappen
Keine Ankündigung bisher.

Wärmepumpe/Wohnraumlüftung Drexel und Weiss

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • strohblogger
    antwortet
    Ich habe eine einfache Möglichkeit gefunden die Wärmepumpe zur Brauchwassererwärmung unserer Aerosmart M von extern zu steuern: Mit dem "EVU-aktiv" Kontakt kann man die Wärmepumpe deaktivieren. Ich schalte den Kontakt mit einer Shelly Plus 1, von 10-15 Uhr ist der Kontakt geschlossen (da ist die Wahrscheinlichkeit für PV-Eigenstrom am höchsten), den Rest der Tages- und Nachtzeit bleibt er offen.

    Zusätzlich möchte ich noch den Door open Schalter zum Abschalten der Lüftung mit einer in Serie geschalteten Shelly je nach Luftqualität (lt. CO2 Sensor) mit Home Assistant steuern.

    Ich hab dazu auch einen ausführlichen Artikel auf meinem Blog geschrieben:
    https://strohblogger.medium.com/drex...t-91658d2c2313
    Zuletzt geändert von strohblogger; 22.02.2025, 20:04.

    Einen Kommentar schreiben:


  • ostriker1304
    antwortet
    Ich versuche momentan nur mit einem einfachen Python Code was raus zu bekommen, hab kein Smarthome.py oder ähnliches laufen. Dein Code funktioniert bei mir soweit dass ich Werte empfangen kann, nur kann ich nicht steuern welche.

    Code:
       
     import time import serial ser= serial.Serial(port='/dev/ttyDuW', baudrate=115200, timeout=0.8, write_timeout=0.8)  def write_duw(reg, data):     response=bytes()     #ser.flushInput()     if data ==  'x':         reg = int(reg)+1         result = ser.write("130 {0:d}\r\n".format(int(reg)+1).encode('ascii'))         time.sleep(0.2)         response1 = ser.readline()          time.sleep(0.2)         response2 = ser.readline()      else:         #ser.flushOutput()         result = ser.write("130 {0:d} {1:d}\r\n".format(reg, data).encode('ascii'))         print("Writing register: {}, value: {}. Result: {}".format(reg, data, result))         time.sleep(0.1)         #ser.flushInput()         result = ser.write("130 {0:d}\r\n".format(int(reg)+1).encode('ascii'))         time.sleep(0.1)         response1 = ser.readline()          response2 = ser.readline()      print("Response for register {}: {} {}.".format(reg, response1, response2))  def read_duw():     response=bytes()     while True:                response=ser.readline()         time.sleep(0.1)         print("Response duw: {}.".format(response))
    Zum Testen hätte ich auch schon versucht das Register "202" abzufragen ohne Funktionen, die Registernummer hab ich manuell erhöht.


    Code:
    ser.write("130 203\r\n").encode('ascii'))
    read_duw()
    Danach empfange ich zwar Register aber nicht das dass ich abfragen wollte.

    Danke und LG

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Nimm das Plugin aus dem develop und gib deine x2 direkt in plugin.yaml an. Vielleicht klappt es dann?

    Einen Kommentar schreiben:


  • ostriker1304
    antwortet
    Hallo,
    ich versuche meine x2 über Linux und Python abzufragen bzw. zu steuern. Das Script von Onkelandy funktioniert bei mir leider nicht, ich bekomme automatisch aber unregelmäßig Werte von der x2 geschickt, leider kann ich kein definiertes Register abfragen. Hatte schon mal wer so ein Problem?
    Danke und LG

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ich hatte jetzt gerade massive Probleme mit der Kommunikation. Es half nur ein Auslösen der Sicherung. Jetzt scheint alles wieder gut, außer, dass am Panel im Automatikbetrieb das "CO2" nicht mehr auftaucht

    Der Vollständigkeit halber hier noch mein Python Code für diverse Testungen:
    Code:
    import time
    import serial
    ser= serial.Serial(port='/dev/ttyDuW', baudrate=115200, timeout=0.8, write_timeout=0.8)
    
    def write_duw(reg, data):
        response=bytes()
        #ser.flushInput()
        if data ==  'x':
            reg = int(reg)+1
            result = ser.write("130 {0:d}\r\n".format(int(reg)+1).encode('ascii'))
            time.sleep(0.2)
            response1 = ser.readline() 
            time.sleep(0.2)
            response2 = ser.readline() 
        else:
            #ser.flushOutput()
            result = ser.write("130 {0:d} {1:d}\r\n".format(reg, data).encode('ascii'))
            print("Writing register: {}, value: {}. Result: {}".format(reg, data, result))
            time.sleep(0.1)
            #ser.flushInput()
            result = ser.write("130 {0:d}\r\n".format(int(reg)+1).encode('ascii'))
            time.sleep(0.1)
            response1 = ser.readline() 
            response2 = ser.readline() 
        print("Response for register {}: {} {}.".format(reg, response1, response2))
    
    def read_duw():
        response=bytes()
        while True:       
            response=ser.readline()
            time.sleep(0.1)
            print("Response duw: {}.".format(response))
    Nervig ist, dass bei meiner x2 plus ständig der Wert 0 für Register 1348 gesendet wird.. Sonst auch bei jemandem?
    Zuletzt geändert von Onkelandy; 02.09.2017, 21:39.

    Einen Kommentar schreiben:


  • astrnad
    antwortet
    Zitat von daniell82 Beitrag anzeigen
    Gleich noch als Ankündigung: Ich werde die Ablage der Daten in der nächsten Version nicht mehr in Dateien sondern in einer kleinen SQL Datenbank ablegen. Auch die Schnittstelle um Daten an die Aerosmart zu senden werde ich einem Redesign unterwerfen.

    Da wird aber noch ein bischen Zeit ins Land gehen. Bin aber dran...

    Grüße,
    Daniel
    Hallo Daniel,

    Asche auf mein Haupt, dass ich diesen alten Thread ausgrabe, aber gibts Neuigkeiten zu der Java-Library? Ich habe auch eine Drexel & Weiss Anlage (x²) aus dem Jahr 2011 und würde gerne einige Werte davon in openHAB übernehmen. Und: Aus der Installationsanleitung werde ich nicht ganz schlau, vielleicht könntest du da mal drüberschaun (speziell was den Aufruf angeht)?

    Danke im Voraus!

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    für smarthome.py hab ich mir jetzt ein plugin gebastelt, damit kann ich alle daten die in der modbusbeschreibung auftauchen auswerten und ggf. die Anlage auch steuern wie ich will, verwende dazu nur die usb serviceschnittstelle ohne Modbusadapter....

    https://knx-user-forum.de/smarthome-...ss-plugin.html

    Einen Kommentar schreiben:


  • vdbriel
    antwortet
    perl script

    Hi,

    I wrote a very small perl script to illustrate the functionality of the communication with a D&W.

    Hope this helps.

    Code:
    #!/usr/bin/perl -w
    # Reads a number of registers from the virtual serial port connect to a D&W
    #  Connect the D&W with a USB cable to the computer (eg: raspberry PI) where this script will be running
    #  Find out which port is added in the /dev/ folder.
    #  Mod the variable $PORT in order to match what you have found.
    #
    #  This script is tested on a raspberry Pi type B connected with a D&W primus.
    #  The opperating system running on the Pi is "Raspbian GNU/Linux 7 (wheezy)"
    #
    #  In order to read a reg first a write through the serial bus should be done.
    #  The ID and the Reg number incremented with 1 should be written.
    #   eg: "130 201\n" will instantiate the read of register 200
    #  D&W will respond with a string which contains the value of the reguster
    #   eg: "130 201 21235" This means register 200 contains the value 21235
    #                       For this reg a temp of 21.235 C
    use strict;
    use Device::SerialPort qw( :PARAM :STAT 0.07 );
    
    my $PORT = "/dev/ttyUSB0";
    my $Id = "130";
    my @Regs2Read = qw(230 5002 1066 202 200 1184 1186 216 1092 1094 5060);
    
    my $ob = Device::SerialPort->new($PORT);
    $ob->baudrate(115200);
    $ob->parity("none");
    $ob->databits(8);
    $ob->stopbits(1);
    $ob->handshake("xoff");
    $ob->read_const_time(1000);
    $ob->write_settings;
    open(SERIAL, "+>$PORT");
    foreach my $Reg (@Regs2Read) {
        my $RegRead = $Reg+1;
        my $String = $Id." ".($Reg+1)."\xd";
        $ob->lookclear ;
        $ob->write($String) or die ("Could not write to port: $!");
        Wait4SERIAL: while (my $line = <SERIAL>) {
            if ( ${line} =~ /${Id}\s${RegRead}\s(\d+)/ )  {
                print "${line}";
                last(Wait4SERIAL);
            }
        }
    }
    close(SERIAL);

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    so hab mir das jetzt auch mal angesehen....
    auf der USB Serviceschnittstelle läuft definitiv kein Modbus sonder das ist einfach ein serielles Protokoll im Ascii Format welches aber auch die "Modbusregister" als Zieladresse verwendet.

    Schreiben:
    <D&W Device ID><Space><RegisterID><Space><Wert><CR><LF>
    Response:
    <D&W Device ID><Space><RegisterID><Space><Wert><CR><LF>

    Lesen:
    <D&W Device ID><Space><RegisterID+1>
    Response:
    <D&W Device ID><Space><RegisterID><Space><Wert><CR><LF>

    Offizielle Aussage von D&W ist jedoch das die Garantie erlischt wenn man mit dieser Schnittstelle "herumspielt".
    Wer das nicht will muss den Modbusadapter kaufen wo dann wirklich Modbus drauf läuft. Der Adapter ist deshalb so teuer weil da quasi eine erweiterte Garantie eingepreist ist!

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Bekomme auf m raspberry leider ne Fehlermeldung. Ne Idee dagegen?
    Malformed \uxxxx encoding


    Gesendet von meinem iPad mit Tapatalk

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Zitat von gloitom Beitrag anzeigen
    Das ist kein LAN, es werden nur LAN-Kabel verwendet. IMHO läuft da Modbus drüber und darf nicht über einen Router/Switch laufen.
    Jup, sorry, mein Fehler. Hätte auch keinen Sinn gemacht mit LAN, denn dann wäre die Sache ja noch einfacher gewesen

    Einen Kommentar schreiben:


  • gloitom
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Wie verhalten sich die steuerpanele die "normal" via lan angeschlossen sind?
    Das ist kein LAN, es werden nur LAN-Kabel verwendet. IMHO läuft da Modbus drüber und darf nicht über einen Router/Switch laufen.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi Daniel! Vielen Dank fürs Feigeben. Klingt extrem easy. Steck ich wirklich nur usb an nen linuxrechner (raspi), dein javatool und los gehts? Via eidb dann auf knx. Kann man da irgendwas verbocken? Garantieprobleme? Wie verhalten sich die steuerpanele die "normal" via lan angeschlossen sind?

    Einen Kommentar schreiben:


  • daniell82
    antwortet
    Gleich noch als Ankündigung: Ich werde die Ablage der Daten in der nächsten Version nicht mehr in Dateien sondern in einer kleinen SQL Datenbank ablegen. Auch die Schnittstelle um Daten an die Aerosmart zu senden werde ich einem Redesign unterwerfen.

    Da wird aber noch ein bischen Zeit ins Land gehen. Bin aber dran...

    Grüße,
    Daniel

    Einen Kommentar schreiben:


  • daniell82
    antwortet
    Servus Andy,

    ich habe den aktuellen Stand nun ins Repository gestellt. Leserechte habe ich vergeben, einfach mal ausprobieren. Ich werde die kommenden Tage noch etwas Doku nachreichen...

    Grüße,
    Daniel

    Einen Kommentar schreiben:

Lädt...
X