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

    #31
    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);

    Kommentar


      #32
      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

      Kommentar


        #33
        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!

        Kommentar


          #34
          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.

          Kommentar


            #35
            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

            Kommentar


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

              Kommentar


                #37
                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

                Kommentar


                  #38
                  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.

                  Kommentar

                  Lädt...
                  X